Sales Proposal Generator
Turn an authorized discovery call, meeting transcript, or sales brief into a configurable proposal and follow-up email drafts. Use when someone needs a scope of work, pitch, proposal, sales sheet, or post-call follow-up, especially when the output must reflect a supplied offering catalog, pricing source, brand voice, or document template.
Package
Skill files
SKILL.md
markdown
name: sales-proposal-generator
description: Turn an authorized discovery call, meeting transcript, or sales brief into a configurable proposal and follow-up email drafts. Use when someone needs a scope of work, pitch, proposal, sales sheet, or post-call follow-up, especially when the output must reflect a supplied offering catalog, pricing source, brand voice, or document template.
Sales Proposal Generator
Turn discovery material into a clear proposal that connects the prospect's situation to a specific engagement, deliverables, timeline, responsibilities, and commercial terms.
Source-of-truth rules
Before writing, identify the authorized sources for:
- organization name, logo, address, and signatory;
- brand voice and standard company description;
- offering catalog, curriculum, and delivery model;
- pricing, discounts, payment terms, and contract assumptions;
- document and email templates.
If any source is missing, use placeholders and flag the gap. Never invent a price, team member, address, logo, guarantee, client result, or legal term.
Workflow
- Get the transcript, notes, or brief. If no source material is available, ask for it.
- Extract the prospect's goals, pain points, current state, desired outcomes, constraints, stakeholders, timeline, budget signals, and exact language worth preserving.
- Separate confirmed facts, recommendations, assumptions, and open questions.
- Recommend the smallest suitable offering from the supplied catalog. Explain why it fits and ask for confirmation when the choice materially changes scope or price.
- Identify missing information required to generate a reliable proposal. Do not hide missing inputs with generic filler.
- Draft a proposal with:
- opening and context;
- goals and success criteria;
- scope, phases, deliverables, and timeline;
- roles and responsibilities;
- assumptions, dependencies, and exclusions;
- investment and payment terms from the authorized pricing source;
- next steps and signature block.
- Draft two concise follow-up emails with different lengths or tones. Each should reference the actual conversation and end with one clear next step.
- Validate the proposal against the supplied format guide and run the bundled validation script when a DOCX was generated.
Proposal quality bar
- Every claim is grounded in the source material or marked as an assumption.
- The proposal makes the connection between problem, intervention, deliverable, and outcome obvious.
- Scope boundaries prevent accidental promises.
- Pricing and terms match the current authorized source.
- The document is skimmable, specific, and ready for a human to review.
- Private prospect data appears only in the intended deliverable and is not copied into reusable skill files.
DOCX generation
Use the document-generation skill available in the runtime. Apply the supplied template rather than hard-coding a particular organization's identity. Use a configurable logo path when a logo is authorized; otherwise omit the logo. Validate the resulting document before presenting it.
Follow-up email requirements
Both drafts should be under 200 words unless the user requests otherwise. Vary length or tone, preserve specific details from the call, avoid unsupported promises, and make the next action easy to answer.
--- name: sales-proposal-generator description: Turn an authorized discovery call, meeting transcript, or sales brief into a configurable proposal and follow-up email drafts. Use when someone needs a scope of work, pitch, proposal, sales sheet, or post-call follow-up, especially when the output must reflect a supplied offering catalog, pricing source, brand voice, or document template. --- # Sales Proposal Generator Turn discovery material into a clear proposal that connects the prospect's situation to a specific engagement, deliverables, timeline, responsibilities, and commercial terms. ## Source-of-truth rules Before writing, identify the authorized sources for: - organization name, logo, address, and signatory; - brand voice and standard company description; - offering catalog, curriculum, and delivery model; - pricing, discounts, payment terms, and contract assumptions; - document and email templates. If any source is missing, use placeholders and flag the gap. Never invent a price, team member, address, logo, guarantee, client result, or legal term. ## Workflow 1. Get the transcript, notes, or brief. If no source material is available, ask for it. 2. Extract the prospect's goals, pain points, current state, desired outcomes, constraints, stakeholders, timeline, budget signals, and exact language worth preserving. 3. Separate confirmed facts, recommendations, assumptions, and open questions. 4. Recommend the smallest suitable offering from the supplied catalog. Explain why it fits and ask for confirmation when the choice materially changes scope or price. 5. Identify missing information required to generate a reliable proposal. Do not hide missing inputs with generic filler. 6. Draft a proposal with: - opening and context; - goals and success criteria; - scope, phases, deliverables, and timeline; - roles and responsibilities; - assumptions, dependencies, and exclusions; - investment and payment terms from the authorized pricing source; - next steps and signature block. 7. Draft two concise follow-up emails with different lengths or tones. Each should reference the actual conversation and end with one clear next step. 8. Validate the proposal against the supplied format guide and run the bundled validation script when a DOCX was generated. ## Proposal quality bar - Every claim is grounded in the source material or marked as an assumption. - The proposal makes the connection between problem, intervention, deliverable, and outcome obvious. - Scope boundaries prevent accidental promises. - Pricing and terms match the current authorized source. - The document is skimmable, specific, and ready for a human to review. - Private prospect data appears only in the intended deliverable and is not copied into reusable skill files. ## DOCX generation Use the document-generation skill available in the runtime. Apply the supplied template rather than hard-coding a particular organization's identity. Use a configurable logo path when a logo is authorized; otherwise omit the logo. Validate the resulting document before presenting it. ## Follow-up email requirements Both drafts should be under 200 words unless the user requests otherwise. Vary length or tone, preserve specific details from the call, avoid unsupported promises, and make the next action easy to answer.
references/brand-voice.md
markdown
Brand Voice Reference Template
Replace the placeholders with an organization's approved information before using this skill.
Organization
- Name:
[Organization name] - Description:
[One or two sentence approved description] - Address:
[Approved address or omit] - Primary signatory:
[Name and role] - Other team members:
[Names, roles, and approved bios]
Voice
- Specific and outcome-oriented.
- Confident without overpromising.
- Clear about assumptions, tradeoffs, and scope.
- Concise and readable by a busy decision-maker.
- Prefer concrete verbs and plain language over jargon.
- Avoid unsupported superlatives, vague guarantees, and filler.
Standard language
Add approved descriptions, offering names, proof points, and legal language here. Do not infer them from old proposals or from a prospect's materials.
# Brand Voice Reference Template Replace the placeholders with an organization's approved information before using this skill. ## Organization - Name: `[Organization name]` - Description: `[One or two sentence approved description]` - Address: `[Approved address or omit]` - Primary signatory: `[Name and role]` - Other team members: `[Names, roles, and approved bios]` ## Voice - Specific and outcome-oriented. - Confident without overpromising. - Clear about assumptions, tradeoffs, and scope. - Concise and readable by a busy decision-maker. - Prefer concrete verbs and plain language over jargon. - Avoid unsupported superlatives, vague guarantees, and filler. ## Standard language Add approved descriptions, offering names, proof points, and legal language here. Do not infer them from old proposals or from a prospect's materials.
references/curriculum.md
markdown
Offering Catalog Template
Define the current offerings here. Keep descriptions short enough to compare.
| Offering | Audience | Problem addressed | Format | Deliverables |
|---|---|---|---|---|
| [Offering name] | [Audience] | [Problem] | [Format and duration] | [Deliverables] |
When recommending an offering, explain the fit using the prospect's stated goals. Do not add capabilities that are not listed here.
# Offering Catalog Template Define the current offerings here. Keep descriptions short enough to compare. | Offering | Audience | Problem addressed | Format | Deliverables | |---|---|---|---|---| | `[Offering name]` | `[Audience]` | `[Problem]` | `[Format and duration]` | `[Deliverables]` | When recommending an offering, explain the fit using the prospect's stated goals. Do not add capabilities that are not listed here.
references/email-templates.md
markdown
Proposal Follow-up Templates
Use these as structures. Replace bracketed values with confirmed facts only.
Exploratory follow-up
Hi [Name],
Thanks for the conversation. I took away [specific goal] and [specific constraint]. Based on that, I would recommend [offering]. I have included [next artifact or question].
Would [specific next step] be useful?
Best, [Sender]
Scope and proposal follow-up
Hi [Name],
Attached is the proposed [engagement name]. It is designed to help with [outcome] through [one-sentence approach]. The main decisions are [decision 1] and [decision 2].
Could you review [specific section] and let me know whether [specific confirmation] works?
Best, [Sender]
Next-step follow-up
Hi [Name],
Following up on [proposal or conversation]. The remaining question is [question]. If that looks right, the next step is [action].
Would [option] work?
Best, [Sender]
# Proposal Follow-up Templates Use these as structures. Replace bracketed values with confirmed facts only. ## Exploratory follow-up Hi [Name], Thanks for the conversation. I took away [specific goal] and [specific constraint]. Based on that, I would recommend [offering]. I have included [next artifact or question]. Would [specific next step] be useful? Best, [Sender] ## Scope and proposal follow-up Hi [Name], Attached is the proposed [engagement name]. It is designed to help with [outcome] through [one-sentence approach]. The main decisions are [decision 1] and [decision 2]. Could you review [specific section] and let me know whether [specific confirmation] works? Best, [Sender] ## Next-step follow-up Hi [Name], Following up on [proposal or conversation]. The remaining question is [question]. If that looks right, the next step is [action]. Would [option] work? Best, [Sender]
references/pricing.md
markdown
Pricing Reference Template
This file is intentionally a template. Add current, approved commercial terms before generating a proposal.
Rules
- Treat this file as the only source of truth for prices and discounts.
- If no current price is present, use
[Price to be confirmed]and ask the user. - Never infer pricing from an old proposal, an email, or a verbal estimate unless the user explicitly confirms it.
- State what is included, what is excluded, payment timing, cancellation terms, taxes or expenses, and the expiration date when known.
Offerings
| Offering | Scope | Price | Notes |
|---|---|---:|---|
| [Offering name] | [What is included] | [TBD] | [Assumptions] |
Commercial terms
- Payment schedule:
[TBD] - Proposal validity:
[TBD] - Expenses:
[TBD] - Cancellation or rescheduling:
[TBD] - Taxes:
[TBD]
# Pricing Reference Template This file is intentionally a template. Add current, approved commercial terms before generating a proposal. ## Rules - Treat this file as the only source of truth for prices and discounts. - If no current price is present, use `[Price to be confirmed]` and ask the user. - Never infer pricing from an old proposal, an email, or a verbal estimate unless the user explicitly confirms it. - State what is included, what is excluded, payment timing, cancellation terms, taxes or expenses, and the expiration date when known. ## Offerings | Offering | Scope | Price | Notes | |---|---|---:|---| | `[Offering name]` | `[What is included]` | `[TBD]` | `[Assumptions]` | ## Commercial terms - Payment schedule: `[TBD]` - Proposal validity: `[TBD]` - Expenses: `[TBD]` - Cancellation or rescheduling: `[TBD]` - Taxes: `[TBD]`
references/templates.md
markdown
Proposal Document Template
Use this as a configurable structure. Replace bracketed values with approved information.
Opening
[Date]
[Organization name]
Proposal created for:
[Client or prospect name]
[Client address, if authorized]
Sections
Use a two-column table for major sections when the output format supports it. Put the section label in the left column and the content in the right column. Keep the visual treatment restrained and consistent.
- Overview
- Goals and success criteria
- Scope and approach
- Deliverables and timeline
- Roles and responsibilities
- Assumptions and exclusions
- Investment and terms
- Next steps
Signature block
____________________________ ____________________________
[Organization signatory] [Client signatory]
[Title] [Title]
[Date] [Date]
File naming
Use a clear, reversible filename such as [Client] - [Organization] - [Offering] - Proposal.docx. Sanitize path separators and avoid including confidential details that are not needed in the filename.
# Proposal Document Template Use this as a configurable structure. Replace bracketed values with approved information. ## Opening `[Date]` `[Organization name]` `Proposal created for:` `[Client or prospect name]` `[Client address, if authorized]` ## Sections Use a two-column table for major sections when the output format supports it. Put the section label in the left column and the content in the right column. Keep the visual treatment restrained and consistent. 1. Overview 2. Goals and success criteria 3. Scope and approach 4. Deliverables and timeline 5. Roles and responsibilities 6. Assumptions and exclusions 7. Investment and terms 8. Next steps ## Signature block ```text ____________________________ ____________________________ [Organization signatory] [Client signatory] [Title] [Title] [Date] [Date] ``` ## File naming Use a clear, reversible filename such as `[Client] - [Organization] - [Offering] - Proposal.docx`. Sanitize path separators and avoid including confidential details that are not needed in the filename.
scripts/validate-formatting.js
javascript
#!/usr/bin/env node
import { execFileSync } from "node:child_process";
import fs from "node:fs";
const file = process.argv[2];
if (!file || !fs.existsSync(file)) {
console.error("Usage: node validate-formatting.js <proposal.docx>");
process.exit(2);
}
let xml;
try {
xml = execFileSync("unzip", ["-p", file, "word/document.xml"], { encoding: "utf8" });
} catch (error) {
console.error("Could not read word/document.xml from the DOCX:", error.message);
process.exit(2);
}
const checks = [
["no em dashes", !xml.includes("—")],
["no en dashes", !xml.includes("–")],
["no double hyphens", !xml.includes("--")],
["has proposal content", /proposal|scope|deliverable|investment/i.test(xml)],
];
let failed = false;
for (const [label, passed] of checks) {
console.log(`${passed ? "PASS" : "FAIL"}: ${label}`);
failed ||= !passed;
}
process.exit(failed ? 1 : 0);
#!/usr/bin/env node
import { execFileSync } from "node:child_process";
import fs from "node:fs";
const file = process.argv[2];
if (!file || !fs.existsSync(file)) {
console.error("Usage: node validate-formatting.js <proposal.docx>");
process.exit(2);
}
let xml;
try {
xml = execFileSync("unzip", ["-p", file, "word/document.xml"], { encoding: "utf8" });
} catch (error) {
console.error("Could not read word/document.xml from the DOCX:", error.message);
process.exit(2);
}
const checks = [
["no em dashes", !xml.includes("—")],
["no en dashes", !xml.includes("–")],
["no double hyphens", !xml.includes("--")],
["has proposal content", /proposal|scope|deliverable|investment/i.test(xml)],
];
let failed = false;
for (const [label, passed] of checks) {
console.log(`${passed ? "PASS" : "FAIL"}: ${label}`);
failed ||= !passed;
}
process.exit(failed ? 1 : 0);
Related
Other Operations skills
Email Ghostwriter
Draft professional email in a supplied writer or organization voice. Use when someone needs an outreach email, follow-up, reply, introduc...
Format Like Mckinsey
Review and improve spreadsheet structure and formatting so the main takeaway is immediately clear. Use after building or editing a spread...
Hands On Deck
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes reading, analyzing, or extracting...