Auto-Draft Proposals From a Google Doc Template in 30 Minutes
Fill out a short brief. Get a polished proposal draft generated from your template, ready to edit and send. Save 45 minutes per proposal. Ship it today.
The build: fill out a 6-question brief form, get a Google Doc proposal generated from your template with personalized sections, ready to review and send.
Total time: 30 minutes.
What you'll need
- -A Google Doc proposal template (your existing one is fine)
- -Tally or Typeform for the brief
- -n8n
- -Google Docs API (via Google service account)
- -AI API key
Step 1: Audit your template (5 min)
Open your existing proposal template in Google Docs. Identify the sections that change per proposal: - Client name - Problem statement - Approach - Deliverables - Timeline - Investment
Mark these in your template with placeholders like {{client_name}}, {{problem_statement}}, etc.
If your template doesn't have a clear structure, fix that first. AI can't generate good content from a chaotic template.
Step 2: Create the brief form (5 min)
In Tally, build a 6-question form: 1. Client name 2. What's their problem (in their words, paste from emails) 3. What's the scope (high-level) 4. What's the timeline (rough) 5. What's the budget range (rough) 6. Any constraints or unique context
Step 3: Webhook to n8n (2 min)
Point the Tally webhook at an n8n Webhook trigger.
Step 4: Generate each section with AI (10 min)
Add an AI node. Generate each variable section with a separate prompt for tone consistency.
Example for the problem statement:
``` Write the "Problem" section of a consulting proposal.
Client: {{ name }} Their problem (in their words): {{ problem_raw }} Industry context: {{ industry }}
Format: 2 paragraphs. - Paragraph 1: restate their problem in clear, professional language (their voice, sharpened) - Paragraph 2: the cost of NOT solving it (specific, not generic)
Length: 120-180 words total. Match the tone of these examples: {2-3 SAMPLES_FROM_YOUR_BEST_PROPOSALS}.
Banned phrases: "in today's fast-paced environment", "leverage", "synergize", "robust", "seamless", "paradigm". ```
Do similar for approach, deliverables, timeline, investment.
Step 5: Generate Google Doc (5 min)
Add a Google Docs node in n8n. Use the "Create from template" action.
Pass each AI-generated section as a variable replacement.
The output is a new Google Doc with all placeholders filled in.
Step 6: Notify (3 min)
Add a Slack notification (or email) with the link to the generated doc.
Format:
``` :memo: Draft proposal generated for *{{ name }}*
Review and edit: {{ doc_url }} ```
Common gotchas
- -Google service account permissions: the service account needs edit access to the template doc. Create one in Google Cloud Console, share the template with the service account email.
- -Placeholders are case-sensitive in some Google Docs replacement tools. Be consistent.
- -Long AI outputs occasionally include markdown formatting (headers, bullets) that doesn't render in Google Docs. Add a "plain text only" instruction to each prompt.
What I do with this
A new client conversation usually wraps with "I'll send a proposal by tomorrow." Before this system, that meant 45 minutes of writing.
Now I fill the form on the train. Open the generated doc when I'm at my desk. Edit for 8-12 minutes. Send.
The AI does the structure and the boring parts. I keep editorial control over the parts that matter.
What to add next
- -Multiple template versions (small engagement, large engagement, retainer)
- -Auto-generated SOW alongside the proposal
- -Calendly link insertion based on engagement type
- -E-sign integration (HelloSign, DocuSign)
Don't over-engineer. The 6-question form to a draft doc is 80% of the value.
Want the full guide? Check out our deep-dive page for more context, FAQs, and resources.
read the full guide