# Enterprise Proposal Generator

> Generate tailored proposals for enterprise / large-merchant prospects (e-commerce, SaaS, D2C, NBFC, education, insurance, subscription, B2B marketplace, government). Use whenever the user mentions creating, drafting, preparing, or generating ANY proposal, pitch, deck, or presentation aimed at a merchant or enterprise prospect — even when they don't explicitly say "proposal". Triggers on phrases like "make a proposal for BeYoung", "enterprise pitch for [merchant]", "deck for our D2C client", "proposal for the SaaS company", "we're pitching Acme", "prepare for the merchant meeting", "enterprise merchant proposal", "proposal for [any merchant name]", and similar. Handles multi-product bundling (PG, NACH, Collect, Orchestrate), segment-specific positioning across 9 verticals, GMV-based pricing tiers, audience-specific framing (CFO, COO, VP Eng, VP Growth, Founder), merchant logo retrieval via Clearbit, FinVerge branding, and output in PPTX format (DOCX/Canva coming in a later iteration). Do NOT use this skill for

- Skill: `himanisharrma/enterprise-proposal-generator` (Agent Skill, multi-file: 23 files)
- Install (CLI): `npx skillmds@latest add himanisharrma/enterprise-proposal-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/himanisharrma/enterprise-proposal-generator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: himanisharrma (https://skillmd.com/u/himanisharrma)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/himanisharrma/enterprise-proposal-generator

---


# 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?
>
> 1. **E-commerce** — online shopping, marketplaces
> 2. **SaaS** — subscription software, cloud services
> 3. **D2C** — direct-to-consumer brands (apparel, beauty, FMCG)
> 4. **NBFC** — lending, EMI collections, financial services
> 5. **Education** — schools, ed-tech, coaching, upskilling
> 6. **Insurance** — premium collections, claims
> 7. **Subscription** — any recurring-billing business
> 8. **B2B Marketplace** — multi-seller platforms, payouts
> 9. **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:
```bash
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 profile
- `assets/proposal-kb/segments/<segment>.md` — segment-specific positioning + pain points + recommended product mix
- `assets/proposal-kb/pricing-tiers-by-gmv.md` — pricing tier for the chosen GMV range
- `references/enterprise-language.md` — B2B tone guide (no RBI-heavy language)
- `references/enterprise-stakeholder-profiles.md` — per-role framing
- `references/proposal-sections.md` — section structure + per-stakeholder emphasis
- `references/compliance-clauses.md` — relevant compliance content for selected products
- `references/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.

```json
{
  "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

```bash
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.py` which produces a 12-slide PPTX
- Surfaces any `[TO FILL]` markers in KB content as gaps
- Writes output + `gaps.md` + preserves the `proposal_meta.json` for future regeneration

### 5. Report back to the user

Summarise:
> Generated: `~/Downloads/enterprise-proposals/beyoung-2026-04-17/Proposal.pptx`
>
> **Gaps to fill** (N items): [list them]
>
> **What's in the deck** (12 slides):
> 1. Cover (BeYoung logo + FinVerge logo)
> 2. Executive Summary
> 3. About FinVerge (credentials)
> 4. BeYoung Context
> 5. Proposed Solution (PG + Collect overview)
> 6. PG Deep-Dive
> 7. Collect Deep-Dive
> 8. Integration & Architecture
> 9. Commercial Terms (if included)
> 10. Compliance & Security
> 11. Why FinVerge for D2C
> 12. 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.md` so 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, Founder
- `references/proposal-sections.md` — 12-slide structure + per-stakeholder emphasis
- `references/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 profile
- `assets/proposal-kb/pricing-tiers-by-gmv.md` — GMV slab → MDR mapping
- `assets/proposal-kb/segments/<segment>.md` — 9 segment-specific positioning files
- `assets/templates/proposal-template.md` — 12-section content skeleton
- `assets/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 content
- `shared/brand.py` — `merchant_logo(name)` + design tokens
- `shared/layout.py` — all slide primitives
- `shared/slides/{cover, about, product, cta}.py` — generic slide builders
- `shared/outputs/proposal_deck.py` — the multi-product deck renderer
- `shared/fetch_merchant_logo.py` — Clearbit-based logo fetcher
- `shared/version_check.py` — stale-version auto-notify

