Mötesdetaljer kommer i de sämsta formaten. Ett Telegram-meddelande med halva datumet, ett ”i morgon klockan 3”, en Zoom-länk nedgrävd i mitten och två personer som ”kanske” kommer. Och sedan måste någon göra om det till felfria fält du kan lita på.
Den här OpenAI Sheets-automationen träffar ops-chefer och projektledare först, eftersom de lever i kalendrar och överlämningar. Utvecklare som bygger AI-workflows känner det också, ärligt talat, eftersom ”nästan rätt” AI-output är så produktionsincidenter börjar. Målet här är enkelt: strukturerade mötesdetaljer som du kan stoppa in i ett workflow utan att behöva ifrågasätta varje fält.
Du får se hur denna n8n-subworkflow extraherar mötesinfo, validerar den med ett schema och till och med kan poängsätta sig själv mot testfall i Google Sheets så att du vet att den beter sig som den ska innan du går live.
Så fungerar automatiseringen
Hela n8n-workflowen, från trigger till slutlig output:
n8n Workflow Template: OpenAI + Google Sheets: strukturera mötesdetaljer snabbt
flowchart LR
subgraph sg0["load_eval_data Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "normalize_trigger_input", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "load_eval_data", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "merged_inputs", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "output_fixer", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "not_evaluating", pos: "b", h: 48 }
n9@{ icon: "mdi:location-exit", form: "rounded", label: "handle_error", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "normalize_eval_data", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "record_eval_output", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "evaluate_match", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "extract_meeting_details", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "validate_output", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "normalize_agent_output", pos: "b", h: 48 }
n0 --> n1
n6 -.-> n4
n3 --> n13
n12 --> n11
n2 --> n10
n8 --> n12
n14 --> n15
n14 --> n9
n5 -.-> n13
n7 -.-> n12
n10 --> n3
n15 --> n8
n13 --> n14
n13 --> n9
n1 --> n3
n4 -.-> n13
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 n0,n2 trigger
class n4,n13 ai
class n5,n6,n7 aiModel
class n8,n14 decision
Problemet: mötesdetaljer är alltid ”nästan” rätt
Om du någon gång har försökt göra om naturligt språk till kalenderklara fält så känner du igen smärtan: meddelandet låter tydligt för en människa, men är fullt av dold tvetydighet. ”Nästa fredag” beror på tidszon och referensdatum. ”På HQ” kan betyda en gatuadress, ett byggnadsnamn eller ingenting alls. Och när AI är inblandat ändras risken. Det handlar inte bara om saknad data. Det handlar om självsäkert felaktig data som slinker in i nästa system och i det tysta skapar fel i din överlämning.
Det blir snabbt mycket. Här är var det vanligtvis faller isär i verkliga workflows.
- Folk kopierar och klistrar in mötesmeddelanden i dokument eller Sheets, vilket tar några minuter varje gång och ändå ger inkonsekventa fält.
- Relativa tider som ”i morgon förmiddag” skapar fel när workflowen körs i fel tidszon eller körs om senare.
- AI-output kan se korrekt ut men vara fel formaterad JSON, så nedströms automationer fallerar av fåniga skäl.
- De flesta team testar aldrig extraktionskvalitet, så du märker problemen först efter ett missat möte eller en mejltråd med kund.
Lösningen: extrahera, validera och poängsätt mötesdetaljer automatiskt
Det här workflowet är en återanvändbar n8n-subworkflow som gör om röriga mötesmeddelanden till strukturerade fält som titel, datum, tid, plats, länkar och deltagare. Den börjar med att standardisera det som triggat körningen (en webhook, en parent-workflow eller en testharness). Sedan läser en AI-agent som drivs av OpenAI meddelandet och tar fram strukturerad output. Direkt efteråt validerar workflowet den outputen mot ett strikt JSON-schema så att fel formaterade eller saknade fält fångas tidigt, inte efter att datan redan har skrivits någon annanstans.
Det finns också ett andra läge: utvärdering. I stället för att processa ett riktigt meddelande kan workflowet hämta testrader från Google Sheets, köra extraktion på varje rad och poängsätta resultatet mot förväntade outputs. Du får spårbara, repeterbara kontroller av typen ”funkar agenten faktiskt?”, vilket är det de flesta AI-automationer hoppar över.
Det du får: automation vs. resultat
| Vad workflowet automatiserar | Resultaten du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt team hanterar 20 ”kan vi ses?”-meddelanden per vecka via Telegram och webbformulär. Att manuellt städa upp varje meddelande till sex fält (titel, datum, tid, plats, länk, deltagare) kan ta cirka 6 minuter styck, alltså ungefär 2 timmar i veckan. Med det här workflowet blir den mänskliga insatsen en snabb inklistring i triggern (cirka 30 sekunder), sedan kör agenten och returnerar strukturerade fält plus validering. Tiden flyttas från rutinjobb till snabb granskning, och felen minskar eftersom schemat fångar det udda.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- OpenAI för att extrahera och reparera strukturerad mötesdata
- Google Sheets för att lagra utvärderingsinput och förväntade outputs
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden)
Svårighetsgrad: Medel. Du kopplar in credentials, uppdaterar Sheet-ID:n i ett par noder och kör testexekveringar för att bekräfta output.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En parent-workflow triggar subworkflowen. Den startar med en aktiveringstrigger (eller utvärderingstrigger) så att du kan anropa denna extractor från Slack, Telegram, e-post eller vilken webhook-baserad källa som helst.
Inkommande text standardiseras. n8n normaliserar input till en konsekvent form, vilket innebär att agenten inte behöver hantera tio olika fältnamn och format.
OpenAI-agenten härleder mötesdetaljer. Agenten läser meddelandet, löser relativa tider med tidszonskontext och outputtar mötesdetaljer i ett strukturerat format som nedströms system kan konsumera.
Validering och routing avgör vad som händer härnäst. En parser för strukturerad output tvingar fram JSON-schemat, en ”output repair”-modell kan fixa formatering, och en If-nod returnerar antingen felfri data eller lyfter ett processfel med spårbarhet för exekveringen.
Du kan enkelt modifiera mötesfälten så att de matchar din interna mall, eller byta utvärderingskriterier så att de matchar vad ”korrekt” betyder för din verksamhet. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Execute Workflow-triggern
Konfigurera subworkflow-triggern så att den här automatiseringen kan ta emot meddelandetext och tidszon från ett överordnat arbetsflöde.
- Lägg till Subflow Activation Trigger och definiera workflowInputs med name-värdena
message_textochtimezone. - I Standardize Trigger Data, mappa message_text till
{{ $('Subflow Activation Trigger').first().json.message_text }}. - Ställ in now till
{{ new Date().toISOString() }}och timezone till{{ $('Subflow Activation Trigger').first().json.timezone }}. - Koppla Subflow Activation Trigger → Standardize Trigger Data → Combine Incoming Data.
Steg 2: Anslut Google Sheets
Koppla in källan för utvärderingsdatasetet och loggning av resultat i Google Sheets.
- Öppna Retrieve Evaluation Rows och ställ in documentId till
[YOUR_ID]och sheetName tillmeeting_extractor(gid=0). - Aktivera limitRows i Retrieve Evaluation Rows.
- Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Retrieve Evaluation Rows.
- Öppna Log Evaluation Results och ställ in documentId till
[YOUR_ID]och sheetName tillmeeting_extractor(gid=0). - Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Log Evaluation Results.
⚠️ Vanlig fallgrop: Om [YOUR_ID] inte ersätts med ett riktigt Google Sheet-ID kommer utvärderings- och loggningsnoderna att misslyckas.
Steg 3: Sätt upp AI-pipelinen för extraktion
Konfigurera agenten, språkmodellerna och den strukturerade parsern som extraherar mötesdetaljer från inkommande meddelanden.
- Öppna OpenAI Chat Engine och välj modellen
gpt-4.1-minimed temperature satt till0och responseFormat satt tilljson_object. - Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter i OpenAI Chat Engine.
- Öppna Derive Meeting Details och ställ in text till
=Inputs: - message_text: {{ $('Combine Incoming Data').first().json.message_text }} - reference_datetime_utc: {{ $('Combine Incoming Data').first().json.now }} - timezone: {{ $('Combine Incoming Data').first().json.timezone }}. - Behåll promptType inställt på define och lämna systeminstruktionerna som de är i Derive Meeting Details.
- Öppna Structured Result Parser och behåll schemaType inställt på
manual, ha autoFix aktiverat och använd det angivna JSON-schemat i inputSchema. - Koppla OpenAI Chat Engine till Derive Meeting Details som språkmodell och Structured Result Parser till Derive Meeting Details som output-parser.
- Öppna Output Repair Model och välj modellen
gpt-5-mini. - Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter i Output Repair Model.
Obs: Structured Result Parser är en AI-subnod—lägg till OpenAI-autentiseringsuppgifter i OpenAI Chat Engine och Output Repair Model, inte i själva parsern.
Steg 4: Konfigurera utvärdering och loggning av output
Förbered utvärderingsinmatningar, poängsätt AI-output och logga tillbaka resultaten till Google Sheets.
- I Prepare Evaluation Inputs, ställ in message_text till
{{ $('Retrieve Evaluation Rows').item.json.input }}och is_evaluating tilltrue. - Ställ in =now till
{{ new Date('2026-01-06T15:30:00Z').toISOString() }}och timezone tillAmerica/Argentina/Buenos_Aires. - I Score Output Match, behåll prompt som angivet och ställ in actualAnswer till
{{ JSON.stringify($('Normalize Agent Result').first().json.meeting) }}. - Ställ in expectedAnswer till
{{ JSON.stringify($('Retrieve Evaluation Rows').item.json.expected_output) }}och behåll operation somsetMetrics. - Öppna Evaluation Chat Engine och välj modellen
gpt-5-mini. - Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter i Evaluation Chat Engine.
- I Log Evaluation Results, mappa actual_output till
{{ JSON.stringify($('Normalize Agent Result').first().json.meeting) }}, metadata till{{ JSON.stringify($('Normalize Agent Result').first().json.reasoning) }}och match till{{ $('Score Output Match').first().json.match }}. - Bekräfta flödet Retrieve Evaluation Rows → Prepare Evaluation Inputs → Combine Incoming Data → Derive Meeting Details → Verify Agent Output → Normalize Agent Result → Route Evaluation Mode → Score Output Match → Log Evaluation Results.
Steg 5: Lägg till felhantering
Hantera fall där AI-output inte går att parsa eller normalisera korrekt.
- I Verify Agent Output, behåll villkoret som kontrollerar
{{ $('Derive Meeting Details').first().json.output }}med operatorn notEmpty. - Säkerställ att false-grenen från Verify Agent Output routas till Raise Processing Error.
- I Raise Processing Error, behåll errorType som
errorObjectoch errorObject satt till{{ JSON.stringify({ error: { message: 'AI agent failed to normalize event strings', execution: $execution, workflow: $workflow }, timestamp: new Date().toISOString() }) }}.
⚠️ Vanlig fallgrop: Om Derive Meeting Details returnerar ogiltig JSON kan output-parsern misslyckas—behåll Structured Result Parser auto-fix aktiverat och verifiera systemprompten.
Steg 6: Testa och aktivera ert arbetsflöde
Validera att subflödet tar emot input, extraherar mötesdata och loggar utvärderingsresultat utan problem.
- Kör Subflow Activation Trigger manuellt med exempelvärden för
message_textochtimezone. - Bekräfta att Normalize Agent Result returnerar ett meeting-objekt och en reasoning-sträng.
- Om ni kör utvärdering, kontrollera att Score Output Match genererar ett match-värde och att Log Evaluation Results skriver till Google Sheets.
- När testerna passerar, aktivera arbetsflödet så att subflödet är tillgängligt i produktion.
Vanliga fallgropar
- Google Sheets-credentials kan löpa ut eller kräva specifika behörigheter. Om det strular, kontrollera först n8n:s credential-koppling och Sheetens delningsinställningar.
- Om du använder utvärderingskörningar som loopar över rader varierar processtiderna. Om nedströms noder fallerar vid tomma svar, sakta ner eller minska batchstorleken.
- Standardprompter i AI-noder är generiska. Lägg in dina tidszonsregler och vägledning för ”vad som räknas som ett giltigt möte” tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka en timme om du redan har din OpenAI-nyckel och åtkomst till Google Sheets klart.
Nej. Du kopplar främst konton och klistrar in rätt Sheet-ID:n. ”Logiken” finns redan inbyggd i workflowet.
Ja. n8n har ett gratis alternativ för self-hosting 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 in OpenAI API-kostnader (oftast några cent per batch av meddelanden, beroende på modell och längd).
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 exekveringar men kräver grundläggande serveradministration.
Ja, och det är hela poängen. Du uppdaterar schemat i Structured Result Parser så att det matchar dina fält och justerar sedan agentinstruktionerna i noden Derive Meeting Details. Vanliga justeringar är att lägga till mötestyp, tvinga fram ett specifikt platsformat och kräva en bekräftad deltagarlista innan ett ”giltigt” resultat returneras.
Oftast är det en ogiltig eller utgången API-nyckel, eller att credentialn inte är kopplad till noderna för OpenAI Chat Model. Det kan också vara problem med modellåtkomst på ditt OpenAI-konto, särskilt om du bytte till en modell som ditt konto inte stödjer. Om felen bara händer under utvärderingskörningar, kontrollera rate limits och sakta ner workflowet lite. Bekräfta till sist att felet inte egentligen kommer från schemavalidering, eftersom det kan se ut som ”AI:n misslyckades” när det verkliga problemet är formatering.
Många. På n8n Cloud Starter begränsas du av månatliga exekveringar; vid self-hosting beror det mest på din server och OpenAI:s rate limits. I praktiken kör team detta utan problem för tiotals till hundratals mötesmeddelanden per dag och skalar sedan genom att batcha utvärdering och hålla promptar korta.
Ofta, ja, eftersom workflowet lutar sig mot strikt schemavalidering, branching och ett utvärderingsläge som är enklare att underhålla i n8n. Zapier eller Make kan fortfarande fungera om du bara extraherar ett par fält och inte bryr dig om testning. Men om du behöver driftsäkerhet, spårbara fel och repeterbar poängsättning mot ett Google Sheet med testfall är n8n ett bättre val. Detta är också designat som en subworkflow, så du kan återanvända den i flera parent-automationer utan att duplicera logik. Om du tvekar, prata med en automationsexpert och få en rak rekommendation.
När detta väl är på plats slutar mötesmeddelanden att vara ett ständigt städprojekt. Du får strukturerade detaljer du kan lita på, plus ett sätt att bevisa att agenten är pålitlig innan den rör verklig drift.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.