{
  "id":"port12ConversationEngine","name":"Portfolio 12A - Conversational AI Lead and Support Engine","active":false,
  "nodes":[
    {"parameters":{"httpMethod":"POST","path":"portfolio-conversation-engine","responseMode":"responseNode","options":{}},"webhookId":"e1210000-0000-4000-8000-000000000098","id":"e1210000-0000-4000-8000-000000000001","name":"Conversation Event","type":"n8n-nodes-base.webhook","typeVersion":2.1,"position":[-1080,0]},
    {"parameters":{"jsCode":"const i=$json.body??$json; const required=['providerEventId','sessionId','channel','botMode','message','promptVersion']; const missing=required.filter(k=>i[k]===undefined||i[k]===null||i[k]===''); if(missing.length)return[{json:{valid:false,error:`Missing conversation fields: ${missing.join(', ')}`}}]; if(!['chat','voice'].includes(i.channel)||!['lead-generation','customer-support'].includes(i.botMode))return[{json:{valid:false,error:'Unsupported channel or bot mode'}}]; return[{json:{valid:true,providerEventId:String(i.providerEventId),sessionId:String(i.sessionId),channel:i.channel,botMode:i.botMode,message:String(i.message),promptVersion:Number(i.promptVersion),email:i.email||null,teamSize:Number(i.teamSize||1),consent:i.consent===true,simulateModelFailure:i.simulateModelFailure===true,idempotencyKey:`chatbot:${i.providerEventId}`}}];"},"id":"e1210000-0000-4000-8000-000000000002","name":"Validate Conversation","type":"n8n-nodes-base.code","typeVersion":2,"position":[-860,0]},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"e1210000-0000-4000-8000-000000000003","leftValue":"={{ $json.valid }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"e1210000-0000-4000-8000-000000000004","name":"Valid Conversation?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[-640,0]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/chatbot/respond","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify($json) }}","options":{"timeout":10000}},"id":"e1210000-0000-4000-8000-000000000005","name":"Run Prompt Router","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[-400,-100],"onError":"continueRegularOutput","retryOnFail":true,"maxTries":3,"waitBetweenTries":1000},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"e1210000-0000-4000-8000-000000000006","leftValue":"={{ Boolean($json.responseId) }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"e1210000-0000-4000-8000-000000000007","name":"Model Responded?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[-160,-100]},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"e1210000-0000-4000-8000-000000000008","leftValue":"={{ $json.requiresHuman }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"e1210000-0000-4000-8000-000000000009","name":"Human Required?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[80,-180]},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"e1210000-0000-4000-8000-000000000010","leftValue":"={{ $json.intent === 'qualified-lead' && $('Validate Conversation').item.json.consent && Boolean($('Validate Conversation').item.json.email) }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"e1210000-0000-4000-8000-000000000011","name":"Create Consented Lead?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[320,-260]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/chatbot/leads","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify({providerEventId:$('Validate Conversation').item.json.providerEventId,sessionId:$('Validate Conversation').item.json.sessionId,email:$('Validate Conversation').item.json.email,teamSize:$('Validate Conversation').item.json.teamSize,consent:$('Validate Conversation').item.json.consent,idempotencyKey:`${$('Validate Conversation').item.json.idempotencyKey}:lead`}) }}","options":{"timeout":10000}},"id":"e1210000-0000-4000-8000-000000000012","name":"Create CRM Lead","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[560,-340]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:true,status:'lead-captured',conversation:$('Run Prompt Router').item.json,lead:$json}) }}","options":{"responseCode":200}},"id":"e1210000-0000-4000-8000-000000000013","name":"Return Lead Conversation","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[800,-340]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:true,status:'conversation-response',conversation:$json,leadCreated:false}) }}","options":{"responseCode":200}},"id":"e1210000-0000-4000-8000-000000000014","name":"Return Conversation","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[560,-160]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/chatbot/handoffs","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify({providerEventId:$json.providerEventId,sessionId:$json.sessionId,reason:'sensitive-or-unsupported-request',idempotencyKey:`${$('Validate Conversation').item.json.idempotencyKey}:handoff`}) }}","options":{"timeout":10000}},"id":"e1210000-0000-4000-8000-000000000015","name":"Create Human Handoff","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[320,20]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:true,status:'human-handoff',handoff:$json,automatedReplySent:false}) }}","options":{"responseCode":202}},"id":"e1210000-0000-4000-8000-000000000016","name":"Return Human Handoff","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[560,20]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:false,status:'invalid-conversation',error:$json.error}) }}","options":{"responseCode":400}},"id":"e1210000-0000-4000-8000-000000000017","name":"Return Invalid Conversation","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[-400,180]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:false,status:'conversation-service-unavailable',retryable:true,error:'Model call failed after retries'}) }}","options":{"responseCode":503}},"id":"e1210000-0000-4000-8000-000000000018","name":"Return Model Failure","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[80,120]}
  ],
  "connections":{"Conversation Event":{"main":[[{"node":"Validate Conversation","type":"main","index":0}]]},"Validate Conversation":{"main":[[{"node":"Valid Conversation?","type":"main","index":0}]]},"Valid Conversation?":{"main":[[{"node":"Run Prompt Router","type":"main","index":0}],[{"node":"Return Invalid Conversation","type":"main","index":0}]]},"Run Prompt Router":{"main":[[{"node":"Model Responded?","type":"main","index":0}]]},"Model Responded?":{"main":[[{"node":"Human Required?","type":"main","index":0}],[{"node":"Return Model Failure","type":"main","index":0}]]},"Human Required?":{"main":[[{"node":"Create Human Handoff","type":"main","index":0}],[{"node":"Create Consented Lead?","type":"main","index":0}]]},"Create Consented Lead?":{"main":[[{"node":"Create CRM Lead","type":"main","index":0}],[{"node":"Return Conversation","type":"main","index":0}]]},"Create CRM Lead":{"main":[[{"node":"Return Lead Conversation","type":"main","index":0}]]},"Create Human Handoff":{"main":[[{"node":"Return Human Handoff","type":"main","index":0}]]}},
  "settings":{"executionOrder":"v1"},"pinData":{},"versionId":"e1210000-0000-4000-8000-000000000099","meta":{"templateCredsSetupCompleted":true},"tags":[]
}
