Proposals make or break deals. The more your proposal makes your prospect or customer feel like you've truly understood their requirements, and that you're capable of delivering on the right solutions, the more the chances you win the deal.
However, personalizing proposals takes time and effort. Thankfully, AI is here to help - even though LLM models aren't perfect, they can deliver a lot in terms of generating customized proposals for every deal.
One organization we spoke to was able to save up to an hour a day per sales person by automating the first draft of proposals with the help of AI. In this article, we'll walk you through a couple of ways in which proposals can be easily generated:
Leveraging AI within n8n to generate proposals
Leveraging AI within Zapier workflows to generate proposals
Leveraging ChatGPT, Claude or another AI product to generate proposals quickly
Leveraging Zapier or n8n to generate proposals with AI
Here's a step-by-step guide to setup a workflow on Zapier or n8n if you want to automate generating proposals with AI.
Setup form submissions as the trigger
On Zapier or n8n, you can connect the form service you use (be it Typeform, JotForm or any other product) and set the trigger for the workflow as submissions to a form. This is the first step to generating an automated sales proposal.

Alternatively, setup new deal or deal updates as the trigger
If you want AI-driven proposal generation to happen only when your sales team creates a new deal or updates some deal attributes on HubSpot, then a new deal or any form on your CRM as the trigger instead.
If you're taking this approach, make sure to set up attributes on your CRM to capture information that might be necessary for generating a good proposal (on HubSpot, you can set up custom deal attributes)
For example, you can have some sort of integration that pushes your meeting transcript as notes into a HubSpot deal's custom attributes so that AI can leverage this context when generating text for the proposal.
Alternatively, you can just create deal properties like 'Meeting notes', 'Pain points', 'Current state' etc. and have your team paste these details into those properties.
Extract content through AI blocks for the proposal
This is the harder part. You can use Zapier or n8n's AI blocks to generate text based on the information that the customer or your team had shared about the deal.
You can use one of the prompts listed later in the article, within the AI block to extract the right pieces of content.
Make sure to pass the right context depending upon the industry and the nature of your proposals - drive the prompt to extract the customer's pain points, goals or outcomes, go-live expectations or any other piece of information that's necessary for AI to build a good proposal.

Leverage extracted content to build content for your proposal document
Once AI extracts pain points, goals or outcomes, go-live expectations and other information, it's time to use those to assemble the pieces of content you want. You can have separate AI blocks set up on Zapier or n8n - one to generate scope with a dedicated prompt (where you pass pain points extracted from the other block, for instance), one to generate the list of services that need to be included in your proposal, etc.
Execute an action to create a proposal document from a template on Google Docs, Slides or Microsoft Word
Before pushing AI generated content into a new proposal document, Zapier or n8n need to duplicate the right proposal template.
You can use the 'Copy drive' action on n8n to duplicate a particular file on Google Drive. On Zapier, this would be the 'Create from template' actions.
Make sure that the file that has your proposal template has specific keywords that you can look for - for instance, you can have a placeholder {{project.scope}} in the template.
Replace sections in your template based on information extracted by AI
On n9n, you have to use the 'Replace text' action as shown below to replace text on the proposal template based on extracted or generated information. Zapier, on the other hand, will list all the placeholders you've specified in the document in the 'Create' action - you can replace these with placeholders generated by AI.
n8n lets you type out the variables and replace them, as shown below:

