Att skriva offerter har en lurig tendens att stjäla dina bästa timmar. Du börjar med några affärsanteckningar, och plötsligt blir det formatering, omskrivningar, jakt på den ”senaste” mallen och att du ifrågasätter varenda formulering.
Den här automatiseringen för Google Docs-offerter träffar byråägare först, eftersom offerter är det som håller pipelinen vid liv. Men säljare och konsulter känner också av det, särskilt när du försöker svara snabbt utan att låta generisk.
Du sätter upp ett n8n-flöde som tar dina indata, skapar ett genomarbetat offertutkast, förbättrar det för läsbarhet och skapar sedan ett färdigt Google-dokument utifrån din mall — och pingar dig i Slack när det är klart att skicka.
så fungerar automatiseringen
Här är hela flödet du kommer att sätta upp:
n8n Workflow Template: Google Docs + Slack: offerter klara att skicka
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Google Drive", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set proposal values", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Rewrite proposal", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Create proposal", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Update proposal", pos: "b", h: 48 }
n0 --> n7
n6 --> n5
n5 --> n0
n4 --> n6
n2 -.-> n5
n3 -.-> n5
n1 --> n4
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 n1 trigger
class n3,n5,n6 ai
class n2 aiModel
varför det här spelar roll: att skriva offertutkast äter upp din säljtId
De flesta offerter faller inte för att du saknar kompetens. De faller för att du är upptagen, stressad och försöker återskapa samma dokument från noll igen. Du kopierar ett gammalt dokument, byter ut några rader och märker sedan att tonen är fel. Sen formaterar du om, städar upp avsnitt och inser att stycket om ”omfattning” fortfarande nämner en annan kund. Det är inte svårt arbete. Det är skört arbete — och det drar dig bort från samtal, uppföljningar och leverans.
Och ärligt talat: friktionen byggs på.
- Gamla offertmallar återanvänds med små misstag, vilket skapar obekväma kundsamtal senare.
- När du redigerar i all hast tenderar du att förklara värdet för lite och leveransen för mycket.
- Team tappar tid på att jaga godkännanden eftersom ingen vet när utkastet är ”tillräckligt klart” för granskning.
- Slutdokumentet blir ofta inkonsekvent med ert tonalitet, så du fortsätter skriva om samma avsnitt.
vad du bygger: från affärsanteckningar till ett färdigt offertdokument (med en Slack-ping)
Det här flödet startar med en enkel manuell körning i n8n, där du matar in offertgrunderna och nyckelpunkter. Därifrån utvecklar AI dina indata till ett komplett utkast som faktiskt läser som en offert — inte punktlistor som klistrats ihop. En andra AI-passering förbättrar sedan texten för tydlighet och flyt, så du lägger mindre tid på att ”fixa svenskan” och mer tid på att kontrollera erbjudandet. Till sist kopierar n8n din Google Docs-mall i Google Drive, ersätter dina platshållare med det genererade innehållet och skapar ett dokument redo för kund. När det är klart får du en notis i Slack så att du kan granska, justera och skicka.
Flödet drar igång med dina manuella indata, kör två AI-steg för textproduktion och publicerar sedan resultatet i en standardiserad Google Docs-mall. Du får ett strukturerat utkast som bara kräver en snabb mänsklig genomgång — inte en total omskrivning.
det du bygger
| det som automatiseras | det du uppnår |
|---|---|
|
|
förväntade resultat
Säg att du skickar 5 offerter i veckan. Manuellt tar till och med ett ”enkelt” utkast oftast 60 minuter: 20 minuter skrivande, 20 minuter att städa upp strukturen och ytterligare 20 minuter för att få det att matcha din mall. Med det här flödet lägger du cirka 10 minuter på att mata in grunderna och väntar sedan några minuter medan AI:n skriver och dokumentet skapas. Du granskar fortfarande innan du skickar, men du granskar en riktig offert — du börjar inte från en tom sida.
innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Drive för att kopiera och lagra offertmallar.
- Google Docs för att generera det slutliga dokumentet redo för kund.
- Slack för att avisera dig när utkastet är klart.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
- OpenRouter API-nyckel (hämta den från ditt OpenRouter-konto för åtkomst till Claude).
Svårighetsgrad: Nybörjare. Du kopplar konton, klistrar in API-nycklar och matchar mallens platshållare mot fält en gång.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
steg för steg
Du startar när du är redo. Det här flödet använder en manuell trigger, så du kör det när en affär når ”offertläge” — inte varje gång ett formulär fylls i.
Du matar in offertens grunduppgifter. I steget ”Assign Proposal Fields” anger du de indata som AI:n ska använda (kundnamn, problemsammanfattning, punkter för omfattning, tidslinje, prisnoteringar eller vad din mall nu förväntar sig).
AI skriver utkast, sedan redigerar. OpenAI genererar det första fulla offertutkastet, sedan förfinar Claude det för läsbarhet och struktur. Målet är färre omskrivningar, inte ”perfekt på första försöket”.
Dokumentet skapas i Google. n8n kopierar din Google Docs-mall från Drive och uppdaterar platshållarna i steget ”Update Doc Template”, så att slutresultatet matchar din layout och ditt varumärke.
Du kan enkelt justera platshållare och avsnitt så att de matchar din tjänst eller hur du vill paketera erbjudandet. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startar manuellt och går sedan vidare till fälttilldelning och AI-generering.
- Lägg till noden Manual Launch Trigger som din trigger.
- Behåll standardinställningarna (inga parametrar krävs) så att ni kan köra det vid behov.
- Verifiera att körordningen börjar Manual Launch Trigger → Assign Proposal Fields.
Steg 2: Koppla in indata för offertförslaget
Definiera indatafälten för offertförslaget som matar AI:ns utkastgenerering.
- Öppna Assign Proposal Fields och lägg till tilldelningar för varje indata.
- Ställ in Name company till
Example Company. - Ställ in Name client till
Client Contact. - Ställ in Problem till
There is no clear way of generating a proposal at scale. - Ställ in Solution till
Proposal generator using n8n. - Ställ in Timeline till
1 week, Scope tillScope of project is only focused on clients in USA, och Price till1000000.
Steg 3: Sätt upp AI-utkast och förfining
AI-lagret genererar ett strukturerat offertutkast och förfinar det innan dokumentet skapas.
- Konfigurera Generate Proposal Draft med jsonOutput aktiverat och behåll promptmeddelandena intakta för att producera den strukturerade JSON:en.
- Inloggningsuppgifter krävs: Anslut era
openAiApi-inloggningsuppgifter i Generate Proposal Draft. - I Refine Proposal Draft ställer ni in Text till
Your task is to write proposals in a clear professional manner. The tone should be helpful, like a consultant and friendly. Title should be max 4 words Rewrite everything.och behåller Prompt Type somdefine. - Säkerställ att meddelandemallen i Refine Proposal Draft använder uttrycket
{{$json.message.content.toJsonString()}}. - Ställ in OpenRouter Dialogue Model som språkmodell för Refine Proposal Draft med Model satt till
anthropic/claude-3.5-sonnet. - Inloggningsuppgifter krävs: Anslut era
openRouterApi-inloggningsuppgifter i OpenRouter Dialogue Model. - Behåll Structured Output Decoder kopplad som utdataparser för Refine Proposal Draft med den angivna jsonSchemaExample.
Steg 4: Konfigurera dokumentskapande och uppdateringar
Den förfinade JSON-utdata används för att kopiera en mall och ersätta platshållare i det nya dokumentet.
- Öppna Drive Template Copy och ställ in Operation till
copy. - Ställ in Name till
{{ new Date().toISOString().split('T')[0] }} - {{ $json.output.clientCompany }} - {{ $json.output.proposalTitle }}. - Välj källmallen File ID och Drive ID (ersätt
[YOUR_ID]), ställ in Folder till/ (Root folder)och ställ in Same Folder tillfalse. - Inloggningsuppgifter krävs: Anslut era
googleDriveOAuth2Api-inloggningsuppgifter i Drive Template Copy. - Konfigurera Update Doc Template med Operation satt till
updateoch Document URL satt till{{$json.id}}. - Mappa ersättningar i Update Doc Template med uttrycken från Refine Proposal Draft, såsom
{{ $('Refine Proposal Draft').item.json.output.proposalTitle }},{{ $('Refine Proposal Draft').item.json.output.clientName }}, och{{ $today.format('yyyy-MM-dd') }}för {proposalDate}. - Inloggningsuppgifter krävs: Anslut era
googleDocsOAuth2Api-inloggningsuppgifter i Update Doc Template.
{proposalTitle} och {clientName} som exakt matchar ersättningsfälten i Update Doc Template.Steg 5: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera AI-utdata och dokumentuppdateringar, och aktivera sedan för löpande användning.
- Klicka på Execute Workflow i Manual Launch Trigger för att köra ett test.
- Bekräfta att Generate Proposal Draft returnerar strukturerad JSON och att Refine Proposal Draft returnerar det förfinade
output-objektet. - Verifiera att Drive Template Copy skapar en ny fil med namnformatet
YYYY-MM-DD - Company - Title. - Öppna dokumentet som uppdaterats av Update Doc Template och säkerställ att alla platshållare har ersatts.
- När allt fungerar växlar ni arbetsflödet till Active för att använda det i produktion.
felsökningstips
- Inloggningar till Google Drive/Docs kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först det anslutna Google-kontot i n8n:s lista över Credentials.
- Om ditt OpenRouter-anrop (Claude) misslyckas beror det ofta på en API-nyckel eller en inställning för modellåtkomst i din OpenRouter-dashboard. Uppdatera nyckeln i n8n och kör en ny exekvering för att bekräfta.
- Standardpromptar i AI-noder är generiska. Lägg in ert tonalitet tidigt, annars kommer du att redigera utdata i all evighet.
snabba svar
Cirka 10–15 minuter om din mall är klar.
Nej. Du kopplar främst konton och klistrar in API-nycklar. Den enda lite pilliga delen är att matcha mallens platshållare mot de fält du vill fylla.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Molnplaner startar på 20 USD/månad för högre volymer. Du behöver också räkna in OpenAI- och OpenRouter-API-användning, vilket vanligtvis är några cent per offertutkast.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du. De flesta ändringar görs i ”Assign Proposal Fields” (dina indata) och ”Update Doc Template” (platshållarvariablerna i din Google Docs-mall). Vanliga justeringar är att lägga till en kortare version för små projekt, lägga in en sektion med ”kundcase”, eller ändra prisupplägget så att det matchar din paketering.
Oftast beror det på att Google-inloggningen i n8n har löpt ut, eller att det anslutna kontot inte har åtkomst till mallfilen i Drive. Anslut Google på nytt i n8n Credentials och bekräfta sedan att mallen ligger i en Drive som samma konto kan öppna. Om dokumentet uppdateras men platshållarna inte ändras matchar dina variabelnamn i mallen troligen inte de namn som sätts i ”Assign Proposal Fields”.
I praktiken hanterar det normal offertvolym utan problem (dussintals per dag) så länge dina gränser i AI-API:erna är okej.
Ofta, ja, eftersom det här flödet gynnas av AI-bearbetning i flera steg och mallbaserad dokumentgenerering på ett ställe. n8n gör det enklare att lägga till förgrenad logik senare, som att skapa olika offertversioner baserat på affärsstorlek, eller att routa utkast till olika Slack-kanaler för granskning. Det är också mer vänligt för egen drift, vilket spelar roll om du genererar många dokument och inte vill ha prissättning per uppgift. Zapier eller Make kan fortfarande fungera om du bara behöver något enkelt, som ”formulärinskick → skapa dokument”. Om du är osäker, prata med en automationsexpert så pekar vi dig i rätt riktning.
När detta är på plats slutar offerter vara en ”stor uppgift” och blir en repeterbar process. Flödet tar hand om grovjobbet så att du kan fokusera på det som faktiskt vinner affärer.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.