Prospekteringsresearch blir snabbt rörig. Du öppnar 20 flikar, kopierar namn till ett dokument, tappar bort hälften av källorna och är ändå inte säker på att du riktar dig mot rätt företag.
Den här Perplexity Sheets-automationen slår hårdast mot marknadsförare som bygger outbound-listor, men även founders som validerar en nisch och konsulter som letar konton med “rätt matchning” känner av det. Du ger den en ICP-brief på enkel engelska, och den ger dig en användbar Dream 100-lista i ett Google Sheet.
Nedan ser du hur arbetsflödet fungerar, vad du behöver, vilka resultat du kan förvänta dig och fallgroparna som brukar fälla folk.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutlig output:
n8n Workflow Template: Perplexity till Google Sheets: Dream 100-lista klar
flowchart LR
subgraph sg0["Chat Intake Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Research Orchestrator", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Dialogue Model", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "Chat Intake Trigger", pos: "b", h: 48 }
n3@{ icon: "mdi:memory", form: "rounded", label: "Session Memory Buffer", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Capture Chat Input", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Repeat Prompt Builder", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Valid Prompt", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Fetch First Row", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Fetch Last Row", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Store First Name", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Sheet Empty", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Sheet Completion", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Request More Details", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Send Completion Note", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Store Last Name", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Perplexity Research Tool", pos: "b", h: 48 }
n19@{ icon: "mdi:database", form: "rounded", label: "Upsert Sheet Records", pos: "b", h: 48 }
n0 --> n7
n14 --> n10
n3 -.-> n0
n8 --> n14
n9 --> n8
n7 --> n9
n4 --> n6
n6 --> n0
n1 -.-> n0
n19 -.-> n0
n18 -.-> n0
n2 --> n4
n5 --> n6
n10 --> n12
n10 --> n11
n11 --> n5
n11 --> n13
end
subgraph sg1["Utility: Slack Message Flow"]
direction LR
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Utility: Slack Message Trigger"]
end
subgraph sg2["Flow 3"]
direction LR
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Utility: Slack Completion No.."]
end
subgraph sg3["Flow 4"]
direction LR
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Utility: Slack Request Details"]
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n2,n15 trigger
class n0,n12,n13 ai
class n1 aiModel
class n3 ai
class n6,n10,n11 decision
class n7,n8,n19 database
classDef customIcon fill:none,stroke:none
class n15,n17,n16 customIcon
Problemet: Dream 100-research blir kaos
Att skapa en Dream 100-lista låter enkelt tills du faktiskt gör det. Du börjar med en ICP i huvudet, försöker sedan översätta den till riktiga företag och beslutsfattare, och plötsligt har det gått 2 timmar och du sitter med ett halvfärdigt kalkylark och en massa “kanske”-prospekt. Det värsta är den mentala belastningen. Du dubbelkollar samma kriterier om och om igen, börjar tvivla på vad “ideal” ens betyder och formaterar om allt för att det ska gå att dela. En lista som borde hjälpa dig fokusera känns istället som meningslöst pill.
Det eskalerar snabbt. Här är var det faller ihop i praktiken.
- Du slösar ungefär 5 minuter per prospekt bara på att hitta en trovärdig källa, kopiera detaljer och rensa formateringen.
- När du förfinar din ICP blir dina tidigare rader inaktuella, så du gör om research du redan “blev klar” med.
- Alla landar i sin egen version av listan i Notion, Sheets eller en CRM-importfil, vilket gör samarbetet smärtsamt.
- Manuell research uppmuntrar genvägar, så du nöjer dig med prospekt av låg kvalitet som ser relevanta ut men inte kommer konvertera.
Lösningen: förvandla en ICP-brief till ett Dream 100-sheet
Det här arbetsflödet gör om din beskrivning av ideal kund till en strukturerad prospekteringspipeline som landar i ett korrekt formaterat Google Sheet. Det börjar med en chattbaserad insamling (i n8n-chatten, och valfritt Slack) där du beskriver din verksamhet och din “drömkund” på vanlig engelska. Om din prompt saknar detaljer ställer agenten följdfrågor och kommer ihåg vad du redan har sagt, så du slipper upprepa dig. När kriterierna är tydliga genererar arbetsflödet riktade research-prompter, skickar dem till Perplexity för att söka på webben och använder sedan en LLM för att formatera resultaten till konsekventa rader. Till sist uppdaterar eller lägger det in (upsert) posterna i en Google Sheets-mall, så att du kan dela den, filtrera den och återanvända strukturen för nästa nisch.
Arbetsflödet startar från ett meddelande i chatten. Agenten förfinar dina kriterier med sessionsminne, sedan samlar Perplexity in prospekt från webben. Därefter blir Google Sheets den enda sanningskällan med de senaste Dream 100-posterna.
Det du får: automation vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du vill ha en Dream 100-lista över B2B SaaS-bolag inom en specifik nisch. Manuellt innebär 100 prospekt med cirka 5 minuter per styck ungefär 8 timmar, och då är inte upprensning och deduplicering inräknat. Med det här arbetsflödet lägger du cirka 10 minuter på att beskriva din ICP och svara på ett par följdfrågor, och väntar sedan medan Perplexity-researchen och formateringen körs (ofta runt 20 minuter). Du är klar med första versionen på under en timme, och resultatet ligger redan i Google Sheets.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra och dela Dream 100.
- Perplexity för webbresearch och prospektidentifiering.
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)
Svårighetsgrad: Medel. Du kopplar några konton, klistrar in API-nycklar och kopierar en Google Sheets-mall.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Chattintag startar körningen. Du skickar en kort beskrivning av din verksamhet och typen av företag du vill ha i din Dream 100-lista. Detta kan ske via den inbyggda chatt-triggern, och det finns valfria Slack-noder om du vill köra det från Slack.
Agenten kontrollerar om din brief är “tillräckligt bra”. En switch skickar giltiga prompter vidare, och sessionsminnet behåller kontext i samtalet så att agenten kan be om saknade detaljer utan att börja om.
Perplexity gör research, sedan formaterar LLM:en. Arbetsflödet genererar en uppsättning sökprompter, anropar Perplexity som research-verktyg och använder sedan chattmodellen för att förvandla rörig text till konsekventa fält som du faktiskt kan sortera och använda.
Google Sheets blir outputen. Arbetsflödet kontrollerar mallens första och sista rader, avgör om arket är tomt eller komplett och gör sedan upsert av poster så att din Dream 100-lista håller sig prydlig istället för att bli dubbletter och halvifyllda rader.
Du kan enkelt ändra prospektfälten så att de matchar din outreach-process utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera chat-triggern
Det här arbetsflödet startar när en användare skickar ett chattmeddelande in i systemet.
- Lägg till och öppna Chat Intake Trigger.
- Låt Options → Response Mode vara inställt på
responseNodes(redan konfigurerat). - Anslut Chat Intake Trigger till Capture Chat Input som visas i flödet.
Steg 2: fånga och routa det inkommande meddelandet
Dessa noder lagrar användarmeddelandet och routar det vidare in i researchflödet.
- I Capture Chat Input ställer ni in tilldelningen User Chat Message till
{{ $json.chatInput }}. - Öppna Route Valid Prompt och behåll båda reglerna som kontrollerar icke-tomma värden:
{{ $json['Retrigger Chat'] }}och{{ $json['User Chat Message'] }}. - Säkerställ att Route Valid Prompt skickar output till Research Orchestrator (båda output-rutterna ansluter till samma nod).
- I Repeat Prompt Builder ska Retrigger Chat vara inställt på hela promptsträngen som begär nästa batch med 10 prospekt.
Steg 3: konfigurera AI-researchorchestratorn
Agenten koordinerar chattmodellen, researchverktyg och dataskrivningar.
- Öppna Research Orchestrator och ställ in Text till
{{ $json['User Chat Message'] }} {{ $json['Retrigger Chat'] }}. - Verifiera att Research Orchestrator använder det inbyggda systemmeddelandet som definierar Dream 100-kriterier (redan konfigurerat).
- Öppna OpenRouter Dialogue Model och anslut den som språkmodell för Research Orchestrator via den befintliga anslutningen för AI-språkmodell.
Credential Required: Anslut eraopenRouterApi-credentials. - Öppna Session Memory Buffer för att behålla samtalskontext; inga credentials behövs. Detta minne är anslutet till Research Orchestrator och ska förbli länkat.
- Öppna Perplexity Research Tool och låt Model vara inställt på
sonar-deep-research.
Credential Required: Anslut eraperplexityApi-credentials.
Obs: Det här verktyget används av Research Orchestrator, så credentials läggs till här men används av agenten. - Öppna Upsert Sheet Records och låt Operation vara inställt på
appendOrUpdatemed Matching Columns inställt påProspect ID.
Credential Required: Anslut eragoogleSheetsOAuth2Api-credentials.
Obs: Det här verktyget anropas av Research Orchestrator, så säkerställ att det förblir anslutet som ett AI-verktyg.
Steg 4: anslut Google Sheets för prospektspårning
Arbetsflödet kontrollerar arket för färdigställande och lägger till eller uppdaterar rader.
- I Fetch First Row ställer ni in Document till ert sheet-ID (ersätt
[YOUR_ID]) och Sheet tillSheet1(gid=0). - Låt filtret i Fetch First Row vara inställt på Prospect ID =
1.
Credential Required: Anslut eragoogleSheetsOAuth2Api-credentials. - I Fetch Last Row ställer ni in samma värden för Document och Sheet och låter filtret Prospect ID =
100vara kvar.
Credential Required: Anslut eragoogleSheetsOAuth2Api-credentials. - I Store First Name ställer ni in Prospect 1 till
{{ $json['Prospect Name'] }}. - I Store Last Name ställer ni in Prospect 100 till
{{ $json['Prospect Name'] }}. - Verifiera körflödet: Research Orchestrator → Fetch First Row → Store First Name → Fetch Last Row → Store Last Name → Check Sheet Empty.
Steg 5: konfigurera villkorslogik och chattrespons
Dessa noder hanterar tomma eller delvis ifyllda ark och fortsätter researchcykler.
- I Check Sheet Empty behåller ni båda villkoren som kontrollerar tomma värden:
{{ $('Store First Name').item.json['Prospect 1'] }}och{{ $('Store Last Name').item.json['Prospect 100'] }}. - I Request More Details ställer ni in Message till
{{ $('Research Orchestrator').item.json.output }}och låter Wait User Reply vara inställt påfalse. - I Check Sheet Completion behåller ni logiken som kontrollerar att
Prospect 1finns och attProspect 100är tom. - Säkerställ att Check Sheet Completion routar till Repeat Prompt Builder (för att fortsätta research) och till Send Completion Note när arket är klart.
- I Send Completion Note uppdaterar ni fältet Message från
=till ett riktigt färdigmeddelande innan produktion.
= blir chattresponsen tom. Ersätt det med en riktig bekräftelsesträng.Steg 6: konfigurera Slack-hjälpnoder (valfritt)
Dessa hjälpnoder kan användas för att be om fler detaljer eller notifiera när allt är klart i Slack.
- Öppna Utility: Slack Message Trigger och välj det Channel ID ni vill lyssna på.
- Öppna Utility: Slack Request Details och konfigurera meddelandepayloaden ni vill skicka.
- Öppna Utility: Slack Completion Notice och konfigurera innehållet för färdigmeddelandet.
Steg 7: testa och aktivera ert arbetsflöde
Validera end-to-end-flödet innan ni aktiverar det i produktion.
- Klicka på Execute Workflow och skicka ett exempelmeddelande via Chat Intake Trigger.
- Bekräfta att Capture Chat Input fyller i User Chat Message och att Route Valid Prompt skickar data till Research Orchestrator.
- Verifiera att Fetch First Row och Fetch Last Row läser från ert ark, och att Upsert Sheet Records skriver eller uppdaterar rader.
- Kontrollera att Request More Details eller Send Completion Note postar en chattrespons baserat på arkets status.
- När allt fungerar växlar ni arbetsflödet till Active för att köra det i produktion.
Vanliga fallgropar
- Google Sheets-autentisering kan gå ut eller kräva specifika behörigheter. Om det skapar fel: kontrollera Google-anslutningen i n8n under Credentials och bekräfta först att kalkylarket är delat med rätt Google-konto.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du redigera outputen för alltid.
Vanliga frågor
Cirka 30 minuter om dina API:er och ditt Google-konto är redo.
Nej. Du kopplar mest konton, klistrar in API-nycklar och kopierar Google Sheets-mallen.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med användning av Perplexity och OpenRouter, vilket beror på hur många körningar du gör och hur långa dina prompter är.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är huvudskälet till att det här arbetsflödet är användbart. Du ändrar kriterierna i chattintaget, och agenten genererar automatiskt andra research-prompter. Om du vill ha striktare kontroll kan du justera fälten “Repeat Prompt Builder” och “Capture Chat Input” för att tvinga fram obligatoriska uppgifter som region, företagsstorlek eller tech stack. Många team justerar också kolumnerna i Google Sheets för att inkludera en ansvarig, status och ett utkast till första kontaktmeddelande.
För det mesta beror det på utgångna inloggningsuppgifter eller att fel Google-konto är anslutet i n8n. Återanslut Google Sheets under Credentials och bekräfta sedan att mallarket finns i samma Drive. Kontrollera även delningsinställningar om du kopierade en mall från någon annan. Om felen bara händer vid större körningar kan det vara tillfällig API-strypning, så kör om efter en kort paus.
Dream 100 är det vanliga målet, och det är fullt rimligt för de flesta uppsättningar.
Ofta, ja, eftersom logiken med “agent + minne + förgreningar” är hela poängen här, och n8n hanterar den typen av flöde utan att det blir en dyr hög av steg. Du får också ett verkligt self-host-alternativ, vilket är praktiskt om du planerar att köra research ofta eller vill ha mer kontroll över datahanteringen. Zapier eller Make kan fungera om du bara vill ha ett lättviktigt upplägg för “skicka prompt, få svar, skriv till sheet”, men då tappar du oftast följdfrågorna och kontrollerna av sheet-status som håller outputen strukturerad. Ärligt talat spelar de detaljerna roll när du har kört arbetsflödet några gånger. Prata med en automationsexpert om du vill ha hjälp att välja det enklaste alternativet för din process.
En Dream 100-lista ska skapa momentum, inte ännu ett researchprojekt. Sätt upp detta en gång, kör om det när din ICP skiftar och se till att teamet jobbar från ett enda korrekt formaterat sheet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.