AutomationFlowsAI & RAG › Validate Startup Ideas and Generate Business Plans From Telegram with…

Validate Startup Ideas and Generate Business Plans From Telegram with…

Original n8n title: Validate Startup Ideas and Generate Business Plans From Telegram with Perplexity and Gpt-4o

ByDr. Firas @drfiras on n8n.io

This workflow receives startup ideas via a Telegram bot, uses OpenAI (GPT-4o and GPT-4o mini) plus Perplexity to score, research, and validate them, then generates a full business plan in Google Docs, logs key results to Google Sheets, and returns the plan link in Telegram.…

Event trigger★★★★★ complexityAI-powered32 nodesTelegram TriggerChain LlmOpenAI ChatOutput Parser StructuredTelegramPerplexityGoogle DocsGoogle Sheets
AI & RAG Trigger: Event Nodes: 32 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #16977 — we link there as the canonical source.

This workflow follows the Chainllm → Google Sheets 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 →

Download .json
{
  "id": "jYkeeIq0Js4larDv",
  "meta": {
    "builderVariant": "mcp",
    "aiBuilderAssisted": true
  },
  "name": "Validate startup ideas and generate business plans from Telegram with Perplexity and GPT-4o",
  "tags": [],
  "nodes": [
    {
      "id": "dfb1300a-44e6-450c-92fb-b6d074c46c3f",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        0,
        304
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "22d71b7e-44f0-48c7-bd8e-6efdae9362c0",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c1",
              "name": "min_idea_score",
              "type": "number",
              "value": 4
            },
            {
              "id": "c2",
              "name": "default_country",
              "type": "string",
              "value": "Global"
            },
            {
              "id": "c3",
              "name": "model_structurer",
              "type": "string",
              "value": "gpt-4o"
            },
            {
              "id": "c4",
              "name": "model_validator",
              "type": "string",
              "value": "gpt-4o-mini"
            },
            {
              "id": "c5",
              "name": "perplexity_model",
              "type": "string",
              "value": "sonar-pro"
            },
            {
              "id": "c6",
              "name": "docs_folder_id",
              "type": "string",
              "value": "root"
            },
            {
              "id": "c7",
              "name": "raw_idea",
              "type": "string",
              "value": "={{ $json.message.text }}"
            },
            {
              "id": "c8",
              "name": "telegram_chat_id",
              "type": "string",
              "value": "={{ $json.message.chat.id }}"
            },
            {
              "id": "c9",
              "name": "telegram_user",
              "type": "string",
              "value": "={{ $json.message.from.username }}"
            },
            {
              "id": "c10",
              "name": "founder_name",
              "type": "string",
              "value": "={{ $json.message.from.first_name }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7954a99c-9e85-4769-967c-1c696dba3f33",
      "name": "Extract & Score Idea",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        448,
        304
      ],
      "parameters": {
        "text": "=You are a startup analyst. A founder sent this raw idea via Telegram:\n\"{{ $('Configuration').item.json.raw_idea }}\"\n\nStructure it into a clear concept. Detect the language of the idea and set \"language\" to its ISO code (fr, en, es, ...). If no target country/market is stated, use \"{{ $('Configuration').item.json.default_country }}\". If no budget stage is stated, use \"Bootstrap / Seed\". Give idea_score 1-10 based on clarity, originality and potential. In score_reasoning, briefly justify the score and, if weak, how to strengthen it, written in the SAME language as the idea. Return only the structured object.",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "a0db1b4f-5ede-4cc9-b739-b9c0890ba899",
      "name": "GPT-4o mini - Extract",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        464,
        528
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.model_validator }}"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2b90bedb-5a09-474c-9ed9-5a97597fb778",
      "name": "Idea Schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        592,
        528
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"startup_name\":{\"type\":\"string\"},\"one_liner\":{\"type\":\"string\"},\"problem\":{\"type\":\"string\"},\"solution\":{\"type\":\"string\"},\"primary_audience\":{\"type\":\"string\"},\"revenue_model\":{\"type\":\"string\"},\"industry\":{\"type\":\"string\"},\"target_country\":{\"type\":\"string\"},\"budget_stage\":{\"type\":\"string\"},\"language\":{\"type\":\"string\"},\"key_assumptions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"idea_score\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":10},\"score_reasoning\":{\"type\":\"string\"}},\"required\":[\"startup_name\",\"one_liner\",\"problem\",\"solution\",\"revenue_model\",\"industry\",\"target_country\",\"budget_stage\",\"language\",\"idea_score\",\"score_reasoning\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "2b2f495e-6a66-47ce-8dbe-b7785fdba37e",
      "name": "Idea Viable?",
      "type": "n8n-nodes-base.if",
      "position": [
        736,
        304
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "v1",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $('Extract & Score Idea').item.json.output.idea_score }}",
              "rightValue": "={{ $('Configuration').item.json.min_idea_score }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "fdbef4a5-16e3-4cef-8443-187ed6c7d633",
      "name": "Ask To Generate Plan",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1024,
        208
      ],
      "parameters": {
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "message": "={{ $('Extract & Score Idea').item.json.output.startup_name }} - {{ $('Extract & Score Idea').item.json.output.one_liner }}\n\nInitial score: {{ $('Extract & Score Idea').item.json.output.idea_score }}/10\nTarget market: {{ $('Extract & Score Idea').item.json.output.target_country }}\n\nRun the full market + competitor research and generate the business plan?",
        "options": {
          "limitWaitTime": {
            "values": {
              "resumeAmount": 24
            }
          },
          "appendAttribution": false
        },
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double",
            "approveLabel": "Generate plan",
            "disapproveLabel": "Not now"
          }
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b2655643-a2cb-47a8-abb4-68bd6f90862f",
      "name": "Approved?",
      "type": "n8n-nodes-base.if",
      "position": [
        1248,
        208
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "c97e3727-3dd3-41b8-a26b-17fcc59cf8b7",
      "name": "Research Market",
      "type": "n8n-nodes-base.perplexity",
      "position": [
        1408,
        112
      ],
      "parameters": {
        "model": "={{ $('Configuration').item.json.perplexity_model }}",
        "options": {
          "maxTokens": 2200,
          "temperature": 0.2,
          "searchRecency": "year"
        },
        "messages": {
          "message": [
            {
              "role": "system",
              "content": "You are a market research analyst. Give concise, sourced, up-to-date figures. Cite reasoning for estimates."
            },
            {
              "content": "=Research the market for this startup and target country. Return: TAM, SAM, SOM (year 1-2), annual growth rate (CAGR), market maturity, 3-5 key trends, and a target customer persona with willingness to pay.\n\nStartup: {{ $('Extract & Score Idea').item.json.output.startup_name }}\nProblem: {{ $('Extract & Score Idea').item.json.output.problem }}\nSolution: {{ $('Extract & Score Idea').item.json.output.solution }}\nAudience: {{ $('Extract & Score Idea').item.json.output.primary_audience }}\nRevenue model: {{ $('Extract & Score Idea').item.json.output.revenue_model }}\nTarget country: {{ $('Extract & Score Idea').item.json.output.target_country }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c5c2c1a9-7941-43ad-b477-f11994610659",
      "name": "Research Competitors",
      "type": "n8n-nodes-base.perplexity",
      "position": [
        1600,
        112
      ],
      "parameters": {
        "model": "={{ $('Configuration').item.json.perplexity_model }}",
        "options": {
          "maxTokens": 2200,
          "temperature": 0.2,
          "searchRecency": "year"
        },
        "messages": {
          "message": [
            {
              "role": "system",
              "content": "You are a competitive intelligence analyst. Name real, current competitors with sources."
            },
            {
              "content": "=Find direct and indirect competitors for this startup in the target country. For each direct competitor give: name, positioning, and pricing if public. Also list indirect alternatives and how saturated the market is.\n\nStartup: {{ $('Extract & Score Idea').item.json.output.startup_name }}\nProblem: {{ $('Extract & Score Idea').item.json.output.problem }}\nSolution: {{ $('Extract & Score Idea').item.json.output.solution }}\nTarget country: {{ $('Extract & Score Idea').item.json.output.target_country }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d3c90e0c-d6e5-4671-9e0f-4b27af8ab215",
      "name": "Structure & Score",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1840,
        112
      ],
      "parameters": {
        "text": "=You are a market and competitive analyst. Using the LIVE research below, produce structured market data and competitor analysis.\n\nSTARTUP\nName: {{ $('Extract & Score Idea').item.json.output.startup_name }}\nProblem: {{ $('Extract & Score Idea').item.json.output.problem }}\nSolution: {{ $('Extract & Score Idea').item.json.output.solution }}\nRevenue model: {{ $('Extract & Score Idea').item.json.output.revenue_model }}\nTarget country: {{ $('Extract & Score Idea').item.json.output.target_country }}\n\nMARKET RESEARCH (Perplexity)\n{{ $('Research Market').item.json.choices[0].message.content }}\n\nCOMPETITOR RESEARCH (Perplexity)\n{{ $('Research Competitors').item.json.choices[0].message.content }}\n\nProduce: TAM/SAM/SOM, growth rate, maturity, key trends, persona, market_score 1-10; direct_competitors (name, positioning, pricing), indirect_competitors, differentiation, moat_potential, competitor_score 1-10 (higher = less saturated / stronger position). Base numbers on the research; mark estimates. Return only the structured object.",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "4f4350d5-d609-464c-992f-747e36a6d0a8",
      "name": "GPT-4o - Analysis",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1840,
        336
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.model_structurer }}"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "6a0f189e-690d-44f4-ab0d-3bcf2966fd0c",
      "name": "Analysis Schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1984,
        336
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"tam\":{\"type\":\"string\"},\"sam\":{\"type\":\"string\"},\"som\":{\"type\":\"string\"},\"market_growth_rate\":{\"type\":\"string\"},\"market_maturity\":{\"type\":\"string\"},\"key_market_trends\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"customer_persona\":{\"type\":\"string\"},\"market_score\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":10},\"direct_competitors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"positioning\":{\"type\":\"string\"},\"pricing\":{\"type\":\"string\"}}}},\"indirect_competitors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"differentiation\":{\"type\":\"string\"},\"moat_potential\":{\"type\":\"string\"},\"competitor_score\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":10}},\"required\":[\"tam\",\"sam\",\"som\",\"market_growth_rate\",\"market_score\",\"direct_competitors\",\"differentiation\",\"moat_potential\",\"competitor_score\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "270b47be-dfd6-424d-9658-506db651505c",
      "name": "Validate Demand",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2208,
        112
      ],
      "parameters": {
        "text": "=You are a demand-validation expert (lean startup). Assess product-market fit signals.\n\nStartup: {{ $('Extract & Score Idea').item.json.output.startup_name }}\nProblem: {{ $('Extract & Score Idea').item.json.output.problem }}\nMarket: {{ $('Structure & Score').item.json.output.tam }} / growth {{ $('Structure & Score').item.json.output.market_growth_rate }}\nDifferentiation: {{ $('Structure & Score').item.json.output.differentiation }}\nAssumptions: {{ JSON.stringify($('Extract & Score Idea').item.json.output.key_assumptions) }}\n\nReturn: demand_signals (concrete signals to look for), risks (top risks), gtm_recommendation (2-3 sentences), pmf_score 1-10. Return only the structured object.",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "18450570-9b38-4c46-b91f-c39423a0986a",
      "name": "GPT-4o mini - Validation",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2208,
        336
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.model_validator }}"
        },
        "options": {
          "temperature": 0.3
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2ca40dc3-76e2-4e41-93c7-055dc2164c80",
      "name": "Demand Schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2352,
        336
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\"type\":\"object\",\"properties\":{\"demand_signals\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"risks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"gtm_recommendation\":{\"type\":\"string\"},\"pmf_score\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":10}},\"required\":[\"demand_signals\",\"risks\",\"gtm_recommendation\",\"pmf_score\"]}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "dd10928f-5984-48f2-8b3a-a09c2db47a9f",
      "name": "Compute Composite Score",
      "type": "n8n-nodes-base.set",
      "position": [
        2624,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "s1",
              "name": "composite_score",
              "type": "number",
              "value": "={{ Math.round(($('Extract & Score Idea').item.json.output.idea_score + $('Structure & Score').item.json.output.market_score + $('Structure & Score').item.json.output.competitor_score + $('Validate Demand').item.json.output.pmf_score) / 4) }}"
            },
            {
              "id": "s2",
              "name": "recommendation",
              "type": "string",
              "value": "={{ (($('Extract & Score Idea').item.json.output.idea_score + $('Structure & Score').item.json.output.market_score + $('Structure & Score').item.json.output.competitor_score + $('Validate Demand').item.json.output.pmf_score) / 4) >= 7 ? 'PROCEED' : (($('Extract & Score Idea').item.json.output.idea_score + $('Structure & Score').item.json.output.market_score + $('Structure & Score').item.json.output.competitor_score + $('Validate Demand').item.json.output.pmf_score) / 4) >= 5 ? 'VALIDATE_FURTHER' : 'PIVOT_OR_ABANDON' }}"
            },
            {
              "id": "s3",
              "name": "sources",
              "type": "string",
              "value": "={{ ($('Research Market').item.json.citations || []).concat($('Research Competitors').item.json.citations || []).join('; ') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "961f994c-cbb9-4ba9-9e66-6fd18719f781",
      "name": "Generate Business Plan",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2848,
        112
      ],
      "parameters": {
        "text": "=You are a top-tier startup advisor. Write a complete, structured business plan in the language \"{{ $('Extract & Score Idea').item.json.output.language }}\" using ALL data below. 700-1000 words, numbered section headings, specific and actionable.\n\nIDEA: {{ $('Extract & Score Idea').item.json.output.one_liner }} | Problem: {{ $('Extract & Score Idea').item.json.output.problem }} | Solution: {{ $('Extract & Score Idea').item.json.output.solution }} | Revenue: {{ $('Extract & Score Idea').item.json.output.revenue_model }}\nMARKET: TAM {{ $('Structure & Score').item.json.output.tam }}, SAM {{ $('Structure & Score').item.json.output.sam }}, SOM {{ $('Structure & Score').item.json.output.som }}, growth {{ $('Structure & Score').item.json.output.market_growth_rate }}. Trends: {{ JSON.stringify($('Structure & Score').item.json.output.key_market_trends) }}\nCOMPETITION: {{ JSON.stringify($('Structure & Score').item.json.output.direct_competitors) }} | Differentiation: {{ $('Structure & Score').item.json.output.differentiation }} | Moat: {{ $('Structure & Score').item.json.output.moat_potential }}\nDEMAND: PMF {{ $('Validate Demand').item.json.output.pmf_score }}/10 | GTM: {{ $('Validate Demand').item.json.output.gtm_recommendation }} | Risks: {{ JSON.stringify($('Validate Demand').item.json.output.risks) }}\nVERDICT: Composite {{ $('Compute Composite Score').item.json.composite_score }}/10 - {{ $('Compute Composite Score').item.json.recommendation }}\n\nSections: 1. Executive Summary 2. Problem & Solution 3. Market Opportunity 4. Competitive Landscape 5. Business Model & Revenue 6. Go-To-Market Strategy 7. Key Risks & Mitigations 8. 90-Day Validation Roadmap 9. Funding & Resources 10. Final Verdict.\nEnd with a \"Sources\" list: {{ $('Compute Composite Score').item.json.sources }}",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "103c346f-7bc6-47d1-8d40-4887a9e2a174",
      "name": "GPT-4o - Business Plan",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2928,
        336
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.model_structurer }}"
        },
        "options": {
          "temperature": 0.4
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "4cd6efa1-534f-47e9-985c-343e96325b72",
      "name": "Create Google Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3200,
        112
      ],
      "parameters": {
        "title": "={{ 'Business Plan - ' + $('Extract & Score Idea').item.json.output.startup_name + ' (' + $now.toFormat('yyyy-LL-dd') + ')' }}",
        "folderId": "={{ $('Configuration').item.json.docs_folder_id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "64d02618-db53-4dd1-9519-c4e0d1b68381",
      "name": "Insert Plan Into Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3424,
        112
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Generate Business Plan').item.json.text }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $('Create Google Doc').item.json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2b0bad6d-a851-441d-8828-ea440c166f78",
      "name": "Prepare Sheet Row",
      "type": "n8n-nodes-base.set",
      "position": [
        3648,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "r1",
              "name": "submitted_at",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "r2",
              "name": "idea_id",
              "type": "string",
              "value": "={{ 'IDEA-' + $now.toFormat('yyyyLLddHHmmss') }}"
            },
            {
              "id": "r3",
              "name": "founder_name",
              "type": "string",
              "value": "={{ $('Configuration').item.json.founder_name }}"
            },
            {
              "id": "r4",
              "name": "telegram_user",
              "type": "string",
              "value": "={{ $('Configuration').item.json.telegram_user }}"
            },
            {
              "id": "r5",
              "name": "language",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.language }}"
            },
            {
              "id": "r6",
              "name": "raw_idea",
              "type": "string",
              "value": "={{ $('Configuration').item.json.raw_idea }}"
            },
            {
              "id": "r7",
              "name": "startup_name",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.startup_name }}"
            },
            {
              "id": "r8",
              "name": "one_liner",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.one_liner }}"
            },
            {
              "id": "r9",
              "name": "target_country",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.target_country }}"
            },
            {
              "id": "r10",
              "name": "industry",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.industry }}"
            },
            {
              "id": "r11",
              "name": "budget_stage",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.budget_stage }}"
            },
            {
              "id": "r12",
              "name": "revenue_model",
              "type": "string",
              "value": "={{ $('Extract & Score Idea').item.json.output.revenue_model }}"
            },
            {
              "id": "r13",
              "name": "tam",
              "type": "string",
              "value": "={{ $('Structure & Score').item.json.output.tam }}"
            },
            {
              "id": "r14",
              "name": "sam",
              "type": "string",
              "value": "={{ $('Structure & Score').item.json.output.sam }}"
            },
            {
              "id": "r15",
              "name": "som",
              "type": "string",
              "value": "={{ $('Structure & Score').item.json.output.som }}"
            },
            {
              "id": "r16",
              "name": "market_growth_rate",
              "type": "string",
              "value": "={{ $('Structure & Score').item.json.output.market_growth_rate }}"
            },
            {
              "id": "r17",
              "name": "idea_score",
              "type": "number",
              "value": "={{ $('Extract & Score Idea').item.json.output.idea_score }}"
            },
            {
              "id": "r18",
              "name": "market_score",
              "type": "number",
              "value": "={{ $('Structure & Score').item.json.output.market_score }}"
            },
            {
              "id": "r19",
              "name": "competitor_score",
              "type": "number",
              "value": "={{ $('Structure & Score').item.json.output.competitor_score }}"
            },
            {
              "id": "r20",
              "name": "pmf_score",
              "type": "number",
              "value": "={{ $('Validate Demand').item.json.output.pmf_score }}"
            },
            {
              "id": "r21",
              "name": "composite_score",
              "type": "number",
              "value": "={{ $('Compute Composite Score').item.json.composite_score }}"
            },
            {
              "id": "r22",
              "name": "recommendation",
              "type": "string",
              "value": "={{ $('Compute Composite Score').item.json.recommendation }}"
            },
            {
              "id": "r23",
              "name": "direct_competitors",
              "type": "string",
              "value": "={{ ($('Structure & Score').item.json.output.direct_competitors || []).map(c => c.name).join('; ') }}"
            },
            {
              "id": "r24",
              "name": "differentiation",
              "type": "string",
              "value": "={{ $('Structure & Score').item.json.output.differentiation }}"
            },
            {
              "id": "r25",
              "name": "gtm_recommendation",
              "type": "string",
              "value": "={{ $('Validate Demand').item.json.output.gtm_recommendation }}"
            },
            {
              "id": "r26",
              "name": "key_risks",
              "type": "string",
              "value": "={{ ($('Validate Demand').item.json.output.risks || []).join('; ') }}"
            },
            {
              "id": "r27",
              "name": "sources",
              "type": "string",
              "value": "={{ $('Compute Composite Score').item.json.sources }}"
            },
            {
              "id": "r28",
              "name": "business_plan_url",
              "type": "string",
              "value": "={{ 'https://docs.google.com/document/d/' + $('Create Google Doc').item.json.id + '/edit' }}"
            },
            {
              "id": "r29",
              "name": "status",
              "type": "string",
              "value": "Plan-Generated"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3546b5c5-8b4a-48b3-9359-18024c25dc52",
      "name": "Log To Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3872,
        112
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "submitted_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "submitted_at",
              "canBeUsedToMatch": true
            },
            {
              "id": "idea_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "idea_id",
              "canBeUsedToMatch": true
            },
            {
              "id": "founder_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "founder_name",
              "canBeUsedToMatch": true
            },
            {
              "id": "telegram_user",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "telegram_user",
              "canBeUsedToMatch": true
            },
            {
              "id": "language",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "language",
              "canBeUsedToMatch": true
            },
            {
              "id": "raw_idea",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "raw_idea",
              "canBeUsedToMatch": true
            },
            {
              "id": "startup_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "startup_name",
              "canBeUsedToMatch": true
            },
            {
              "id": "one_liner",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "one_liner",
              "canBeUsedToMatch": true
            },
            {
              "id": "target_country",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "target_country",
              "canBeUsedToMatch": true
            },
            {
              "id": "industry",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "industry",
              "canBeUsedToMatch": true
            },
            {
              "id": "budget_stage",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "budget_stage",
              "canBeUsedToMatch": true
            },
            {
              "id": "revenue_model",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "revenue_model",
              "canBeUsedToMatch": true
            },
            {
              "id": "tam",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tam",
              "canBeUsedToMatch": true
            },
            {
              "id": "sam",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sam",
              "canBeUsedToMatch": true
            },
            {
              "id": "som",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "som",
              "canBeUsedToMatch": true
            },
            {
              "id": "market_growth_rate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "market_growth_rate",
              "canBeUsedToMatch": true
            },
            {
              "id": "idea_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "idea_score",
              "canBeUsedToMatch": true
            },
            {
              "id": "market_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "market_score",
              "canBeUsedToMatch": true
            },
            {
              "id": "competitor_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "competitor_score",
              "canBeUsedToMatch": true
            },
            {
              "id": "pmf_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "pmf_score",
              "canBeUsedToMatch": true
            },
            {
              "id": "composite_score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "composite_score",
              "canBeUsedToMatch": true
            },
            {
              "id": "recommendation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "recommendation",
              "canBeUsedToMatch": true
            },
            {
              "id": "direct_competitors",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "direct_competitors",
              "canBeUsedToMatch": true
            },
            {
              "id": "differentiation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "differentiation",
              "canBeUsedToMatch": true
            },
            {
              "id": "gtm_recommendation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "gtm_recommendation",
              "canBeUsedToMatch": true
            },
            {
              "id": "key_risks",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "key_risks",
              "canBeUsedToMatch": true
            },
            {
              "id": "sources",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sources",
              "canBeUsedToMatch": true
            },
            {
              "id": "business_plan_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "business_plan_url",
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "plan"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultName": "business plan"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "44fe655b-7121-41d9-a581-540939a4921d",
      "name": "Send Plan Link",
      "type": "n8n-nodes-base.telegram",
      "position": [
        4096,
        112
      ],
      "parameters": {
        "text": "=Business plan ready - {{ $('Extract & Score Idea').item.json.output.startup_name }}\n\nComposite score: {{ $('Compute Composite Score').item.json.composite_score }}/10 - {{ $('Compute Composite Score').item.json.recommendation }}\nPMF {{ $('Validate Demand').item.json.output.pmf_score }}/10 - Market {{ $('Structure & Score').item.json.output.market_score }}/10 - Competition {{ $('Structure & Score').item.json.output.competitor_score }}/10\n\n<a href=\"https://docs.google.com/document/d/{{ $('Create Google Doc').item.json.id }}/edit\">Open full business plan</a>",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {
          "parse_mode": "HTML",
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4d9d4c7d-091e-482c-b35e-9d95c8e91637",
      "name": "Send Declined Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1440,
        304
      ],
      "parameters": {
        "text": "No problem. Send a new idea whenever you are ready.",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5cd82c20-d610-45b7-9f56-879adb8e6508",
      "name": "Send Low-Score Feedback",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1024,
        400
      ],
      "parameters": {
        "text": "=Idea received - {{ $('Extract & Score Idea').item.json.output.startup_name }}\n\nScore: {{ $('Extract & Score Idea').item.json.output.idea_score }}/10 (below the {{ $('Configuration').item.json.min_idea_score }}/10 threshold for a full plan).\n\n{{ $('Extract & Score Idea').item.json.output.score_reasoning }}\n\nRefine the idea and send it again.",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "aa806e87-f550-4e63-8657-7276302eb5fc",
      "name": "Sticky Note 04c6d48a",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        -256
      ],
      "parameters": {
        "color": 4,
        "width": 840,
        "height": 2108,
        "content": "# Validate startup ideas and generate business plans from Telegram with Perplexity and GPT-4o\n# [Open full documentation on Notion](https://automatisation.notion.site/Startup-Idea-Validator-on-Telegram-Perplexity-GPT-4o-Course-Notes-3993d6550fd98187b93ee7cf30f33374)\n\nSend a startup idea to your Telegram bot. The workflow scores it, asks you to approve a full analysis, runs live market and competitor research with Perplexity, structures everything with GPT-4o, validates demand with GPT-4o mini, writes a 10-section business plan into a Google Doc, logs a row to Google Sheets, and sends you the doc link on Telegram.\n\n## How it works\n1. Telegram Trigger receives the idea as free text.\n2. GPT-4o mini structures and scores the idea (1-10).\n3. Low scores get constructive feedback and stop; viable ideas trigger an approval button.\n4. On approval, Perplexity researches market size and competitors (live web + sources).\n5. GPT-4o structures market + competitor data and scores competitive position.\n6. GPT-4o mini validates demand signals, risks and GTM; a composite score + recommendation are computed.\n7. GPT-4o writes the full plan into a Google Doc; a summary row is logged to Sheets and the doc link is sent on Telegram.\n\n## Setup\n1. Open the Telegram Trigger and all Telegram nodes and select YOUR bot credential.\n2. Select your OpenAI, Perplexity, Google Docs and Google Sheets credentials on their nodes.\n3. In Log To Google Sheets, pick your spreadsheet from the Document dropdown (a sheet/tab named \"plan\" with the provided headers).\n4. Open the Configuration node and adjust defaults (min score, default country, models, Docs folder).\n5. Activate the workflow and send an idea to your bot.\n\n## Requirements\n- Telegram bot (via @BotFather)\n- OpenAI API key (GPT-4o and GPT-4o mini)\n- Perplexity API key (Sonar models)\n- Google account with Docs + Sheets (OAuth2)\n\n## Customization\n- Everything adjustable lives in the Configuration node: score threshold, default country, model names, Perplexity model, Docs folder.\n- Swap gpt-4o / gpt-4o-mini for newer models (e.g. gpt-5-mini) directly in Configuration.\n- Raise Perplexity to sonar-reasoning-pro for deeper research, or lower to sonar to cut cost.\n- Remove the approval step to run fully automatically (not recommended, you keep an eye on quality).\n\n---\nNeed help customizing?\nContact me for consulting and support : [Linkedin](https://www.linkedin.com/in/doctor-firass/)\n\n# MY NEW YOUTUBE CHANNEL\nSubscribe to my new YouTube channel: [YouTube](https://www.youtube.com/@DRFIRASS). Practical tutorials and FREE templates for n8n.\n\n[![The AI Doctor](https://www.dr-firas.com/the-ai-doctor.png)](https://www.youtube.com/@DRFIRASS)"
      },
      "typeVersion": 1
    },
    {
      "id": "98437359-ef47-461c-9bf1-ec1c7c975a32",
      "name": "Sticky Note 33b3de69",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 840,
        "height": 1092,
        "content": "## 1. Idea intake & scoring\nFounder sends an idea on Telegram. Configuration centralizes all settings. GPT-4o mini structures and scores it."
      },
      "typeVersion": 1
    },
    {
      "id": "b1aecb60-75b3-4579-a856-0568873b2eb8",
      "name": "Sticky Note f13095e2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 840,
        "height": 1092,
        "content": "## 2. Filter & human approval\nWeak ideas get feedback and stop. Viable ideas ask you to approve the full analysis before spending on research."
      },
      "typeVersion": 1
    },
    {
      "id": "684adacd-b0e2-49c0-acbb-313a826cc02c",
      "name": "Sticky Note f17413f1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 1092,
        "content": "## 3. Live research (Perplexity)\nSonar models research market size, growth, trends and real competitors, returning sources."
      },
      "typeVersion": 1
    },
    {
      "id": "b874f70e-f74c-4305-a277-a58856c8b0e5",
      "name": "Sticky Note a58be22f",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2512,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 820,
        "height": 1092,
        "content": "## 4. Analysis & scoring (GPT-4o)\nGPT-4o structures market + competitor data; GPT-4o mini validates demand. A composite score and recommendation are computed."
      },
      "typeVersion": 1
    },
    {
      "id": "fe1727e9-942b-4eb6-8c13-e906a5cc7e84",
      "name": "Sticky Note 486c8a91",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3360,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 980,
        "height": 1092,
        "content": "## 5. Business plan & delivery\nGPT-4o writes the plan into a Google Doc, logs a row to Sheets, and sends the doc link on Telegram."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "versionId": "b50ec6af-6584-43db-aaf9-05de5173551e",
  "nodeGroups": [],
  "connections": {
    "Approved?": {
      "main": [
        [
          {
            "node": "Research Market",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Declined Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Idea Schema": {
      "ai_outputParser": [
        [
          {
            "node": "Extract & Score Idea",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Idea Viable?": {
      "main": [
        [
          {
            "node": "Ask To Generate Plan",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Low-Score Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "Extract & Score Idea",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Demand Schema": {
      "ai_outputParser": [
        [
          {
            "node": "Validate Demand",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Analysis Schema": {
      "ai_outputParser": [
        [
          {
            "node": "Structure & Score",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Research Market": {
      "main": [
        [
          {
            "node": "Research Competitors",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Demand": {
      "main": [
        [
          {
            "node": "Compute Composite Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Google Doc": {
      "main": [
        [
          {
            "node": "Insert Plan Into Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o - Analysis": {
      "ai_languageModel": [
        [
          {
            "node": "Structure & Score",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Sheet Row": {
      "main": [
        [
          {
            "node": "Log To Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structure & Score": {
      "main": [
        [
          {
            "node": "Validate Demand",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ask To Generate Plan": {
      "main": [
        [
          {
            "node": "Approved?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract & Score Idea": {
      "main": [
        [
          {
            "node": "Idea Viable?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert Plan Into Doc": {
      "main": [
        [
          {
            "node": "Prepare Sheet Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log To Google Sheets": {
      "main": [
        [
          {
            "node": "Send Plan Link",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Research Competitors": {
      "main": [
        [
          {
            "node": "Structure & Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o mini - Extract": {
      "ai_languageModel": [
        [
          {
            "node": "Extract & Score Idea",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o - Business Plan": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Business Plan",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Business Plan": {
      "main": [
        [
          {
            "node": "Create Google Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compute Composite Score": {
      "main": [
        [
          {
            "node": "Generate Business Plan",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o mini - Validation": {
      "ai_languageModel": [
        [
          {
            "node": "Validate Demand",
            "type": "ai_languageModel",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow receives startup ideas via a Telegram bot, uses OpenAI (GPT-4o and GPT-4o mini) plus Perplexity to score, research, and validate them, then generates a full business plan in Google Docs, logs key results to Google Sheets, and returns the plan link in Telegram.…

Source: https://n8n.io/workflows/16977/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

++HOW IT WORKS:++ This workflow automates the processing of invoices sent via Telegram. It extracts the data using LlamaIndex OCR, logs it in Google Sheets, and optionally pushes the structured data t

Chain Llm, OpenAI Chat, Telegram Trigger +4
AI & RAG

&gt; A Telegram-triggered n8n workflow that scrapes Reddit posts, analyzes them with AI, and saves structured content ideas to Google Sheets.

@Apify/N8N Nodes Apify, Chain Llm, OpenAI Chat +4
AI & RAG

-Personal or family budget tracking.

OpenAI Chat, Output Parser Structured, Chain Llm +4
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

Gazelletype. Uses telegramTrigger, telegram, dataTable, @cryptodevops/n8n-nodes-youtube-transcript. Event-driven trigger; 78 nodes.

Telegram Trigger, Telegram, Data Table +6