Enterprise Proposal Generator
A step-by-step guided skill that produces a tailored proposal for enterprise and large-merchant prospects. Architecture is hybrid — this SKILL.md guides Claude through gathering inputs and writing merchant-specific content; a deterministic Python renderer (shared/outputs/proposal_deck.py) then builds the 12-slide PPTX with consistent FinVerge branding.
Direction of the proposal
Enterprise proposals go FinVerge → Merchant. FinVerge is the vendor offering payments infrastructure; the merchant is evaluating us against alternatives (Razorpay, Cashfree, PayU, etc.). The cover tagline is "Built for Enterprise" (not "Banking Collaborations" — that's for banks).
When to use
Use whenever the user wants a proposal / pitch / deck for a merchant prospect:
- "Make a proposal for BeYoung"
- "Enterprise pitch for [SaaS company]"
- "Draft a deck for our D2C lead tomorrow"
- "Proposal for [NBFC] on NACH and PG"
Do NOT use this skill for:
- Bank proposals → use
bank-proposal-generator - Single-product decks (PG demo, NACH FAQ, etc.) → use the respective product skill (pg-product, nach-product, collect-product, orchestrate-product)
- Referral partner proposals → (future: referral-partner-proposal-generator)
Core design principle
Conversational, step-by-step. Ask one thing at a time. If the user provides some inputs upfront ("proposal for BeYoung, D2C, ₹5 Cr/mo GMV, PG+Collect, CFO audience, PPTX"), skip those steps and only gather what's missing.
Step 1: Merchant name + website domain
Ask:
Who's the merchant (display name), and what's their website domain?
The domain is used to fetch their logo via Clearbit. Example: "BeYoung, beyoung.in".
Normalize the merchant name to a lookup key (lowercase alphanumeric — "BeYoung" → "beyoung"). Check whether a logo is already cached by inspecting shared-assets/logos/merchants/INDEX.md. If not cached, note this for Step 7.
Step 2: Segment
Ask:
Which segment does this merchant fall into?
- E-commerce — online shopping, marketplaces
- SaaS — subscription software, cloud services
- D2C — direct-to-consumer brands (apparel, beauty, FMCG)
- NBFC — lending, EMI collections, financial services
- Education — schools, ed-tech, coaching, upskilling
- Insurance — premium collections, claims
- Subscription — any recurring-billing business
- B2B Marketplace — multi-seller platforms, payouts
- Government / PSU — fee collection, tax, BBPS
Read the corresponding file: assets/proposal-kb/segments/<segment-key>.md (e.g., d2c.md). This gives segment-specific positioning, pain points, recommended product mix, and typical objections.
Valid segment keys: ecommerce, saas, d2c, nbfc, education, insurance, subscription, b2b-marketplace, government.
Step 3: GMV range
Ask:
What's the merchant's approximate monthly GMV range?
- Under ₹50 L/month — Starter tier
- ₹50 L – ₹5 Cr/month — Growth tier
- ₹5 Cr – ₹50 Cr/month — Scale tier
- ₹50 Cr+ / month — Enterprise tier
GMV drives pricing in assets/proposal-kb/pricing-tiers-by-gmv.md. Map to a gmv_range key: under_50l, 50l_to_5cr, 5_to_50_cr, above_50cr.
Step 4: Products to propose
Ask:
Which FinVerge products should this proposal cover? Here's what's customer-sellable:
- PG (Payment Gateway 2.0) — digital + offline rails, 27+ banks
- NACH & Recurring — subscription, EMI, mandate lifecycle
- Collect (No-Code Platform) — Links, Pages, Buttons, Forms
- Orchestrate (Payment Orchestration) — multi-gateway routing, failover
Pick one or multiple. You can also include internal-only products (KYC, MerchantOS, Partner Dashboard) with a gap warning, or placeholder products (Collections, Connected Banking, BBPS COU, PA-P) — these will have
[TO FILL]markers in the output.
Product keys used with the KB loader: pg, nach, collect, orchestrate, kyc, merchantos, partner-dashboard, collections, connected-banking, bbps-cou, pa-p.
Step 5: Audience / stakeholder
Ask:
Who's the primary audience for this proposal?
- CFO / Finance — cost structure, settlement, reconciliation
- COO / Operations — ops efficiency, reporting, SLAs
- VP Engineering / CTO — API design, integration effort, observability
- VP Growth / CMO — checkout conversion, customer experience
- Founder / CEO — strategic differentiation, roadmap fit
- Mixed / Not sure — balanced executive framing
Read references/enterprise-stakeholder-profiles.md for what each role cares about. This shapes the emphasis in the Executive Summary and Why-FinVerge-for-Segment sections.
Map to primary_role key: cfo, coo, vp_eng, vp_growth, founder, mixed.
Step 6: Specific pain points / context (optional)
Ask:
Any specific context for this merchant? (Optional — say "none" to skip)
Examples:
- "Currently on Razorpay, considering multi-gateway to improve success rate"
- "Growing fast, need better mandate handling for subscription revenue"
- "Manual reconciliation across 3 gateways is killing the finance team"
- "Need white-label checkout for their D2C brand"
This feeds the Merchant Context section of the proposal.
Step 7: Output format
For now, only PPTX is supported (DOCX + Canva come in v0.8.0). If the user asks for DOCX/Canva, tell them we'll ship PPTX this time and the other formats are coming.
Step 8: Confirm inputs, then generate
Summarise and confirm before running any tools:
Here's what I'll generate:
- Merchant: BeYoung (beyoung.in)
- Segment: D2C Brands
- GMV range: ₹5 Cr – ₹50 Cr/month (Scale tier)
- Products: PG, Collect
- Audience: CFO
- Pain point: Manual reconciliation across 3 gateways
- Format: PPTX
Proceed?
Generation flow (run once confirmed)
1. Resolve merchant logo
If the merchant logo is already cached (shared-assets/logos/merchants/<key>.png), skip. Otherwise run:
python3 shared/fetch_merchant_logo.py "BeYoung" --domain beyoung.in
The fetcher tries Clearbit first (works for most merchants with a website), falls back to Google favicon. If both fail, the proposal still renders without the merchant logo and a gap is flagged.
2. Load reference content
Read (only as needed):
assets/proposal-kb/finverge-about.md— canonical company profileassets/proposal-kb/segments/<segment>.md— segment-specific positioning + pain points + recommended product mixassets/proposal-kb/pricing-tiers-by-gmv.md— pricing tier for the chosen GMV rangereferences/enterprise-language.md— B2B tone guide (no RBI-heavy language)references/enterprise-stakeholder-profiles.md— per-role framingreferences/proposal-sections.md— section structure + per-stakeholder emphasisreferences/compliance-clauses.md— relevant compliance content for selected productsreferences/deck-patterns.md— FinVerge house deck style
Use kb_loader.load_public(product, facet) for per-product content. DO NOT call load_internal() — this is a customer-facing output.
3. Write section content as a JSON blob
Assemble the following content, specifically tailored to the merchant, segment, and audience. Each field is plain prose (no markdown), 2-6 sentences unless otherwise noted.
{
"merchant": {
"display_name": "BeYoung",
"domain": "beyoung.in",
"segment": "d2c",
"gmv_range": "5_to_50_cr"
},
"audience": {
"primary_role": "cfo",
"secondary_roles": []
},
"products": ["pg", "collect"],
"sections": {
"executive_summary": "<3-5 sentence summary: who FinVerge is, why it fits this merchant, expected outcome. Tailored to the CFO audience and the merchant's stated pain.>",
"merchant_context": "<4-6 sentence framing of the merchant's business situation: their segment's common dynamics, the specific pain they raised in step 6, how FinVerge fits. No fluff.>",
"why_finverge_for_segment": "<4-6 sentence, segment-specific differentiators. Pull from segments/<segment>.md + FinVerge's proven capabilities. Concrete, not generic.>",
"next_steps": [
"<Concrete action item 1 — something FinVerge commits to>",
"<Concrete action item 2 — something the merchant needs to do>",
"<Concrete action item 3 — commercial / timeline alignment>"
]
},
"include_pricing": true,
"include_settlement_timelines": false,
"include_revenue_sharing": false,
"output_format": "pptx"
}
Save this blob as proposal_meta.json in the output directory (so the user can regenerate with tweaks later).
4. Invoke the renderer
python3 skills/enterprise-proposal-generator/scripts/generate_proposal.py \
--meta /path/to/proposal_meta.json \
--outdir ~/Downloads/enterprise-proposals/<merchant-key>-<YYYY-MM-DD>
The renderer:
- Validates the JSON against
assets/templates/proposal_meta_schema.json - Loads per-product KBs via
load_public() - Calls
shared/outputs/proposal_deck.pywhich produces a 12-slide PPTX - Surfaces any
[TO FILL]markers in KB content as gaps - Writes output +
gaps.md+ preserves theproposal_meta.jsonfor future regeneration
5. Report back to the user
Summarise:
Generated:
~/Downloads/enterprise-proposals/beyoung-2026-04-17/Proposal.pptxGaps to fill (N items): [list them]
What's in the deck (12 slides):
- Cover (BeYoung logo + FinVerge logo)
- Executive Summary
- About FinVerge (credentials)
- BeYoung Context
- Proposed Solution (PG + Collect overview)
- PG Deep-Dive
- Collect Deep-Dive
- Integration & Architecture
- Commercial Terms (if included)
- Compliance & Security
- Why FinVerge for D2C
- Next Steps
Want me to adjust any section or regenerate with different inputs?
Handling edge cases
- Merchant logo fetch fails: proceed without logo, flag as gap
- Product KB has many [TO FILL] markers: surface all of them in
gaps.mdso sales can edit the deck before sending - Internal-only product requested (KYC, MerchantOS, Partner Dashboard): warn that public content is [TO FILL] placeholder; still include at user's request
- Segment not recognised: ask user to pick from the 9 supported segments OR proceed with the "enterprise" generic segment (less tailored)
Reference files
references/enterprise-language.md— B2B enterprise tone (no RBI fluff)references/enterprise-stakeholder-profiles.md— CFO, COO, VP Eng, VP Growth, Founderreferences/proposal-sections.md— 12-slide structure + per-stakeholder emphasisreferences/compliance-clauses.md— universal clauses (copied from bank-proposal-generator)references/deck-patterns.md— FinVerge house deck style
Asset files
assets/proposal-kb/finverge-about.md— company profileassets/proposal-kb/pricing-tiers-by-gmv.md— GMV slab → MDR mappingassets/proposal-kb/segments/<segment>.md— 9 segment-specific positioning filesassets/templates/proposal-template.md— 12-section content skeletonassets/templates/proposal_meta_schema.json— JSON schema for AI content
Scripts
scripts/generate_proposal.py— orchestrator that validates meta + calls the shared renderer
Shared code reused
shared/kb_loader.py—load_public(product, facet)for product contentshared/brand.py—merchant_logo(name)+ design tokensshared/layout.py— all slide primitivesshared/slides/{cover, about, product, cta}.py— generic slide buildersshared/outputs/proposal_deck.py— the multi-product deck renderershared/fetch_merchant_logo.py— Clearbit-based logo fetchershared/version_check.py— stale-version auto-notify