This workflow corresponds to n8n.io template #16759 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "v2JcZsjKpGQHsWYs",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Validate startup ideas and generate AI business plans with market and competitor research",
"tags": [
{
"id": "SoSnLWH1WyYQ9KzH",
"name": "ai",
"createdAt": "2026-07-01T07:51:15.737Z",
"updatedAt": "2026-07-01T07:51:15.737Z"
},
{
"id": "DUegeMn7STSfDTDv",
"name": "startup",
"createdAt": "2026-07-01T07:51:15.805Z",
"updatedAt": "2026-07-01T07:51:15.805Z"
},
{
"id": "b2k14bUfzzq2nYU7",
"name": "validation",
"createdAt": "2026-07-01T07:51:15.805Z",
"updatedAt": "2026-07-01T07:51:15.805Z"
},
{
"id": "VRQcCUSLoEHIfV5o",
"name": "business-plan",
"createdAt": "2026-07-01T07:51:15.813Z",
"updatedAt": "2026-07-01T07:51:15.813Z"
}
],
"nodes": [
{
"id": "63cec5d9-99d1-41b0-ba79-cb5432317231",
"name": "Sticky Note - Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-208
],
"parameters": {
"width": 980,
"height": 1168,
"content": "## AI Startup Idea Validator & Business Plan Generator\n\nThis workflow transforms a rough startup idea into a fully market-validated business plan using a sequential AI research pipeline. It runs market sizing, competitor mapping, demand validation, and competitive scoring before synthesizing everything into a structured 10-section business plan \u2014 delivered via email and logged to Google Sheets.\n\n### Who's it for\n- First-time founders validating early-stage concepts before committing resources\n- Product managers exploring new market opportunities with data backing\n- Entrepreneurs running lean validation before pitching investors\n- Investors screening ideas quickly before deeper due diligence\n\n### How it works\n1. Founder submits a raw idea via webhook POST\n2. AI expands the idea into a structured concept with problem, solution, revenue model, and key assumptions\n3. Ideas scoring below 4/10 are filtered out immediately\n4. Market research AI estimates TAM/SAM/SOM, growth rate, trends, and customer persona\n5. Competitor analysis AI maps direct and indirect competitors, moat potential, and differentiation strategy\n6. Python node scores the competitive position using data from the competitor AI output\n7. Demand validation AI assesses PMF signals, risk factors, GTM strategy, and overall viability\n8. JS node merges all research into a composite score and produces a PROCEED / VALIDATE_FURTHER / PIVOT_OR_ABANDON recommendation\n9. Business plan AI synthesizes all research into a 10-section structured plan\n10. Final report is emailed to the founder and logged to Google Sheets\n\n### How to set up\n1. Import this workflow into n8n\n2. Add Anthropic Claude credentials and attach them to all five AI model nodes\n3. Add SendGrid credentials and replace YOUR_SENDGRID_API_KEY\n4. Add Google Sheets OAuth2 credentials on the tracker node\n5. Replace YOUR_SHEET_ID in the Sheets node with your actual Spreadsheet ID\n6. Replace founder@example.com and validator@yourdomain.com with real addresses\n7. Activate and POST your idea to the webhook URL\n\n### Requirements\n- Anthropic Claude API key (claude-sonnet recommended for research quality)\n- SendGrid API key for email delivery (or swap for native Gmail node)\n- Google Sheets with OAuth2 credentials\n- n8n instance with a publicly accessible webhook URL\n\n### How to customize\n- Lower or raise the idea viability threshold in Filter - Viable Ideas Only (default: score \u2265 4)\n- Adjust AI temperature per node \u2014 lower for research accuracy, higher for creative business plan writing\n- Add SerpAPI or Tavily web search tools to any AI node for real-time competitor and market data\n- Extend the Google Sheet columns to track validation outcomes over time\n- Chain a second workflow after the webhook response to auto-generate a pitch deck from the business plan"
},
"typeVersion": 1
},
{
"id": "2a7058bc-5b44-4199-be5c-a9bad998761f",
"name": "Sticky Note - Stage 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1104,
-80
],
"parameters": {
"color": 4,
"width": 760,
"height": 820,
"content": "## Stage 1: Idea Intake & Expansion"
},
"typeVersion": 1
},
{
"id": "5972043b-1229-42b2-bf86-89567d62490c",
"name": "Sticky Note - Stage 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
-144
],
"parameters": {
"color": 3,
"width": 1120,
"height": 1040,
"content": "## Stage 2: Market Research Loop"
},
"typeVersion": 1
},
{
"id": "81b50e94-d99c-48b3-a2bc-8c2731e96feb",
"name": "Sticky Note - Stage 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3104,
-96
],
"parameters": {
"color": 5,
"width": 1228,
"height": 1060,
"content": "## Stage 3: Competitor Analysis"
},
"typeVersion": 1
},
{
"id": "94255d41-1b34-43f2-845b-6766ace7c530",
"name": "Sticky Note - Stage 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
4400,
-80
],
"parameters": {
"color": 6,
"width": 1620,
"height": 1008,
"content": "## Stage 4: Demand Validation & Business Plan"
},
"typeVersion": 1
},
{
"id": "b361ef93-6cd4-4853-a6f0-c23a23675258",
"name": "Webhook - Receive Startup Idea",
"type": "n8n-nodes-base.webhook",
"position": [
1152,
368
],
"parameters": {
"path": "startup-idea-inbound",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 1.1
},
{
"id": "59f96be0-dd76-4914-afb5-fa99b19cd69c",
"name": "Prepare Idea Context",
"type": "n8n-nodes-base.set",
"position": [
1392,
368
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"name": "rawIdea",
"type": "string",
"value": "={{ $json.idea || $json.body?.idea || 'AI-powered meal planning app for busy professionals' }}"
},
{
"name": "founderName",
"type": "string",
"value": "={{ $json.founderName || $json.body?.founderName || 'Founder' }}"
},
{
"name": "targetIndustry",
"type": "string",
"value": "={{ $json.industry || $json.body?.industry || 'General' }}"
},
{
"name": "budgetRange",
"type": "string",
"value": "={{ $json.budget || $json.body?.budget || 'Bootstrap / Seed' }}"
},
{
"name": "submittedAt",
"type": "string",
"value": "={{ new Date().toISOString() }}"
},
{
"name": "ideaId",
"type": "string",
"value": "={{ 'IDEA-' + Date.now().toString().slice(-8) }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "54e157ea-74d4-43f6-a97c-5a86f71bb135",
"name": "AI - Expand & Structure Idea",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1600,
368
],
"parameters": {
"text": "=You are an expert startup strategist and product thinker.\n\nA founder has submitted the following rough idea:\n\"{{ $json.rawIdea }}\"\n\nIndustry focus: {{ $json.targetIndustry }}\nBudget stage: {{ $json.budgetRange }}\n\nYour task: Expand this rough idea into a structured startup concept. Return a JSON object with EXACTLY these fields:\n{\n \"startupName\": \"Suggested working name\",\n \"oneLiner\": \"One sentence pitch\",\n \"problemStatement\": \"The core problem being solved\",\n \"proposedSolution\": \"The solution approach\",\n \"primaryTargetAudience\": \"Main customer segment\",\n \"secondaryTargetAudience\": \"Secondary segment if applicable\",\n \"coreValueProposition\": \"Why customers would choose this\",\n \"revenueModel\": \"How it makes money (SaaS/marketplace/etc)\",\n \"keyAssumptions\": [\"assumption 1\", \"assumption 2\", \"assumption 3\"],\n \"ideaScore\": <number 1-10 based on clarity and potential>\n}\n\nReturn ONLY the JSON. No markdown, no explanation.",
"options": {},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "2e4e81e7-20c8-44b0-aa85-67f0ae0460fb",
"name": "JS - Parse Expanded Idea",
"type": "n8n-nodes-base.code",
"position": [
2016,
368
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const item = $input.item.json;\nlet parsed = {};\ntry {\n const rawText = item.output || item.text || item.response || '{}';\n const clean = rawText.replace(/```json|```/g, '').trim();\n parsed = JSON.parse(clean);\n} catch(e) {\n parsed = {\n startupName: 'Unnamed Startup',\n oneLiner: item.rawIdea,\n problemStatement: 'To be defined',\n proposedSolution: 'To be defined',\n primaryTargetAudience: 'General consumers',\n secondaryTargetAudience: 'N/A',\n coreValueProposition: 'To be defined',\n revenueModel: 'TBD',\n keyAssumptions: [],\n ideaScore: 5\n };\n}\nreturn {\n json: {\n ...item,\n ...parsed,\n parseError: parsed.startupName === 'Unnamed Startup' ? true : false\n }\n};"
},
"typeVersion": 2
},
{
"id": "4096b58a-2951-47ea-baef-cfa202d9e30d",
"name": "Filter - Viable Ideas Only",
"type": "n8n-nodes-base.filter",
"position": [
2224,
368
],
"parameters": {
"options": {},
"conditions": {
"conditions": [
{
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.ideaScore }}",
"rightValue": 4
}
]
}
},
"typeVersion": 2.2
},
{
"id": "fd3a1d17-b124-42ec-bafa-8a2b1c3f68cc",
"name": "Wait 1 - API Rate Limit",
"type": "n8n-nodes-base.wait",
"position": [
2464,
368
],
"parameters": {},
"typeVersion": 1
},
{
"id": "81cabc77-4f84-4b16-8666-a499bbf35f49",
"name": "AI - Market Research Loop",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2640,
368
],
"parameters": {
"text": "=You are a market research analyst specializing in startup ecosystems.\n\nStartup concept:\nName: {{ $json.startupName }}\nProblem: {{ $json.problemStatement }}\nSolution: {{ $json.proposedSolution }}\nTarget Audience: {{ $json.primaryTargetAudience }}\nRevenue Model: {{ $json.revenueModel }}\n\nConduct thorough market research and return a JSON object with EXACTLY these fields:\n{\n \"totalAddressableMarket\": \"TAM estimate with source reasoning\",\n \"serviceableAddressableMarket\": \"SAM estimate\",\n \"serviceableObtainableMarket\": \"SOM for year 1-2\",\n \"marketGrowthRate\": \"Annual growth rate estimate (e.g. 18% CAGR)\",\n \"marketMaturity\": \"emerging|growing|mature|declining\",\n \"keyMarketTrends\": [\"trend 1\", \"trend 2\", \"trend 3\"],\n \"targetCustomerPersona\": {\n \"demographics\": \"Age, income, job, location\",\n \"painPoints\": [\"pain 1\", \"pain 2\"],\n \"buyingBehavior\": \"How they currently solve this problem\",\n \"willingnessToPay\": \"Estimated price range they'd pay\"\n },\n \"regulatoryConsiderations\": \"Any relevant regulations or compliance needs\",\n \"marketResearchScore\": <number 1-10 representing market attractiveness>\n}\n\nReturn ONLY the JSON. No markdown.",
"options": {},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "92600527-904e-4afd-ba76-ba73395b12a2",
"name": "JS - Parse Market Research",
"type": "n8n-nodes-base.code",
"position": [
2944,
368
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const item = $input.item.json;\nlet parsed = {};\ntry {\n const rawText = item.output || item.text || item.response || '{}';\n const clean = rawText.replace(/```json|```/g, '').trim();\n parsed = JSON.parse(clean);\n} catch(e) {\n parsed = {\n totalAddressableMarket: 'Unable to estimate',\n serviceableAddressableMarket: 'Unable to estimate',\n serviceableObtainableMarket: 'Unable to estimate',\n marketGrowthRate: 'Unknown',\n marketMaturity: 'unknown',\n keyMarketTrends: [],\n targetCustomerPersona: {},\n regulatoryConsiderations: 'None identified',\n marketResearchScore: 5\n };\n}\nreturn {\n json: {\n ...item,\n marketData: parsed\n }\n};"
},
"typeVersion": 2
},
{
"id": "2e5f2da9-cf2e-48da-a570-8690b036b921",
"name": "Wait 2 - API Rate Limit",
"type": "n8n-nodes-base.wait",
"position": [
3184,
368
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9fcc46e7-0452-4b07-b382-f0f72f0b28c2",
"name": "AI - Competitor Analysis",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3360,
368
],
"parameters": {
"text": "=You are a competitive intelligence analyst for startups.\n\nAnalyze the competitive landscape for this startup:\nName: {{ $json.startupName }}\nProblem solved: {{ $json.problemStatement }}\nSolution: {{ $json.proposedSolution }}\nTarget audience: {{ $json.primaryTargetAudience }}\nRevenue model: {{ $json.revenueModel }}\nMarket: {{ $json.marketData?.totalAddressableMarket }}\n\nReturn a JSON object with EXACTLY these fields:\n{\n \"directCompetitors\": [\n {\n \"name\": \"Competitor name\",\n \"description\": \"What they do\",\n \"fundingStage\": \"Bootstrapped/Seed/Series A/etc\",\n \"estimatedRevenue\": \"Revenue estimate\",\n \"strengths\": [\"strength 1\", \"strength 2\"],\n \"weaknesses\": [\"weakness 1\", \"weakness 2\"],\n \"marketShare\": \"Estimated %\"\n }\n ],\n \"indirectCompetitors\": [\n {\n \"name\": \"Competitor name\",\n \"description\": \"How they partially solve the problem\"\n }\n ],\n \"competitiveAdvantages\": [\"advantage 1\", \"advantage 2\", \"advantage 3\"],\n \"competitiveThreats\": [\"threat 1\", \"threat 2\"],\n \"differentiationStrategy\": \"How this startup can stand apart\",\n \"moatPotential\": \"low|medium|high\",\n \"competitorScore\": <number 1-10, higher = less saturated market>\n}\n\nReturn ONLY the JSON. No markdown.",
"options": {},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "73be9e0f-21e5-41f6-9714-b2b2dddae01e",
"name": "Python - Score Competitive Position",
"type": "n8n-nodes-base.code",
"position": [
3664,
368
],
"parameters": {
"mode": "runOnceForEachItem",
"language": "python"
},
"typeVersion": 2
},
{
"id": "0a0126b3-c497-4671-98fe-2e414dcadccd",
"name": "Wait 3 - API Rate Limit",
"type": "n8n-nodes-base.wait",
"position": [
3904,
368
],
"parameters": {},
"typeVersion": 1
},
{
"id": "0b401b07-3bbf-411a-a5c7-b52d08e6c7a3",
"name": "AI - Demand Validation",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
4096,
368
],
"parameters": {
"text": "=You are a demand validation expert using lean startup methodology.\n\nValidate product-market fit signals for:\nStartup: {{ $json.startupName }}\nProblem: {{ $json.problemStatement }}\nSolution: {{ $json.proposedSolution }}\nTarget Audience: {{ $json.primaryTargetAudience }}\nMarket Size: {{ $json.marketData?.totalAddressableMarket }}\nKey Assumptions: {{ JSON.stringify($json.keyAssumptions) }}\nCompetitive Position Score: {{ $json.competitorScore }}\n\nReturn a JSON object with EXACTLY these fields:\n{\n \"demandSignals\": [\n {\n \"signal\": \"Signal description (e.g. Google Trends growth)\",\n \"strength\": \"weak|moderate|strong\",\n \"evidence\": \"Why this is a signal\"\n }\n ],\n \"validationMethods\": [\n {\n \"method\": \"How to validate (e.g. landing page test)\",\n \"effort\": \"low|medium|high\",\n \"timeframe\": \"Estimated days/weeks\",\n \"successMetric\": \"What success looks like\"\n }\n ],\n \"riskFactors\": [\n {\n \"risk\": \"Risk description\",\n \"severity\": \"low|medium|high\",\n \"mitigation\": \"How to mitigate\"\n }\n ],\n \"productMarketFitScore\": <number 1-10>,\n \"pivotSuggestions\": [\"If PMF is low, consider these pivots\"],\n \"goToMarketRecommendation\": \"Recommended GTM strategy in 2-3 sentences\",\n \"overallViabilityScore\": <number 1-10, overall startup viability>\n}\n\nReturn ONLY the JSON. No markdown.",
"options": {},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "1aa9cb7b-90ed-4b6d-b128-73f5308dca1b",
"name": "JS - Merge All Research & Score",
"type": "n8n-nodes-base.code",
"position": [
4512,
368
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const item = $input.item.json;\nlet competitorData = {};\nlet demandData = {};\n\ntry {\n const compRaw = item.output || item.text || item.response || '{}';\n const compClean = compRaw.replace(/```json|```/g, '').trim();\n competitorData = JSON.parse(compClean);\n} catch(e) {\n competitorData = { directCompetitors: [], indirectCompetitors: [], competitiveAdvantages: [], competitiveThreats: [], differentiationStrategy: 'TBD', moatPotential: 'medium', competitorScore: 5 };\n}\n\ntry {\n const demandRaw = item.demandOutput || item.demandText || '{}';\n const demandClean = demandRaw.replace(/```json|```/g, '').trim();\n demandData = JSON.parse(demandClean);\n} catch(e) {\n demandData = { demandSignals: [], validationMethods: [], riskFactors: [], productMarketFitScore: 5, pivotSuggestions: [], goToMarketRecommendation: 'TBD', overallViabilityScore: 5 };\n}\n\nconst ideaScore = item.ideaScore || 5;\nconst marketScore = item.marketData?.marketResearchScore || 5;\nconst compScore = competitorData.competitorScore || 5;\nconst pmfScore = demandData.productMarketFitScore || 5;\nconst overallScore = Math.round((ideaScore + marketScore + compScore + pmfScore) / 4);\n\nreturn {\n json: {\n ...item,\n competitorData,\n demandData,\n compositScore: overallScore,\n recommendation: overallScore >= 7 ? 'PROCEED' : overallScore >= 5 ? 'VALIDATE_FURTHER' : 'PIVOT_OR_ABANDON'\n }\n};"
},
"typeVersion": 2
},
{
"id": "837f3305-5069-41c6-94ba-a0155a464b70",
"name": "AI - Generate Business Plan",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
4800,
368
],
"parameters": {
"text": "=You are a top-tier startup advisor writing a comprehensive business plan.\n\nUsing ALL research below, write a full market-validated business plan.\n\n== IDEA ==\nStartup Name: {{ $json.startupName }}\nOne Liner: {{ $json.oneLiner }}\nProblem: {{ $json.problemStatement }}\nSolution: {{ $json.proposedSolution }}\nValue Proposition: {{ $json.coreValueProposition }}\nRevenue Model: {{ $json.revenueModel }}\n\n== MARKET ==\nTAM: {{ $json.marketData?.totalAddressableMarket }}\nSAM: {{ $json.marketData?.serviceableAddressableMarket }}\nSOM: {{ $json.marketData?.serviceableObtainableMarket }}\nGrowth Rate: {{ $json.marketData?.marketGrowthRate }}\nTrends: {{ JSON.stringify($json.marketData?.keyMarketTrends) }}\n\n== COMPETITION ==\nDirect Competitors: {{ JSON.stringify($json.competitorData?.directCompetitors) }}\nDifferentiation: {{ $json.competitorData?.differentiationStrategy }}\nMoat Potential: {{ $json.competitorData?.moatPotential }}\n\n== DEMAND ==\nPMF Score: {{ $json.demandData?.productMarketFitScore }}/10\nGTM Recommendation: {{ $json.demandData?.goToMarketRecommendation }}\nRisk Factors: {{ JSON.stringify($json.demandData?.riskFactors) }}\n\n== OVERALL ==\nComposite Score: {{ $json.compositScore }}/10\nRecommendation: {{ $json.recommendation }}\n\nWrite a structured business plan with these sections:\n1. Executive Summary\n2. Problem & Solution\n3. Market Opportunity\n4. Competitive Landscape\n5. Business Model & Revenue\n6. Go-To-Market Strategy\n7. Key Risks & Mitigations\n8. 90-Day Validation Roadmap\n9. Funding Requirements\n10. Final Verdict & Score\n\nBe specific, data-driven, and actionable. Target length: 600-800 words.",
"options": {},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "409b789b-45d9-497b-97ac-28780f8cfd89",
"name": "JS - Format Final Output",
"type": "n8n-nodes-base.code",
"position": [
5104,
368
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const item = $input.item.json;\nconst businessPlan = item.output || item.text || item.response || 'Business plan generation failed.';\nconst today = new Date().toISOString().split('T')[0];\n\nreturn {\n json: {\n ...item,\n businessPlan,\n exportDate: today,\n status: 'Validated',\n summaryRow: [\n today,\n item.ideaId || 'N/A',\n item.startupName || 'Unknown',\n item.oneLiner || '',\n item.revenueModel || '',\n item.marketData?.totalAddressableMarket || '',\n (item.competitorData?.directCompetitors || []).length.toString(),\n (item.demandData?.productMarketFitScore || 0).toString() + '/10',\n (item.compositScore || 0).toString() + '/10',\n item.recommendation || '',\n item.founderName || '',\n new Date().toISOString()\n ]\n }\n};"
},
"typeVersion": 2
},
{
"id": "8df22ca3-0314-4a26-8a14-f0bc8cbc1c6f",
"name": "Save to Google Sheets Tracker",
"type": "n8n-nodes-base.httpRequest",
"position": [
5344,
272
],
"parameters": {
"url": "https://sheets.googleapis.com/v4/spreadsheets/YOUR_SHEET_ID/values/StartupTracker!A1:append?valueInputOption=USER_ENTERED",
"method": "POST",
"options": {},
"jsonBody": "={\n \"values\": [{{ JSON.stringify($json.summaryRow) }}]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "efc397a1-58df-4352-8bed-ace5b4c56e73",
"name": "Send Business Plan via Email",
"type": "n8n-nodes-base.httpRequest",
"position": [
5344,
464
],
"parameters": {
"url": "https://api.sendgrid.com/v3/mail/send",
"method": "POST",
"options": {},
"jsonBody": "={\n \"personalizations\": [{\"to\": [{\"email\": \"{{ $json.founderEmail || 'founder@example.com' }}\"}]}],\n \"from\": {\"email\": \"validator@yourdomain.com\", \"name\": \"Startup Validator AI\"},\n \"subject\": \"Your Startup Validation Report: {{ $json.startupName }} (Score: {{ $json.compositScore }}/10)\",\n \"content\": [{\n \"type\": \"text/plain\",\n \"value\": \"Hi {{ $json.founderName }},\\n\\nYour startup idea '{{ $json.startupName }}' has been validated. Overall Score: {{ $json.compositScore }}/10 \u2014 {{ $json.recommendation }}\\n\\n{{ $json.businessPlan }}\\n\\nBest,\\nStartup Validator AI\"\n }]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b4751dbb-ae9c-446f-9aa2-06f9144cd4b4",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
5584,
368
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"success\": true,\n \"ideaId\": \"{{ $json.ideaId }}\",\n \"startupName\": \"{{ $json.startupName }}\",\n \"compositScore\": {{ $json.compositScore }},\n \"recommendation\": \"{{ $json.recommendation }}\",\n \"pmfScore\": {{ $json.demandData?.productMarketFitScore || 0 }},\n \"message\": \"Validation complete. Business plan sent to your email.\"\n}"
},
"typeVersion": 1
},
{
"id": "8a89b50e-2d87-410f-b7b2-3fec9483acf4",
"name": "Anthropic - Idea Expansion",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
1744,
592
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "815f76d4-b501-4fa0-b5fe-0ce39d14bad4",
"name": "Anthropic - Market Research",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
2704,
592
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514"
},
"options": {
"temperature": 0.2
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "06b4e50c-77b3-4d90-9ee8-87588816a536",
"name": "Anthropic - Competitor Analysis",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
3424,
592
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514"
},
"options": {
"temperature": 0.2
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "63facfe0-c93b-4cbe-a1f0-40ae3dcff626",
"name": "Anthropic - Demand Validation",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
4112,
592
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "cc894a38-26db-44b9-aa9b-47473693ab72",
"name": "Anthropic - Business Plan",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
4864,
592
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514"
},
"options": {
"temperature": 0.4
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "03a3d611-39b0-4145-8680-3ab2beaeefe7",
"connections": {
"Prepare Idea Context": {
"main": [
[
{
"node": "AI - Expand & Structure Idea",
"type": "main",
"index": 0
}
]
]
},
"AI - Demand Validation": {
"main": [
[
{
"node": "JS - Merge All Research & Score",
"type": "main",
"index": 0
}
]
]
},
"Wait 1 - API Rate Limit": {
"main": [
[
{
"node": "AI - Market Research Loop",
"type": "main",
"index": 0
}
]
]
},
"Wait 2 - API Rate Limit": {
"main": [
[
{
"node": "AI - Competitor Analysis",
"type": "main",
"index": 0
}
]
]
},
"Wait 3 - API Rate Limit": {
"main": [
[
{
"node": "AI - Demand Validation",
"type": "main",
"index": 0
}
]
]
},
"AI - Competitor Analysis": {
"main": [
[
{
"node": "Python - Score Competitive Position",
"type": "main",
"index": 0
}
]
]
},
"JS - Format Final Output": {
"main": [
[
{
"node": "Save to Google Sheets Tracker",
"type": "main",
"index": 0
},
{
"node": "Send Business Plan via Email",
"type": "main",
"index": 0
}
]
]
},
"JS - Parse Expanded Idea": {
"main": [
[
{
"node": "Filter - Viable Ideas Only",
"type": "main",
"index": 0
}
]
]
},
"AI - Market Research Loop": {
"main": [
[
{
"node": "JS - Parse Market Research",
"type": "main",
"index": 0
}
]
]
},
"Anthropic - Business Plan": {
"ai_languageModel": [
[
{
"node": "AI - Generate Business Plan",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Anthropic - Idea Expansion": {
"ai_languageModel": [
[
{
"node": "AI - Expand & Structure Idea",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Filter - Viable Ideas Only": {
"main": [
[
{
"node": "Wait 1 - API Rate Limit",
"type": "main",
"index": 0
}
]
]
},
"JS - Parse Market Research": {
"main": [
[
{
"node": "Wait 2 - API Rate Limit",
"type": "main",
"index": 0
}
]
]
},
"AI - Generate Business Plan": {
"main": [
[
{
"node": "JS - Format Final Output",
"type": "main",
"index": 0
}
]
]
},
"Anthropic - Market Research": {
"ai_languageModel": [
[
{
"node": "AI - Market Research Loop",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI - Expand & Structure Idea": {
"main": [
[
{
"node": "JS - Parse Expanded Idea",
"type": "main",
"index": 0
}
]
]
},
"Anthropic - Demand Validation": {
"ai_languageModel": [
[
{
"node": "AI - Demand Validation",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save to Google Sheets Tracker": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Webhook - Receive Startup Idea": {
"main": [
[
{
"node": "Prepare Idea Context",
"type": "main",
"index": 0
}
]
]
},
"Anthropic - Competitor Analysis": {
"ai_languageModel": [
[
{
"node": "AI - Competitor Analysis",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"JS - Merge All Research & Score": {
"main": [
[
{
"node": "AI - Generate Business Plan",
"type": "main",
"index": 0
}
]
]
},
"Python - Score Competitive Position": {
"main": [
[
{
"node": "Wait 3 - API Rate Limit",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
anthropicApioAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow receives a startup idea via webhook, uses Anthropic Claude to expand it, run market research, competitor analysis, and demand validation, then generates a structured business plan, emails it through SendGrid, logs a summary row to Google Sheets, and returns a JSON…
Source: https://n8n.io/workflows/16759/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
⏺ 🚀 How it works
WhatsApp AI Agent - Template. Uses redis, httpRequest, postgres, agent. Webhook trigger; 89 nodes.
Lead Pipeline v3.0. Uses httpRequest, agent, lmChatAnthropic, toolThink. Webhook trigger; 77 nodes.
What if AI didn't just write content—but actually thought about how to write it? This n8n workflow revolutionizes content creation by deploying multiple specialized AI agents that handle every aspect
Fully automates your service order pipeline from incoming booking to supplier confirmation — with built-in SLA enforcement and automatic escalation if a supplier goes silent. 📥 Receives orders via web