Bank Proposal Generator
A step-by-step guided skill that produces a tailored bank proposal. The skill gathers inputs conversationally, resolves them against a shared Product KB and asset library, and generates the final document in the user's chosen format.
Direction of the proposal
Bank proposals always go FinVerge → Bank. FinVerge is the initiator and seller, inviting the Bank as a partner. The house cover tagline is "Banking Collaborations" — reinforcing partnership framing from slide 1. Do not write proposals as if the Bank is asking FinVerge for a service; write as FinVerge proposing a collaboration opportunity to the Bank.
When to use
Use this skill for any request involving a bank-facing sales document. Examples:
- "Make a proposal for HDFC Bank"
- "Draft a pitch deck for ICICI for Collections"
- "Axis is meeting us next week, need a presentation"
- "Put together something for SBI on NACH and PG"
Do NOT use this skill for non-bank audiences (enterprise merchants, referral partners, direct merchants) — those will have their own dedicated skills in this plugin.
Core design principle
The skill is designed to be conversational. Ask one thing at a time, confirm before proceeding, and only call heavy tools (DOCX/PPTX generation, logo fetching) after all inputs are gathered and confirmed.
If the user provides some inputs upfront (e.g., "Make a PPTX for HDFC on Collections for the CIO"), skip those steps and only ask for what's missing.
Step 1: Gather bank name
Ask:
Which bank is this proposal for?
Once received, normalize the name (lowercase, remove "Bank"/"Ltd" suffix for lookup) and note both the display name (e.g., "HDFC Bank") and lookup key (e.g., "hdfc").
Quickly check assets/logos/INDEX.md to confirm whether a logo is already cached. Don't fetch yet — just note the status for Step 5.
Step 2: Gather product selection
Ask:
Which FinVerge products do you want to include? Here's what's available:
Ready to sell now: NACH, Collect Stack, PG 2.0 (digital modes) Enterprise features building: PG (Pod 1), Collect (Pod 1), Collections (Pod 1) In development: Collections, SoftPOS, Orchestrate, Connected Banking, BBPS COU, PA-P
You can pick one or multiple.
To see the full list of available products and their readiness status, read assets/product-kb/INDEX.md — it includes the product keys you'll use with the KB loader.
For each selected product, load its content from the plugin-wide shared KB via the kb_loader:
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "shared"))
from kb_loader import load_public
# Customer-facing facets available for every product:
nach_external = load_public("nach", "external") # marketing positioning
nach_features = load_public("nach", "features") # capabilities table
nach_pricing = load_public("nach", "pricing") # pricing tiers
nach_compliance = load_public("nach", "compliance") # relevant compliance clauses
Valid product keys: pg, nach, collect, orchestrate, kyc, merchantos, partner-dashboard, collections, connected-banking, bbps-cou, pa-p.
If a product's external.md contains [TO FILL: markers, that product is not fully ready for customer proposals — flag to the user, and either exclude it from the deck or include it with visible gap markers.
Security guarantee: the load_public() function has a hardcoded whitelist. It can only access external, features, pricing, and compliance facets. It cannot return internal DELTA4 UBP analysis — that lives in a separate shared-kb-internal/ directory accessible only via load_internal(), which must never be called from customer-facing output code.
Step 3: Gather stakeholder / audience
Ask:
Who's the primary audience for this proposal?
- CIO / CTO — technical framing (APIs, integrations, security)
- COO / Head of Operations — operational framing (settlement, reconciliation, SLAs)
- CRO / Head of Risk & Compliance — risk framing (RBI, PCI-DSS, audit)
- Head of Digital Banking — customer experience & digital rails
- Head of Transaction Banking — corporate banking, collections
- Business / Sales — revenue impact, volume targets
- Mixed / Not sure — neutral executive framing
Read references/stakeholder-profiles.md for what each role cares about. This shapes the emphasis and language in each section.
Step 4: Gather requirements / context
Ask:
Any specific requirements, pain points, or context for this bank? (Optional — say "none" to skip)
Examples:
- "They want to modernize their NACH collections"
- "Currently using XYZ competitor, we're replacing them"
- "Focus on the cooperative banking segment"
- "They flagged concerns about settlement timelines"
This becomes the "Bank Context" section of the proposal. If none, use a generic bank context based on public info.
Step 5: Gather output format
Ask:
What format do you want the proposal in?
- PPTX — slide deck (most common for bank pitches)
- DOCX — formal document (for compliance/procurement review)
- Canva — designed presentation via Canva MCP (most polished)
- PDF — PDF via DOCX or PPTX conversion
Default to PPTX if the user is ambivalent.
Step 6: Optional inclusions
Ask:
Anything extra to include? (Optional)
- Per-product pricing — pulled from
load_public(product, "pricing")for each selected product- Cross-product pricing rules — from
assets/product-kb/pricing-rules.md(tier logic, discount guardrails)- Revenue sharing terms — from
assets/product-kb/revenue-sharing.md- Settlement timelines — from
assets/product-kb/settlement-timelines.md(per-payment-mode)- Case studies — pulled from each selected product's
external.md"case studies" section (if present)
Step 7: Confirm and generate
Summarize the inputs and confirm:
Here's what I'll generate:
- Bank: HDFC Bank
- Products: NACH, Collections
- Audience: Head of Transaction Banking
- Format: PPTX
- Includes: Pricing, Settlement timelines
Proceed?
Once confirmed, proceed to generation.
Generation flow
1. Resolve bank logo
logo_path = check assets/logos/INDEX.md for the normalized bank key
if not found:
run scripts/fetch_bank_logo.py "<bank name>"
logo_path = path of newly-downloaded file
If fetch_bank_logo.py fails (rare), proceed without logo and note it in output gaps.
2. Load content sources
- Company profile (canonical stats, credentials, awards):
assets/product-kb/finverge-about.md - Product data:
load_public(product, facet)from the plugin-wide shared KB (for each selected product, pullexternal,features,pricing,compliance) - Deck structure & narrative patterns (FinVerge house style):
references/deck-patterns.md - Stakeholder framing:
references/stakeholder-profiles.md(relevant section only) - Compliance language:
references/compliance-clauses.md(pick clauses relevant to selected products) - Bank language/tone:
references/bank-language.md - Proposal structure:
references/proposal-sections.md - Content skeleton:
assets/templates/proposal-template.md
3. Generate draft content
Following assets/templates/proposal-template.md as the outline, fill in each section using:
- Bank context (Step 4 input + public bank info if needed)
- Product details (from KB)
- Stakeholder-appropriate language (from profiles)
- Compliance clauses where relevant
- Formal bank tone throughout (no marketing fluff)
Note any [TO FILL: ...] placeholders from the KB — include them in the output with a clear "⚠ To be filled by sales team" marker.
4. Produce the output file
Depending on format chosen in Step 5:
For PPTX: use the anthropic-skills:pptx skill. Structure:
- Slide 1: Cover (bank logo + "Proposal for [Bank]" + FinVerge logo)
- Slide 2: Agenda
- Slides 3+: one section per topic from
proposal-sections.md - Final slide: Next Steps + Contact
For DOCX: use the anthropic-skills:docx skill. Format as formal document with:
- Header: bank logo (left) + FinVerge logo (right)
- Cover page, TOC, sections per
proposal-sections.md - Footer: "Confidential — [Bank Name]"
For Canva: use the Canva MCP (mcp__04e3e648-...:generate-design-structured). Pass the structured content as slides with FinVerge brand kit applied.
For PDF: generate as DOCX or PPTX first, then convert (LibreOffice headless or Canva export).
5. Apply branding
Invoke the finverge-branding skill to apply brand colors, typography, and tone. For Canva, apply the FinVerge brand kit directly.
6. Save and report
Save to: ~/Downloads/bank-proposals/<bank-key>-<YYYY-MM-DD>/
Proposal.pptx(or .docx / etc.)gaps.md— list of[TO FILL]items the user needs to complete
Report back:
Proposal generated:
~/Downloads/bank-proposals/hdfc-2026-04-17/Proposal.pptxGaps to fill (3 items):
- NACH pricing tier for Tier-2 banks (in Pricing section)
- Specific settlement SLA commitment (in Operations section)
- Integration timeline estimate (in Next Steps)
Want me to adjust anything?
Handling edge cases
- Bank name not recognized: ask the user to confirm the full legal name. Log the new bank to
INDEX.md. - All selected products have empty KB: tell the user the KB needs to be filled in first, but offer to generate a structural skeleton anyway.
- Logo fetch fails: proceed without logo, note it in gaps.
- Conflicting product info (e.g., different pricing across files): flag the conflict and ask the user which is authoritative.
Reference files (read only when needed)
references/deck-patterns.md— FinVerge house deck structure, visual style, narrative arcreferences/bank-language.md— tone, terminology, formal phrasingreferences/compliance-clauses.md— RBI, PCI-DSS, NPCI standard clausesreferences/proposal-sections.md— section structure and guidancereferences/stakeholder-profiles.md— per-role framing guide
Don't load all of them upfront — load only what's needed for the current generation.
Asset files
Per-product content: not here — loaded from the plugin's shared-kb/ via kb_loader.load_public(). See assets/product-kb/INDEX.md for the product key list.
Cross-cutting proposal references (this skill only):
assets/product-kb/finverge-about.md— company profile (stats, certifications, awards)assets/product-kb/pricing-rules.md— pricing tier logic + discount guardrailsassets/product-kb/settlement-timelines.md— per-payment-mode settlement cyclesassets/product-kb/revenue-sharing.md— rev-share models for partner arrangementsassets/product-kb/INDEX.md— documentation of the above + pointer to shared-kb/
Bank logos (shared across the plugin):
- Cached bank logos live at
../../shared-assets/logos/banks/<bank>.png - Use
brand.bank_logo("HDFC Bank")to resolve the path - If missing, run
python3 ../../shared/fetch_bank_logo.py "Bank Name"to download and cache
Templates:
assets/templates/proposal-template.md— content skeleton
Scripts
scripts/fetch_bank_logo.py— downloads and caches a bank logo. Usage:
Updatespython3 scripts/fetch_bank_logo.py "HDFC Bank"assets/logos/INDEX.mdon success.