Intervjuresponser ska vara den enkla delen. Men när formuläret stänger står du med utspridda anteckningar, halvt kopierade citat och den där tråden med ”var sparade vi det?”
Marknadschefer känner det när kundintervjuerna staplas på hög. Grundare som försöker validera ett nytt erbjudande hamnar i samma röra. Och researchers som gör discovery-samtal? De behöver loggning av formulärintervjuer som inte faller isär så fort volymen ökar.
Det här arbetsflödet gör ett Google-formulär till en guidad AI-intervju och skriver hela transkriptionen prydligt till Google Sheets. Du får se vad som automatiseras, vad du behöver och var team oftast går bet.
Så fungerar den här automationen
Se hur det här löser problemet:
n8n Workflow Template: Google Forms till Google Sheets, intervjuer loggas
flowchart LR
subgraph sg0["Start Interview Flow"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Stop Interview?", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Generate Row", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Generate Row1", pos: "b", h: 48 }
n3@{ icon: "mdi:memory", form: "rounded", label: "Clear For Next Interview", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Send Reply To Agent", pos: "b", h: 48 }
n5["<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/form.svg' width='40' height='40' /></div><br/>Start Interview"]
n6["<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/form.svg' width='40' height='40' /></div><br/>Get Answer"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Interview Topic", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "UUID", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Generate Row2", pos: "b", h: 48 }
n10["<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/redis.svg' width='40' height='40' /></div><br/>Create Session"]
n11["<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/redis.svg' width='40' height='40' /></div><br/>Update Session"]
n12["<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/redis.svg' width='40' height='40' /></div><br/>Update Session1"]
n13["<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/redis.svg' width='40' height='40' /></div><br/>Update Session2"]
n16@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory2", pos: "b", h: 48 }
n17@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory", pos: "b", h: 48 }
n18["<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/form.svg' width='40' height='40' /></div><br/>Redirect to Completion Screen"]
n21@{ icon: "mdi:robot", form: "rounded", label: "AI Researcher", pos: "b", h: 48 }
n22@{ icon: "mdi:swap-vertical", form: "rounded", label: "Parse Response", pos: "b", h: 48 }
n23@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model", pos: "b", h: 48 }
n25@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheet", pos: "b", h: 48 }
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Session to List", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "Messages To JSON", pos: "b", h: 48 }
n29["<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/redis.svg' width='40' height='40' /></div><br/>Get Session"]
n8 --> n10
n6 --> n1
n29 --> n26
n1 --> n12
n21 --> n22
n2 --> n13
n9 --> n11
n10 --> n9
n22 --> n0
n11 --> n7
n23 -.-> n21
n26 --> n27
n5 --> n8
n0 --> n2
n0 --> n6
n12 --> n4
n13 --> n3
n27 --> n25
n4 --> n21
n7 --> n21
n17 -.-> n3
n16 -.-> n21
n3 --> n18
n18 --> n29
end
subgraph sg1["Flow 2"]
direction LR
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Valid Session?", pos: "b", h: 48 }
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/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Webhook"]
n19["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
n20["<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/html.dark.svg' width='40' height='40' /></div><br/>404 Not Found"]
n24["<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/html.dark.svg' width='40' height='40' /></div><br/>Show Transcript"]
n28["<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/redis.svg' width='40' height='40' /></div><br/>Query By Session"]
n19 --> n28
n20 --> n15
n14 --> n24
n14 --> n20
n24 --> n15
n28 --> n14
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 n5 trigger
class n21 ai
class n23 aiModel
class n3,n16,n17 ai
class n0,n14 decision
class n10,n11,n12,n13,n25,n29,n28 database
class n15,n19 api
classDef customIcon fill:none,stroke:none
class n5,n6,n10,n11,n12,n13,n18,n29,n15,n19,n20,n24,n28 customIcon
Utmaningen: intervjuer som blir till efterarbete
Att genomföra intervjuer låter enkelt tills du gör det mer än ett par gånger i veckan. Någon skriver frågor på ett ställe, respondenten svarar på ett annat, och sedan försöker du sy ihop helheten från webbläsarflikar, e-postnotiser och det som råkade klistras in i ett dokument. Om du gör marknadsundersökningar blir just ”ihopsyddandet” det riktiga jobbet. Det är också där felen smyger sig in: saknat sammanhang, felciterade formuleringar och transkriptioner som aldrig hamnar i en datamängd som teamet faktiskt kan granska.
Det eskalerar snabbt. Här är var det brukar fallera i vardagen.
- Du slutar med att kopiera svar från flera sidor till en ”master”-fil, och det tar alltid längre tid än du tror.
- När intervjuerna blir längre slutar folk att göra korrekt formaterade anteckningar, vilket gör att insikter försvinner eller urvattnas.
- Det finns ingen tillförlitlig sessionstranskription, så två kollegor kan tolka samma respondent helt olika.
- Att dela råa svar blir krångligt eftersom datan inte ligger i ett granskningsvänligt format, särskilt för intressenter som lever i kalkylblad.
Lösningen: en AI-intervjuare som skriver strukturerade rader till Sheets
Det här n8n-arbetsflödet förvandlar ett flersidigt n8n-formulär till en interaktiv intervju som kan pågå så länge respondenten vill. Intervjun startar när någon öppnar ditt publicerade formulär, och arbetsflödet skapar ett unikt sessions-ID i bakgrunden. När personen svarar, svarar en AI-agent (driven av en chattmodell som Groq, men du kan byta leverantör) med nästa fråga baserat på ditt ämne och samtalet hittills. Varje fråga-och-svar-par läggs till i en sessionstranskription som lagras i Redis, så inget tappas mellan sidorna. När respondenten väljer att avsluta, stänger arbetsflödet loopen, visar en slutförandeskärm och sparar hela transkriptionen i Google Sheets som strukturerad data som teamet kan granska direkt.
Arbetsflödet börjar med en formulärtrigger och använder sedan Redis som sessionens ”minne” för transkriptionen medan AI-agenten fortsätter samtalet. När intervjun är klar konverterar n8n sessionsloggen till JSON och lägger till den i Google Sheets (eller Microsoft Excel 365 om du föredrar), vilket skapar prydliga rader som är redo för analys.
Vad som förändras: före vs. efter
| Det här elimineras | Effekten du kommer att se |
|---|---|
|
|
Effekt i praktiken
Säg att du gör 10 intervjuer i veckan och att varje intervju har 15 omgångar av fråga och svar. Manuellt kanske du lägger cirka 10 minuter per intervju på att städa anteckningar och klistra in viktiga citat i ett kalkylblad, plus ytterligare 10 minuter bara på att formatera så att det går att läsa. Det är ungefär 3 timmar i veckan i efterarbete. Med det här arbetsflödet styr respondenten intervjun i formuläret, Redis fångar transkriptionen i realtid och Google Sheets får en strukturerad sessionslogg i slutet. Du granskar fortfarande, men mycket av rutinjobbet försvinner.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra transkriptioner i rader.
- Redis (eller kompatibelt) för att lagra intervjusessioner säkert.
- LLM API-åtkomst (skaffa det via Groq eller din valda leverantör)
Kunskapsnivå: Medel. Du kopplar konton, lägger till inloggningsuppgifter och justerar lätt prompts och kolumner i Sheets.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Arbetsflödet steg för steg
Intervjun startar från ett publicerat formulär. n8n-formulärtriggern öppnar sessionen, genererar ett unikt ID och förbereder lagring så att varje respondents transkription hålls separat.
Sessionsminne skapas och uppdateras löpande. Redis lagrar startmarkeringen och lägger sedan till varje nytt svar när respondenten går vidare genom formulärsidorna. Om sessionen inte kan hittas (utgången nyckel, fel ID) visar arbetsflödet en ”saknas”-sida i stället för att misslyckas tyst.
AI-agenten ställer frågor och anpassar sig. Arbetsflödet sätter intervjuns ämne, skickar nyligt sammanhang via en minnesbuffer och låter agenten generera nästa fråga. Användaren svarar, svaret sparas och loopen fortsätter tills användaren väljer att avsluta.
Transkriptionen sammanställs och skrivs till Sheets. När intervjun avslutas delas sessionsloggen upp och konverteras till JSON, och läggs sedan till i Google Sheets (och valfritt Microsoft Excel 365) som en korrekt formaterad post för analys och delning.
Du kan enkelt ändra intervjuämnet och stoppreglerna så att de matchar din enkätstil utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Konfigurera startpunkten för intervjun så att deltagare kan starta sessionen och ange sitt namn.
- Öppna Begin Interview Form och ställ in Form Title till
UK Practical Driving Test Satisfaction Interview. - I Form Fields lägger ni till ett obligatoriskt fält med etiketten
What is your name?och platshållarenie. Sam Smith. - Under Options ställer ni in Path till
driving-lessons-surveyoch Button Label tillBegin Interview!. - Ställ in Response Mode till
lastNodeoch klistra in den angivna intervjubeskkrivningen i Form Description.
Steg 2: anslut sessionslagring (Redis)
Initiera och underhåll en sessionslogg för varje intervju med Redis. Flera Redis-noder samverkar för att lagra intervju-start, svar och stopphändelser.
- Öppna Create Unique ID och låt Action vara inställt på
generateför att skapa en sessionsidentifierare. - I Initialize Session Store ställer ni in Key till
=session_{{ $('Create Unique ID').item.json.data }}, TTL till{{ 60 * 60 * 24 }}och Value till{{ [] }}. - Bekräfta att Initialize Session Store, Append Session Log, Append Session Log 2, Append Session Log 3, Lookup Session Data och Retrieve Session List alla pekar på samma Redis-instans och använder listnyckeln
session_{{ $('Create Unique ID').first().json.data }}. - Inloggningsuppgifter krävs: anslut era redis-inloggningsuppgifter i Initialize Session Store, Append Session Log, Append Session Log 2, Append Session Log 3, Lookup Session Data och Retrieve Session List.
session_{{ $('Create Unique ID').first().json.data }}.Steg 3: sätt upp AI-intervjuagenten
Konfigurera AI-intervjuflödet så att modellen ställer frågor, tolkar svar och kontrollerar stoppvillkoret.
- Öppna Define Interview Topic och ställ in tilldelningen för answer till
Hello, my name is {{ $('Begin Interview Form').first().json['What is your name?'] }}, och interview_topic tillYour experience preparing for and taking the UK practical driving test. - I AI Interview Agent ställer ni in Text till
{{ $json.answer }}, behåll Prompt Type somdefineoch aktivera Has Output Parser. - Säkerställ att Groq Chat Engine är ansluten som språkmodell med Model inställt på
llama-3.2-90b-text-preview. Inloggningsuppgifter krävs: anslut era groqApi-inloggningsuppgifter i Groq Chat Engine. - I Parse Agent Output ställer ni in tilldelningen för output till
{{$json.output.replace('```json', '').replace('```', '').parseJson()}}för att tolka modellens JSON-svar. - I Check End Interview behåller ni booleska villkoret
{{ $json.output.stop_interview }}för att routa antingen till nästa fråga eller för att avsluta intervjun.
Steg 4: konfigurera frågeloop och sessionsloggning
Lagra varje fråga/svar-par i Redis och routa konversationen tillbaka in i agenten tills användaren avslutar intervjun.
- I Build Start Row ställer ni in timestamp till
{{ $now.toISO() }}, type tillstart_interview, question tillWhat is your name?och answer till{{ $('Begin Interview Form').first().json['What is your name?'] }}. - I Build Row Data ställer ni in timestamp till
{{ $now.toISO() }}, type tillnext_question, question till{{ $('Parse Agent Output').item.json.output.question }}och answer till{{ $('Collect Answer Form').item.json.answer }}. - I Return Answer To Agent ställer ni in answer till
{{ $('Collect Answer Form').item.json.answer }}så att svaret skickas tillbaka in i AI Interview Agent. - I Build Stop Row ställer ni in timestamp till
{{ $now.toISO() }}, type tillstop_interviewoch både question och answer tillNone. - Verifiera exekveringsflödet: Collect Answer Form → Build Row Data → Append Session Log 2 → Return Answer To Agent → AI Interview Agent.
stop_interview som en boolean.Steg 5: konfigurera transkripthämtning och webbsvar
Rendera transkript via ett webhook-baserat HTML-svar efter att en session har slutförts.
- I Incoming Transcript Webhook behåller ni Path inställt på
ai-interview-transcripts/:session_idoch Response Mode påresponseNode. - I Lookup Session Data ställer ni in Key till
session_{{ $('Incoming Transcript Webhook').first().json.params.session_id }}och Property Name tilldata. - I Validate Session Exists behåller ni villkoret som kontrollerar att
{{ $json.data }}finns för att routa antingen till Render Transcript Page eller Render Missing Page. - I Send Webhook Reply ställer ni in Respond With till
textoch Response Body till{{ $json.html }}.
/webhook/ai-interview-transcripts/ för att testa hämtning i en webbläsare.Steg 6: konfigurera utdata till Google Sheets
Dela upp och formatera sessionsposter och lägg sedan till dem i ert kalkylark för analys och långtidslagring.
- I Retrieve Session List ställer ni in Key till
session_{{ $('Create Unique ID').first().json.data }}och Property Name tillsession. - I Split Session Items ställer ni in Field To Split Out till
session. - I Session To JSON ställer ni in JSON Output till
{{ { ...$json.session.parseJson(), session_id: `session_${$('Create Unique ID').first().json.data}`, name: $('Begin Interview Form').first().json['What is your name?'], } }}. - I Append To Sheets väljer ni mål-Document och Sheet Name, och mappar kolumner med den befintliga auto-map-konfigurationen.
- Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Append To Sheets.
Steg 7: konfigurera slutförande och sessionsåterställning
När intervjun avslutas rensar ni minnet, omdirigerar användaren till transkriptet och slutför sessionsloggen.
- I Reset For Next Session ställer ni in Mode till
deleteoch Delete Mode tillall. - I Route To Completion Page ställer ni in Operation till
completionoch Redirect URL tillhttps://./webhook/ /ai-interview-transcripts/{{ $('Create Unique ID').first().json.data }} - Bekräfta att flödet Append Session Log 3 → Reset For Next Session → Route To Completion Page → Retrieve Session List är intakt.
Steg 8: testa och aktivera ert workflow
Kör en komplett intervjusession för att verifiera att frågor, loggar, transkript och rader i kalkylarket fungerar som förväntat.
- Klicka på Execute Workflow, öppna länken Begin Interview Form och skicka in ett namn för att starta en session.
- Svara på flera frågor via Collect Answer Form och skriv sedan
STOPför att avsluta intervjun. - Verifiera att transkriptsidan laddas från Incoming Transcript Webhook och visar er historik av frågor och svar från Render Transcript Page.
- Bekräfta att kalkylarket får tillagda rader i Append To Sheets.
- När ni är redo, växla workflowet till Active så att formulären och webhookarna är tillgängliga i produktion.
Se upp med
- Inloggningsuppgifter för Google Sheets kan gå ut eller behöva specifika behörigheter. Om det slutar fungera, kontrollera först skärmen för inloggningsuppgifter i n8n och delningsinställningarna för målarket.
- Redis-sessioner kan ”försvinna” om din TTL (utgångstid) är för kort eller om din Redis-instans startar om. Om respondenter rapporterar saknade transkriptioner, kontrollera Redis-inställningar för persistens och utgångstid för sessionsnycklar.
- Standardprompter för AI är generiska. Lägg in er tonalitet och ert researchmål tidigt, annars kommer du senare att lägga tiden på att skriva om frågor och städa röriga svar.
Vanliga frågor
Cirka en timme om dina inloggningsuppgifter för Sheets, Redis och AI är klara.
Ja, men någon behöver vara bekväm med att koppla inloggningsuppgifter och testa en hel intervju från start till mål. Ingen kodning krävs.
Ja. n8n har ett gratis självhostat 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 kostnader för LLM-API (ofta några cent per intervju, beroende på längd).
Två alternativ: n8n Cloud (hanterad, enklast att komma igång) eller självhostning på en VPS. För självhostning är Hostinger VPS prisvärd och hanterar n8n bra. Självhostning ger obegränsade exekveringar men kräver grundläggande serveradministration.
Du kan byta chattmodell utan att ändra det övergripande flödet genom att ersätta Groq Chat Engine med en annan leverantörsnod (inklusive en OpenAI Chat Model) och behålla samma inputs till AI Interview Agent. De flesta team anpassar ”Define Interview Topic” och agentens prompt så att den ställer frågor i rätt tonalitet, borrar djupare och avslutar på rätt ställe. Om du vill ha andra outputs, justera ”Build Row Data” och ”Append To Sheets” så att dina kolumner matchar hur du analyserar intervjuer. Du kan också ändra texten på slutförandesidan i ”Route To Completion Page” för att sätta förväntningar kring uppföljning.
Oftast beror det på utgångna inloggningsuppgifter eller att kalkylarket inte är delat med det anslutna Google-kontot. Uppdatera Google Sheets-inloggningsuppgiften i n8n och bekräfta sedan att målarket och fliken fortfarande finns kvar. Om du nyligen ändrade kolumner kan ”Append To Sheets” också skriva till ett intervall som inte längre matchar dina rubriker.
Om du självhostar finns ingen exekveringsgräns; kapaciteten beror främst på din server och din AI-leverantörs rate limits. På n8n Cloud sätter din plan antalet exekveringar per månad, och intervjuer kan använda flera exekveringar eftersom arbetsflödet loopar genom fråge- och svarsomgångar. I praktiken kan de flesta små team köra dussintals intervjuer i veckan utan att tänka på det, och sedan skala upp genom att korta intervjun eller minska hur ofta agenten anropar modellen.
Ofta, ja. Det här arbetsflödet bygger på en loopad interaktion (fråga, svar, spara, fråga igen) plus sessionslagring i Redis, vilket är krångligt i de flesta ”linjära” automationsbyggare. n8n ger dig också mer kontroll över förgreningar med If/Switch-logik, och du kan självhosta när volymen växer. Zapier eller Make kan fortfarande vara bra för enkla flöden som ”formulärinskick → lägg till rad”, men det här är mer än så. Prata med en automationsexpert om du vill ha hjälp att välja det enklaste verktyget för din situation.
När intervjuer automatiskt landar i Google Sheets som korrekt formaterade transkriptioner slutar research att kännas skört. Arbetsflödet tar hand om den repetitiva insamlingen så att du kan fokusera på mönster, beslut och nästa steg.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.