Sample n8n workflow that generates sales proposals with AI
This workflow template lets you take your customer's website form submission (Typeform), extracts relevant information using AI, and then passes it to Google Slides to generate a customized proposal. Depending upon your needs, you can replace the Typeform trigger with another form service (like Formstack, Jotform, etc.)
If you want proposals to be auto-generated when your sales team fills in information against a deal or an account on HubSpot, Salesforce or other CRMs, you can set those as triggers on this n8n workflow that you just copied.
You can even add a block to take the link of the generated doc or slide deck and put the URL of it back in HubSpot or Salesforce. You can then trigger it to be sent to the customer via email, when the deal moves to another stage.
There's a lot you can accomplish with n8n in a way that helps you generate the best sales proposals you've seen. As long as you're clear about what your requirements are, you can get it done - it just requires a bit of time to tweak things for your organization's needs.
Sample Zapier workflow that generates sales proposals with AI
This is similar to the n8n workflow shared above as well. The workflow extracts relevant information using AI, and then passes it to Google Slides to generate a customized proposal. You can replace Google Slides with any other service (Google Docs, for instance) that's available on Zapier to create a customized proposal.
You can also replace the trigger based on whatever your business process is.
Using ChatGPT to create proposals with AI
Pass enough context to ChatGPT or Claude for it to customize the proposal template you uploaded
Context about your business and the services you offer: make sure to point to your website in your prompt or add some information about your product catalog and prices, so that ChatGPT or Claude can leverage it when writing out the proposal.
Context about your customer: Make sure to pass basic information about the customer for whom you're generating a proposal.
Context about your services: What are the services you provide? What are the services? It's great if you uploaded existing proposals in the chat already - ChatGPT or Claude should already then have context about those. But still, it makes sense for you to explicitly share information on the precise list of products, services you offer along with your pricing logic.
Context about this specific deal or project: Depending upon the nature of your business, you might have context on your CRM about your customer's requirements and expectations. Or meeting notes, or documents where discussions were captured would be useful. You can transcribe meeting recordings, and pass on the text to AI for a tailored proposal, as well.
Make sure you instruct AI to not edit the sections in your proposal you don't want edited (e.g. the intro section or the testimonials section)
If you're on ChatGPT, leverage the Canvas tool, it's easier to point specific sentences you want edited once it generates a first draft (or go back and forth on edits, in general) with Canvas.
If you already have a website with a list of services you provide, drop the link to the website as well so it can add the respective line items based on your client's requirements.
If being really visual with your proposal matters to you as a business,
Prompts to help you extract information with AI for sales proposals
You are an information extractor trying to extract information to create a good sales proposal. Your job is to extract facts strictly from the provided SOURCES and return a compact JSON.
Do NOT invent, infer, or “fill in” anything. If a category has no evidence, set its "summary" to "unknown" and its "verbatim" to an empty array.
Return ONLY the JSON—no prose.
# OBJECTIVE (EXTRACT ONLY)
From the SOURCES, extract:
- Pain points
- Outcomes
- Goals/Objectives
- KPIs to be tracked
- Timeline
For EACH category, provide:
- summary: 1–3 sentence evidence-backed summary (no promises, no solutioning, no generation)
- verbatim: an array of short quotes (≤40 words) WITH inline source references
# VERBATIM FORMAT (strings only, no objects)
Each verbatim item must be a single string in this exact format:
"[<source_id> <optional timestamp/page> — <optional speaker>] <quoted text>"
Examples:
"[S1 00:12:45 — Buyer] “We’re losing deals because onboarding takes 4–6 weeks.”"
"[S3 p.2] “Target churn < 3% by Q4.”"
# INPUT FORMAT
I've attached files with all the sources.
# RULES
- Evidence-only. If wording is ambiguous, keep it literal in the verbatim; reflect uncertainty in the summary (e.g.: “Buyer indicates ~120 seats; exact count unclear.”).
- Recency preference on conflicts; summarize the most recent position but do not invent.
- Normalize explicit dates in the summary to ISO-8601 if they are clearly stated; otherwise keep original phrasing in quotes.
- De-duplicate semantically identical quotes; prefer the clearest/most recent.
- No arrays of JSON objects anywhere in the output. Arrays may contain strings only.
# OUTPUT FORMAT (RETURN THIS SINGLE JSON OBJECT)
{
"extracted_information": {
"pain_points": {
"summary": "string",
"verbatim": ["[S# …] “…”", "..."]
},
"outcomes": {
"summary": "string",
"verbatim": ["[S# …] “…”"]
},
"goals_objectives": {
"summary": "string",
"verbatim": ["[S# …] “…”"]
},
"kpis": {
"summary": "string",
"verbatim": ["[S# …] “…”"]
},
"timeline": {
"summary": "string",
"verbatim": ["[S# …] “…”"]
}
}
}
Prompts to help you generate content with AI for sales proposals
You are a PROPOSAL JSON GENERATOR for technology services/software offerings.
Produce a single VALID JSON OBJECT (no markdown, no comments) that represents a client-ready proposal.
Use ONLY the information present in `extracted_information`. Do NOT invent new facts.
If a concrete detail is missing or ambiguous, insert a literal placeholder string in the output: "[TBD: <what’s missing>]".
Never fabricate numbers, dates, SLAs, prices, or named systems.
# INPUTS
- company_profile (optional): { "vendor_name": "string", "offering_type": "services|software|hybrid", "product_or_modules": ["string"], "differentiators": ["string"] }
- buyer_profile (optional): { "company_name": "string", "industry": "string", "geography": "string" }
- style (optional): { "tone": "consultative|formal|succinct", "verbosity": "brief|standard|detailed", "include_evidence_notes": true|false }
- extracted_information (REQUIRED): exactly this shape:
{
"extracted_information": {
"pain_points": {"summary":"string","verbatim":["[S# …] …"]},
"outcomes": {"summary":"string","verbatim":["[S# …] …"]},
"goals_objectives": {"summary":"string","verbatim":["[S# …] …"]},
"kpis": {"summary":"string","verbatim":["[S# …] …"]},
"timeline": {"summary":"string","verbatim":["[S# …] …"]},
"project_variables": {"summary":"string","verbatim":["[S# …] …"]}
}
}
# CORE RULES
1) Evidence-first: Wording must be consistent with the *summaries*. Use verbatim only for optional evidence notes.
2) No invention: If a section requires details not present in summaries, use "[TBD: …]" and add a matching item to open_questions.
3) Dates & numbers: Include only if clearly present in summaries. Normalize dates to ISO-8601 if explicit; else keep placeholders.
4) Tech focus: Language should fit technology services/software (integrations, environments, SLO/SLA, security reviews), but specifics only if present.
5) Scope discipline: Separate in-scope vs out-of-scope vs assumptions vs dependencies.
6) KPI plan: Reflect KPI summary; if targets/frequency/owners are missing, leave placeholders and add open questions.
7) Timeline: Reflect only timeline summary; if missing, use phase placeholders like "Phase 1 [TBD]" and add an open question.
8) Output must be a single valid JSON object matching the OUTPUT SHAPE below—no extra fields.
# OUTPUT SHAPE (MUST MATCH EXACTLY — values may be empty arrays or '[TBD: …]' strings)
{
"schema_version": "1.0",
"metadata": {
"vendor_name": "<from company_profile.vendor_name or '[TBD: vendor_name]'>",
"buyer_company": "<from buyer_profile.company_name or '[TBD: buyer_company]'>",
"offering_type": "<services|software|hybrid|[TBD: offering_type]>",
"prepared_at": "<ISO-8601 timestamp now>",
"style": {
"tone": "<consultative|formal|succinct|[TBD]>",
"verbosity": "<brief|standard|detailed|[TBD]>",
"include_evidence_notes": <true|false>
}
},
"executive_summary": {
"context": "<derived strictly from pain_points.summary and outcomes.summary>",
"desired_end_state": "<from outcomes.summary and goals_objectives.summary>",
"proposed_approach": "<1–2 paragraphs tailored to offering_type, consistent with summaries; use placeholders where needed>"
},
"solution_overview": {
"model": "<architecture/service model narrative, evidence-aligned or '[TBD: solution model]'>",
"modules_or_capabilities": ["<from goals_objectives/outcomes summaries or '[TBD]'>"],
"key_benefits": ["<map to outcomes.summary, no new promises>"],
"fit_for_tech_companies": "<explain applicability to tech services/software using only evidenced context; else '[TBD]'>"
},
"scope_of_work": {
"in_scope": ["<bullets derived from goals_objectives.summary and pain_points/outcomes>"],
"out_of_scope": ["<explicitly excluded if implied by summaries; else '[TBD: out_of_scope]'>"],
"deliverables": ["<tangible outputs implied by summaries; else '[TBD: deliverables]'>"],
"acceptance_criteria": ["<criteria present in summaries; else '[TBD: acceptance criteria]'>"]
},
"implementation_plan": {
"narrative": "<aligned to timeline.summary; if absent: '[TBD: implementation narrative]'>",
"milestones": [
{ "name": "<string>", "date_or_range": "<ISO-8601 or '[TBD]'>", "dependencies": ["<strings>"], "constraints": ["<strings>"] }
],
"dependencies": ["<from timeline/project_variables summaries; else '[TBD: dependencies]'>"],
"constraints": ["<from timeline summary; else '[TBD: constraints]'>"]
},
"roles_governance": {
"raci": [
{ "task": "<string>", "vendor": "<R|A|C|I|[TBD]>", "buyer": "<R|A|C|I|[TBD]>" }
],
"cadence": ["<e.g., weekly stand-up, demo cadence; else '[TBD: cadence]'>"]
},
"integrations_data_environments": {
"systems": ["<list only if present in summaries; else '[TBD: systems]'>"],
"data_flows": ["<only if present; else '[TBD: data flows]'>"],
"non_functional": ["<SLA/SLO/performance constraints if present; else '[TBD: non-functional requirements]'>"]
},
"kpi_measurement_plan": {
"kpi_overview": "<use kpis.summary verbatim or paraphrased for clarity>",
"instrumentation_reporting": ["<systems of record, frequency if present; else '[TBD: instrumentation & reporting]'>"],
"governance": ["<owners/stakeholders if present; else '[TBD: KPI governance]'>"]
},
"risks_mitigations": {
"risks": ["<only risks evident from summaries (e.g., timeline pressure); else '[TBD: risks]'>"],
"mitigations": ["<only if present; else '[TBD: mitigations]'>"]
},
"assumptions_dependencies": {
"assumptions": ["<only if present; else '[TBD: assumptions]'>"],
"dependencies": ["<if present; else '[TBD: dependencies]'>"],
"change_impact_if_false": ["<qualitative impacts if present; else '[TBD: change impact]'>"]
},
"open_questions_next_steps": {
"open_questions": ["<precise questions for every placeholder used>"],
"next_steps": ["<e.g., 'Discovery workshop to finalize scope and acceptance criteria by [TBD date]'>"]
},
"evidence_notes": ["<include selected '[S# …]' strings from verbatim if style.include_evidence_notes=true; else []"]
}
# RENDERING & VALIDATION
- Output MUST be valid JSON (no trailing commas, no comments, no markdown).
- Every section must exist even if populated with placeholders.
- Where placeholders are used, add a corresponding, specific item to open_questions_next_steps.open_questions.
- Do not include any fields beyond the OUTPUT SHAPE.
- Keep arrays ordered by logical flow (e.g., milestones in chronological order if dates exist).
- If extracted_information.project_variables is absent, do not infer; rely on other summaries or use placeholders.
# NOW GENERATE
Return ONLY the JSON object described above