Back to Alchemy
Alchemy RecipeAdvancedautomation

Investment thesis document generation from market research and financials

Venture analysts face a familiar bottleneck: turning raw market research, competitor benchmarks, and financial projections into polished investment thesis documents. The work itself is not intellectually difficult, but it is time-consuming. An analyst might spend 15 to 20 hours manually copying data from spreadsheets, paraphrasing market reports, creating visual summaries, and stitching everything together into a coherent narrative. By the time the document is ready for partners, deal momentum has often slowed and market conditions have shifted. The inefficiency compounds across deal volume. A fund evaluating ten opportunities simultaneously cannot afford to spend a full week per deal on document assembly alone. Yet many teams still rely on email threads, shared drives, and manual copy-paste workflows because integrating their existing tools feels too complex or custom. This Alchemy workflow eliminates that friction. Using Finster AI for structured financial analysis, QuillBot for intelligent rewriting, and Text2Infographic for visual generation, you can route market research and balance sheets through an orchestration layer and emerge with a draft thesis ready for human review within hours. For more on this, see Document Writing and Editing Faster: Using Dictation and .... For more on this, see Investment pitch deck generation from financial statements.

The Automated Workflow

Why n8n for this workflow

We are using n8n rather than Zapier or Make because investment thesis documents are data-heavy. n8n gives you direct control over complex data transformations without hitting token limits on simpler platforms, and its native retry logic handles the occasional timeout from financial APIs gracefully.

Step 1: Trigger from your research management system

Your workflow begins when a deal file lands in your nominated folder or when a webhook fires from your CRM. For this example, assume you are monitoring a Google Drive folder where analysts upload a research bundle containing three files: market size estimates (spreadsheet), competitor analysis (PDF), and recent financials (CSV).

GET /files/list?parent=folder_id&mimeType=application/vnd.google-apps.spreadsheet

Configure n8n's Google Drive trigger to fire whenever a new file matching your naming convention appears. The trigger node passes the file ID downstream.

Step 2: Extract and normalise financial data

The Finster AI API ingests financial documents and returns structured JSON with key metrics, ratios, and trend flags. This is where manual data entry ends.

POST /api/v1/analyse/financials
{ "file_url": "https://drive.google.com/uc?id=FILE_ID", "document_type": "balance_sheet", "include_ratios": true, "include_forecast": true
}

In n8n, add an HTTP Request node configured as follows:

Method: POST
URL: https://api.finster.io/v1/analyse/financials
Headers: Authorization: Bearer YOUR_FINSTER_API_KEY Content-Type: application/json
Body:
{ "file_url": "{{$node['Google Drive Trigger'].data.webViewLink}}", "document_type": "balance_sheet", "include_ratios": true, "include_forecast": true
}

Finster returns JSON containing revenue growth rate, EBITDA margins, debt-to-equity ratio, and 24-month revenue forecast. Store this in n8n's internal variable store for later assembly.

Step 3: Process market research and competitor data

Next, extract text from the PDF containing competitor analysis and market sizing. Use Claude Opus 4.6 to structure this into a standardised format: addressable market, growth rate, key competitors, and market risks.

POST /v1/messages
{ "model": "claude-opus-4.6", "max_tokens": 2000, "messages": [ { "role": "user", "content": "Extract from this text: total addressable market size, annual growth rate, three largest competitors, and top three market risks. Return as JSON." } ]
}

Set up an n8n HTTP node to call Claude, passing the market research PDF text in the prompt. Configure error handling to retry once if the request times out; Claude's API can be slow on large documents.

Method: POST
URL: https://api.anthropic.com/v1/messages
Headers: x-api-key: YOUR_ANTHROPIC_API_KEY anthropic-version: 2023-06-01
Body:
{ "model": "claude-opus-4.6", "max_tokens": 2000, "messages": [ { "role": "user", "content": "Extract from this research document: TAM, CAGR, top 3 competitors, top 3 risks. Return as JSON only." } ]
}

Claude's response is JSON. Map the fields to your internal schema and store them alongside the Finster financial data.

Step 4: Generate visuals for market and financial data

Now you have structured data in JSON. Text2Infographic accepts JSON and generates publication-ready charts and graphs. Request a market sizing chart and a revenue forecast graph.

POST /api/generate-infographic
{ "type": "bar_chart", "title": "Market Size and Forecast", "data": [ {"label": "2024", "value": 1200}, {"label": "2025", "value": 1680}, {"label": "2026", "value": 2352} ], "color_scheme": "professional"
}

In n8n, add a function node to transform your Finster forecast data into Text2Infographic's expected format, then POST it:

