Xpersona Agent
Answer multi-channel support queries with OpenAI RAG and Supabase
Quick overview Answers customer questions on Email, Live Chat, WhatsApp, Slack and Discord from your own documentation, retrieved through a Supabase vector store. Ungrounded answers, negative sentiment and explicit handover requests escalate to a human with a Zendesk ticket. Every conversation is categorised, logged and reported weekly. How it works A message arrives on Email, Live Chat, WhatsApp, Slack or Discord and is normalised into one schema, with an explicit branch per channel. Five guards run before a single model call is paid for: auto-replies and bounces, empty bodies, duplicate deliveries, oversized messages, and an explicit request for a human matched in six languages. Live chat receives an HTTP response on each of those paths, so a caller never waits on an open connection. The agent answers from your documentation, retrieved from a Supabase vector store wired as a tool, with Postgres-backed chat memory so history survives restarts. Confidence is scored on grounding rather than on answer length: did the agent search the knowledge base, and did the knowledge base return anything. A long, fluent answer with no retrieval behind it scores low. Greetings and thank-yous short circuit that test instead of failing it, so ordinary politeness does not open a support ticket. At or above the threshold, and without negative sentiment, the answer goes back on the originating channel. Email keeps the customer's own subject, Slack replies in thread. Otherwise the case escalates. The reason is derived from what already happened rather than re-decided, an AI step writes a short note for the human agent into the ticket body, and Zendesk gets a priority derived from sentiment. The chain keeps going if a step fails, so one outage cannot delete an entire escalation. Every conversation, answered or escalated, is categorised and logged to Google Sheets. A weekly job posts real figures to Slack, then archives them and purges old chat memory. A manual branch ingests your documentation, clearing the previous run first so re-running never duplicates anything. Setup Run the Supabase SQL from the note beside the ingestion branch. It creates the pgvector extension, three tables, the retrieval function and the indexes. Nothing retrieves anything before it exists, and chat memory has no retention before it exists. Set four workflow settings by hand: timezone, a 180 second execution timeout, successful production executions set to not save, failed ones set to save. n8n does not carry timezone, timeout or the execution-saving options across an import, so no template can ship them. Two minutes of work, and it keeps customer messages out of your execution history. Create the 12 n8n Variables listed in the Global Configuration note on the canvas. Four of them are specific to your instance and have no sensible default, so they show SET_ in the field until you fill them in. The other eight resolve on their own. Set SUPPORT_EMAIL before you go live: its default is a placeholder, and it is the From address on every reply. Connect credentials: IMAP, SMTP, WhatsApp, Slack for both trigger and API, a Discord bot, Zendesk, a Google Sheets service account, Supabase, OpenAI, Postgres on the same Supabase project, and Header Auth for both webhooks. Replace the Load Source Documents node with your real documentation source, keeping its output shape of title, url and content. It ships with three sample articles so the pipeline runs end to end straight after import. Create the Google Sheet with these columns, in order: userId, channel, message, category, sentiment, timestamp, aiResponse, confidence, escalated, escalationReason. Run the manual ingestion trigger once. It populates the knowledge base, and until it has, grounding scores zero and everything routes to a human, which is the intended fallback. Then test three paths: a question your documentation answers, a message asking for a human, and the same message sent twice. Delete any channel branch you do not use. Requirements Built and verified on n8n 2.32.7. It uses AI Agent 3.1, Postgres 2.7, Google Sheets 4.7 and Remove Duplicates 2, so an older release may not carry every node version used here. Supabase with pgvector enabled, plus direct Postgres access to the same project for chat memory and the metrics archive. OpenAI for the chat model and the embedding model. Zendesk, or another ticketing system if you swap that one node. A Google Sheet and a Google service account. Discord needs a relay bot. n8n has no native Discord trigger and Discord cannot send custom headers, so the endpoint cannot be a Discord Interactions URL. The relay must post a JSON body with four fields: id, content, channel_id and author.id. All four are used, and without channel_id the reply has nowhere to go. The exact body is in the Discord note on the canvas. Live chat callers should send message_id. Without it, deduplication falls back to a content hash bucketed per minute: enough for a provider retry, not a guarantee. Customization Confidence threshold and maximum message length live in the Workflow Configuration node. Chat memory retention lives in Weekly Configuration and defaults to 30 days. The chat model and embedding model are variables. Changing the embedding model also means changing the vector dimension in the setup SQL and recreating the knowledge base table. The knowledge base table name is a variable and is also hardcoded inside the retrieval function. Change one without the other and retrieval reads a table nothing writes to, with no error at all. Keyword gates cover English, Romanian, German, French, Spanish and Italian across handover detection, escalation reasons, categorisation and small talk. Keyword matching, not language detection: extend per market. Zendesk can be replaced by swapping a single node. The reason, the AI note, the priority and the Slack alert are all built upstream of it. Additional info Email replies carry the customer's own subject, prefixed with Re:, which is how Gmail and Outlook group a conversation. The SMTP node cannot set In-Reply-To or References, so grouping is by subject rather than by header: reliable in practice, not guaranteed by the standard. If you need strict RFC threading, swap the send step for an email API call. The three escalation steps continue on error, so a Zendesk or Slack outage cannot take the alert, the log row and the customer's HTTP response down with the ticket. The cost is that the Error Trigger stays quiet for those three, so a Zendesk failure is written into the Slack alert instead, in the channel a human is already watching. Chat memory is purged weekly, on a schedule you set in Weekly Configuration. The Google Sheets log is left to you on purpose: it holds message text and user identifiers, and the right retention depends on your jurisdiction rather than on a default someone else picked. Every identifier on the Slack, Discord and Google Sheets nodes is an expression resolved at runtime, which is what lets you move this template between environments by changing variables instead of editing nodes. The dropdowns show "Choose…" as a result. Anything else worth knowing is written into the notes on the canvas, beside the nodes it applies to.
Overall rank
#80
Adoption
No public adoption signal
Trust
Unknown
Freshness
Oct 9, 2026
Freshness
Last checked Oct 9, 2026
Best For
Answer multi-channel support queries with OpenAI RAG and Supabase is best for workflow, automation, ai agent workflows where documented compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
n8n, n8n, runtime-metrics, public facts pack
Overview
Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.
Self-declaredn8n
Overview
Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.
Overview
Executive Summary
Quick overview Answers customer questions on Email, Live Chat, WhatsApp, Slack and Discord from your own documentation, retrieved through a Supabase vector store. Ungrounded answers, negative sentiment and explicit handover requests escalate to a human with a Zendesk ticket. Every conversation is categorised, logged and reported weekly. How it works A message arrives on Email, Live Chat, WhatsApp, Slack or Discord and is normalised into one schema, with an explicit branch per channel. Five guards run before a single model call is paid for: auto-replies and bounces, empty bodies, duplicate deliveries, oversized messages, and an explicit request for a human matched in six languages. Live chat receives an HTTP response on each of those paths, so a caller never waits on an open connection. The agent answers from your documentation, retrieved from a Supabase vector store wired as a tool, with Postgres-backed chat memory so history survives restarts. Confidence is scored on grounding rather than on answer length: did the agent search the knowledge base, and did the knowledge base return anything. A long, fluent answer with no retrieval behind it scores low. Greetings and thank-yous short circuit that test instead of failing it, so ordinary politeness does not open a support ticket. At or above the threshold, and without negative sentiment, the answer goes back on the originating channel. Email keeps the customer's own subject, Slack replies in thread. Otherwise the case escalates. The reason is derived from what already happened rather than re-decided, an AI step writes a short note for the human agent into the ticket body, and Zendesk gets a priority derived from sentiment. The chain keeps going if a step fails, so one outage cannot delete an entire escalation. Every conversation, answered or escalated, is categorised and logged to Google Sheets. A weekly job posts real figures to Slack, then archives them and purges old chat memory. A manual branch ingests your documentation, clearing the previous run first so re-running never duplicates anything. Setup Run the Supabase SQL from the note beside the ingestion branch. It creates the pgvector extension, three tables, the retrieval function and the indexes. Nothing retrieves anything before it exists, and chat memory has no retention before it exists. Set four workflow settings by hand: timezone, a 180 second execution timeout, successful production executions set to not save, failed ones set to save. n8n does not carry timezone, timeout or the execution-saving options across an import, so no template can ship them. Two minutes of work, and it keeps customer messages out of your execution history. Create the 12 n8n Variables listed in the Global Configuration note on the canvas. Four of them are specific to your instance and have no sensible default, so they show SET_ in the field until you fill them in. The other eight resolve on their own. Set SUPPORT_EMAIL before you go live: its default is a placeholder, and it is the From address on every reply. Connect credentials: IMAP, SMTP, WhatsApp, Slack for both trigger and API, a Discord bot, Zendesk, a Google Sheets service account, Supabase, OpenAI, Postgres on the same Supabase project, and Header Auth for both webhooks. Replace the Load Source Documents node with your real documentation source, keeping its output shape of title, url and content. It ships with three sample articles so the pipeline runs end to end straight after import. Create the Google Sheet with these columns, in order: userId, channel, message, category, sentiment, timestamp, aiResponse, confidence, escalated, escalationReason. Run the manual ingestion trigger once. It populates the knowledge base, and until it has, grounding scores zero and everything routes to a human, which is the intended fallback. Then test three paths: a question your documentation answers, a message asking for a human, and the same message sent twice. Delete any channel branch you do not use. Requirements Built and verified on n8n 2.32.7. It uses AI Agent 3.1, Postgres 2.7, Google Sheets 4.7 and Remove Duplicates 2, so an older release may not carry every node version used here. Supabase with pgvector enabled, plus direct Postgres access to the same project for chat memory and the metrics archive. OpenAI for the chat model and the embedding model. Zendesk, or another ticketing system if you swap that one node. A Google Sheet and a Google service account. Discord needs a relay bot. n8n has no native Discord trigger and Discord cannot send custom headers, so the endpoint cannot be a Discord Interactions URL. The relay must post a JSON body with four fields: id, content, channel_id and author.id. All four are used, and without channel_id the reply has nowhere to go. The exact body is in the Discord note on the canvas. Live chat callers should send message_id. Without it, deduplication falls back to a content hash bucketed per minute: enough for a provider retry, not a guarantee. Customization Confidence threshold and maximum message length live in the Workflow Configuration node. Chat memory retention lives in Weekly Configuration and defaults to 30 days. The chat model and embedding model are variables. Changing the embedding model also means changing the vector dimension in the setup SQL and recreating the knowledge base table. The knowledge base table name is a variable and is also hardcoded inside the retrieval function. Change one without the other and retrieval reads a table nothing writes to, with no error at all. Keyword gates cover English, Romanian, German, French, Spanish and Italian across handover detection, escalation reasons, categorisation and small talk. Keyword matching, not language detection: extend per market. Zendesk can be replaced by swapping a single node. The reason, the AI note, the priority and the Slack alert are all built upstream of it. Additional info Email replies carry the customer's own subject, prefixed with Re:, which is how Gmail and Outlook group a conversation. The SMTP node cannot set In-Reply-To or References, so grouping is by subject rather than by header: reliable in practice, not guaranteed by the standard. If you need strict RFC threading, swap the send step for an email API call. The three escalation steps continue on error, so a Zendesk or Slack outage cannot take the alert, the log row and the customer's HTTP response down with the ticket. The cost is that the Error Trigger stays quiet for those three, so a Zendesk failure is written into the Slack alert instead, in the channel a human is already watching. Chat memory is purged weekly, on a schedule you set in Weekly Configuration. The Google Sheets log is left to you on purpose: it holds message text and user identifiers, and the right retention depends on your jurisdiction rather than on a default someone else picked. Every identifier on the Slack, Discord and Google Sheets nodes is an expression resolved at runtime, which is what lets you move this template between environments by changing variables instead of editing nodes. The dropdowns show "Choose…" as a result. Anything else worth knowing is written into the notes on the canvas, beside the nodes it applies to. Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
Profile only
Freshness
Oct 9, 2026
Vendor
N8n
Artifacts
0
Benchmarks
0
Last release
Unpublished
Install & run
Setup Snapshot
- 1
No published capability contract is available yet, so validate auth and request/response behavior manually.
- 2
Review the upstream n8n listing at https://n8n.io/workflows/11807-answer-multi-channel-support-queries-with-openai-rag-and-supaba/ before using production credentials.
Evidence & Timeline
Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.
Self-declaredn8n
Evidence & Timeline
Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.
Public facts
Evidence Ledger
Vendor (1)
Vendor
N8n
Security (1)
Handshake status
UNKNOWN
Events
Release & Crawl Timeline
Artifacts & Docs
Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.
Self-declaredn8n
Artifacts & Docs
Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.
Captured outputs
Artifacts Archive
Extracted files
0
Examples
0
Snippets
0
Languages
Unknown
Editorial read
Docs & README
Docs source
n8n
Editorial quality
thin
Quick overview Answers customer questions on Email, Live Chat, WhatsApp, Slack and Discord from your own documentation, retrieved through a Supabase vector store. Ungrounded answers, negative sentiment and explicit handover requests escalate to a human with a Zendesk ticket. Every conversation is categorised, logged and reported weekly. How it works A message arrives on Email, Live Chat, WhatsApp, Slack or Discord an
Full README
Quick overview Answers customer questions on Email, Live Chat, WhatsApp, Slack and Discord from your own documentation, retrieved through a Supabase vector store. Ungrounded answers, negative sentiment and explicit handover requests escalate to a human with a Zendesk ticket. Every conversation is categorised, logged and reported weekly.
How it works A message arrives on Email, Live Chat, WhatsApp, Slack or Discord and is normalised into one schema, with an explicit branch per channel. Five guards run before a single model call is paid for: auto-replies and bounces, empty bodies, duplicate deliveries, oversized messages, and an explicit request for a human matched in six languages. Live chat receives an HTTP response on each of those paths, so a caller never waits on an open connection. The agent answers from your documentation, retrieved from a Supabase vector store wired as a tool, with Postgres-backed chat memory so history survives restarts. Confidence is scored on grounding rather than on answer length: did the agent search the knowledge base, and did the knowledge base return anything. A long, fluent answer with no retrieval behind it scores low. Greetings and thank-yous short circuit that test instead of failing it, so ordinary politeness does not open a support ticket. At or above the threshold, and without negative sentiment, the answer goes back on the originating channel. Email keeps the customer's own subject, Slack replies in thread. Otherwise the case escalates. The reason is derived from what already happened rather than re-decided, an AI step writes a short note for the human agent into the ticket body, and Zendesk gets a priority derived from sentiment. The chain keeps going if a step fails, so one outage cannot delete an entire escalation. Every conversation, answered or escalated, is categorised and logged to Google Sheets. A weekly job posts real figures to Slack, then archives them and purges old chat memory. A manual branch ingests your documentation, clearing the previous run first so re-running never duplicates anything.
Setup Run the Supabase SQL from the note beside the ingestion branch. It creates the pgvector extension, three tables, the retrieval function and the indexes. Nothing retrieves anything before it exists, and chat memory has no retention before it exists. Set four workflow settings by hand: timezone, a 180 second execution timeout, successful production executions set to not save, failed ones set to save. n8n does not carry timezone, timeout or the execution-saving options across an import, so no template can ship them. Two minutes of work, and it keeps customer messages out of your execution history. Create the 12 n8n Variables listed in the Global Configuration note on the canvas. Four of them are specific to your instance and have no sensible default, so they show SET_ in the field until you fill them in. The other eight resolve on their own. Set SUPPORT_EMAIL before you go live: its default is a placeholder, and it is the From address on every reply. Connect credentials: IMAP, SMTP, WhatsApp, Slack for both trigger and API, a Discord bot, Zendesk, a Google Sheets service account, Supabase, OpenAI, Postgres on the same Supabase project, and Header Auth for both webhooks. Replace the Load Source Documents node with your real documentation source, keeping its output shape of title, url and content. It ships with three sample articles so the pipeline runs end to end straight after import. Create the Google Sheet with these columns, in order: userId, channel, message, category, sentiment, timestamp, aiResponse, confidence, escalated, escalationReason. Run the manual ingestion trigger once. It populates the knowledge base, and until it has, grounding scores zero and everything routes to a human, which is the intended fallback. Then test three paths: a question your documentation answers, a message asking for a human, and the same message sent twice. Delete any channel branch you do not use.
Requirements Built and verified on n8n 2.32.7. It uses AI Agent 3.1, Postgres 2.7, Google Sheets 4.7 and Remove Duplicates 2, so an older release may not carry every node version used here. Supabase with pgvector enabled, plus direct Postgres access to the same project for chat memory and the metrics archive. OpenAI for the chat model and the embedding model. Zendesk, or another ticketing system if you swap that one node. A Google Sheet and a Google service account. Discord needs a relay bot. n8n has no native Discord trigger and Discord cannot send custom headers, so the endpoint cannot be a Discord Interactions URL. The relay must post a JSON body with four fields: id, content, channel_id and author.id. All four are used, and without channel_id the reply has nowhere to go. The exact body is in the Discord note on the canvas. Live chat callers should send message_id. Without it, deduplication falls back to a content hash bucketed per minute: enough for a provider retry, not a guarantee.
Customization Confidence threshold and maximum message length live in the Workflow Configuration node. Chat memory retention lives in Weekly Configuration and defaults to 30 days. The chat model and embedding model are variables. Changing the embedding model also means changing the vector dimension in the setup SQL and recreating the knowledge base table. The knowledge base table name is a variable and is also hardcoded inside the retrieval function. Change one without the other and retrieval reads a table nothing writes to, with no error at all. Keyword gates cover English, Romanian, German, French, Spanish and Italian across handover detection, escalation reasons, categorisation and small talk. Keyword matching, not language detection: extend per market. Zendesk can be replaced by swapping a single node. The reason, the AI note, the priority and the Slack alert are all built upstream of it.
Additional info Email replies carry the customer's own subject, prefixed with Re:, which is how Gmail and Outlook group a conversation. The SMTP node cannot set In-Reply-To or References, so grouping is by subject rather than by header: reliable in practice, not guaranteed by the standard. If you need strict RFC threading, swap the send step for an email API call.
The three escalation steps continue on error, so a Zendesk or Slack outage cannot take the alert, the log row and the customer's HTTP response down with the ticket. The cost is that the Error Trigger stays quiet for those three, so a Zendesk failure is written into the Slack alert instead, in the channel a human is already watching.
Chat memory is purged weekly, on a schedule you set in Weekly Configuration. The Google Sheets log is left to you on purpose: it holds message text and user identifiers, and the right retention depends on your jurisdiction rather than on a default someone else picked.
Every identifier on the Slack, Discord and Google Sheets nodes is an expression resolved at runtime, which is what lets you move this template between environments by changing variables instead of editing nodes. The dropdowns show "Choose…" as a result.
Anything else worth knowing is written into the notes on the canvas, beside the nodes it applies to.
API & Reliability
Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.
Missingn8n
API & Reliability
Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.
Machine interfaces
Contract & API
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/contract"
curl -s "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/trust"
Operational fit
Reliability & Benchmarks
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Machine Appendix
Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.
Missingn8n
Machine Appendix
Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": []
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "N8N_TEMPLATES",
"generatedAt": "2026-10-09T02:38:50.380Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "workflow",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "automation",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "chatbot",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "documents",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Send Email",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "emailSend",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Communication",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Core Nodes",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "HITL",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Google Sheets",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "googleSheets",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Data & Storage",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Productivity",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Postgres",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Development",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Slack",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "Discord",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "capability:workflow|supported|profile capability:automation|supported|profile capability:ai agent|supported|profile capability:chatbot|supported|profile capability:documents|supported|profile capability:Send Email|supported|profile capability:emailSend|supported|profile capability:Communication|supported|profile capability:Core Nodes|supported|profile capability:HITL|supported|profile capability:Google Sheets|supported|profile capability:googleSheets|supported|profile capability:Data & Storage|supported|profile capability:Productivity|supported|profile capability:Postgres|supported|profile capability:Development|supported|profile capability:Slack|supported|profile capability:Discord|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "N8n",
"href": "https://n8n.io/workflows/11807-answer-multi-channel-support-queries-with-openai-rag-and-supaba/",
"sourceUrl": "https://n8n.io/workflows/11807-answer-multi-channel-support-queries-with-openai-rag-and-supaba/",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T01:19:35.157Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/n8n-11807-answer-multi-channel-support-queries-with-openai-rag-/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[]
