Introduction
Creating a compelling investment pitch deck from raw financial statements and market research is tedious work. You spend hours copying figures into PowerPoint, manually crafting narratives, then waiting for design feedback. Most teams repeat this process for every investor meeting, every funding round, every strategic review. The data is already there; the bottleneck is human effort.
This is where workflow automation changes things. By combining financial data extraction, intelligent analysis, and automated design generation, you can produce polished pitch decks in minutes instead of days. No copy-paste work, no design iterations, no waiting for someone to format the numbers correctly.
We will walk through building this exact workflow using three AI tools and an orchestration layer. The result is a system where you upload financial statements and market research documents, then receive a finished pitch deck ready for investor presentations.
The Automated Workflow
We will use n8n as our orchestration tool for this workflow. It offers better conditional logic and file handling than Zapier for this particular use case, plus it can run self-hosted if needed. The workflow consists of four main stages: document ingestion, financial analysis, narrative generation, and deck assembly.
Stage 1:
Document Ingestion and Extraction
The workflow starts when you drop files into a monitored folder or send them via a form submission. Wispr Flow AI handles the initial document processing. It extracts structured data from PDFs, Word documents, and images of financial statements.
Set up a trigger in n8n using the folder watch node:
{
"trigger": "folder_watch",
"path": "/uploads/financial_documents",
"file_types": ["pdf", "docx", "jpg", "png"],
"recursive": false
}
Once files are detected, send them to Wispr Flow AI via its API endpoint:
POST https://api.wispr-flow-ai.com/v1/extract
Content-Type: multipart/form-data
{
"document_type": "financial_statement",
"extract_fields": [
"revenue",
"gross_margin",
"operating_expenses",
"net_income",
"cash_flow",
"balance_sheet_items"
]
}
Wispr Flow AI returns structured JSON with extracted figures. Store this output in n8n's built-in database or pass it to the next step immediately:
{
"extraction_id": "ext_789xyz",
"confidence_scores": {
"revenue": 0.98,
"net_income": 0.96
},
"extracted_data": {
"revenue_2023": 4200000,
"revenue_2022": 3100000,
"net_income_2023": 620000,
"gross_margin_2023": 0.68
},
"raw_text": "..."
}
Stage 2:
Financial Analysis and Market Insights
With the data extracted, pass it to Claude via the Anthropic API for intelligent analysis. Claude will calculate growth rates, margins, burn rates, and identify key business metrics worth highlighting. It will also cross-reference this with the market research documents you've provided.
Create an n8n HTTP node that calls Claude directly:
POST https://api.anthropic.com/v1/messages
Authorization: Bearer YOUR_ANTHROPIC_API_KEY
Content-Type: application/json
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 2000,
"messages": [
{
"role": "user",
"content": "Analyse these financial metrics and market data. Calculate year-over-year growth rates, identify key strengths and weaknesses, and suggest the most compelling metrics for an investor pitch:\n\nRevenue 2023: £4.2M\nRevenue 2022: £3.1M\nNet Income 2023: £620K\nGross Margin: 68%\n\nMarket TAM: £2.4B (from attached market research)\n\nProvide output as valid JSON with keys: growth_rate, key_metrics, narrative_points, risk_factors"
}
]
}
Claude returns analysis in structured format:
{
"growth_rate": "35.5%",
"key_metrics": [
{
"label": "Revenue Growth",
"value": "35.5%",
"context": "Significant growth trajectory in a £2.4B TAM"
},
{
"label": "Gross Margin",
"value": "68%",
"context": "Above SaaS industry average of 65%"
}
],
"narrative_points": [
"Capturing 0.18% of addressable market",
"Margin expansion potential as revenue scales",
"Strong unit economics support funding thesis"
],
"risk_factors": [
"Customer concentration risk",
"Competitive pressure in SMB segment"
]
}
Stage 3:
Narrative Generation and Content Creation
Now you have validated data and strategic insights. Use Claude again to generate deck copy that tells a compelling story. This is where the pitch deck moves from raw numbers to investor narrative.
Create another HTTP node calling Claude with a detailed prompt:
POST https://api.anthropic.com/v1/messages
Authorization: Bearer YOUR_ANTHROPIC_API_KEY
Content-Type: application/json
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 3000,
"messages": [
{
"role": "user",
"content": "Write compelling pitch deck copy for these slides. Use active voice and investor-focused language. Output as JSON with slide_number and content:\n\n1. Problem Statement\n2. Market Opportunity\n3. Solution\n4. Traction\n5. Business Model\n6. Go-to-Market\n\nContext:\n- Company: TechCorp Ltd\n- Revenue: £4.2M (35.5% YoY growth)\n- TAM: £2.4B\n- Gross Margin: 68%\n- Key metric: 0.18% market penetration\n\nEach slide should have: headline, 3 supporting points, one data point. Make it investment-ready."
}
]
}
Claude generates slide content structured for easy consumption:
{
"slides": [
{
"slide_number": 1,
"slide_type": "problem_statement",
"headline": "SMBs Lack Visibility Into Operational Costs",
"supporting_points": [
"Manual spreadsheet processes cause delays and errors",
"Decision-making happens weeks after costs are incurred",
"No real-time cost allocation across departments"
],
"data_point": "84% of surveyed SMBs report cost tracking as top operational pain point"
},
{
"slide_number": 2,
"slide_type": "market_opportunity",
"headline": "£2.4B Addressable Market, Currently Underserved",
"supporting_points": [
"620,000 SMBs in target segment",
"Currently paying £150-300/month for fragmented tools",
"Consolidation opportunity through unified platform"
],
"data_point": "TAM growing at 12% annually"
}
]
}
Stage 4:
Automated Deck Assembly
The final piece is turning structured content into a visual pitch deck. Use v0 by Vercel to generate a React-based presentation component, then use Nsketch AI to add professional design touches, charts, and data visualisations.
First, send the slide content to v0 to generate a React component:
POST https://api.v0.dev/v1/generate
Authorization: Bearer YOUR_V0_API_KEY
Content-Type: application/json
{
"task": "Create a professional investment pitch deck React component using the following slide data. Use Tailwind CSS for styling. Include automatic slide transitions, speaker notes, and a professional colour scheme suitable for investor presentations.",
"context": {
"slides": [SLIDE_DATA_FROM_CLAUDE],
"company_name": "TechCorp Ltd",
"presentation_style": "professional_investor",
"total_slides": 6
}
}
v0 returns a React component that you can deploy immediately or customise further.
Next, pass financial charts and data visualisations to Nsketch AI for professional design treatment:
POST https://api.nsketch-ai.com/v1/design
Authorization: Bearer YOUR_NSKETCH_API_KEY
Content-Type: application/json
{
"asset_type": "financial_chart",
"data": {
"chart_type": "line_chart",
"data_points": [
{"year": 2021, "revenue": 1800000},
{"year": 2022, "revenue": 3100000},
{"year": 2023, "revenue": 4200000}
]
},
"design_preferences": {
"colour_scheme": "professional_blue",
"style": "clean_minimal",
"include_annotations": true
}
}
Nsketch AI returns polished chart SVGs ready for embedding in your presentation.
Putting It All Together in n8n
Here is the complete workflow structure in n8n JSON format:
{
"name": "Pitch Deck Generation Workflow",
"nodes": [
{
"id": "trigger_1",
"type": "n8n-nodes-base.folderTrigger",
"typeVersion": 1,
"position": [100, 200],
"parameters": {
"path": "/uploads/financial_documents",
"events": ["fileAdded"]
}
},
{
"id": "wispr_extraction",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [300, 200],
"parameters": {
"url": "https://api.wispr-flow-ai.com/v1/extract",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_WISPR_API_KEY"
},
"sendBody": true,
"bodyParameters": {
"document_type": "financial_statement"
}
}
},
{
"id": "claude_analysis",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [500, 200],
"parameters": {
"url": "https://api.anthropic.com/v1/messages",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_ANTHROPIC_API_KEY"
},
"sendBody": true,
"bodyParameters": {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 2000
}
}
},
{
"id": "claude_narrative",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [700, 200],
"parameters": {
"url": "https://api.anthropic.com/v1/messages",
"method": "POST"
}
},
{
"id": "v0_generation",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [900, 200],
"parameters": {
"url": "https://api.v0.dev/v1/generate",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_V0_API_KEY"
}
}
},
{
"id": "nsketch_design",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [1100, 200],
"parameters": {
"url": "https://api.nsketch-ai.com/v1/design",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_NSKETCH_API_KEY"
}
}
},
{
"id": "output_file",
"type": "n8n-nodes-base.writeFile",
"typeVersion": 1,
"position": [1300, 200],
"parameters": {
"path": "/output/{{ $now.format('YYYY-MM-DD_HH-mm-ss') }}_pitch_deck.html"
}
}
],
"connections": {
"trigger_1": {"main": [{"node": "wispr_extraction", "type": "main", "index": 0}]},
"wispr_extraction": {"main": [{"node": "claude_analysis", "type": "main", "index": 0}]},
"claude_analysis": {"main": [{"node": "claude_narrative", "type": "main", "index": 0}]},
"claude_narrative": {"main": [{"node": "v0_generation", "type": "main", "index": 0}]},
"v0_generation": {"main": [{"node": "nsketch_design", "type": "main", "index": 0}]},
"nsketch_design": {"main": [{"node": "output_file", "type": "main", "index": 0}]}
}
}
The Manual Alternative
If you prefer more control over individual steps, you can run parts of this workflow manually. Download the financial data extracted by Wispr Flow AI, review it in a spreadsheet, then feed curated numbers into Claude. This approach takes longer but lets you validate data before it influences the narrative.
You might also generate slides in v0 manually by pasting Claude's output directly into the interface, then refining the design. This works well if your pitch deck needs significant customisation or if you want to add company-specific branding that the automated system might miss.
The trade-off is clear: full automation saves time but sacrifices flexibility. A hybrid approach, where automation handles the heavy lifting and you refine the output, often works best for first-time implementations.
Pro Tips
Error Handling and Retries
The Wispr Flow AI extraction occasionally fails on low-quality document scans. Add retry logic to n8n by setting exponential backoff: first retry after 5 seconds, then 15 seconds, then 45 seconds. After three failures, send an alert to your Slack channel so someone can manually review the document.
API Rate Limits
Claude's API has different rate limits depending on your plan tier. The free tier allows 10,000 tokens per minute. If you generate multiple decks in quick succession, you will hit this limit. Queue requests using n8n's built-in rate limiter node, or upgrade to a paid tier for higher throughput.
Cost Optimisation
Use Claude's Vision API sparingly; it costs more than text analysis. If your documents are already digital PDFs, use Wispr Flow AI's text extraction mode instead of asking Claude to analyse images. This reduces API costs by roughly 60 percent.
Data Validation
Always validate extracted financial figures against the original documents. Add a manual approval step in n8n before Claude receives the data. This prevents bad data from corrupting the entire analysis. Use a simple decision node that requires human approval if any extracted figure appears outside expected ranges.
Customising for Different Deck Types
The workflow above generates general investor pitch decks. Modify Claude's prompt to generate different deck types: board updates, annual reports, or internal strategy presentations. Simply change the prompt context and slide structure without rebuilding the entire workflow.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Wispr Flow AI | Pro | £180 | 5,000 document pages per month; additional pages at £0.02 each |
| Claude (Anthropic) | Pay-as-you-go | £50–150 | Highly variable; estimate 500K–1M tokens monthly for this workflow |
| v0 by Vercel | Pro | £19 | Unlimited generations; includes component library |
| Nsketch AI | Professional | £99 | 500 design generations monthly; upgrade to 2,000 for £199 |
| n8n | Self-hosted | £0 | Free if self-hosted; Cloud Pro at £30 if you prefer managed hosting |
| Total | £348–498/month | Covers 5–10 pitch decks per month depending on complexity |
This cost scales well if you generate more than one deck weekly. Adding a second team member sharing the same APIs costs almost nothing extra. If your organisation generates pitch decks frequently (weekly or more), consider annual commitments with these vendors for 15–25 percent discounts.