{"workflow":{"id":12507,"name":"Build person OSINT profiles using Humantic AI, Hunter, CourtListener and GPT-5","views":253,"recentViews":0,"totalViews":253,"createdAt":"2026-01-06T00:07:03.033Z","description":"## Who is this for\n\nThis workflow is designed for sales professionals, recruiters, and researchers who need to:\n- Build comprehensive profiles of individuals from public sources\n- Understand communication and personality styles before outreach\n- Find verified contact information\n- Research legal and public record history for individuals\n\nIt's ideal for animal advocacy campaigns targeting corporate decision-makers, researchers profiling legislators on animal welfare issues, and activists preparing for meetings with executives at companies being asked to adopt animal welfare policies.\n\n## What it does\n\nThis multi-source OSINT agent creates comprehensive individual profiles:\n1. **Personality analysis**: Uses Humantic AI to analyze LinkedIn profiles for communication preferences, personality traits, and engagement recommendations\n2. **Contact discovery**: Uses Hunter.io to find and verify professional email addresses\n3. **Legal research**: Searches CourtListener for any court cases involving the individual\n4. **Legislation involvement**: Checks LegiScan for any legislative activity or testimony\n5. **Document search**: Searches DocumentCloud for government documents mentioning the person\n6. **Web research**: Uses Serper to find news articles, publications, and public appearances\n7. **Synthesis**: Combines all findings into an actionable intelligence report\n\nThe workflow waits for Humantic AI profile generation (45 seconds) before retrieving the complete personality analysis.\n\n## How to set up\n\n1. Import the workflow into your n8n instance\n2. Configure the required API credentials:\n   - **Humantic AI API** for personality analysis\n   - **Hunter API** for email finding\n   - **CourtListener API** for court case searches\n   - **LegiScan API** for legislation searches\n   - **Serper API** for web searches\n   - **Jina AI API** for content extraction\n   - **OpenRouter API** for AI synthesis\n3. Test with a public figure to verify all integrations\n4. Activate the workflow\n\n### Example usage\n\n```json\n{\n  \"firstName\": \"John\",\n  \"lastName\": \"Davis\",\n  \"companyName\": \"Smithfield Foods\",\n  \"companyDomain\": \"smithfieldfoods.com\",\n  \"linkedinURL\": \"https://linkedin.com/in/johndavis\",\n  \"reportGoal\": \"Prepare for corporate campaign meeting - understand decision-making authority, communication style, and any public statements on animal welfare\"\n}\n```\n\n## Requirements\n\n- Humantic AI API key\n- Hunter API key\n- CourtListener API key\n- LegiScan API key\n- Serper API key\n- Jina AI API key\n- OpenRouter API key\n\n## How to customize\n\n- **Skip personality analysis**: Remove the Humantic AI nodes if you only need factual research\n- **Add social media**: Integrate Twitter/X or other social platform analysis to track public statements on animal issues\n- **Extend contact finding**: Add additional email verification or phone number lookup services\n- **Customize report format**: Adjust the final synthesis prompt for campaign briefings, legislator profiles, or corporate target research\n- **Add campaign database integration**: Connect output directly to your advocacy CRM or campaign tracking system\n- **Batch processing**: Wrap the workflow to process multiple decision-makers from a target company list\n","workflow":{"id":"Pqt2x6Z-x9SEUzmW6JYeV","meta":{"instanceId":"d0d0919ee2a246670c2a80cd2e44e3e0f7b3b2437f3e73af8501f9599a4a888b"},"name":"Analyze publicly available information about individuals using AI","tags":[],"nodes":[{"id":"da302200-be32-443b-93d6-81df8e0220b4","name":"Create a profile","type":"n8n-nodes-base.humanticAi","onError":"continueRegularOutput","position":[-848,880],"parameters":{"userId":"={{ $json.linkedinURL }}"},"credentials":{"humanticAiApi":{"id":"d3pcED3q72XiarqX","name":"Humantic AI account"}},"typeVersion":1},{"id":"1d8a41d5-1992-4e34-903c-2fffb2455b6c","name":"Get a profile","type":"n8n-nodes-base.humanticAi","onError":"continueRegularOutput","position":[-432,880],"parameters":{"userId":"={{ $('Prepare research input fields').item.json.linkedinURL }}","options":{},"operation":"get"},"credentials":{"humanticAiApi":{"id":"d3pcED3q72XiarqX","name":"Humantic AI account"}},"typeVersion":1},{"id":"1136b192-4f41-48f3-9b03-c8ba6f94825e","name":"Hunter","type":"n8n-nodes-base.hunter","onError":"continueRegularOutput","position":[-224,880],"parameters":{"domain":"={{ $('Prepare research input fields').item.json.companyDomain }}","lastname":"={{ $('Prepare research input fields').item.json.lastName }}","firstname":"={{ $('Prepare research input fields').item.json.firstName }}","operation":"emailFinder"},"credentials":{"hunterApi":{"id":"J0GuzAm8hXFVO3lI","name":"Hunter account"}},"typeVersion":1},{"id":"d0a6834f-8e85-47fb-88f4-1e75b8752e96","name":"Set Fields","type":"n8n-nodes-base.set","position":[240,880],"parameters":{"options":{"ignoreConversionErrors":true},"assignments":{"assignments":[{"id":"6f4e9177-102a-4dc2-b5a2-7060d1e84e99","name":"Humantic Findings","type":"object","value":"={{ $('Get a profile').item.json}}"},{"id":"f5e72344-ac18-442f-b887-e827158243ae","name":"Hunter Findings","type":"object","value":"={{ $json }}"}]}},"typeVersion":3.4},{"id":"f81ae813-8450-446b-a03a-76b15b12209a","name":"Court Listener Discovery","type":"n8n-nodes-base.httpRequestTool","position":[672,1088],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","toolDescription":"=**Discovery Phase - Find ALL Court Cases**\n**Base URL:** https://www.courtlistener.com/api/rest/v4/\n**ALWAYS include full base URL in requests**\n\n## Search Endpoint (CORRECTED)\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q={query}&page_size=20\n\n## Critical Parameters\n- **type=o** (opinions - most common)\n- **type=r** (RECAP docket documents)\n- **q={search terms}** (URL encode special characters)\n- **page_size=20** (API maximum)\n- **order_by=-score** (best matches first)\n- **court__jurisdiction=F** (F=federal, S=state, optional)\n\n## WORKING Discovery Search URLs\nCompany name searches:\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q=cargill&page_size=20\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q=\"cargill+meat\"&page_size=20\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q=cargill+violation&page_size=20\n\nIssue/violation searches:\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q=animal+welfare+cargill&page_size=20\nhttps://www.courtlistener.com/api/rest/v4/search/?type=o&q=environmental+violation+cargill&page_size=20\n\nDocket searches (different endpoint):\nhttps://www.courtlistener.com/api/rest/v4/dockets/?case_name__icontains=cargill&page_size=20\nhttps://www.courtlistener.com/api/rest/v4/dockets/?case_name__icontains=cargill&date_filed__gte=2020-01-01\n\n## Response Structure\n```json\n{\n  \"count\": 123,\n  \"next\": \"https://www.courtlistener.com/api/rest/v4/search/?page=2...\",\n  \"results\": [{\n    \"id\": 456789,  // CAPTURE THIS for retrieval phase\n    \"cluster_id\": 123456,  // Alternative ID for cluster retrieval\n    \"case_name\": \"NPPC v. Ross\",\n    \"absolute_url\": \"/opinion/456789/nppc-v-ross/\",  // Note: partial path\n    \"court\": \"Court of Appeals for the Ninth Circuit\",\n    \"date_filed\": \"2022-03-15\",\n    \"snippet\": \"...text preview with <mark>highlighted</mark> terms...\"\n  }]\n}","headerParameters":{"parameters":[{"name":"Accept","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"ZfXzQhBFNaxjYbP6","name":"CourtListener Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"948d53b9-2f91-407e-a914-0df61cfa602e","name":"Google Search Discovery","type":"@n8n/n8n-nodes-langchain.toolHttpRequest","position":[384,1088],"parameters":{"url":"https://google.serper.dev/{endpoint}","sendQuery":true,"sendHeaders":true,"specifyQuery":"model","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","toolDescription":"=**Discovery Phase - Find ALL Legal Analysis & News**\n\nSearches Google for comprehensive coverage of the query. Cast wide net.\n\n## Endpoint Selection\nYou must specify one of these endpoints:\n- search (general web search) - for legal analysis, expert commentary\n- news (news articles) - for recent coverage, breaking developments\n- scholar (academic papers) - for law review articles\n\n## Query Parameters\n{\n  \"q\": \"search query\",           // REQUIRED\n  \"location\": \"United States\",   // optional\n  \"tbs\": \"qdr:y\"                 // optional time filter\n}\n\n## Time Parameters (tbs)\n- \"qdr:d\" (past day)\n- \"qdr:w\" (past week) \n- \"qdr:m\" (past month)\n- \"qdr:y\" (past year)\n\n## Discovery Examples\nsearch endpoint: {\"q\": \"prop 12 legal analysis\", \"tbs\": \"qdr:y\"}\nnews endpoint: {\"q\": \"prop 12 constitutional challenge\", \"tbs\": \"qdr:m\"}\nsearch endpoint: {\"q\": \"proposition 12 california farm\"}\nscholar endpoint: {\"q\": \"prop 12 dormant commerce clause\"}\n\n**In Discovery Phase:**\n- Use multiple search variations\n- Try different endpoints\n- Don't filter results yet\n- Find everything relevant for later prioritization","parametersHeaders":{"values":[{"name":"Content-Type","value":"application/json","valueProvider":"fieldValue"}]},"placeholderDefinitions":{"values":[{"name":"{endpoint}","description":"search - General web search \n\nnews - News articles \n\nscholar - Academic papers \n\npatents - Patent searches \n\nmaps - Location-based searches \n\nreviews - Business/product reviews"}]}},"credentials":{"httpHeaderAuth":{"id":"PmK8h96T6iczF7fT","name":"Serper API"}},"retryOnFail":true,"typeVersion":1.1},{"id":"a2f39ac7-0594-4dc1-8156-e0f625288e9a","name":"LegiScan Discovery","type":"n8n-nodes-base.httpRequestTool","position":[528,1088],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","toolDescription":"=**Discovery Phase - Find ALL Related Legislation**\n\n**CRITICAL: ALWAYS use full base URL**\n**Base URL:** https://api.legiscan.com/\n**Every request MUST start with:** https://api.legiscan.com/?op=\n\n## Search Operation\nhttps://api.legiscan.com/?op=getSearch&state={state}&query={query}&year={year}\n\n## Parameters\n- state: ALL (searches all states) or specific state code (CA, TX, etc.)\n- query: search terms (URL encoded)\n- year: 1 (all years), 2 (current session), or specific year\n\n## CORRECT Discovery URLs\n✅ https://api.legiscan.com/?op=getSearch&state=ALL&query=prop%2012&year=2\n✅ https://api.legiscan.com/?op=getSearch&state=ALL&query=proposition%2012\n✅ https://api.legiscan.com/?op=getSearch&state=CA&query=farm%20animal%20confinement\n\n## WRONG (Missing base URL)\n❌ ?op=getSearch&state=ALL&query=prop%2012\n❌ getSearch&state=ALL&query=prop%2012\n\n## Response Structure\n{\n  \"status\": \"OK\",\n  \"searchresult\": {\n    \"summary\": {\"count\": 15},\n    \"0\": {\n      \"bill_id\": 1234567,\n      \"bill_number\": \"AB 123\",\n      \"title\": \"Farm Animal Confinement Standards\"\n    }\n  }\n}\n\n**In Discovery Phase:**\n- ALWAYS use state=ALL for comprehensive search\n- Try multiple search terms\n- Note bill_id for later retrieval\n- Don't get full text yet"},"credentials":{"httpQueryAuth":{"id":"Lx8WUa2pIjcSpWJx","name":"Legiscan Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"4d87896a-5e74-46bf-9447-8c61cf893ffd","name":"Court Listener Retrieveal","type":"n8n-nodes-base.httpRequestTool","position":[2608,1168],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","toolDescription":"=**Retrieval Phase - Get Full Opinion Text**\nBase URL: https://www.courtlistener.com/api/rest/v4/\nYour job: Retrieve ONLY opinions Agent 2 selected. NO NEW SEARCHES.\n\nCORRECT URL CONSTRUCTION:\nFor opinions:\nhttps://www.courtlistener.com/api/rest/v4/opinions/{opinion_id}/?fields=plain_text,html_with_citations,case_name,absolute_url\n\nFor clusters (opinion clusters):\nhttps://www.courtlistener.com/api/rest/v4/clusters/{cluster_id}/?fields=case_name,docket,date_filed,absolute_url\n\nFor dockets:\nhttps://www.courtlistener.com/api/rest/v4/dockets/{docket_id}/?fields=case_name,absolute_url,date_filed,court\n\nCRITICAL FIXES:\n1. **Add trailing slash before query params**: `/opinions/{id}/` not `/opinions/{id}`\n2. **Include absolute_url field**: This gives the human-readable URL for citations\n3. **Use proper field names**: \n   - `plain_text` for full opinion text\n   - `html_with_citations` for formatted version\n   - `absolute_url` for the web URL to cite\n\nExample WORKING URL:\nhttps://www.courtlistener.com/api/rest/v4/opinions/4296807/?fields=plain_text,html_with_citations,case_name,absolute_url\n\nResponse will contain:\n- plain_text: Full opinion text\n- html_with_citations: HTML formatted text\n- case_name: Case title\n- absolute_url: The actual web URL for citations (e.g., https://www.courtlistener.com/opinion/4296807/case-name/)\n- date_filed: Filing date\n\nIMPORTANT: Always include `absolute_url` in fields to get the citable web URL!","headerParameters":{"parameters":[{"name":"Accept","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"ZfXzQhBFNaxjYbP6","name":"CourtListener Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"16788ffe-2d35-43a4-a703-c0b9f329228c","name":"Think Tool Prioritization","type":"@n8n/n8n-nodes-langchain.toolThink","position":[1872,1152],"parameters":{"description":"=FOR EACH DISCOVERED ITEM, CONDUCT THESE VERIFICATION CHECKS:\n\n1. Company Match?\n   - Does the company mentioned match current or past employers?\n   - If different company, is this the wrong person?\n\n2. Timeline Match?\n   - Does the date align with their work history?\n   - Were they at that company during this time?\n\n3. Location Match?\n   - Does the location match known locations?\n   - If court case, is it in a plausible jurisdiction?\n\n4. Context Match?\n   - Does the role/title match their career?\n   - Does the subject matter match their expertise?\n   - Do co-authors/colleagues match their network?\n\n5. Red Flags?\n   - Different middle initial?\n   - Incompatible timeline?\n   - Wrong industry?\n   - Different state/country?\n\nVERDICT: \n- CONFIRMED SAME PERSON (high confidence)\n- LIKELY SAME PERSON (medium confidence)\n- UNCERTAIN (cannot determine)\n- DIFFERENT PERSON (exclude)\n\nIf CONFIRMED, then evaluate value:\n- Does this reveal character/behavior?\n- Does this show professional capabilities?\n- Does this help achieve report goal?"},"typeVersion":1},{"id":"b5f6b447-05ed-40cf-8ab3-c5cfa4fe0c9e","name":"LegiScan Retrieval","type":"n8n-nodes-base.httpRequestTool","position":[2480,1168],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","toolDescription":"=**Retrieval Phase - Get Full Bill Text**\n\nBase URL: https://api.legiscan.com/\nCRITICAL: ALWAYS use full URL!\n\nYour job: Retrieve ONLY bills Agent 2 selected. NO NEW SEARCHES.\n\nBill Retrieval URL:\n✅ https://api.legiscan.com/?op=getBill&id={bill_id}\n❌ ?op=getBill&id={bill_id} (WRONG - missing base URL!)\n\nExample:\nhttps://api.legiscan.com/?op=getBill&id=1234567\n\nResponse contains:\n{\n  \"bill\": {\n    \"bill_id\": 1234567,\n    \"title\": \"Full title\",\n    \"description\": \"Summary\",\n    \"sponsors\": [...],\n    \"texts\": [{\"doc_id\": 890, \"type\": \"Introduced\", \"url\": \"...\"}],\n    \"history\": [...],\n    \"votes\": [...]\n  }\n}\n\nTo get actual text:\nhttps://api.legiscan.com/?op=getBillText&id={doc_id}\n\nInclude full bill text and metadata for Agent 4."},"credentials":{"httpQueryAuth":{"id":"Lx8WUa2pIjcSpWJx","name":"Legiscan Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"52ac015f-c211-4a4f-944c-b66febb33c74","name":"DocumentCloud Retrieval","type":"n8n-nodes-base.httpRequestTool","position":[2736,1168],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"toolDescription":"=**Retrieval Phase - Get Document Full Text**\n\nBase URL: https://s3.documentcloud.org/\n\nYour job: Retrieve text for ONLY documents Agent 2 selected.\n\nCRITICAL URL PATTERN:\nhttps://s3.documentcloud.org/documents/{id}/{slug}.txt.json\n\nALWAYS INCLUDE THE SLASHES!\n\n✅ CORRECT: https://s3.documentcloud.org/documents/789123/report.txt.json\n❌ WRONG: https://s3.documentcloud.org/documents/789123-report.txt.json\n\nConstruction:\n1. Take ID from Agent 2: \"789123\"\n2. Take slug from Agent 2: \"usda-report\"\n3. Build full URL: https://s3.documentcloud.org/documents/789123/usda-report.txt.json\n\nResponse:\n{\n  \"pages\": [\n    {\"page\": 0, \"contents\": \"Full text of page 1...\"},\n    {\"page\": 1, \"contents\": \"Full text of page 2...\"}\n  ]\n}"},"retryOnFail":true,"typeVersion":4.2},{"id":"a5ac4598-371e-4bfa-a593-ac510f7d84f7","name":"Jina URL Text Extraction","type":"n8n-nodes-base.jinaAiTool","position":[2352,1168],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{},"requestOptions":{},"descriptionType":"manual","toolDescription":"=**Retrieval Phase - Extract Article Content**\n\nYour job: Get full text from ONLY URLs Agent 2 selected.\n\nSimply pass each prioritized URL:\nhttps://example.com/legal-analysis-article\n\nJina will:\n- Extract main content\n- Remove ads, navigation\n- Return clean text\n- Include title, author, date\n\nOutput: Complete article text for Agent 4's analysis.\n\nNo searching - only extract from Agent 2's selected URLs."},"credentials":{"jinaAiApi":{"id":"6Grs8YZjZxafzxAm","name":"Jina AI account"}},"retryOnFail":true,"typeVersion":1},{"id":"e86ebc41-dbed-44c6-abbb-98b85e6400e8","name":"Think Tool Analysis","type":"@n8n/n8n-nodes-langchain.toolThink","position":[3984,1200],"parameters":{"description":"=**Analysis Phase - Synthesize All Retrieved Texts**\n\nYour job: Analyze retrieved content to create strategic insights.\n\nRequired Analysis:\n1. Map findings to user query:\n   \"User asked about Prop 12 challenges\"\n   \n2. Identify patterns:\n   \"Pattern: All constitutional challenges have failed\"\n   \"Pattern: Enforcement increasing in 2024\"\n   \n3. Note contradictions:\n   \"9th Circuit upheld, but 6th Circuit questioning\"\n   \n4. Identify gaps:\n   \"No enforcement data after July 2024\"\n   \n5. Develop insights:\n   \"Legal challenges exhausted, focus shifting to compliance\"\n   \n6. Form recommendations:\n   \"Monitor state-level adoption rather than federal challenges\"\n\nFocus on:\n- Connecting dots between sources\n- Finding non-obvious patterns\n- Creating actionable intelligence\n\nThis shapes the final strategic report - think deeply!"},"typeVersion":1},{"id":"453e481c-69dc-4730-a9b5-a5461509cfd1","name":"Step 5: Verification","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[4464,928],"parameters":{"text":"=# 🔍 PERSON OSINT REPORT VERIFICATION AGENT\n\n## THE CURRENT DATE & TIME IS {{ $now }}\n\n## Mission\nIdentify **only clear factual fabrications that would materially mislead about the person**. The report writer creates adaptive, analytically-rich reports tailored to specific user needs - respect and protect this approach. Focus only on catching completely false claims, not questioning analytical insights or strategic assessments.\n\n## Your Inputs\n1. **Final OSINT Report** - The intelligence report (likely adapted to user's specific query)\n2. **Retrieved Content** - All verified sources including Humantic, LinkedIn, court records, etc.\n\n## CRITICAL PRINCIPLE: Support Intelligent Analysis\n\n### The Report Writer Is Supposed To:\n- **Adapt structure to user's specific need** - Don't expect standard sections\n- **Lead with most relevant insights** - Not chronological biography\n- **Provide actionable intelligence** - Predictions and recommendations are the point\n- **Synthesize psychological patterns** - Humantic + behavior = insights\n- **Make strategic assessments** - This is core value, not hallucination\n- **Connect dots creatively** - Pattern recognition is intelligence work\n\n### Only Flag Truly Fabricated Claims:\n- **Completely wrong person** (identity confusion)\n- **Entirely fictional events** (never happened)\n- **Drastically wrong facts** (order of magnitude errors)\n- **Invented credentials** (degrees, roles that don't exist)\n\n## WHAT IS DEFINITELY NOT HALLUCINATION\n\n### 1. ADAPTIVE REPORT STRUCTURE\n**Always Acceptable:**\n- Starting with \"How to influence them\" instead of \"Professional Background\"\n- Organizing by psychological drivers rather than chronological timeline\n- Custom sections like \"Leverage Points\" or \"Predicted Responses\"\n- Focusing entirely on vulnerabilities if that's what was asked\n- Omitting standard sections that aren't relevant\n\n### 2. PSYCHOLOGICAL INTELLIGENCE\n**Always Acceptable (especially from Humantic):**\n- \"Will respond best to data-driven arguments\"\n- \"Ego requires public recognition\"\n- \"Avoids direct confrontation\"\n- \"Motivated primarily by legacy\"\n- \"Blind spot around financial details\"\n- \"Stress response includes aggressive litigation\"\n\n### 3. BEHAVIORAL PREDICTIONS\n**Always Acceptable:**\n- \"Likely to counter-propose within 48 hours\"\n- \"Will probably seek legal counsel\"\n- \"Expected to leverage media connections\"\n- \"May attempt to reframe the narrative\"\n- \"Will prioritize reputation over money\"\n- \"Tends to dig in when challenged publicly\"\n\n### 4. STRATEGIC RECOMMENDATIONS\n**Always Acceptable:**\n- \"Approach through trusted intermediary\"\n- \"Use time pressure strategically\"\n- \"Frame as opportunity rather than threat\"\n- \"Leverage their need for validation\"\n- \"Build coalition before direct engagement\"\n- \"Document everything given litigation history\"\n\n### 5. PATTERN-BASED INSIGHTS\n**Always Acceptable:**\n- \"Career shows pattern of quick exits\"\n- \"Consistently overestimates technical capabilities\"\n- \"History suggests commitment issues\"\n- \"Track record of burning bridges\"\n- \"Tends to surround themselves with loyalists\"\n- \"Past behavior indicates risk aversion\"\n\n### 6. REASONABLE PROFESSIONAL INFERENCES\n**Always Acceptable:**\n- Skills implied by roles held\n- Network connections from positions\n- Technical knowledge from experience\n- Industry relationships from career\n- Management style from team history\n- Negotiation approach from past deals\n\n## ACTUAL HALLUCINATIONS TO FLAG (VERY RARE)\n\n### 1. COMPLETELY WRONG IDENTITY\n**Only Flag If Entirely Wrong Person:**\n- Different person with same name\n- Wrong gender, age bracket, or nationality\n- Fictional person who doesn't exist\n\n**Don't Flag:**\n- Minor name variations or nicknames\n- Titles that capture the role accurately\n\n### 2. DRASTICALLY WRONG CAREER\n**Only Flag If Major Fabrication:**\n- Company they never worked for at all\n- Role drastically different (CEO vs. intern)\n- Timeline off by decade or more\n\n**Don't Flag:**\n- \"Senior executive\" for VP role\n- \"Led team\" when they managed people\n- \"Early 2020s\" for 2021\n- Minor title variations\n\n### 3. ENTIRELY FALSE EVENTS\n**Only Flag If Completely Fabricated:**\n- Legal case that never existed\n- Degree from school they didn't attend\n- Award they never received\n- Quote they never said anything like\n\n**Don't Flag:**\n- Paraphrased statements\n- Summarized positions\n- Combined timeline events\n- Inferred involvement\n\n## VERIFICATION APPROACH FOR ADAPTIVE REPORTS\n\n### First, Understand the Query Context\n- What did the user ask for?\n- Is the report structured to answer that?\n- Are emphasized points relevant to the goal?\n- Does the analysis serve the purpose?\n\n### Apply Extreme Permissiveness\n- **Default to acceptable** unless clearly fabricated\n- **Respect analytical judgments** as core value\n- **Protect strategic insights** - they're the point\n- **Allow flexible structure** - it's adaptive by design\n- **Preserve predictions** - they're based on patterns\n\n### Only Flag If All These Are True:\n1. It's a concrete factual claim (not analysis)\n2. It's completely unsupported (not even partially true)\n3. It would materially mislead (not just imprecise)\n4. It can't be a reasonable inference\n5. It's not based on Humantic or patterns\n\n## SIMPLIFIED DECISION TREE\n\nFor each potential issue:\n\n1. **Is it strategic analysis, prediction, or recommendation?**\n   - YES → NEVER FLAG (this is the value)\n   - NO → Continue\n\n2. **Is it based on Humantic or behavioral patterns?**\n   - YES → NEVER FLAG (this is psychological intelligence)\n   - NO → Continue\n\n3. **Is it a reasonable inference from their background?**\n   - YES → DON'T FLAG\n   - NO → Continue\n\n4. **Is it completely fabricated (not just imprecise)?**\n   - NO → DON'T FLAG\n   - YES → Continue\n\n5. **Would it materially mislead about who they are?**\n   - NO → DON'T FLAG\n   - YES → FLAG IT (rare)\n\n## OUTPUT FORMAT\n\nOnly flag the clearest, most material fabrications:\n\n```\nHALLUCINATION #[X]:\n**False Claim:** \"[Exact quote]\"\n**Why It's Completely Wrong:** [Not just unsourced, but demonstrably false]\n**Material Impact:** [How this fundamentally misrepresents them]\n**Severity:** [Only Critical or Significant - no Minor flags]\n```\n\n### Summary:\n```\nVERIFICATION COMPLETE\nMaterial Fabrications: [X] (should be 0-2 typically)\nReport Assessment: [Excellent analytical work / Useful with minor issues / Generally strong]\n\nNote: Strategic insights and behavioral predictions are intelligence value, not errors.\n```\n\n## EXAMPLES - BE EXTREMELY PERMISSIVE\n\n### NEVER Flag These (All Good Intelligence):\n- \"Will likely sue if cornered\" (pattern-based prediction)\n- \"Ego-driven decision maker\" (Humantic-based)\n- \"Avoids confrontation\" (personality assessment)\n- \"Connected to tech elite\" (reasonable from position)\n- \"Probably knows about the merger\" (inference from role)\n- \"Vulnerable to reputation attacks\" (strategic assessment)\n- \"Best approached through data\" (Humantic insight)\n- \"History suggests they'll negotiate\" (pattern recognition)\n- \"Around 50 years old\" (approximate age)\n- \"Worked in finance for a decade\" (even if 8 years)\n- \"Published extensively\" (even if just 3 papers)\n- \"Influential in the industry\" (positional assessment)\n- \"Likely to respond aggressively\" (behavioral prediction)\n- \"Should be approached carefully\" (strategic recommendation)\n\n### ONLY Flag These Extreme Errors:\n- \"PhD from Harvard\" (when no PhD at all)\n- \"CEO of Microsoft\" (when never worked there)\n- \"Convicted of fraud\" (when no criminal record)\n- \"Worth $1 billion\" (when worth $1 million)\n- \"Founded Tesla\" (when they didn't)\n- \"Member of Congress\" (when they're not)\n\n## SPECIAL PROTECTION AREAS\n\n### Humantic-Based Content (NEVER FLAG):\n- All personality assessments\n- Communication style insights\n- Behavioral predictions\n- Stress responses\n- Value systems\n- Decision-making patterns\n\n### Strategic Content (NEVER FLAG):\n- Approach recommendations\n- Influence strategies\n- Vulnerability assessments\n- Leverage points\n- Negotiation tactics\n- Risk evaluations\n\n### Pattern Recognition (NEVER FLAG):\n- Career trajectory analysis\n- Behavioral consistency assessments\n- Relationship patterns\n- Decision-making history\n- Communication evolution\n- Position changes over time\n\n## FINAL REMINDERS\n\n1. **The report's job is providing actionable intelligence** - Don't punish this\n2. **Psychological insights are core value** - Protect them completely\n3. **Adaptive structure is intentional** - Don't expect templates\n4. **Predictions and recommendations are the point** - Never flag these\n5. **Minor imprecision is fine** - Only catch major fabrications\n6. **Default to acceptable** - When in doubt, don't flag\n7. **Humantic is pre-verified** - All personality insights are valid\n\n## FINAL INSTRUCTION\n\nBe extremely permissive. Only flag things that are completely fabricated and would fundamentally misrepresent who this person is. Remember: a report full of psychological insights, behavioral predictions, and strategic recommendations is doing exactly what it should do. That's intelligence work, not hallucination.\n\n# RETRIEVED DOCUMENTS\n{{ \n  (() => {\n    const docs = $json['Retrieved Documents'] || '';\n    // 2.4M chars (~600K tokens) - Humantic data, LinkedIn profiles, court records, social media\n    const maxChars = 2400000;\n    const processedDocs = typeof docs === 'string' ? docs : JSON.stringify(docs, null, 1);\n    \n    if (processedDocs.length > maxChars) {\n      // Try to truncate at a natural boundary for person data\n      let truncPoint = maxChars;\n      const boundaries = [\n        processedDocs.lastIndexOf('\\n\\n', maxChars),          // Section break\n        processedDocs.lastIndexOf('}\\n{', maxChars),          // Between JSON objects\n        processedDocs.lastIndexOf('\\n##', maxChars),          // Markdown section\n        processedDocs.lastIndexOf('Profile:', maxChars),      // Profile boundary\n        processedDocs.lastIndexOf('Experience:', maxChars),   // Experience section\n        processedDocs.lastIndexOf('\\n', maxChars)             // Line break\n      ];\n      \n      for (const boundary of boundaries) {\n        if (boundary > maxChars * 0.95) {\n          truncPoint = boundary + 1;\n          break;\n        }\n      }\n      \n      return processedDocs.substring(0, truncPoint) + \n        '\\n\\n... [TRUNCATED - Verify only visible portion]';\n    }\n    return processedDocs;\n  })()\n}}\n\n# FINAL OSINT REPORT TO VERIFY\n{{ \n  (() => {\n    const report = $json['Final Report'] || '';\n    // 800K chars (~200K tokens) - full intelligence report with analysis\n    const maxChars = 800000;\n    const processedReport = typeof report === 'string' ? report : JSON.stringify(report, null, 1);\n    \n    if (processedReport.length > maxChars) {\n      // Try to truncate at a natural boundary for intelligence reports\n      let truncPoint = maxChars;\n      const boundaries = [\n        processedReport.lastIndexOf('\\n## ', maxChars),       // Major section\n        processedReport.lastIndexOf('\\n### ', maxChars),      // Subsection\n        processedReport.lastIndexOf('\\n**', maxChars),        // Bold headers\n        processedReport.lastIndexOf('\\n\\n', maxChars),        // Paragraph break\n        processedReport.lastIndexOf('. ', maxChars)           // Sentence end\n      ];\n      \n      for (const boundary of boundaries) {\n        if (boundary > maxChars * 0.9) {\n          truncPoint = boundary + 1;\n          break;\n        }\n      }\n      \n      return processedReport.substring(0, truncPoint) + \n        '\\n\\n... [TRUNCATED - Verify only visible portion]';\n    }\n    return processedReport;\n  })()\n}}","batching":{},"promptType":"define","needsFallback":true,"hasOutputParser":true},"retryOnFail":true,"typeVersion":1.7},{"id":"99bdf7c9-2ab3-4c2d-99bd-bf52a2f82fa0","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[4560,1184],"parameters":{"autoFix":true,"schemaType":"manual","inputSchema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Verification Report\",\n  \"type\": \"object\",\n  \"required\": [\"contains_hallucinations\", \"hallucinations\", \"summary\"],\n  \"properties\": {\n    \"contains_hallucinations\": {\n      \"type\": \"boolean\",\n      \"description\": \"True if ANY critical factual claim is not supported by retrieved documents\"\n    },\n    \"hallucinations\": {\n      \"type\": \"array\",\n      \"description\": \"List of specific unsupported claims\",\n      \"items\": {\n        \"type\": \"object\",\n        \"required\": [\"exact_text\", \"issue_type\", \"severity\"],\n        \"properties\": {\n          \"exact_text\": {\n            \"type\": \"string\",\n            \"description\": \"The EXACT text from the report that is unsupported\"\n          },\n          \"issue_type\": {\n            \"type\": \"string\",\n            \"enum\": [\"unsupported_number\", \"unsupported_date\", \"false_quote\", \"missing_entity\", \"unsupported_event\", \"unsupported_claim\"],\n            \"description\": \"Category of hallucination\"\n          },\n          \"severity\": {\n            \"type\": \"string\",\n            \"enum\": [\"critical\", \"moderate\", \"minor\"],\n            \"description\": \"How problematic this hallucination is\"\n          },\n          \"searched_in\": {\n            \"type\": \"string\",\n            \"description\": \"Which documents were checked for this claim\"\n          }\n        }\n      }\n    },\n    \"summary\": {\n      \"type\": \"string\",\n      \"description\": \"Brief summary - either 'All factual claims verified' or '3 critical hallucinations found: [list]'\"\n    }\n  }\n}"},"typeVersion":1.3},{"id":"efb8d1a5-4fa5-4107-8d11-27d9fe8548b0","name":"If hallucinations present","type":"n8n-nodes-base.if","position":[4960,928],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"3ac4aa73-45ff-4140-90d6-58cb115f069c","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.output.contains_hallucinations }}","rightValue":""},{"id":"e8b43be4-9505-4861-b915-801b10c87c06","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $runIndex }}","rightValue":4}]}},"typeVersion":2.2},{"id":"06b104b0-de94-4a7e-98b9-7f011d20df54","name":"Set Report","type":"n8n-nodes-base.set","position":[4288,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"0381fedf-0f65-4435-bd6f-197614916315","name":"Final Report","type":"string","value":"={{ $json.output }}"},{"id":"e68ea8cd-497f-4734-8581-912436d883fe","name":"Retrieved Documents","type":"string","value":"=# HUMANTIC FINDINGS\n{{\n  (() => {\n    const humantic = $('Set Fields').item.json['Humantic Findings'];\n    if (!humantic) return 'No Humantic data available';\n    \n    // Return the complete Humantic data - this is critical for psychological profiling\n    const str = JSON.stringify(humantic, null, 2);\n    \n    // Only truncate if absolutely massive (over 200K chars)\n    const maxLength = 200000; // ~50k tokens - should capture everything\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [HUMANTIC DATA TRUNCATED - CRITICAL DATA MAY BE MISSING]'\n      : str;\n  })()\n}}\n\n# HUNTER FINDINGS\n{{\n  (() => {\n    const hunter = $('Set Fields').item.json['Hunter Findings'];\n    if (!hunter) return 'No Hunter data available';\n    \n    const str = JSON.stringify(hunter, null, 2);\n    const maxLength = 30000; // ~7.5k tokens - sufficient for contact data\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [TRUNCATED]'\n      : str;\n  })()\n}}\n\n# RETRIEVED TEXTS FROM PREVIOUS AGENT\n{{\n  (() => {\n    const steps = $('Step 3: Retrieval').item.json.intermediateSteps;\n    if (!steps) return 'No retrieved texts available';\n    \n    // Process the steps to extract meaningful content\n    const processedSteps = Array.isArray(steps) \n      ? steps.map((step, index) => {\n          const observation = step.observation || step.response || 'No response';\n          return {\n            step: index + 1,\n            tool: step.action?.tool || step.tool || 'Unknown Tool',\n            input: step.action?.toolInput || step.input || {},\n            response: typeof observation === 'string' \n              ? observation \n              : JSON.stringify(observation, null, 1)\n          };\n        }).filter(step => step.response && step.response !== 'No response')\n      : steps;\n    \n    const str = JSON.stringify(processedSteps, null, 1);\n    \n    // Reduced to ensure Humantic fits completely\n    const maxLength = 320000; // ~80k tokens (reduced from 400K)\n    return str.length > maxLength \n      ? str.slice(0, maxLength) + '... [RETRIEVED TEXTS TRUNCATED]' \n      : str;\n  })()\n}}"}]}},"typeVersion":3.4},{"id":"61cb022b-2a99-4db9-949e-432327b528e2","name":"Set Output","type":"n8n-nodes-base.set","position":[5680,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"b943ce2b-92a7-4fb5-b49a-df2894d5e445","name":"Final Report","type":"string","value":"={{ $('Set Report').item.json['Final Report'] }}"}]}},"typeVersion":3.4},{"id":"8bebd602-900b-4bd7-b5a2-223229d8e44d","name":"Retry if Tools Not Used","type":"n8n-nodes-base.if","position":[896,880],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9bc6faa2-c596-4d24-8e2f-6f7888987d29","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json.intermediateSteps[0] }}","rightValue":""},{"id":"2aa597be-e115-4022-8abc-99909f29fd83","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $runIndex }}","rightValue":4}]}},"typeVersion":2.2},{"id":"7621e371-ca0a-4318-b89b-b701ef1abb31","name":"Retry if Tools Not Used1","type":"n8n-nodes-base.if","position":[2784,912],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9bc6faa2-c596-4d24-8e2f-6f7888987d29","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json.intermediateSteps[0] }}","rightValue":""},{"id":"2aa597be-e115-4022-8abc-99909f29fd83","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $runIndex }}","rightValue":4}]}},"typeVersion":2.2},{"id":"af474b1c-8002-4ddb-8db8-6acf0c586cd7","name":"Retry if Response Empty","type":"n8n-nodes-base.if","position":[1904,896],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9bc6faa2-c596-4d24-8e2f-6f7888987d29","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.output }}","rightValue":""},{"id":"2aa597be-e115-4022-8abc-99909f29fd83","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $runIndex }}","rightValue":4}]}},"typeVersion":2.2},{"id":"a0dc50b9-0d04-4af1-ba5f-d0449532865b","name":"Retry if Response Empty1","type":"n8n-nodes-base.if","position":[4016,928],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9bc6faa2-c596-4d24-8e2f-6f7888987d29","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.output }}","rightValue":""},{"id":"2aa597be-e115-4022-8abc-99909f29fd83","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $runIndex }}","rightValue":4}]}},"typeVersion":2.2},{"id":"cba0074c-d9ed-4195-ba10-2ae7b090220e","name":"Step 1: Discovery","type":"@n8n/n8n-nodes-langchain.agent","position":[496,880],"parameters":{"text":"=Current Date & Time: {{ $now }}\n\n## TARGET INFORMATION\nfirstName: {{ $('Prepare research input fields').item.json.firstName }}\nlastName: {{ $('Prepare research input fields').item.json.lastName }}\ncompanyName: {{ $('Prepare research input fields').item.json.companyName }}\ncompanyDomain: {{ $('Prepare research input fields').item.json.companyDomain }}\nlinkedinURL: {{ $('Prepare research input fields').item.json.linkedinURL }}\nreportGoal: {{ $('Prepare research input fields').item.json.reportGoal }}\n\n## HUMANTIC FINDINGS (Complete Profile)\n{{\n  (() => {\n    const humantic = $json['Humantic Findings'];\n    const str = JSON.stringify(humantic, null, 2);\n    const maxLength = 100000;\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [TRUNCATED]'\n      : str;\n  })()\n}}\n\n## HUNTER FINDINGS (Complete Email Data)\n{{\n  (() => {\n    const hunter = $json['Hunter Findings'];\n    const str = JSON.stringify(hunter, null, 2);\n    const maxLength = 50000;\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [TRUNCATED]'\n      : str;\n  })()\n}}\n\nExecute comprehensive OSINT discovery for the above person. You MUST complete ALL 7 phases and run EVERY search listed in the methodology, even if early searches yield good results.","options":{"maxIterations":10,"systemMessage":"=# 🔍 OSINT DISCOVERY AGENT\nYou are an OSINT Discovery Agent investigating a person. You already have their Humantic profile and information from Hunter. Your job is to find ALL digital traces - professional records, legal documents, social posts, technical contributions, regulatory filings, etc.\n\nThink like a private investigator or background check service - find everything, even small traces.\n\n## YOUR TASK\nConduct comprehensive OSINT discovery using investigative search techniques for a potentially non-public figure.\n\n### CRITICAL REQUIREMENT: Execute ALL Tools\nYou MUST run EVERY search and database query listed below. This is not optional.\n- ✓ Run ALL DocumentCloud searches\n- ✓ Run ALL Court Listener searches  \n- ✓ Run ALL LegiScan searches\n- ✓ Run ALL Open Paws searches\n- ✓ Run ALL Serper searches in each phase\n- ✓ Complete ALL 7 phases\n\nEven if early searches find good results, you must still execute every remaining search. Cast the widest possible net - you cannot predict which database will contain critical intelligence.\n\nDo NOT skip any searches. Do NOT stop early. Execute everything.\n\n### PHASE 1: Database Deep Dives (Check these FIRST)\n\n#### DocumentCloud (Often has internal docs, investigations, FOIA)\nSearch multiple ways:\n- Full name search: ?q=\"[firstName] [lastName]\"&per_page=25\n- Company + last name: ?q=[companyName] \"[lastName]\"&per_page=25\n- Email search: ?q=[email without domain]&per_page=25\n- Company employees: ?q=\"[companyName]\" employee OR staff&per_page=25\n\nLook for: Internal memos, investigation files, FOIA docs, leaked documents\n\n#### Court Listener (Legal history is goldmine)\nSearch comprehensively:\n- Opinions: ?type=o&q=\"[firstName] [lastName]\"&page_size=20\n- RECAP Archive: ?type=r&q=\"[lastName]\" \"[companyName]\"&page_size=20\n- Dockets: ?type=d&q=\"[firstName] [lastName]\"&page_size=20\n\nLook for: Lawsuits (plaintiff/defendant), bankruptcy, divorce, witness testimony\n\n#### LegiScan (Political/regulatory activity)\n- Full name: &state=ALL&query=\"[firstName] [lastName]\"&year=1\n- Testimony: &state=ALL&query=\"[lastName]\" testimony&year=2\n- Company connection: &state=ALL&query=\"[companyName]\" \"[lastName]\"&year=1\n\nLook for: Testimony, lobbying disclosures, political appointments\n\n#### Open Paws Database (Animal advocacy connections)\nVector search queries:\n- \"[firstName] [lastName]\"\n- \"[companyName]\"\n- \"[firstName] [lastName]\" [companyName]\n\nLook for: Animal welfare campaigns, advocacy positions, protests, investigations, undercover work, corporate campaigns, speaking engagements at animal conferences, connections to animal organizations\n\n### PHASE 2: Professional & Technical Traces\n\n#### Serper Searches - Professional Footprint\n- \"[firstName] [lastName]\" \"[companyName]\" site:documentcloud.org\n- \"[firstName] [lastName]\" \"[companyName]\" filetype:pdf\n- \"[firstName] [lastName]\" CV OR resume OR bio\n- \"[firstName] [lastName]\" patent OR publication\n- \"[firstName] [lastName]\" \"[companyName]\" conference OR speaker OR attendee\n- \"[firstName] [lastName]\" professional license OR certification\n- \"[firstName] [lastName]\" site:github.com OR site:gitlab.com\n- \"[firstName] [lastName]\" \"[companyName]\" email @[companyDomain]\n\n#### Serper Searches - Company Documents\n- \"[companyName]\" \"[firstName] [lastName]\" announcement\n- \"[companyName]\" team \"[lastName]\" site:[companyDomain]\n- \"[companyName]\" annual report \"[firstName] [lastName]\" filetype:pdf\n- \"[companyName]\" SEC filing \"[lastName]\"\n- \"[companyName]\" \"[firstName] [lastName]\" promoted OR appointed OR hired\n\n### PHASE 3: Legal & Regulatory Traces\n\n#### Serper Searches - Legal/Government\n- \"[firstName] [lastName]\" plaintiff OR defendant\n- \"[firstName] [lastName]\" case law OR docket\n- \"[firstName] [lastName]\" testimony OR deposition\n- \"[firstName] [lastName]\" SEC OR FDA OR FTC OR regulatory\n- \"[firstName] [lastName]\" complaint OR violation OR investigation\n- \"[firstName] [lastName]\" bankruptcy OR lien OR judgment\n\n### PHASE 4: Social & Community Presence\n\n#### Serper Searches - Social/Forums\n- \"[firstName] [lastName]\" site:reddit.com\n- \"[firstName] [lastName]\" site:twitter.com OR site:x.com\n- \"[firstName] [lastName]\" site:facebook.com\n- \"[firstName] [lastName]\" site:medium.com\n- site:twitter.com/[twitter handle if found]\n- \"[email username]\" site:github.com\n- \"[firstName] [lastName]\" forum OR discussion OR comment\n\n### PHASE 5: Location & Personal (if relevant to goal)\n\n#### Serper Searches - Geographic/Personal\n- \"[firstName] [lastName]\" [city from profiles]\n- \"[firstName] [lastName]\" property OR real estate\n- \"[firstName] [lastName]\" donation OR donor OR contributor\n- \"[firstName] [lastName]\" board member OR volunteer OR committee\n- \"[firstName] [lastName]\" university OR alumni\n\n### PHASE 6: Alternative Name Searches\nTry variations:\n- First initial + last name\n- Nickname variations (if found)\n- Middle initial (if found)\n- Maiden name (if applicable)\n- Common misspellings\n\n### PHASE 7: Reverse Lookups\nUse email/username from Hunter:\n- \"[email without @domain]\" \n- \"[email address]\" -site:[company domain]\n\n## Investigation Notes\n- Regular employees often have MORE court records than public figures\n- DocumentCloud often has internal company docs from investigations\n- GitHub/technical contributions reveal expertise\n- Conference attendance shows professional network\n- Legal records reveal character and history","returnIntermediateSteps":true},"promptType":"define","needsFallback":true},"retryOnFail":true,"typeVersion":2.2},{"id":"a00b17e7-3070-4f37-8c6c-9fa645f68032","name":"Auto Fallback","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[240,1088],"parameters":{"model":"openrouter/auto","options":{"temperature":0.8}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"720c092d-e219-4884-ba69-ae57cf5ed183","name":"Gemini 2.5 Flash","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[96,1088],"parameters":{"model":"google/gemini-2.5-flash","options":{"temperature":0.8}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"219ac835-fcc9-4a11-b839-7cde454828d2","name":"Auto Fallback1","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[1728,1152],"parameters":{"model":"openrouter/auto","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"ddd252c3-8dad-4fca-88a9-f7636904b9de","name":"Step 2: Prioritization","type":"@n8n/n8n-nodes-langchain.agent","position":[1600,896],"parameters":{"text":"=Current Date & Time: {{ $now }}\n\n# OUTPUT FROM PREVIOUS AGENT (Discovery Results)\n{{\n  (() => {\n    const steps = $json.intermediateSteps;\n    if (!steps || !Array.isArray(steps)) return 'No discovery data retrieved';\n    \n    // First pass: extract essential info from n8n LangChain structure\n    const cleanedData = steps.map((step, index) => {\n      const observation = step.observation || 'No response';\n      return {\n        step: index + 1,\n        tool: step.action?.tool || 'Unknown Tool',\n        input: step.action?.toolInput || {},\n        response: observation\n      };\n    }).filter(step => step.response && step.response !== 'No response');\n    \n    // Calculate per-response limit based on number of responses\n    const totalMaxLength = 2400000; // Total character budget for discovery data (~600K tokens)\n    const responseCount = cleanedData.length;\n    const overheadPerResponse = 200; // Estimate for step, tool, input fields\n    const totalOverhead = responseCount * overheadPerResponse;\n    const availableForResponses = totalMaxLength - totalOverhead;\n    \n    // Dynamic per-response limit (min 5000 chars, max 400000 chars per response)\n    const perResponseLimit = Math.min(\n      400000, \n      Math.max(5000, Math.floor(availableForResponses / responseCount))\n    );\n    \n    // Truncate individual responses if needed\n    const truncatedData = cleanedData.map(step => {\n      let response = step.response;\n      \n      // Convert to string if needed\n      if (typeof response !== 'string') {\n        response = JSON.stringify(response, null, 1);\n      }\n      \n      // Truncate if too long\n      if (response.length > perResponseLimit) {\n        // Try to truncate at a natural break point (newline or end of JSON object)\n        let truncPoint = perResponseLimit;\n        const nearNewline = response.lastIndexOf('\\n', perResponseLimit);\n        const nearBrace = response.lastIndexOf('}', perResponseLimit);\n        \n        if (nearNewline > perResponseLimit * 0.9) {\n          truncPoint = nearNewline;\n        } else if (nearBrace > perResponseLimit * 0.9) {\n          truncPoint = nearBrace + 1;\n        }\n        \n        response = response.substring(0, truncPoint) + \n          `\\n... [TRUNCATED from ${response.length} to ${truncPoint} chars]`;\n      }\n      \n      return {\n        ...step,\n        response: response.trim()\n      };\n    });\n    \n    // Final safety check on total size\n    let finalStr = JSON.stringify(truncatedData, null, 1);\n    if (finalStr.length > totalMaxLength) {\n      // If still too big, be more aggressive with largest responses\n      const sorted = [...truncatedData].sort((a, b) => \n        b.response.length - a.response.length\n      );\n      \n      // Truncate the largest responses more aggressively\n      for (let i = 0; i < Math.min(5, sorted.length); i++) {\n        const newLimit = Math.floor(perResponseLimit * 0.5);\n        if (sorted[i].response.length > newLimit) {\n          sorted[i].response = sorted[i].response.substring(0, newLimit) + \n            `\\n... [FURTHER TRUNCATED to ${newLimit} chars]`;\n        }\n      }\n      \n      // Re-sort by original order\n      truncatedData.sort((a, b) => a.step - b.step);\n      finalStr = JSON.stringify(truncatedData, null, 1);\n    }\n    \n    return finalStr;\n  })()\n}}\n\n# CONFIRMED IDENTITY INFORMATION\nName: {{ $('Prepare research input fields').item.json.firstName }} {{ $('Prepare research input fields').item.json.lastName }}\nCompany: {{ $('Prepare research input fields').item.json.companyName }}\nDomain: {{ $('Prepare research input fields').item.json.companyDomain }}\nLinkedIn: {{ $('Prepare research input fields').item.json.linkedinURL }}\n\n# HUMANTIC PROFILE (Contains work history, education, location)\n{{\n  (() => {\n    const humantic = $('Prepare research input fields').item.json['Humantic Findings'];\n    const relevantData = {\n      location: humantic?.location,\n      work_history: humantic?.work_history,\n      education: humantic?.education,\n      skills: humantic?.skills\n    };\n    return JSON.stringify(relevantData, null, 2);\n  })()\n}}\n\n# REPORT GOAL\n{{ $('Prepare research input fields').item.json.reportGoal }}\n\nVerify and prioritize all discovered items for the above person. Be EXTREMELY conservative - only select items that are 100% CONFIRMED to be about this exact person based on matching company, timeline, location, and role.","options":{"maxIterations":10,"systemMessage":"=# 🎯 OSINT PRIORITIZATION & IDENTITY VERIFICATION AGENT\nYou are an OSINT Identity Verification Agent. Your MOST CRITICAL job is ensuring every single item selected is 100% CONFIRMED to be about the correct person.\n\nFALSE POSITIVES ARE UNACCEPTABLE. When in doubt, EXCLUDE the item.\n\nIt is better to miss valuable content than to include information about the wrong person. Many people share the same name - you must have PROOF it's the right person before selecting anything.\n\n## ⚠️ CRITICAL IDENTITY VERIFICATION REQUIREMENT ⚠️\n\nYou may ONLY select items that are **100% CONFIRMED** to be about the target person.\n\n**CONFIRMED means ALL of these must be true:**\n- Company name EXACTLY matches (current or verified past employer)\n- Timeline PERFECTLY aligns with work history\n- Location is CONSISTENT with known data\n- Context/role MATCHES their career path\n\n**If ANY of these are true, EXCLUDE the item:**\n- Different company with no connection\n- Timeline doesn't match work history\n- Different state/location without explanation\n- Different middle initial\n- Role/title incompatible with career\n- Subject matter outside their expertise\n\n**EXCLUSION RULES:**\n- UNCERTAIN = EXCLUDE\n- PROBABLY THEM = EXCLUDE  \n- LIKELY THEM = EXCLUDE\n- 90% SURE = EXCLUDE\n- ONLY 100% CONFIRMED = INCLUDE\n\n## Required Tool\n**Think Tool** - MUST USE to verify identity for EVERY item\n\n### Verification Analysis Required for Each Item:\n```\nItem: [Title/Description]\n\nVERIFICATION CHECKLIST:\n□ Company matches EXACTLY? [Current or verified past employer]\n□ Date/timeline matches EXACTLY? [Were they at that company then?]\n□ Location matches? [Right city/state based on Humantic]\n□ Role/title matches? [Consistent with their career]\n□ No conflicting details? [No wrong middle initial, etc.]\n\nVERDICT: \n- CONFIRMED (100% certain) → Can select\n- ANYTHING ELSE → Must exclude\n```\n\n## Output: Prioritization Report\n\nYour output must follow this structure:\n\n```\nSELECTED FOR RETRIEVAL (ONLY 100% CONFIRMED ITEMS):\n\nDocumentCloud Documents:\n1. ID: [id], Slug: [slug]\n   Title: [title]\n   IDENTITY CONFIRMED: Company=[exact match], Timeline=[dates match work history], Location=[matches]\n   Why valuable: [specific reason]\n[Or \"None confirmed as same person\"]\n\nLegiScan Bills:\n1. ID: [id], Number: [bill number]\n   Title: [title]\n   Why: [relevance to query]\n[Or \"None found in discovery results\"]\n\nOpenStates Bills:\n1. ID: [full id, e.g. ocd-bill/123e4567-…]\n   UUID: [uuid only, e.g. 123e4567-…]\n   Identifier: [bill number]\n   Title: [title]\n   Why: [relevance to query]\n[Or \"None found in discovery results\"]\n\nCourt Cases:\n1. ID: [id], Name: [case name]\n   IDENTITY CONFIRMED: Company=[exact match], Location=[correct jurisdiction], Date=[matches timeline]\n   Why valuable: [reveals dispute/character]\n[Or \"None confirmed as same person\"]\n\nURLs:\n1. [full URL]\n   Title: [title]\n   IDENTITY CONFIRMED: [Exactly how you verified - company, date, role all match]\n   Why valuable: [insight value]\n[Or \"None confirmed as same person\"]\n```","returnIntermediateSteps":true},"promptType":"define","needsFallback":true},"retryOnFail":true,"typeVersion":2.2},{"id":"d7781a18-2c42-4232-b6e5-f2e2131db3a2","name":"Auto Fallback2","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[2208,1168],"parameters":{"model":"openrouter/auto","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"4bb07c8b-cf94-4e1b-84e9-31dd7667e120","name":"Gemini 2.5 Flash2","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[2064,1168],"parameters":{"model":"google/gemini-2.5-flash","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"8e40f87f-c4a9-4c18-9a65-be5b1fc4d111","name":"Step 3: Retrieval","type":"@n8n/n8n-nodes-langchain.agent","position":[2464,912],"parameters":{"text":"=Current Date & Time: {{ $now }}\n\n# OUTPUT FROM PRIORITIZATION AGENT\n{{\n  (() => {\n    const s = JSON.stringify($json.output);\n    return s.length > 500000 ? s.slice(0, 500000) + '\\n... [TRUNCATED]' : s;\n  })()\n}}\n\nExecute systematic retrieval for all items marked \"SELECTED FOR RETRIEVAL\" in the prioritization output above. Use the appropriate retrieval methods for each type of resource.","options":{"maxIterations":10,"systemMessage":"=# 📥 OSINT RETRIEVAL AGENT\nYou are a Retrieval Agent in an OSINT pipeline. Your ONLY job is to extract full content from items selected by the prioritization agent. You do NOT filter or analyze - you retrieve everything specified.\n\nExecute all retrievals systematically. Continue despite failures. Document what succeeds and what fails.\n\n## YOUR TASK\nRetrieve full content from ONLY the items marked \"SELECTED FOR RETRIEVAL\" by the prioritization agent.\n\n## Retrieval Methods\n\n### Social Media Profiles\n**LinkedIn Scraper:**\nFor any LinkedIn profiles in the selected items\nExtract: Full profile, experience, education, skills, about section\n\n**Twitter/X Scraper:**\nFor any Twitter profiles in the selected items\nExtract: Bio, recent posts, follower info\n\n**Instagram Scraper:**\nFor any Instagram profiles in the selected items\nExtract: Bio, recent posts if public\n\n### Government Documents\n**DocumentCloud:**\nFor each DocumentCloud item with ID and slug:\n```\nhttps://s3.documentcloud.org/documents/{id}/{slug}.txt.json\n```\nCRITICAL: Always include \"/\" between ID and slug\n\n**LegiScan:**\nFor each bill ID:\n```\nhttps://api.legiscan.com/?op=getBill&id={bill_id}\n```\nThen get full text:\n```\nhttps://api.legiscan.com/?op=getBillText&id={doc_id}\n```\n\n**Court Listener:**\nFor each case ID:\n```\nhttps://www.courtlistener.com/api/rest/v4/opinions/{id}/?fields=plain_text,case_name\n```\n\n### Web Content\n**Jina Reader:**\nFor each URL in the selected items\nExtract full text content\n```\nhttps://r.jina.ai/{url}\n```","returnIntermediateSteps":true},"promptType":"define","needsFallback":true},"retryOnFail":true,"typeVersion":2.2},{"id":"55e939ae-b7c4-41cf-90d9-07f6aa5b0eae","name":"Auto Fallback3","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[3808,1200],"parameters":{"model":"openrouter/auto","options":{"temperature":0.6}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"8bc939dc-6737-4bc0-9805-e8854fe9d91b","name":"Step 4: Report Writing","type":"@n8n/n8n-nodes-langchain.agent","position":[3696,928],"parameters":{"text":"=Current Date & Time: {{ $now }}\n\n# TARGET PERSON\nName: {{ $('Prepare research input fields').item.json.firstName }} {{ $('Prepare research input fields').item.json.lastName }}\nCompany: {{ $('Prepare research input fields').item.json.companyName }}\nLinkedIn: {{ $('Prepare research input fields').item.json.linkedinURL }}\n\n# REPORT GOAL\n{{ $('Prepare research input fields').item.json.reportGoal }}\n\n# HUMANTIC FINDINGS\n{{\n  (() => {\n    const humantic = $('Set Fields').item.json['Humantic Findings'];\n    if (!humantic) return 'No Humantic data available';\n    \n    // Return the complete Humantic data - this is critical for psychological profiling\n    const str = JSON.stringify(humantic, null, 2);\n    \n    // Very generous limit to ensure we never lose Humantic data\n    const maxLength = 400000; // ~100K tokens - should never need truncation\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [HUMANTIC DATA TRUNCATED - CRITICAL DATA MAY BE MISSING]'\n      : str;\n  })()\n}}\n\n# HUNTER FINDINGS\n{{\n  (() => {\n    const hunter = $('Set Fields').item.json['Hunter Findings'];\n    if (!hunter) return 'No Hunter data available';\n    \n    const str = JSON.stringify(hunter, null, 2);\n    const maxLength = 80000; // ~20K tokens - generous for contact data\n    return str.length > maxLength \n      ? str.substring(0, maxLength) + '... [TRUNCATED]'\n      : str;\n  })()\n}}\n\n# RETRIEVED TEXTS FROM PREVIOUS AGENT\n{{\n  (() => {\n    const steps = $json.intermediateSteps;\n    if (!steps || !Array.isArray(steps)) return 'No data retrieved';\n    \n    // First pass: extract essential info from n8n LangChain structure\n    const cleanedData = steps.map((step, index) => {\n      const observation = step.observation || 'No response';\n      return {\n        step: index + 1,\n        tool: step.action?.tool || 'Unknown Tool',\n        input: step.action?.toolInput || {},\n        response: observation\n      };\n    }).filter(step => step.response && step.response !== 'No response');\n    \n    // Much more generous limit for 1M token model\n    const totalMaxLength = 1800000; // ~450K tokens for retrieved texts\n    const responseCount = cleanedData.length;\n    \n    if (responseCount === 0) return 'No valid responses in retrieved data';\n    \n    const overheadPerResponse = 200;\n    const totalOverhead = responseCount * overheadPerResponse;\n    const availableForResponses = totalMaxLength - totalOverhead;\n    \n    // Dynamic per-response limit\n    const perResponseLimit = Math.min(\n      300000, // Increased from 60K to 300K per response\n      Math.max(5000, Math.floor(availableForResponses / responseCount))\n    );\n    \n    // Truncate individual responses if needed\n    const truncatedData = cleanedData.map(step => {\n      let response = step.response;\n      \n      // Convert to string if needed\n      if (typeof response !== 'string') {\n        response = JSON.stringify(response, null, 1);\n      }\n      \n      // Truncate if too long, try to find natural break points\n      if (response.length > perResponseLimit) {\n        let truncPoint = perResponseLimit;\n        \n        // Try to break at a paragraph or sentence end\n        const nearParagraph = response.lastIndexOf('\\n\\n', perResponseLimit);\n        const nearNewline = response.lastIndexOf('\\n', perResponseLimit);\n        const nearPeriod = response.lastIndexOf('. ', perResponseLimit);\n        const nearBrace = response.lastIndexOf('}', perResponseLimit);\n        \n        if (nearParagraph > perResponseLimit * 0.9) {\n          truncPoint = nearParagraph;\n        } else if (nearNewline > perResponseLimit * 0.9) {\n          truncPoint = nearNewline;\n        } else if (nearPeriod > perResponseLimit * 0.9) {\n          truncPoint = nearPeriod + 1;\n        } else if (nearBrace > perResponseLimit * 0.9) {\n          truncPoint = nearBrace + 1;\n        }\n        \n        response = response.substring(0, truncPoint) + \n          `\\n... [TRUNCATED from ${response.length} to ${truncPoint} chars]`;\n      }\n      \n      return {\n        ...step,\n        response: response.trim()\n      };\n    });\n    \n    // Final safety check on total size\n    let finalStr = JSON.stringify(truncatedData, null, 1);\n    if (finalStr.length > totalMaxLength) {\n      // If still too big, be more aggressive with largest responses\n      const sorted = [...truncatedData].sort((a, b) => \n        b.response.length - a.response.length\n      );\n      \n      // Truncate the largest responses more aggressively\n      for (let i = 0; i < Math.min(5, sorted.length); i++) {\n        const newLimit = Math.floor(perResponseLimit * 0.5);\n        if (sorted[i].response.length > newLimit) {\n          sorted[i].response = sorted[i].response.substring(0, newLimit) + \n            `\\n... [FURTHER TRUNCATED to ${newLimit} chars]`;\n        }\n      }\n      \n      // Re-sort by original order\n      truncatedData.sort((a, b) => a.step - b.step);\n      finalStr = JSON.stringify(truncatedData, null, 1);\n    }\n    \n    return finalStr;\n  })()\n}}\n\nWrite a comprehensive OSINT intelligence report for the above person that directly addresses the report goal. The Humantic psychological profile is CRITICAL - use all of its insights for behavioral analysis, communication strategies, and psychological profiling. Combine this with retrieved texts and Hunter contact data for a complete intelligence assessment.","options":{"maxIterations":10,"systemMessage":"=# 📝 PERSON OSINT REPORT WRITING AGENT\n\n## Your Mission\nCreate a highly responsive intelligence report about the target person that **directly answers what the user needs to know**. Focus on being immediately useful - lead with what matters most for their specific goal, whether that's understanding how to approach them, assessing them as a partner, evaluating their influence, or analyzing their vulnerabilities.\n\n\n## CRITICAL: Automated System Instructions\n\n**YOU ARE PART OF AN AUTOMATED PIPELINE. This is a ONE-SHOT report generation with NO follow-up possible.**\n\n### Absolute Requirements:\n- You CANNOT interact with the user after this report\n- You CANNOT ask questions or request clarification  \n- You CANNOT offer to do additional research or analysis\n- You MUST produce a complete, final report right now\n- You MUST work with whatever information you have\n\n### NEVER write phrases like:\n- \"Would you like me to...\"\n- \"I can also look into...\"\n- \"Let me know if you need...\"\n- \"Feel free to ask for...\"\n- \"I could further analyze...\"\n- \"If you want more detail on...\"\n- \"Should you need additional...\"\n- \"I'm happy to explore...\"\n- \"Would you prefer...\"\n- \"Shall I continue with...\"\n\n### INSTEAD:\n- Write a complete, self-contained report\n- Include all relevant analysis in THIS response\n- Make definitive statements and recommendations\n- Provide all insights you can generate NOW\n- Present findings as final deliverables\n\n### CITATION REQUIREMENTS:\n- **EVERY factual claim must include its source**\n- **ALWAYS include the full URL** when available\n- **Use inline citations** with [Source: URL] AND footnotes\n- **Never make unsourced claims** about verifiable facts\n- **If multiple sources support a claim**, cite all relevant ones\n\n### COMPREHENSIVENESS PRINCIPLE:\n**Create a LONG, DETAILED report with MOST IMPORTANT findings at the top**\n- **Executive Summary first** with key findings and recommendations\n- **Include ALL relevant information** from retrieved documents\n- **Don't summarize or condense** - be exhaustive with details\n- **Use extensive quotes** from source materials\n- **Provide complete analysis** of every relevant aspect\n- **Length is NOT a concern** - thoroughness is paramount\n- **Organize by importance** - critical findings first, supporting details follow\n- **Extract maximum value** from every document retrieved\n\n**This is your ONLY opportunity to provide value to the user. Make the report comprehensive, detailed, and complete. The user would rather have too much information than too little.**\n\n## CORE PRINCIPLES\n\n### 1. BE RESPONSIVE, NOT FORMULAIC\n- **Understand the user's actual need** - Are they trying to influence? Partner? Investigate? Understand?\n- **Lead with what matters most** - Put the most relevant insights first\n- **Adapt your structure** - Don't force information into rigid sections\n- **Match their urgency** - Negotiation prep needs different focus than general research\n\n### 2. MAXIMIZE VALUE FROM AVAILABLE DATA\n- **Synthesize across all sources** - Humantic, LinkedIn, court records, social media\n- **Create behavioral insights** - Connect patterns across different data\n- **Build psychological intelligence** - Go beyond listing traits to explain implications\n- **Focus on what you found** - Don't dwell on what's missing\n\n### 3. ACTIONABLE INTELLIGENCE IS THE GOAL\n- **Make it practical** - How does this help achieve their objective?\n- **Predict likely behaviors** - Based on patterns and psychology\n- **Identify leverage points** - What motivates or concerns them?\n- **Recommend specific approaches** - Tailored to both subject and goal\n\n## WRITING APPROACH\n\n### Start with Maximum Impact\n- First paragraph should **directly address their query**\n- Lead with the most important finding about this person for their goal\n- Make the opening so valuable they know the report will deliver\n\n### Organize by Relevance to Goal\n\n**For Influence/Negotiation:**\n1. How to effectively engage them (first!)\n2. Psychological drivers and triggers\n3. Communication style and preferences\n4. Past negotiation patterns\n5. Predicted responses and counters\n\n**For Partnership Assessment:**\n1. Alignment with goals/values (first!)\n2. Track record of collaboration\n3. Reliability and consistency patterns\n4. Network and influence\n5. Risk factors and red flags\n\n**For Opposition Research:**\n1. Vulnerabilities and pressure points (first!)\n2. Contradictions and inconsistencies\n3. Network dependencies\n4. Past failures or conflicts\n5. Reputation management priorities\n\n**For General Intelligence:**\n1. Current position and actual influence (first!)\n2. Core motivations and drivers\n3. Professional trajectory and ambitions\n4. Key relationships and dependencies\n5. Behavioral patterns and predictions\n\n## CONTENT OPTIMIZATION\n\n### Emphasize High-Value Intelligence:\n- **Psychological insights** that predict behavior\n- **Pattern recognition** across their history\n- **Contradiction points** between public/private\n- **Influence mapping** - who affects them\n- **Behavioral triggers** - what drives action\n- **Strategic vulnerabilities** - where they're exposed\n\n### Minimize Low-Value Content:\n- Basic biographical data (unless directly relevant)\n- Educational history (unless it explains current behavior)\n- Old information without current relevance\n- Generic professional descriptions\n- Standard career progression details\n\n### Humantic Integration:\nDon't just list personality traits. Instead:\n- **Explain what it means:** \"Their high conscientiousness means deadlines and commitments are sacred - use time pressure strategically\"\n- **Connect to behavior:** \"Low agreeableness aligns with their history of contentious departures\"\n- **Predict responses:** \"High openness suggests receptivity to innovative proposals\"\n- **Identify approaches:** \"Their analytical style means data-driven arguments will resonate\"\n\n## ADAPTIVE STRUCTURE EXAMPLES\n\n### For \"How do I convince [Person] to support our initiative?\"\nStart with:\n> \"**Engagement Strategy:** [Person] is most likely to support initiatives that [key psychological driver from Humantic]. Their public statements consistently emphasize [value], while their career moves show priority for [motivation]. Approach through [preferred channel] with emphasis on [their core concern]...\"\n\n### For \"What are [Person]'s vulnerabilities?\"\nStart with:\n> \"**Strategic Vulnerabilities:** [Person] is most exposed through [primary vulnerability]. Their [Humantic trait] creates blind spots around [issue], evidenced by [pattern from history]. Additional pressure points include [network dependency] and [reputational concern]...\"\n\n### For \"Can we trust [Person] as a partner?\"\nStart with:\n> \"**Partnership Assessment: Moderate-High Reliability.** [Person]'s track record shows [pattern of collaboration/conflict]. Their [Humantic traits] suggest [behavioral tendency], which aligns with [observed actions]. Key risk factors include [specific concerns]. However, [positive indicators]...\"\n\n### For \"Full intelligence workup on [Person]\"\nStart with:\n> \"**Subject Overview:** [Person] currently wields [actual influence level] through [position and network]. The defining pattern of their career is [key theme]. They are driven primarily by [core motivation from Humantic + behavior], which explains [major decisions]. Understanding them requires recognizing [key insight]...\"\n\n## ANALYTICAL FRAMEWORKS\n\n### Behavioral Pattern Analysis:\n- Connect dots across timeline\n- Identify recurring themes\n- Note evolution or consistency\n- Predict future actions\n- Explain contradictions\n\n### Network Intelligence:\n- Map key relationships\n- Identify influence flows\n- Note dependencies\n- Assess loyalty patterns\n- Find pressure points\n\n### Psychological Assessment:\n- Core drivers (from Humantic + behavior)\n- Decision-making patterns\n- Stress responses\n- Value systems\n- Blind spots and biases\n\n## WRITING STYLE\n\n### Be Incisive:\n**Strong:** \"Smith's need for public validation (Humantic: high extraversion, low emotional stability) makes them vulnerable to reputational pressure.\"\n**Weak:** \"The subject possibly has some concerns about their image.\"\n\n### Connect Evidence:\n**Strong:** \"Their aggressive litigation history (7 lawsuits initiated) aligns with Humantic's low agreeableness score and suggests legal threats are their default conflict response.\"\n**Weak:** \"They have been in lawsuits. Humantic shows low agreeableness.\"\n\n### Make Predictions:\n**Strong:** \"Based on their high conscientiousness and past patterns, expect detailed counter-proposals within 48 hours of any offer.\"\n**Weak:** \"They might respond to proposals.\"\n\n## SOURCE INTEGRATION\n\n### Inline Attribution:\n- \"(per Humantic profile)\" for psychological insights\n- \"(LinkedIn trajectory)\" for career patterns\n- \"(court records show)\" for legal matters\n- \"(Twitter analysis reveals)\" for communication patterns\n\n### Confidence Levels:\n- **High confidence:** Multiple sources align\n- **Moderate confidence:** Single source or inferred\n- **Assessment:** Analytical judgment based on patterns\n\n### Don't Over-Cite:\n- Integrate sources naturally\n- Group similar findings\n- Avoid citation breaks in flow\n- Save detailed list for end\n\n## SECTION FLEXIBILITY\n\nUse sections that serve the goal, such as:\n- \"Engagement Strategy\"\n- \"Psychological Leverage Points\"\n- \"Predicted Responses\"\n- \"Network Vulnerabilities\"\n- \"Reputation Priorities\"\n- \"Decision-Making Patterns\"\n- \"Red Flags and Risks\"\n- \"Communication Approach\"\n- \"Coalition Opportunities\"\n- \"Timing Considerations\"\n\n## OUTPUT GUIDELINES\n\n### Start Immediately\nBegin with the report - no preamble about what you'll do.\n\n### Adapt Length to Need\n- Quick query = concise response\n- Complex goal = comprehensive analysis\n- Match depth to user's apparent need\n\n### Close with Utility\nEnd with practical next steps, not just source lists.\n\n## QUALITY CHECKLIST\n\nBefore finishing, ensure:\n1. ✓ First paragraph directly answers their need\n2. ✓ Humantic insights are explained, not just listed\n3. ✓ Patterns are identified across sources\n4. ✓ Predictions and recommendations are specific\n5. ✓ Structure serves their goal, not a template\n6. ✓ Analysis goes beyond facts to implications\n7. ✓ Practical approaches are recommended\n\n## FINAL INSTRUCTION\n\n**Write the report immediately.** Start with what matters most for their specific query. Build the structure around their needs, not a template. Make every insight actionable. The goal is intelligence they can use immediately to achieve their objective with this person.\n\nRemember: They need to understand how to work with, influence, or assess this person. Everything else is secondary.","returnIntermediateSteps":true},"promptType":"define","needsFallback":true},"retryOnFail":true,"typeVersion":2.2},{"id":"2bb43091-4ca0-41c6-af77-e0261eee33c1","name":"Auto Fallback4","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[4432,1184],"parameters":{"model":"openrouter/auto","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"b9bec125-d33a-452f-9fcb-b7855500c67b","name":"Auto Fallback5","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[5136,1184],"parameters":{"model":"openrouter/auto","options":{"temperature":0.1}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"de875f11-c918-467f-aebb-2e70ef870064","name":"Step 6: Fixing Hallucinations","type":"@n8n/n8n-nodes-langchain.agent","position":[5152,928],"parameters":{"text":"=Current Date & Time: {{ $now }}\n# **User's Original Query**\n{{ \n  (() => {\n    const query = $('Trigger individual research from another workflow').item.json.prompt || '';\n    // 20K chars (~5K tokens) - full query should always fit\n    return query.length > 20000 ? query.substring(0, 20000) + '... [TRUNCATED]' : query;\n  })()\n}}\n# **Retrieved Documents** - All full texts with their source URLs\n{{ \n  (() => {\n    const docs = JSON.stringify($('Step 3: Retrieval').item.json.intermediateSteps);\n    // 1.6M chars (~400K tokens) - this is your main content\n    return docs.length > 1600000 ? docs.slice(0, 1600000) + '\\n... [TRUNCATED]' : docs;\n  })()\n}}\n# **Failed Report** - The report that contains hallucinations\n{{ \n  (() => {\n    const report = $('Set Report').item.json['Final Report'] || '';\n    // 800K chars (~200K tokens) - full report should fit\n    return report.length > 800000 ? report.substring(0, 800000) + '\\n... [TRUNCATED]' : report;\n  })()\n}}\n# **Hallucinations** - FIX THESE PROBLEMS\n{{ \n  (() => {\n    const h = JSON.stringify($json.output.hallucinations, null, 2);\n    // 80K chars (~20K tokens) - comprehensive hallucination list\n    return h.length > 80000 ? h.slice(0, 80000) + '\\n... [TRUNCATED]' : h;\n  })()\n}}","options":{"maxIterations":10,"systemMessage":"=# 📝 PERSON OSINT REPORT REWRITE AGENT\n\n## Mission\nFix the specific hallucinations identified while **preserving everything valuable about the report**. The original report was written to be responsive to the user's specific need about this person - maintain that responsiveness. Your job is surgical correction of errors, not reconstruction of the report.\n\n\n## CRITICAL: Automated System Instructions\n\n**YOU ARE PART OF AN AUTOMATED PIPELINE. This is a ONE-SHOT report generation with NO follow-up possible.**\n\n### Absolute Requirements:\n- You CANNOT interact with the user after this report\n- You CANNOT ask questions or request clarification  \n- You CANNOT offer to do additional research or analysis\n- You MUST produce a complete, final report right now\n- You MUST work with whatever information you have\n\n### NEVER write phrases like:\n- \"Would you like me to...\"\n- \"I can also look into...\"\n- \"Let me know if you need...\"\n- \"Feel free to ask for...\"\n- \"I could further analyze...\"\n- \"If you want more detail on...\"\n- \"Should you need additional...\"\n- \"I'm happy to explore...\"\n- \"Would you prefer...\"\n- \"Shall I continue with...\"\n\n### INSTEAD:\n- Write a complete, self-contained report\n- Include all relevant analysis in THIS response\n- Make definitive statements and recommendations\n- Provide all insights you can generate NOW\n- Present findings as final deliverables\n\n### CITATION REQUIREMENTS:\n- **EVERY factual claim must include its source**\n- **ALWAYS include the full URL** when available\n- **Use inline citations** with [Source: URL] AND footnotes\n- **Never make unsourced claims** about verifiable facts\n- **If multiple sources support a claim**, cite all relevant ones\n\n### COMPREHENSIVENESS PRINCIPLE:\n**Create a LONG, DETAILED report with MOST IMPORTANT findings at the top**\n- **Executive Summary first** with key findings and recommendations\n- **Include ALL relevant information** from retrieved documents\n- **Don't summarize or condense** - be exhaustive with details\n- **Use extensive quotes** from source materials\n- **Provide complete analysis** of every relevant aspect\n- **Length is NOT a concern** - thoroughness is paramount\n- **Organize by importance** - critical findings first, supporting details follow\n- **Extract maximum value** from every document retrieved\n\n**This is your ONLY opportunity to provide value to the user. Make the report comprehensive, detailed, and complete. The user would rather have too much information than too little.**\n\n## CRITICAL PRINCIPLES\n\n### 1. INTELLIGENCE VALUE IS SACRED\n- **Psychological insights are the core** - Never alter Humantic-based analysis\n- **Behavioral predictions are essential** - Keep all of them\n- **Strategic recommendations are the point** - Preserve entirely\n- **Influence strategies are key value** - Maintain completely\n- **Pattern recognition is intelligence** - Don't touch it\n\n### 2. RESPECT THE ADAPTIVE STRUCTURE\n- **The writer tailored this to the user's query** - Don't impose templates\n- **The order was chosen for relevance** - Keep it exactly\n- **Sections were named for clarity** - Don't standardize them\n- **Focus areas were intentional** - Preserve the emphasis\n- **If it starts with \"How to influence them\"** - That's perfect, leave it\n\n### 3. MINIMAL INTERVENTION ONLY\n- **Only fix what's specifically flagged**\n- **Keep everything else exactly as written**\n- **Don't \"improve\" unflagged content**\n- **Preserve the original voice and approach**\n- **Your changes should be nearly invisible**\n\n## HOW TO HANDLE FLAGGED HALLUCINATIONS\n\n### Understand What's Actually Wrong\nBefore fixing anything:\n- Is it completely false or just imprecise?\n- What insight was being conveyed?\n- Can the analytical point survive?\n- What's the lightest fix possible?\n\n### Choose the Gentlest Fix\n\n**1. ADJUST PRECISION** (Always try first)\n- \"Harvard MBA 2010\" → \"Harvard MBA\"\n- \"Worked at Google 2015-2020\" → \"Worked at Google\"\n- \"Manages 50 people\" → \"Manages a large team\"\n- \"47 years old\" → \"Mid-40s\"\n\n**2. ADD QUALIFIER** (If adjustment insufficient)\n- \"Is known for...\" → \"Reportedly known for...\"\n- \"Said that...\" → \"Has indicated that...\"\n- \"Always responds...\" → \"Tends to respond...\"\n- \"Will definitely...\" → \"Likely will...\"\n\n**3. CONVERT TO PATTERN** (When fact unsupported but pattern valid)\n- \"Fired from three jobs\" → \"Pattern of contentious departures\"\n- \"Earns $500K\" → \"Compensation suggests senior level\"\n- \"Lives in Palo Alto\" → \"Bay Area based\"\n\n**4. PRESERVE THE INSIGHT** (Even if fact changes)\n- If wrong detail supported valid psychological insight, keep the insight\n- If incorrect example illustrated real pattern, find another example\n- If false quote conveyed actual position, paraphrase their stance\n\n**5. REMOVE** (Absolute last resort)\n- Only if completely fabricated\n- Only if no analytical value\n- Only if removal doesn't break flow\n- Add transition if needed\n\n## NEVER CHANGE THESE\n\n### Humantic-Based Content (COMPLETELY PROTECTED):\n- All personality assessments\n- Communication style insights\n- Stress responses\n- Decision-making patterns\n- Value systems\n- Behavioral predictions based on personality\n\n### Strategic Intelligence (NEVER ALTER):\n- \"Approach through...\"\n- \"Leverage their need for...\"\n- \"Vulnerable to...\"\n- \"Will respond best to...\"\n- \"Avoid mentioning...\"\n- \"Build rapport by...\"\n\n### Analytical Assessments (PRESERVE ENTIRELY):\n- \"Pattern suggests...\"\n- \"History indicates...\"\n- \"Likely to...\"\n- \"Probably will...\"\n- \"Tends to...\"\n- \"Typically responds...\"\n\n### User-Responsive Elements (DON'T STANDARDIZE):\n- Custom section headers\n- Non-chronological organization\n- Emphasis on specific aspects\n- Tailored recommendations\n- Query-specific focus\n\n## PRACTICAL EXAMPLES\n\n### Hallucination: \"PhD from MIT\"\n**If they have PhD from Stanford:** Change to \"PhD from Stanford\"\n**If they have MS from MIT:** Change to \"Advanced degree from MIT\"\n**If no advanced degree:** Change to \"Technical education\" or remove\n**But keep:** Any analysis about their technical expertise if role-supported\n\n### Hallucination: \"CEO of TechCorp since 2020\"\n**If they're CTO:** Change to \"C-level executive at TechCorp since 2020\"\n**If they left in 2022:** Change to \"Former executive at TechCorp\"\n**If timeline wrong:** Just say \"Executive at TechCorp\"\n**But preserve:** All analysis about their leadership style\n\n### Hallucination: \"Published 12 papers on AI\"\n**If published 3 papers:** Change to \"Published on AI\"\n**If published on different topic:** Change to \"Published researcher\"\n**If no publications:** Remove, but keep expertise claims if role-based\n**But maintain:** Assessment of their thought leadership\n\n### Hallucination: \"Testified before Congress\"\n**If spoke at government conference:** Change to \"Engaged with government\"\n**If regulatory filing only:** Change to \"Regulatory involvement\"\n**If nothing found:** Remove specific, keep \"policy influence\" if role suggests\n**But keep:** Analysis of their political engagement style\n\n## REWRITE PROCESS\n\n1. **Read the full report first** - Understand its purpose and user focus\n2. **Identify what user asked for** - Ensure fixes maintain responsiveness\n3. **Address only flagged items** - Don't fix unflagged content\n4. **Use lightest touch** - Adjust > Qualify > Convert > Remove\n5. **Preserve all insights** - Even if supporting facts change\n6. **Maintain voice** - Keep the original style and approach\n7. **Protect structure** - Don't reorganize or standardize\n\n## CRITICAL PROTECTIONS\n\n### If Report Starts With Influence Strategy:\n- That's intentional - keep it first\n- Don't move biographical data up\n- Preserve the action-oriented approach\n\n### If Organized by Psychological Drivers:\n- That's the chosen framework - maintain it\n- Don't revert to chronological structure\n- Keep the behavioral focus\n\n### If Sections Have Custom Names:\n- \"Leverage Points\" - keep it\n- \"Predicted Responses\" - keep it\n- \"Ego Triggers\" - keep it\n- Don't change to \"Professional Background\"\n\n### If Heavy on Humantic Analysis:\n- That's the value - preserve entirely\n- Every personality insight stays\n- All behavioral predictions remain\n- Communication recommendations untouched\n\n## OUTPUT RULES\n\n### Start Immediately\n- No preamble explaining changes\n- No meta-commentary\n- Just output the corrected report\n\n### Preserve Everything Valuable\n- All psychological insights\n- All strategic recommendations\n- All behavioral predictions\n- All influence strategies\n- All pattern recognition\n\n### Maintain Original Character\n- Same section structure\n- Same headers exactly\n- Same emphasis patterns\n- Same level of detail\n- Same analytical depth\n\n## FINAL REMINDERS\n\n1. **You're fixing errors, not rewriting** - Minimal changes only\n2. **Humantic analysis is untouchable** - It's pre-verified\n3. **Strategic content is the value** - Never remove it\n4. **Structure was chosen for the user** - Don't impose templates\n5. **Predictions are based on patterns** - They stay\n6. **When in doubt, don't change it** - Preserve over perfect\n\n## FINAL INSTRUCTION\n\nOutput the corrected report immediately. Fix ONLY the specific hallucinations identified. Change as little as possible. Preserve all psychological insights, behavioral predictions, strategic recommendations, and adaptive structure exactly as written.\n\nRemember: The report was tailored to answer a specific question about this person. Your job is to fix factual errors while preserving all the intelligence value and user-responsiveness. A report that starts with \"How to influence them\" or \"Their main vulnerabilities\" is doing exactly what it should - don't \"fix\" that.","returnIntermediateSteps":true},"promptType":"define","needsFallback":true},"retryOnFail":true,"typeVersion":2.2},{"id":"5af9507d-d07f-4cef-ae7e-70fa44418ca2","name":"Think Tool Analysis2","type":"@n8n/n8n-nodes-langchain.toolThink","position":[5408,1184],"parameters":{"description":"=**Analysis Phase - Synthesize All Retrieved Texts**\n\nYour job: Analyze retrieved content to create strategic insights.\n\nRequired Analysis:\n1. Map findings to user query:\n   \"User asked about Prop 12 challenges\"\n   \n2. Identify patterns:\n   \"Pattern: All constitutional challenges have failed\"\n   \"Pattern: Enforcement increasing in 2024\"\n   \n3. Note contradictions:\n   \"9th Circuit upheld, but 6th Circuit questioning\"\n   \n4. Identify gaps:\n   \"No enforcement data after July 2024\"\n   \n5. Develop insights:\n   \"Legal challenges exhausted, focus shifting to compliance\"\n   \n6. Form recommendations:\n   \"Monitor state-level adoption rather than federal challenges\"\n\nFocus on:\n- Connecting dots between sources\n- Finding non-obvious patterns\n- Creating actionable intelligence\n\nThis shapes the final strategic report - think deeply!"},"typeVersion":1},{"id":"76c34c6a-6a7a-41a0-aab5-d271a06e944f","name":"Simple Memory6","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[5280,1184],"parameters":{"sessionKey":"={{ $('Trigger individual research from another workflow').item.json.sessionId }}d","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"e0316b9d-0ce5-4dca-b337-277316bbd8fb","name":"Search Open Paws Database2","type":"@n8n/n8n-nodes-langchain.vectorStoreWeaviate","position":[1152,976],"parameters":{"mode":"retrieve-as-tool","topK":10,"options":{},"toolDescription":"=**Internal Knowledge Base Search**\n\nSearches curated animal advocacy knowledge base containing research, strategies, and historical campaign data.\n\n**Query:** Natural language search terms\n**Returns:** Relevant documents with credibility and relevance scores\n\n**Use When:**\n- Need animal advocacy-specific context\n- Looking for proven strategies or campaign precedents  \n- Want grounded information beyond generic web search\n- Research involves ethics, policy, or movement strategy\n\n**Best Practice:** Use before general web search for animal advocacy topics.","weaviateCollection":{"__rl":true,"mode":"list","value":"Content","cachedResultName":"Content"}},"credentials":{"weaviateApi":{"id":"ge8RyDPHXkuj7oau","name":"Weaviate Credentials account"}},"retryOnFail":true,"typeVersion":1.3},{"id":"86380951-8bf7-435c-bc45-9a4f2fcabfad","name":"Embeddings OpenAI2","type":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","position":[1168,1184],"parameters":{"options":{}},"credentials":{"openAiApi":{"id":"eCs38HgxUt7OAbd4","name":"OpenAi account"}},"typeVersion":1.2},{"id":"30f6d15d-4029-47a6-be67-da58737c1bbc","name":"Twitter Profile Scraper1","type":"@n8n/n8n-nodes-langchain.toolHttpRequest","position":[3200,1168],"parameters":{"url":"http://api.scrapingdog.com/x/profile?profileId={profileId}&parsed=true","authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","toolDescription":"=**Twitter Profile & Content Analysis**\n\nRetrieves profile information and recent posts from Twitter/X accounts.\n\n**Input:** `profileId` - Twitter username (e.g., \"username\" from x.com/username)\n\n**Use When:** Understanding someone's public positions, communication style, or recent activity on Twitter.","placeholderDefinitions":{"values":[{"name":"{profileId}","description":"The ID for the profile you want to scrape"}]}},"credentials":{"httpQueryAuth":{"id":"6sBLF1PNXWnTLuOb","name":"ScrapingDog Key"}},"retryOnFail":true,"typeVersion":1.1},{"id":"367367bf-bd20-443f-a3a4-f9d74cd20d87","name":"Linkedin Person and Company Scraper1","type":"@n8n/n8n-nodes-langchain.toolHttpRequest","position":[2896,1168],"parameters":{"url":"https://api.scrapingdog.com/linkedin","sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","parametersQuery":{"values":[{"name":"linkId"},{"name":"type"}]},"toolDescription":"=**LinkedIn Profile Intelligence**\n\nExtracts professional information from LinkedIn profiles including job history, connections, and public posts.\n\n**Input:**\n\nlinkId\n\nrequired\n\nThis is the Linkedin ID of any person profile. This can be found inside the URL of any profile i.e. for https://www.linkedin.com/in/sam-tucker-vegan/ the linkId is sam-tucker-vegan\n\nType: String\n\nrequired\n\nThis is a string that helps us to identify whether you want to scrape a person profile or a company profile.\n\nFor a person profile, you have to pass type=profile and for a company you type type=company\n\nType: String\n\nrequired"},"credentials":{"httpQueryAuth":{"id":"6sBLF1PNXWnTLuOb","name":"ScrapingDog Key"}},"retryOnFail":true,"typeVersion":1.1},{"id":"70a3f25d-74f8-4420-a113-41c20c52d0c8","name":"Instagram Profile Scraper1","type":"@n8n/n8n-nodes-langchain.toolHttpRequest","position":[3056,1168],"parameters":{"url":"https://api.scrapingdog.com/instagram/profile?username={username}","authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","toolDescription":"=**Instagram Content & Profile Analysis**\n\nExtracts profile information, recent posts, captions, and hashtags from public Instagram accounts.\n\n**Input:** `username` - Instagram username without @ symbol\n\n**Use When:** Understanding visual content strategy, audience engagement, or lifestyle/values presentation.","placeholderDefinitions":{"values":[{"name":"{username}","description":"The username for the Instagram profile you want to read the posts from"}]}},"credentials":{"httpQueryAuth":{"id":"6sBLF1PNXWnTLuOb","name":"ScrapingDog Key"}},"retryOnFail":true,"typeVersion":1.1},{"id":"04cd5a77-d4a9-44c4-b419-793a1bd1ac0c","name":"GPT-5a","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[1584,1152],"parameters":{"model":"openai/gpt-5","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"0c0b13eb-92ca-4626-aa4e-caea461c873c","name":"GPT-5b","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[3680,1200],"parameters":{"model":"openai/gpt-5","options":{"temperature":0.6}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"29d78d93-a153-41d4-9434-3cd05ce0d96f","name":"GPT-5c","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[4304,1184],"parameters":{"model":"openai/gpt-5","options":{"temperature":0.2}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"0956503c-2aa6-4e8c-aec6-dd8a99aaccbc","name":"GPT-5d","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[5008,1184],"parameters":{"model":"openai/gpt-5","options":{"temperature":0.1}},"credentials":{"openRouterApi":{"id":"usyJuZ4KAnk3Omh5","name":"Person OSINT Agent"}},"typeVersion":1},{"id":"f67ad7c0-62cf-445a-8cb4-860f2bc4ba65","name":"If Empty Output","type":"n8n-nodes-base.if","position":[5456,928],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"7c9099fa-f4dd-49de-a916-a344368bbeda","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.output }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"c1f10cd0-aff2-472e-a033-99b51c40ca19","name":"If Empty Output1","type":"n8n-nodes-base.if","position":[4768,928],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"7c9099fa-f4dd-49de-a916-a344368bbeda","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json.output }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"26ca193e-344b-4c44-a709-561d93117faa","name":"Plural Discovery1","type":"n8n-nodes-base.httpRequestTool","position":[944,1088],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","toolDescription":"=# Discovery Phase – Find ALL Relevant People\n\n**CRITICAL:** ALWAYS use the full base URL.\n\n**Base URL:** `https://v3.openstates.org/`\n\n---\n\n## Primary Search: People\n\n**Endpoint:**\n`GET https://v3.openstates.org/people`\n\n**Rule:** You must provide at least a **name** or a **jurisdiction**. Use other filters to narrow to the specific individual.\n\n### Common Query Parameters\n\n* `name=` Full or partial name of the person (URL-encoded).\n* `jurisdiction=` A state/territory name/slug (e.g., `California`, `Texas`).\n* `district=` Legislative district (when applicable).\n* `chamber=` `upper` or `lower` (varies by state).\n* **Geographic search:**\n\n  * `lat=` + `lng=` → use `/people.geo` to find who represents a location.\n* **Pagination & sort:**\n\n  * `page=` (1, 2, 3, …)\n  * `per_page=` (**1–20 only; default 20**)\n\n### CORRECT Discovery URLs\n\n✅ `https://v3.openstates.org/people?name=Buffy%20Wicks&jurisdiction=California`\n✅ `https://v3.openstates.org/people?jurisdiction=Texas&chamber=upper&page=1`\n✅ `https://v3.openstates.org/people.geo?lat=37.7749&lng=-122.4194` *(find SF reps by location)*\n\n### WRONG\n\n❌ `/people?name=Jane%20Doe` *(missing base URL)*\n❌ `…&per_page=50` *(invalid; must be 1–20)*\n\n### Response Shape (abridged)\n\n```json\n{\n  \"results\": [\n    {\n      \"id\": \"ocd-person/…uuid…\",\n      \"name\": \"Buffy Wicks\",\n      \"jurisdiction\": \"California\",\n      \"chamber\": \"lower\",\n      \"district\": \"15\",\n      \"party\": \"Democratic\",\n      \"current_role\": {\n        \"title\": \"Assemblymember\",\n        \"start_date\": \"2018-12-03\"\n      }\n    }\n  ],\n  \"pagination\": { \"page\": 1, \"per_page\": 20, \"max_page\": 1 }\n}\n```","headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"ZfXzQhBFNaxjYbP6","name":"CourtListener Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"c5f0d822-3c4b-4b63-9282-6fff9f87fa22","name":"Plural Retrieval","type":"n8n-nodes-base.httpRequestTool","position":[3344,1168],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","toolDescription":"=# Retrieval Phase – Get Full Details for SELECTED People\n\n**CRITICAL:** ALWAYS use the full base URL. **No new searching.** Only retrieve the specific people/entities chosen in Discovery.\n\n**Base URL:** `https://v3.openstates.org/`\n\n---\n\n## Person Detail\n\n**Endpoint:**\n`GET https://v3.openstates.org/people/{person_id}`\n\nWhere `{person_id}` is the full OpenStates ID (e.g., `ocd-person/6b1f01b6-…`).\n\n**Example:**\n\n```\nhttps://v3.openstates.org/people/ocd-person/6b1f01b6-1dcf-11eb-b7e7-0242ac140002?include=memberships&include=sources\n```\n\n**What you get:** canonical metadata about the individual, including:\n\n* `id` (ocd-person/UUID)\n* `name`\n* `jurisdiction`\n* `party`\n* `chamber`, `district`, `roles`\n* `memberships` (committees, leadership)\n* `sources` (reference URLs)\n\n---\n\n## CORRECT Retrieval URLs\n\n✅\n\n```\nhttps://v3.openstates.org/people/ocd-person/6b1f01b6-1dcf-11eb-b7e7-0242ac140002?include=memberships&include=sources\n```\n\n✅\n\n```\nhttps://v3.openstates.org/people/ocd-person/…uuid…?include=memberships\n```\n\n## WRONG\n\n❌ `/people/{person_id}` *(missing base URL)*\n❌ `https://v3.openstates.org/people?q=Buffy%20Wicks` *(that’s Discovery, not Retrieval)*\n❌ `https://v3.openstates.org/people/ocd-person/ocd-person/{uuid}` *(double segment – invalid)*\n\n---\n\n## Minimal Response Shape (detail with includes)\n\n```json\n{\n  \"id\": \"ocd-person/6b1f01b6-1dcf-11eb-b7e7-0242ac140002\",\n  \"name\": \"Buffy Wicks\",\n  \"jurisdiction\": \"California\",\n  \"party\": \"Democratic\",\n  \"chamber\": \"lower\",\n  \"district\": \"15\",\n  \"roles\": [\n    { \"title\": \"Assemblymember\", \"start_date\": \"2018-12-03\" }\n  ],\n  \"memberships\": [\n    { \"organization\": \"Assembly Committee on Housing\", \"role\": \"Member\" }\n  ],\n  \"sources\": [\n    { \"url\": \"https://www.assembly.ca.gov/assemblymembers/15\" }\n  ]\n}\n```","headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"ZfXzQhBFNaxjYbP6","name":"CourtListener Key"}},"retryOnFail":true,"typeVersion":4.2},{"id":"c9a5836f-8397-4166-85fc-79e1d61f43f9","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","position":[6080,816],"parameters":{"options":{"enableStreaming":true},"respondWith":"json","responseBody":"={{ JSON.stringify($json) }}"},"typeVersion":1.5},{"id":"5cc0eba7-fb66-4e4e-bd1b-572c9c6dd6e4","name":"If Source is Webhook","type":"n8n-nodes-base.if","position":[5888,928],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"6f78d9d5-176a-4660-8e24-f516502127ae","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('Prepare research input fields').item.json.source }}","rightValue":"webhook"}]}},"typeVersion":2.3},{"id":"81a67806-ef9e-418b-81fe-5b837a9e082c","name":"Final Output","type":"n8n-nodes-base.set","position":[6080,1008],"parameters":{"options":{},"assignments":{"assignments":[{"id":"b943ce2b-92a7-4fb5-b49a-df2894d5e445","name":"report","type":"string","value":"={{ $('Set Report').item.json['Final Report'] }}"}]}},"typeVersion":3.4},{"id":"ce74279e-d3ce-407f-9ebf-a5a5af1f5304","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1968,112],"parameters":{"color":2,"width":896,"height":592,"content":"# Analyze publicly available information about individuals using AI\n\n## How it works\n\nThis workflow researches an individual using publicly available information.\nIt collects data from multiple public web and document sources, organizes the\nfindings, and generates a structured report based on the available data.\n\nThe workflow includes validation steps to reduce incorrect or unsupported\nstatements before producing the final output.\n\nThe result is a clear Markdown report that can be used for analysis or as input\nto other workflows.\n\n## Setup steps\n\n1. Add your AI provider credentials.\n2. Configure any public web or document source APIs used.\n3. Choose how the workflow is triggered (Webhook or Execute Workflow).\n4. Activate the workflow and provide an individual name or research prompt.\n"},"typeVersion":1},{"id":"a3fcb54e-d806-46ac-b96b-78d96b70b011","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1968,752],"parameters":{"color":7,"width":544,"height":624,"content":"## 📥 Input Schema\n\nThe OSINT Person Profiling Agent accepts structured JSON input.  \nBelow are the available fields and how they are used:\n\n### Required\n- **`firstName`** *(string)*  \n  The person’s first name. Used for identity matching and search accuracy.\n\n- **`lastName`** *(string)*  \n  The person’s last name. Required to correctly identify the individual.\n\n- **`companyName`** *(string)*  \n  Organization the person is associated with.  \n  Helps improve profile disambiguation and context.\n\n- **`companyDomain`** *(string)*  \n  The domain or website of the associated company.  \n  Useful for relationship mapping and OSINT enrichment.\n\n- **`linkedinURL`** *(string)*  \n  Direct link to the person’s LinkedIn profile.  \n  If provided, it significantly increases the accuracy of profiling and reduces false matches.\n\n- **`reportGoal`** *(string)*  \n  Additional context for what the profile should focus on  \n  (e.g., “Find out more information”, “Map their public presence”, “Identify career history”, etc.)\n\n\n\n\n\n\n\n\n\n\n"},"typeVersion":1},{"id":"77edf5af-7377-4692-ac0f-18045d5f5978","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1040,1376],"parameters":{"color":7,"width":262,"height":144,"content":"### Please refer [Open Paws Guide](https://github.com/Open-Paws/documentation/tree/main/Knowledge) to know how to use our open-source vector database"},"typeVersion":1},{"id":"42d87f9b-3d3e-4295-af34-d3da95c98c39","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[352,464],"parameters":{"color":7,"width":528,"height":368,"content":"## 🟤 Step 1: Discovery\n\nInitial OSINT discovery across multiple tool categories:\n• General web search  \n• Government & legal datasets  \n• Public document archives  \n• Social profiles  \n• Company & affiliation lookups  \n• Plural/aggregated OSINT queries  \n• Embedding-based dataset lookup  \n\nThis stage gathers as many public signals as possible.\n"},"typeVersion":1},{"id":"9d4f6fd0-b588-4e75-98c3-d8aeee33ee67","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[1472,512],"parameters":{"color":7,"width":544,"height":288,"content":"## 🟤 Step 2: Prioritization\n\nThe agent evaluates discovered signals to:\n• Rank sources by credibility  \n• Determine which leads are worth deeper investigation  \n• Remove low-quality or duplicate results  \n\nIf prioritization yields nothing, fallback models are triggered.\n"},"typeVersion":1},{"id":"de06886a-70a8-46b6-8aab-9a0d7e670c1f","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[2320,528],"parameters":{"color":7,"width":576,"height":256,"content":"## 🟤 Step 3: Retrieval\n\nIn-depth retrieval of detailed OSINT information:\n• Retrieve structured and unstructured documents  \n• Fetch social media content (LinkedIn, Instagram, Twitter)  \n• Retrieve legal/court records  \n• Extract website text  \n• Pull corporate affiliation data  \n\nFallback logic ensures robustness across sources.\n"},"typeVersion":1},{"id":"cb70baa7-4a30-4c16-8985-f5ba198dd4a9","name":"Sticky Note13","type":"n8n-nodes-base.stickyNote","position":[3504,448],"parameters":{"color":7,"width":672,"height":368,"content":"## ✍️ Writing Report Agent\n\nThis agent is responsible for transforming **raw research signals** into a **clear, structured, human-readable report**.\n\nAfter the research tools return their findings, the Writing Report Agent:\n\n* Analyzes and prioritizes the most relevant information\n* Synthesizes insights across multiple sources\n* Organizes content into logical sections\n* Writes the report in clean **Markdown format**"},"typeVersion":1},{"id":"e2e3487d-24af-47f6-a284-6cf234baa1c7","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[4240,448],"parameters":{"color":7,"width":672,"height":368,"content":"## 🔍 Verifying Report Agent\n\nThis agent acts as a **quality control and fact-checking layer**.\n\nOnce the initial report is written, the Verifying Report Agent:\n\n* Reviews claims made in the draft report\n* Checks for internal consistency and logical coherence\n* Evaluates whether conclusions are supported by the research inputs\n* Flags areas that appear weak, vague, or potentially unsupported"},"typeVersion":1},{"id":"45d28f56-79db-4862-940b-3f6b6ad95c20","name":"Sticky Note15","type":"n8n-nodes-base.stickyNote","position":[4976,448],"parameters":{"color":7,"width":736,"height":352,"content":"## 🧯 Fixing Hallucinations Agent\n\nThis agent is activated **only when issues are detected** during verification.\n\nIf the Verifying Report Agent identifies hallucinations, unsupported claims, or logical gaps, the Fixing Hallucinations Agent:\n\n* Revisits the original research inputs\n* Removes or corrects unsupported statements\n* Rewrites affected sections with more conservative, evidence-backed language\n* Ensures the final output aligns strictly with available information\n"},"typeVersion":1},{"id":"6d8c5503-e3d6-447d-a65c-9886174d0405","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[-944,-32],"parameters":{"color":7,"width":864,"height":736,"content":"## 🔐 Credentials Required\n\nThis workflow uses several external OSINT and data-gathering tools that require API credentials:\n\n- **OpenRouter API Key**  \n  Used for LLM reasoning, prioritizing sources, deep investigation, and report writing.\n\n- **Serper API**  \n  Used for real-time web search and discovery of publicly available information.\n\n- **LegiScan API**  \n  Retrieves legislative records, bill histories, and government activity related to the organization.\n\n- **CourtListener API Key**  \n  Fetches federal court filings, legal documents, and public litigation data.\n\n- **OpenCorporates API Key**  \n  Provides corporate registry information, company structure, and global entity records.\n\n- **Jina URL Reader**  \n  Extracts readable text from web pages for OSINT analysis.\n\n- **ScrapingDog API Key**  \n  Scrapes public content from social profiles and websites (e.g., LinkedIn, Twitter, Instagram).\n\n- **BuiltWith API Key**  \n  Reveals the technology stack used by the organization’s website.\n\nNo credentials are included in this template.  \nYou must add and configure your own credentials after importing the workflow.\n"},"typeVersion":1},{"id":"381b8f4c-3e40-4813-a4cf-edf1a640331c","name":"Trigger individual research (Webhook)","type":"n8n-nodes-base.webhook","position":[-1376,768],"webhookId":"5b46fa39-9749-45d4-b2ac-b99659e1c92f","parameters":{"path":"osint-personal-profile","options":{},"httpMethod":"POST","responseMode":"streaming"},"typeVersion":2.1},{"id":"81f8ffb2-5c8b-4e79-839d-6a01e0345c93","name":"Trigger individual research from another workflow","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-1376,976],"parameters":{"workflowInputs":{"values":[{"name":"firstName"},{"name":"lastName"},{"name":"companyName"},{"name":"linkedinURL"},{"name":"reportGoal"},{"name":"companyDomain"}]}},"typeVersion":1.1},{"id":"2baace07-287f-4b56-99dd-d761f99ba634","name":"Wait before next research step","type":"n8n-nodes-base.wait","onError":"continueRegularOutput","position":[-640,880],"webhookId":"4b99c625-ba2c-4389-a553-a8a6449e8969","parameters":{"amount":45},"typeVersion":1.1},{"id":"b4423097-c66f-4a2a-be3f-ad2ca1da6fa3","name":"Prepare research input fields","type":"n8n-nodes-base.set","position":[-1104,880],"parameters":{"options":{},"assignments":{"assignments":[{"id":"a5394583-4ac3-438b-ba5e-fc16389af734","name":"firstName","type":"string","value":"={{ $json.firstName  || ($json.body && $json.body.firstName) || ''  }}"},{"id":"c15aea32-1270-4b6d-97b9-8635bf2a6f80","name":"lastName","type":"string","value":"={{ $json.lastName || ($json.body && $json.body.lastName) || '' }}"},{"id":"e7ba58c7-748c-4dfd-b874-569512bfb01d","name":"linkedinURL","type":"string","value":"={{ $json.linkedinURL || ($json.body && $json.body.linkedinURL) || '' }}"},{"id":"483fceb9-809c-46ed-9167-9544375e84c6","name":"reportGoal","type":"string","value":"={{ $json.reportGoal || ($json.body && $json.body.reportGoal) || ''}}"},{"id":"6b758106-5cdd-405d-acb3-beeee8340f1c","name":"companyDomain","type":"string","value":"={{ $json.companyDomain || ($json.body && $json.body.companyDomain) || '' }}"},{"id":"99dfa462-e68c-4533-89d7-623de816fd8f","name":"companyName","type":"string","value":"={{ $json.companyName || ($json.body && $json.body.companyDomain) || '' }}"},{"id":"bd2252f6-90af-47f0-aa91-2c91c40101a5","name":"source","type":"string","value":"={{ $json.webhookUrl ? 'webhook' : 'workflow' }}"}]}},"typeVersion":3.4},{"id":"07dd3104-6719-4234-8d27-b3ef1128139a","name":"DocumentCloud Discovery","type":"n8n-nodes-base.httpRequestTool","position":[800,1088],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{"batching":{"batch":{"batchSize":1}}},"toolDescription":"=**Discovery Phase - Find ALL Government Documents**\n\n**Base URL:** https://api.www.documentcloud.org/api/\n**Search Endpoint:** documents/search/\n\n## Full Search URL Pattern\nhttps://api.www.documentcloud.org/api/documents/search/?q={query}&per_page=25\n\n## Query Parameters\n- q: search terms (URL encoded)\n- per_page: up to 25\n- created_at__gte: date filter (YYYY-MM-DD)\n\n## Discovery Search URLs\nhttps://api.www.documentcloud.org/api/documents/search/?q=prop%2012&per_page=25\nhttps://api.www.documentcloud.org/api/documents/search/?q=proposition%2012%20california&per_page=25\nhttps://api.www.documentcloud.org/api/documents/search/?q=CDFA%20enforcement&per_page=25\n\n## Response Structure\n{\n  \"results\": [{\n    \"id\": \"23456789\",\n    \"slug\": \"cdfa-inspection-report\",  // CRITICAL: Save this for text retrieval\n    \"title\": \"CDFA Prop 12 Inspection Report\",\n    \"page_count\": 45,\n    \"canonical_url\": \"https://www.documentcloud.org/documents/23456789\"\n  }]\n}\n\n**CRITICAL for later retrieval:**\n- Save both \"id\" and \"slug\" fields\n- These are needed to construct text retrieval URL in Phase 3\n- canonical_url is for reference, not for text retrieval\n\n**In Discovery Phase:**\n- Search broadly with multiple terms\n- Save id AND slug for each document\n- Don't retrieve text yet"},"retryOnFail":true,"typeVersion":4.2}],"active":false,"pinData":{"Trigger individual research (Webhook)":[{"json":{"body":{"lastName":"Davis","firstName":"Sam Tucker","reportGoal":"Find out more information","companyName":"Open Paws","linkedinURL":"https://www.linkedin.com/in/sam-tucker-vegan","companyDomain":"Open Paws"},"query":{},"params":{},"headers":{"host":"n8n.openpaws.ai","accept":"*/*","x-real-ip":"54.86.50.139","connection":"close","user-agent":"PostmanRuntime/7.51.0","content-type":"application/json","cache-control":"no-cache","postman-token":"5e05f763-f23f-4eee-8e05-b26185b56328","content-length":"235","accept-encoding":"gzip, deflate, br","x-forwarded-for":"103.11.246.62, 54.86.50.139","x-forwarded-port":"443","x-forwarded-proto":"https"},"webhookUrl":"https://n8n.openpaws.ai/webhook-test/osint-personal-profile","executionMode":"test"}}],"Trigger individual research from another workflow":[{"json":{"lastName":"Davis","firstName":"Sam Tucker","reportGoal":"Find out more information","companyName":"Open Paws","linkedinURL":"https://www.linkedin.com/in/sam-tucker-vegan","companyDomain":"Open Paws"}}]},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"1924d512-362d-41ef-9146-f01cce95b9e2","connections":{"GPT-5a":{"ai_languageModel":[[{"node":"Step 2: Prioritization","type":"ai_languageModel","index":0}]]},"GPT-5b":{"ai_languageModel":[[{"node":"Step 4: Report Writing","type":"ai_languageModel","index":0}]]},"GPT-5c":{"ai_languageModel":[[{"node":"Step 5: Verification","type":"ai_languageModel","index":0}]]},"GPT-5d":{"ai_languageModel":[[{"node":"Step 6: Fixing Hallucinations","type":"ai_languageModel","index":0}]]},"Hunter":{"main":[[{"node":"Set Fields","type":"main","index":0}]]},"Set Fields":{"main":[[{"node":"Step 1: Discovery","type":"main","index":0}]]},"Set Output":{"main":[[{"node":"If Source is Webhook","type":"main","index":0}]]},"Set Report":{"main":[[{"node":"Step 5: Verification","type":"main","index":0}]]},"Auto Fallback":{"ai_languageModel":[[{"node":"Step 1: Discovery","type":"ai_languageModel","index":1}]]},"Get a profile":{"main":[[{"node":"Hunter","type":"main","index":0}]]},"Auto Fallback1":{"ai_languageModel":[[{"node":"Step 2: Prioritization","type":"ai_languageModel","index":1}]]},"Auto Fallback2":{"ai_languageModel":[[{"node":"Step 3: Retrieval","type":"ai_languageModel","index":1}]]},"Auto Fallback3":{"ai_languageModel":[[{"node":"Step 4: Report Writing","type":"ai_languageModel","index":1}]]},"Auto Fallback4":{"ai_languageModel":[[{"node":"Step 5: Verification","type":"ai_languageModel","index":1},{"node":"Structured Output Parser","type":"ai_languageModel","index":0}]]},"Auto Fallback5":{"ai_languageModel":[[{"node":"Step 6: Fixing Hallucinations","type":"ai_languageModel","index":1}]]},"Simple Memory6":{"ai_memory":[[{"node":"Step 6: Fixing Hallucinations","type":"ai_memory","index":0}]]},"If Empty Output":{"main":[[{"node":"Step 6: Fixing Hallucinations","type":"main","index":0}],[{"node":"Step 5: Verification","type":"main","index":0}]]},"Create a profile":{"main":[[{"node":"Wait before next research step","type":"main","index":0}]]},"Gemini 2.5 Flash":{"ai_languageModel":[[{"node":"Step 1: Discovery","type":"ai_languageModel","index":0}]]},"If Empty Output1":{"main":[[{"node":"Step 5: Verification","type":"main","index":0}],[{"node":"If hallucinations present","type":"main","index":0}]]},"Plural Retrieval":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Gemini 2.5 Flash2":{"ai_languageModel":[[{"node":"Step 3: Retrieval","type":"ai_languageModel","index":0}]]},"Plural Discovery1":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"Step 1: Discovery":{"main":[[{"node":"Retry if Tools Not Used","type":"main","index":0}]]},"Step 3: Retrieval":{"main":[[{"node":"Retry if Tools Not Used1","type":"main","index":0}]]},"Embeddings OpenAI2":{"ai_embedding":[[{"node":"Search Open Paws Database2","type":"ai_embedding","index":0}]]},"LegiScan Discovery":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"LegiScan Retrieval":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Think Tool Analysis":{"ai_tool":[[{"node":"Step 4: Report Writing","type":"ai_tool","index":0}]]},"If Source is Webhook":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}],[{"node":"Final Output","type":"main","index":0}]]},"Step 5: Verification":{"main":[[{"node":"If Empty Output1","type":"main","index":0}]]},"Think Tool Analysis2":{"ai_tool":[[{"node":"Step 6: Fixing Hallucinations","type":"ai_tool","index":0}]]},"Step 2: Prioritization":{"main":[[{"node":"Retry if Response Empty","type":"main","index":0}]]},"Step 4: Report Writing":{"main":[[{"node":"Retry if Response Empty1","type":"main","index":0}]]},"DocumentCloud Discovery":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"DocumentCloud Retrieval":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Google Search Discovery":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"Retry if Response Empty":{"main":[[{"node":"Step 2: Prioritization","type":"main","index":0}],[{"node":"Step 3: Retrieval","type":"main","index":0}]]},"Retry if Tools Not Used":{"main":[[{"node":"Step 1: Discovery","type":"main","index":0}],[{"node":"Step 2: Prioritization","type":"main","index":0}]]},"Court Listener Discovery":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"Jina URL Text Extraction":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Retry if Response Empty1":{"main":[[{"node":"Step 4: Report Writing","type":"main","index":0}],[{"node":"Set Report","type":"main","index":0}]]},"Retry if Tools Not Used1":{"main":[[{"node":"Step 3: Retrieval","type":"main","index":0}],[{"node":"Step 4: Report Writing","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Step 5: Verification","type":"ai_outputParser","index":0}]]},"Twitter Profile Scraper1":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Court Listener Retrieveal":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"If hallucinations present":{"main":[[{"node":"Step 6: Fixing Hallucinations","type":"main","index":0}],[{"node":"Set Output","type":"main","index":0}]]},"Think Tool Prioritization":{"ai_tool":[[{"node":"Step 2: Prioritization","type":"ai_tool","index":0}]]},"Instagram Profile Scraper1":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Search Open Paws Database2":{"ai_tool":[[{"node":"Step 1: Discovery","type":"ai_tool","index":0}]]},"Prepare research input fields":{"main":[[{"node":"Create a profile","type":"main","index":0}]]},"Step 6: Fixing Hallucinations":{"main":[[{"node":"If Empty Output","type":"main","index":0}]]},"Wait before next research step":{"main":[[{"node":"Get a profile","type":"main","index":0}]]},"Linkedin Person and Company Scraper1":{"ai_tool":[[{"node":"Step 3: Retrieval","type":"ai_tool","index":0}]]},"Trigger individual research (Webhook)":{"main":[[{"node":"Prepare research input fields","type":"main","index":0}]]},"Trigger individual research from another workflow":{"main":[[{"node":"Prepare research input fields","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":68,"nodeTypes":{"n8n-nodes-base.if":{"count":8},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.hunter":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.humanticAi":{"count":2},"n8n-nodes-base.jinaAiTool":{"count":1},"n8n-nodes-base.stickyNote":{"count":10},"@n8n/n8n-nodes-langchain.agent":{"count":5},"n8n-nodes-base.httpRequestTool":{"count":8},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.chainLlm":{"count":1},"@n8n/n8n-nodes-langchain.toolThink":{"count":3},"n8n-nodes-base.executeWorkflowTrigger":{"count":1},"@n8n/n8n-nodes-langchain.toolHttpRequest":{"count":4},"@n8n/n8n-nodes-langchain.embeddingsOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenRouter":{"count":12},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@n8n/n8n-nodes-langchain.vectorStoreWeaviate":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Open Paws","username":"openpaws","bio":"Open Paws is a nonprofit building open-source AI tools to accelerate animal advocacy. \n\nWe create machine learning models and automation workflows trained on real-world campaign data to help end industrial animal exploitation. \n\nAll tools are free, transparent, and designed for real-world impact.","verified":true,"links":["https://www.openpaws.ai/"],"avatar":"https://gravatar.com/avatar/c23bc104617a5a562fe9efe0dad98e78652efd6171b81a960cbbcdf236d09cc8?r=pg&d=retro&size=200"},"nodes":[{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":136,"icon":"file:hunter.png","name":"n8n-nodes-base.hunter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hunter/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/hunter/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Hunter"},"iconData":{"type":"file","fileBuffer":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAw1BMVEUAAAD/Qhz/VxX/RQD/RQD/RAD/PQH/SAD/RQD/OwH/RgD/OQD/SAD/SAD/RgD/QQD/RgD/RAD/QQD/OgD/SgD/SgD/SAD/RAD/QgD/QgD/SAD/SgD/SQD/SAD/SAD/RgD/SAD/SgD/SQD/RAD/RQD/QwD/QgD/PAD/SAD/RAD/SAD/RgD/RgD/RAD/RQD/QgD/QwD/QgD/SwD/TQD/SAD/RwD/QwD/QwD/QgD/PgD/RAD/RQD/SQD/TQD/TAD/TgD/VQBe3z92AAAAO3RSTlMABAL6/fwG/PcKZw7XyJYuYVQbF/nxwoBLMvTt59zPzbyxkoR7OikS4qiejId4c1BGQfTitaZbPSclIH7mBkUAAAKqSURBVEjHxZbXdqMwEIYHVCg27r3bcUlPNj1hJPL+T7WSkiCzwWBf7dg+HMx8558iaYD/Z457KuGqryGPRh2oD8E11NFEEx/udHCNVcWA5URrgjhrAwzE5+VRCIdrSYhsQrAQPm7KGRVPECEjSQ3+oCIvwCktVgBrSWKG09aTZDSefJTJOBwGHUrjOKZVdVHoDfBCCfX0rotMExRjZUxG3HELe/5e85DGxr4uXmcAvACoXJ8LqjWs6TockHFVYcKpQJ/GGWN0XAcnl3ChvhDI9iQoo6lM/jps+JJkFAh6xGSDr/kyfREbBysiJ57QfzGstsD9LbJOCMsS3u128yyYKXRvl+rYpZsJShmRN0Zb6oSI6LVU2dx9jd05skxxmTfaQhBwuEqIUiSyutEbjvPvvnI4E75K1jLKCa8qoK2GJjbsXL/ZbjhQmSMm3RFmcsHorNEc3J0hNbI0Ob/s34YvrwpQnz/dZB4O6z1kmWwS7Dx00OomQkhvvGzpuNY01FGEgmX6TgillO3dK/PY56WjGv9SN6s+lBnELOeYZu612Kz9s14cWCmVUiNiGRjA/OZ4BOKLhm3nsBvTciJZ8G/CNIcUu1NKfDF9B+dHZDcrjoupcqGo2s3DoYGHRajyRyG68749PV03eDoYF1X+iXxc9u8D5bmX/NhjBxRigdVVs679eUroRYMezVWIxej5fuemo8Mim5FCcgg5rn1oh9Tfbpl2lJc+kb2hemrdMzI3if+bEFcO6PjzDyW+SBlLrJVCwSBqVwX5h1AnmCKKmCihZI/AqKI1Chm+8qTP0r3hNYGXDkkY9ASSL4hhVDT+7XiphNUEzWnMxC04R41WaDdmKJARSrbHTX6dL7+/mAhMptwi5RC0wovHpXvK64Wm3rZwkjlcUaeaW9D3v/GpwMArl9LJAAAAAElFTkSuQmCC"},"displayName":"Hunter","typeVersion":1,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":407,"icon":"file:humanticai.svg","name":"n8n-nodes-base.humanticAi","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.humanticai/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/humanticai/"}]},"categories":["Analytics"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Humantic AI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDEiIHZpZXdCb3g9IjAgMCA0MCA0MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2LjQ3MjIgMzAuOTA5NkMzOC4yOTQzIDI3LjkyNyAzOS4zNDQzIDI0LjQyMTMgMzkuMzQ0MyAyMC42NzAzQzM5LjM0NDMgOS44MDY3MSAzMC41MzY3IDEgMTkuNjcyMSAxQzguODA3NTEgMSAwIDkuODA2NzEgMCAyMC42NzAzQzAgMzEuNTM0IDguODA3NTEgNDAuMzQwNyAxOS42NzIxIDQwLjM0MDdDMjMuOTUwOSA0MC4zNDA3IDI3LjkxMDYgMzguOTc0OCAzMS4xMzg5IDM2LjY1NTJMNDAgNDAuMDEyOEwzNi40NzIyIDMwLjkwOTZaIiBmaWxsPSIjRkVCRDAwIi8+CjxwYXRoIGQ9Ik0zMy4yMTQgMjguOTA3NkMzNC42NzU2IDI2LjUwODEgMzUuNTE3OSAyMy42ODc5IDM1LjUxNzkgMjAuNjcwNEMzNS41MTc5IDExLjkzMDkgMjguNDUyNiA0Ljg0NjE5IDE5LjczNyA0Ljg0NjE5QzExLjAyMTQgNC44NDYxOSAzLjk1NjA1IDExLjkzMDkgMy45NTYwNSAyMC42NzA0QzMuOTU2MDUgMjkuNDA5OCAxMS4wMjE0IDM2LjQ5NDUgMTkuNzM3IDM2LjQ5NDVDMjMuMTY5NCAzNi40OTQ1IDI2LjM0NTkgMzUuMzk1NyAyOC45MzU2IDMzLjUyOTdMMzYuMDQ0IDM2LjIzMDhMMzMuMjE0IDI4LjkwNzZaIiBmaWxsPSIjRkZDRDNBIi8+CjxwYXRoIGQ9Ik0yOS4xNDA5IDI2LjM5MDdDMzAuMTUyMSAyNC43MjQ0IDMwLjczNDggMjIuNzY1OSAzMC43MzQ4IDIwLjY3MDRDMzAuNzM0OCAxNC42MDEzIDI1Ljg0NzEgOS42ODE0IDE5LjgxNzggOS42ODE0QzEzLjc4ODYgOS42ODE0IDguOTAwODggMTQuNjAxMyA4LjkwMDg4IDIwLjY3MDRDOC45MDA4OCAyNi43Mzk1IDEzLjc4ODYgMzEuNjU5NCAxOS44MTc4IDMxLjY1OTRDMjIuMTkyMyAzMS42NTk0IDI0LjM4OTcgMzAuODk2MyAyNi4xODEzIDI5LjYwMDVMMzEuMDk4NyAzMS40NzYzTDI5LjE0MDkgMjYuMzkwN1oiIGZpbGw9IiNGRkQ5NkIiLz4KPHBhdGggZD0iTTI1LjUyMTEgMjQuMTAyNUMyNi4xMzE4IDIzLjEwMjcgMjYuNDgzNyAyMS45Mjc2IDI2LjQ4MzcgMjAuNjcwM0MyNi40ODM3IDE3LjAyODkgMjMuNTMxNyAxNC4wNzY5IDE5Ljg5MDMgMTQuMDc2OUMxNi4yNDg4IDE0LjA3NjkgMTMuMjk2OSAxNy4wMjg5IDEzLjI5NjkgMjAuNjcwM0MxMy4yOTY5IDI0LjMxMTcgMTYuMjQ4OCAyNy4yNjM3IDE5Ljg5MDMgMjcuMjYzN0MyMS4zMjQ0IDI3LjI2MzcgMjIuNjUxNSAyNi44MDU5IDIzLjczMzUgMjYuMDI4NEwyNi43MDM1IDI3LjE1MzhMMjUuNTIxMSAyNC4xMDI1WiIgZmlsbD0iI0ZGRjREMyIvPgo8L3N2Zz4K"},"displayName":"Humantic AI","typeVersion":1,"nodeCategories":[{"id":10,"name":"Analytics"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":837,"icon":"fa:sign-out-alt","name":"n8n-nodes-base.executeWorkflowTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"When Executed by Another Workflow","color":"#ff6d5a"},"iconData":{"icon":"sign-out-alt","type":"icon"},"displayName":"Execute Workflow Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1141,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Embeddings"]}}},"group":"[\"transform\"]","defaults":{"name":"Embeddings OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"Embeddings OpenAI","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1163,"icon":"fa:database","name":"@n8n/n8n-nodes-langchain.memoryBufferWindow","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["For beginners"]}}},"group":"[\"transform\"]","defaults":{"name":"Simple Memory"},"iconData":{"icon":"database","type":"icon"},"displayName":"Simple Memory","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1268,"icon":"file:httprequest.svg","name":"@n8n/n8n-nodes-langchain.toolHttpRequest","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iIzAwMDRGNSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNDAgMjBDNDAgOC45NTMgMzEuMDQ3IDAgMjAgMFMwIDguOTUzIDAgMjBzOC45NTMgMjAgMjAgMjAgMjAtOC45NTMgMjAtMjBNMjAgMzYuOTQ2Yy0xLjExNSAwLTIuODYyLS45NzktNC41LTQuMjQ3LS43MDQtMS40MDctMS4zMDQtMy4xNTYtMS43NDctNS4wMTRIMjYuMTljLS4zODYgMS44NTUtLjk4NiAzLjYwNS0xLjY5IDUuMDE0LTEuNjM4IDMuMjY4LTMuMzg1IDQuMjQ3LTQuNSA0LjI0N00xMi45MDYgMjBjMCAxLjYxLjEwMyAzLjE2NC4yOTQgNC42M2gxMy42YTM2IDM2IDAgMCAwIC4yOTQtNC42M2MwLTEuNjEtLjEwMy0zLjE2NC0uMjk0LTQuNjNIMTMuMmEzNiAzNiAwIDAgMC0uMjk0IDQuNjNNMjAgMy4wNTRjMS4xMTUgMCAyLjg2Mi45NzcgNC41IDQuMjQ2LjcwNyAxLjQxNCAxLjMwNyAzLjEwNyAxLjY5MiA1LjAxNUgxMy43NWMuNDQzLTEuOTEgMS4wNDQtMy42MDIgMS43NS01LjAxNCAxLjYzOC0zLjI3IDMuMzg1LTQuMjQ3IDQuNS00LjI0N00zMC4xNDggMjBjMC0xLjU5LS4wOTQtMy4xMzgtLjMyNS00LjYzaDYuNDgxYy40MjEgMS40NzIuNjQyIDMuMDI2LjY0MiA0LjYzcy0uMjIgMy4xNTgtLjY0MiA0LjYzaC02LjQ4MWMuMjMxLTEuNDkyLjMyNS0zLjA0LjMyNS00LjYzTTI2LjI3NyA0LjI1NWMxLjM2IDIuMTA1IDIuNDM0IDQuODc3IDMuMSA4LjA2aDUuNzI4YTE2Ljk4IDE2Ljk4IDAgMCAwLTguODI4LTguMDZtLTE1LjY1NCA4LjA2aC01LjczYzEuODU4LTMuNjQ3IDUtNi41MzIgOC44My04LjA2LTEuMzYgMi4xMDUtMi40MzQgNC44NzctMy4xIDguMDZNMy4wNTQgMjBjMCAxLjYwMy4yMjMgMy4xNTcuNjQgNC42M2g2LjQyOGE0MCA0MCAwIDAgMS0uMjctNC42M2MwLTEuNTk0LjA5NC0zLjE0Mi4yNy00LjYzSDMuNjk1YTE3IDE3IDAgMCAwLS42NCA0LjYzbTIzLjIyMyAxNS43NDNjMS4zNi0yLjEwNCAyLjQzNC00Ljg3NSAzLjEtOC4wNThoNS43MjhhMTYuOTYgMTYuOTYgMCAwIDEtOC44MjggOC4wNThtLTEyLjU1NCAwYTE3IDE3IDAgMCAxLTguODMtOC4wNThoNS43M2MuNjY2IDMuMTgzIDEuNzQgNS45NTQgMy4xIDguMDU4IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4="},"displayName":"HTTP Request Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1281,"icon":"file:openrouter.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenRouter Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjOTRBM0I4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDI0IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5PcGVuUm91dGVyPC90aXRsZT48cGF0aCBkPSJNMTYuODA0IDEuOTU3bDcuMjIgNC4xMDV2LjA4N0wxNi43MyAxMC4yMWwuMDE3LTIuMTE3LS44MjEtLjAzYy0xLjA1OS0uMDI4LTEuNjExLjAwMi0yLjI2OC4xMS0xLjA2NC4xNzUtMi4wMzguNTc3LTMuMTQ3IDEuMzUyTDguMzQ1IDExLjAzYy0uMjg0LjE5NS0uNDk1LjMzNi0uNjguNDU1bC0uNTE1LjMyMi0uMzk3LjIzNC4zODUuMjMuNTMuMzM4Yy40NzYuMzE0IDEuMTcuNzk2IDIuNzAxIDEuODY2IDEuMTEuNzc1IDIuMDgzIDEuMTc3IDMuMTQ3IDEuMzUybC4zLjA0NWMuNjk0LjA5MSAxLjM3NS4wOTQgMi44MjUuMDMzbC4wMjItMi4xNTkgNy4yMiA0LjEwNXYuMDg3TDE2LjU4OSAyMmwuMDE0LTEuODYyLS42MzUuMDIyYy0xLjM4Ni4wNDItMi4xMzcuMDAyLTMuMTM4LS4xNjItMS42OTQtLjI4LTMuMjYtLjkyNi00Ljg4MS0yLjA1OWwtMi4xNTgtMS41YTIxLjk5NyAyMS45OTcgMCAwMC0uNzU1LS40OThsLS40NjctLjI4YTU1LjkyNyA1NS45MjcgMCAwMC0uNzYtLjQzQzIuOTA4IDE0LjczLjU2MyAxNC4xMTYgMCAxNC4xMTZWOS44ODhsLjE0LjAwNGMuNTY0LS4wMDcgMi45MS0uNjIyIDMuODA5LTEuMTI0bDEuMDE2LS41OC40MzgtLjI3NGMuNDI4LS4yOCAxLjA3Mi0uNzI2IDIuNjg2LTEuODUzIDEuNjIxLTEuMTMzIDMuMTg2LTEuNzggNC44ODEtMi4wNTkgMS4xNTItLjE5IDEuOTc0LS4yMTMgMy44MTQtLjEzOGwuMDItMS45MDd6Ij48L3BhdGg+PC9zdmc+Cg=="},"displayName":"OpenRouter Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1289,"icon":"fa:brain","name":"@n8n/n8n-nodes-langchain.toolThink","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolthink/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Think"},"iconData":{"icon":"brain","type":"icon"},"displayName":"Think Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1308,"icon":"file:weaviate.svg","name":"@n8n/n8n-nodes-langchain.vectorStoreWeaviate","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Tools":["Other Tools"],"Vector Stores":["Other Vector Stores"]}}},"group":"[\"transform\"]","defaults":{"name":"Weaviate Vector Store"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjk2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjk2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIHhtbG5zOmJ4PSJodHRwczovL2JveHktc3ZnLmNvbSI+PHRpdGxlPnFkcmFudDwvdGl0bGU+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSIzOS44NCIgeTE9Ii0yMzg1LjI4IiB4Mj0iMzQuMDEiIHkyPSItMjQ0Mi40OCIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIDI0MzMuOTIpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNzViZTJjIi8+PHN0b3Agb2Zmc2V0PSIwLjg2IiBzdG9wLWNvbG9yPSIjOWRjMDNiIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC0yIiB4MT0iMzcuMDYiIHkxPSItMjQwOS4xMiIgeDI9IjM3LjA2IiB5Mj0iLTIzOTAuMzciIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAyNDMzLjkyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzIzOGQzNyIvPjxzdG9wIG9mZnNldD0iMC45NCIgc3RvcC1jb2xvcj0iIzM1NTM3ZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMyIgeDE9IjM1LjA3IiB5MT0iLTI0MTguODMiIHgyPSIzNy45OCIgeTI9Ii0yMzk5Ljc1IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMjQzMy45MikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM2N2Q4NGQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzNDg1MjIiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTQiIHgxPSI2NC4wMyIgeTE9Ii0yNDMzLjg3IiB4Mj0iNjQuMDMiIHkyPSItMjQwMC42MSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIDI0MzMuOTIpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZTRkMDBhIi8+PHN0b3Agb2Zmc2V0PSIwLjU2IiBzdG9wLWNvbG9yPSIjYzRkMTMyIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC01IiB4MT0iMTAuMDQiIHkxPSItMjQzMy44NyIgeDI9IjEwLjA0IiBocmVmPSIjbGluZWFyLWdyYWRpZW50LTQiLz48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC02IiB4MT0iNTYuNDMiIHkxPSItMjQwMC4yNSIgeDI9IjU2LjQzIiB5Mj0iLTIzODkuMTYiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAyNDMzLjkyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzhhYjExYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzZlYWYwMiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNyIgeDE9IjY0LjUxIiB5MT0iLTI0MTMuNjQiIHgyPSI2Mi4xOCIgeTI9Ii0yMzk0Ljk3IiBocmVmPSIjbGluZWFyLWdyYWRpZW50Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtOCIgeDE9IjE3LjY0IiB5MT0iLTI0MDAuMjEiIHgyPSIxNy42NCIgeTI9Ii0yMzg5LjE3IiBocmVmPSIjbGluZWFyLWdyYWRpZW50LTYiLz48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC05IiB4MT0iMTEuODIiIHkxPSItMjQxMy41NSIgeDI9IjkuNTMiIHkyPSItMjM5MS4xIiBocmVmPSIjbGluZWFyLWdyYWRpZW50Ii8+PGJ4OmV4cG9ydD48Yng6ZmlsZSBmb3JtYXQ9InN2ZyIgcGF0aD0icWRyYW50LnN2ZyIvPjwvYng6ZXhwb3J0PjwvZGVmcz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgzLjMzMTkzOCwgMCwgMCwgMy4zMzE5MzgsIDMuNjY1OTg1LCA2MC4yMjM2NzUpIiBzdHlsZT0iIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03MS42Nyw3Ljk1TDU4Ljg1LjVjLTIuMTUtMS4yNS00Ljg1LjMxLTQuODUsMi43OXYxOC44NGwtOS4xLTUuMjRjLTQuODgtMi44MS0xMC44OC0yLjgtMTUuNzQuMDJsLTkuMDYsNS4yNFYzLjI4YzAtMi40OS0yLjY5LTQuMDQtNC44NS0yLjc5TDIuNCw3Ljk0Yy0xLjQ5Ljg2LTIuNCwyLjQ2LTIuNCw0LjE4djE3LjcxYzAsMS4yNC4zMSwyLjQyLjg4LDMuNDZoMGMuNTgsMS4wNywxLjQyLDEuOTgsMi40OCwyLjY2bDYuNjEsNC4yMiw1LjA2LDMuMjJjMy4wNCwxLjkzLDYuOTUsMS43OCw5LjgzLS4zOWwuMzgtLjNzLjA3LS4wNi4xMS0uMDhsNy42My01LjgyYzIuMjMtMS43MSw1Ljg4LTEuNzEsOC4xMiwwbDcuNjEsNS44cy4wMy4wMi4wNC4wM2wuNDcuMzdjMi44NywyLjE3LDYuNzksMi4zMiw5LjgzLjM5bDUuMDYtMy4yMyw2LjYzLTQuMjJjMS4wNC0uNjcsMS44OC0xLjU5LDIuNDYtMi42NHMuODktMi4yMy44OS0zLjQ3VjEyLjEzaDBjMC0xLjcyLS45MS0zLjMyLTIuNC00LjE4aC4wMVoiIHN0eWxlPSJmaWxsOiB1cmwoJnF1b3Q7I2xpbmVhci1ncmFkaWVudCZxdW90Oyk7IHN0cm9rZS13aWR0aDogMHB4OyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU0LjEsMzMuNjJ2Ni4zNmMwLDEuOTYtMS40MSwzLjU2LTMuMTEsMy41Ni0uNjcsMC0xLjUxLS4zNC0yLjI5LS45M2wtNy42MS01LjhjLTIuMjMtMS43MS01Ljg4LTEuNzEtOC4xMiwwbC03LjYzLDUuODJjLS43Ni41Ny0xLjI1Ljc0LTEuOTcuNzQtMS43Ny4wMi0zLjM1LTEuMzEtMy4zNS0zLjM5di02LjM0bDEwLjktNy4wNGMzLjc0LTIuNDEsOC41Mi0yLjQxLDEyLjI1LDBsMTAuOTIsNi44OHYuMTNoMFoiIHN0eWxlPSJmaWxsOiB1cmwoJnF1b3Q7I2xpbmVhci1ncmFkaWVudC0yJnF1b3Q7KTsgc3Ryb2tlLXdpZHRoOiAwcHg7Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTQsMjIuMTNsLjAzLDExLjU5LTEwLjg0LTYuOTNjLTMuNzMtMi4zOS04LjUxLTIuMzktMTIuMjUsMGwtMTAuODcsNi45NC4wMi0xMS41OCw5LjA3LTUuMjVjNC44Ni0yLjgyLDEwLjg2LTIuODIsMTUuNzQtLjAybDkuMSw1LjI0aDBaIiBzdHlsZT0iZmlsbDogdXJsKCZxdW90OyNsaW5lYXItZ3JhZGllbnQtMyZxdW90Oyk7IHN0cm9rZS13aWR0aDogMHB4OyIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTc0LjA3LDEyLjEzdjE3LjdjMCwxLjI1LS4zMSwyLjQyLS44OSwzLjQ3bC0xOS4xOS0xMS4xN1YzLjI4YzAtMi40OSwyLjctNC4wNCw0Ljg1LTIuNzlsMTIuODIsNy40NmMxLjQ5Ljg2LDIuNCwyLjQ2LDIuNCw0LjE4aDBaIiBzdHlsZT0iZmlsbDogdXJsKCZxdW90OyNsaW5lYXItZ3JhZGllbnQtNCZxdW90Oyk7IHN0cm9rZS13aWR0aDogMHB4OyIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTIwLjA4LDMuMjh2MTguODdMLjg4LDMzLjMxQy4zMSwzMi4yNiwwLDMxLjA4LDAsMjkuODRWMTIuMTNDMCwxMC40MS45MSw4LjgxLDIuNCw3Ljk1TDE1LjIzLjQ5YzIuMTUtMS4yNSw0Ljg1LjMxLDQuODUsMi43OWgwWiIgc3R5bGU9ImZpbGw6IHVybCgmcXVvdDsjbGluZWFyLWdyYWRpZW50LTUmcXVvdDspOyBzdHJva2Utd2lkdGg6IDBweDsiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik01MC43Miw0My4zMmMxLjcsMCwzLjMtMS4zNCwzLjMtMy4yOHYtNi4zNnMxMC4xMyw2LjQ3LDEwLjEzLDYuNDdsLTUuMTIsMy4yNmMtMy4wNCwxLjkzLTYuOTUsMS43OS05LjgzLS4zOWwtLjQ4LS4zOGMuNzIuNDksMS4zMy42OCwyLC42OGgwWiIgc3R5bGU9ImZpbGw6IHVybCgmcXVvdDsjbGluZWFyLWdyYWRpZW50LTYmcXVvdDspOyBzdHJva2Utd2lkdGg6IDBweDsiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik03My4xOCwzMy4zMWMtLjU4LDEuMDUtMS40MiwxLjk3LTIuNDYsMi42NGwtNi42Myw0LjIyLTEwLjA4LTYuNDUtLjAzLTExLjU5LDE5LjE5LDExLjE4aDBaIiBzdHlsZT0iZmlsbDogdXJsKCZxdW90OyNsaW5lYXItZ3JhZGllbnQtNyZxdW90Oyk7IHN0cm9rZS13aWR0aDogMHB4OyIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTIwLjA4LDQwLjAzYzAsMS45NCwxLjYxLDMuNDcsMy4zLDMuMjguNzUtLjA5LDEuMzQtLjIsMS45NC0uNjZsLS40Ni4zNmMtMi44NywyLjE2LTYuNzksMi4zMi05LjgzLjM5bC01LjA2LTMuMjNoMHMxMC4xMS02LjQ2LDEwLjExLTYuNDZ2Ni4zMWgwWiIgc3R5bGU9ImZpbGw6IHVybCgmcXVvdDsjbGluZWFyLWdyYWRpZW50LTgmcXVvdDspOyBzdHJva2Utd2lkdGg6IDBweDsiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0yMC4wOCwyMi4xNXYxMS41N2wtMTAuMTEsNi40NWgwcy02LjYxLTQuMi02LjYxLTQuMmMtMS4wNS0uNjctMS45LTEuNTktMi40OC0yLjY2bDE5LjE5LTExLjE2aDBaIiBzdHlsZT0iZmlsbDogdXJsKCZxdW90OyNsaW5lYXItZ3JhZGllbnQtOSZxdW90Oyk7IHN0cm9rZS13aWR0aDogMHB4OyIvPjwvZz48L3N2Zz4="},"displayName":"Weaviate Vector Store","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":48,"name":"AI RAG"}],"image":[]}}