Method: POST
URL: https://api.text2infographic.com/v1/generate
Headers: Authorization: Bearer YOUR_TEXT2INFOGRAPHIC_KEY
Body:
{ "type": "bar_chart", "title": "Revenue Forecast", "data": {{$json.finster_forecast}}, "color_scheme": "professional"
}

The API returns a URL to the generated image. Store that URL.

Step 5: Paraphrase and integrate narrative sections

You now have financial metrics, market data, and visuals. Use QuillBot to rewrite boilerplate sections of your thesis template into fresh prose that incorporates the specific deal data.

POST /api/paraphrase
{ "text": "The company operates in a high-growth market with expanding demand for enterprise software.", "tone": "professional", "fluency": "very_fluent"
}

In n8n, prepare template text segments that reference placeholder values, then loop through them with QuillBot:

Method: POST
URL: https://api.quillbot.com/v1/paraphrase
Headers: Authorization: Bearer YOUR_QUILLBOT_KEY
Body:
{ "text": "This company competes in {{market_name}}, a {{market_size | currency}} opportunity growing at {{cagr}}% annually. Key rivals include {{competitor_1}}, {{competitor_2}}, and {{competitor_3}}.", "tone": "professional", "fluency": "very_fluent"
}

QuillBot returns paraphrased text that reads naturally rather than templated. Assemble this prose alongside your Finster metrics and Text2Infographic images.

Step 6: Compile and publish the final document

Use n8n's Google Docs connector to create a new document and populate it with the thesis sections in order: executive summary, market analysis (with infographic), financial overview (with metrics table), competitive landscape, investment highlights, and risks. For more on this, see Competitive pricing analysis and dynamic pricing recommen....

POST /v1/documents
{ "title": "Investment Thesis: {{company_name}}", "body": { "content": [ {"heading": "Executive Summary"}, {"paragraph": "{{executive_text}}"}, {"image": "{{market_chart_url}}"}, {"heading": "Financial Overview"}, {"table": {{financial_metrics_table}}} ] }
}

Configure the Google Docs node to insert each paraphrased section and image into the correct location. The final step is to move the document to a shared folder and send a Slack notification to your investment committee with a link.

Method: POST
URL: https://slack.com/api/chat.postMessage
{ "channel": "#investment-reviews", "text": "Investment thesis for {{company_name}} is ready: {{google_docs_link}}"
}

The Manual Alternative

If you want more hands-on control, you can run Finster, Claude, Text2Infographic, and QuillBot individually and assemble the results yourself in Google Docs. This is slower but gives you the chance to inspect each output and customise sections before they are locked into the workflow. It also lets you cherry-pick which visualisations to include and which narrative sections to edit further. This approach takes roughly 6 to 8 hours per deal instead of 2, but may suit smaller funds that prefer not to automate end-to-end.

Pro Tips

Handle rate limits gracefully.

Finster and Text2Infographic both enforce rate limits.

In n8n, wrap HTTP nodes in a retry block set to wait 30 seconds before retrying once. This avoids workflow failure on temporary throttling.

Segment your data pipeline.

Run Finster analysis and Claude extraction in parallel within n8n (use a "Merge" node) rather than sequentially. This cuts workflow execution time by roughly 40%.

Cache Claude prompts.

Anthropic's prompt caching feature reduces costs on repeated market research synthesis. If you analyse multiple companies in the same sector, use the same base prompt and let the system reuse the cached context.

Monitor token spend.

Claude Opus 4.6 is more expensive than Claude Sonnet 4.6. For straightforward financial extraction, use Sonnet and reserve Opus only for complex narrative synthesis where instruction-following precision matters.

Set a document template first.

Before automating, create a Google Docs template with the exact structure, fonts, and branding your fund uses. Let n8n populate the template rather than building the document from scratch; this ensures consistency and reduces review time.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8nProfessional (hosted)£480Covers 100k workflow executions; each thesis is roughly 5 executions.
Finster AIPro£350500 financial documents per month; scales to £700 at 1500 documents.
Claude Opus 4.6Pay-as-you-go£0.04 per 1K input tokensEach thesis uses approximately 8k tokens; cost per deal is roughly £0.30.
QuillBotPremium£120Unlimited paraphrasing; required for bulk rewriting.
Text2InfographicStandard£200Up to 50 infographics per month; can generate 3 to 5 per thesis.
Google Docs APIIncluded in Google Workspace£0No separate charge if your organisation already uses Workspace.
TotalAll tools combined~£1,400 per monthCovers 20 to 30 deals per month without overages.