<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Qefro Blog</title>
        <link>https://docs.qefro.com/blog</link>
        <description>Product, engineering, and architecture updates from the Qefro team.</description>
        <lastBuildDate>Sat, 18 Jul 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[AI Workspace vs AI chatbot — choosing the right unit of design]]></title>
            <link>https://docs.qefro.com/blog/ai-workspace-vs-chatbot</link>
            <guid>https://docs.qefro.com/blog/ai-workspace-vs-chatbot</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[When a simple chatbot is enough, and when you need AI Workspaces with isolation, Employee AI, Business Actions, and multi-tenant RBAC.]]></description>
            <content:encoded><![CDATA[<p>An <strong>AI chatbot</strong> is usually a conversational UI over one knowledge dump. An <strong>AI Workspace</strong> is an operating unit — knowledge, instructions, tools, conversations, and channel bindings — built for multi-team, multi-tenant use.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quick-comparison">Quick comparison<a href="https://docs.qefro.com/blog/ai-workspace-vs-chatbot#quick-comparison" class="hash-link" aria-label="Direct link to Quick comparison" title="Direct link to Quick comparison" translate="no">​</a></h2>
<table><thead><tr><th>Need</th><th>Chatbot often enough</th><th>Prefer AI Workspaces</th></tr></thead><tbody><tr><td>One public FAQ site</td><td>Yes</td><td>Optional</td></tr><tr><td>Support + HR + IT isolation</td><td>No</td><td>Yes</td></tr><tr><td>Employee portal with RBAC</td><td>Rare</td><td>Yes</td></tr><tr><td>Authorized API actions</td><td>Varies</td><td>First-class Business Actions</td></tr><tr><td>Widget + WhatsApp + portal</td><td>Rare</td><td>Yes</td></tr></tbody></table>
<p>Concept page: <a class="" href="https://docs.qefro.com/docs/concepts/ai-workspace-vs-ai-chatbot">AI Workspace vs AI Chatbot</a>. Definition: <a class="" href="https://docs.qefro.com/docs/concepts/what-is-an-ai-workspace">What is an AI Workspace?</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="evaluation-questions-that-cut-through-marketing">Evaluation questions that cut through marketing<a href="https://docs.qefro.com/blog/ai-workspace-vs-chatbot#evaluation-questions-that-cut-through-marketing" class="hash-link" aria-label="Direct link to Evaluation questions that cut through marketing" title="Direct link to Evaluation questions that cut through marketing" translate="no">​</a></h2>
<ol>
<li class="">What is the <strong>isolation unit</strong> — bot, project, or workspace?</li>
<li class="">Who can call which <strong>tools</strong>, and are calls logged?</li>
<li class="">Is there an <strong>employee portal</strong> with workspace grants?</li>
<li class="">How does <strong>tenancy</strong> prevent cross-customer retrieval?</li>
</ol>
<p>Vendor matrices (educational, not sales sheets): <a class="" href="https://docs.qefro.com/docs/compare/chatbase-vs-qefro">Compare</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-you-are-migrating-from-a-chatbot">If you are migrating from a chatbot<a href="https://docs.qefro.com/blog/ai-workspace-vs-chatbot#if-you-are-migrating-from-a-chatbot" class="hash-link" aria-label="Direct link to If you are migrating from a chatbot" title="Direct link to If you are migrating from a chatbot" translate="no">​</a></h2>
<ol>
<li class="">Map audiences (customer vs employee).</li>
<li class="">Split corpora into workspaces.</li>
<li class="">Re-validate citations before enabling tools.</li>
<li class="">Add channels only after knowledge quality is stable.</li>
</ol>
<p>Guides: <a class="" href="https://docs.qefro.com/docs/getting-started/quick-start">Quick Start</a>, <a class="" href="https://docs.qefro.com/docs/guides/production-deployment">Production Deployment</a>.</p>]]></content:encoded>
            <category>Architecture</category>
            <category>Product</category>
        </item>
        <item>
            <title><![CDATA[How AI Workspaces isolate knowledge and actions]]></title>
            <link>https://docs.qefro.com/blog/ai-workspaces-architecture</link>
            <guid>https://docs.qefro.com/blog/ai-workspaces-architecture</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Why AI Workspaces are the isolation unit for knowledge, Business Tools, and conversations inside a Qefro organization — and how that differs from a single chatbot index.]]></description>
            <content:encoded><![CDATA[<p>An <strong>AI Workspace</strong> is the primary isolation unit inside a Qefro organization: knowledge, instructions, Business Tools, and conversations stay scoped to that workspace.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-failure-mode-we-designed-against">The failure mode we designed against<a href="https://docs.qefro.com/blog/ai-workspaces-architecture#the-failure-mode-we-designed-against" class="hash-link" aria-label="Direct link to The failure mode we designed against" title="Direct link to The failure mode we designed against" translate="no">​</a></h2>
<p>When Support FAQs, HR policy, and IT runbooks share one retrieval index, two things happen:</p>
<ol>
<li class=""><strong>Wrong answers</strong> — the model cites the nearest-sounding passage, not the right audience’s policy.</li>
<li class=""><strong>Wrong blast radius</strong> — a public widget can surface internal content, or an internal tool can become callable from a customer channel.</li>
</ol>
<p>Workspaces make isolation the default. Channels (website widget, WhatsApp, Internal Portal) bind to workspaces you choose — they do not invent a shared mega-index.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="layered-model">Layered model<a href="https://docs.qefro.com/blog/ai-workspaces-architecture#layered-model" class="hash-link" aria-label="Direct link to Layered model" title="Direct link to Layered model" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">Organization (tenant)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  └── AI Workspace (Support | HR | IT | …)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        ├── Knowledge (hybrid RAG)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        ├── Instructions</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        ├── Business Tools → Business Actions</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        └── Conversations</span><br></div></code></pre></div></div>
<ul>
<li class=""><strong>Tenant</strong> isolates customers from each other.</li>
<li class=""><strong>Workspace</strong> isolates teams and audiences inside a tenant.</li>
</ul>
<p>See <a class="" href="https://docs.qefro.com/docs/concepts/multi-tenant-ai-architecture">Multi-tenant AI Architecture</a> and <a class="" href="https://docs.qefro.com/docs/concepts/what-is-an-ai-workspace">What is an AI Workspace?</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="customer-vs-employee-binding">Customer vs employee binding<a href="https://docs.qefro.com/blog/ai-workspaces-architecture#customer-vs-employee-binding" class="hash-link" aria-label="Direct link to Customer vs employee binding" title="Direct link to Customer vs employee binding" translate="no">​</a></h2>
<table><thead><tr><th>Audience</th><th>Typical workspace</th><th>Channel</th></tr></thead><tbody><tr><td>External customers</td><td>Customer Support</td><td>Website widget, WhatsApp</td></tr><tr><td>Employees</td><td>HR / IT / Ops</td><td>Internal Portal + RBAC</td></tr></tbody></table>
<p>Do not share one workspace across both audiences unless the corpus is intentionally identical and tools are safe for both. Details: <a class="" href="https://docs.qefro.com/docs/concepts/customer-ai-vs-employee-ai">Customer AI vs Employee AI</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="practical-checklist">Practical checklist<a href="https://docs.qefro.com/blog/ai-workspaces-architecture#practical-checklist" class="hash-link" aria-label="Direct link to Practical checklist" title="Direct link to Practical checklist" translate="no">​</a></h2>
<ol>
<li class="">Create one workspace per audience or team.</li>
<li class="">Ingest only documents that audience is allowed to see.</li>
<li class="">Attach Business Tools last — and only tools that belong in that scope.</li>
<li class="">Bind the widget <code>data-workspace-id</code> (or portal grants) deliberately.</li>
<li class="">Cross-test: ask Support questions against an HR workspace to prove isolation.</li>
</ol>
<p>Platform reference: <a class="" href="https://docs.qefro.com/docs/platform/ai-workspaces">AI Workspaces</a>. Security reference: <a class="" href="https://docs.qefro.com/docs/security/tenant-isolation">Tenant Isolation</a>.</p>]]></content:encoded>
            <category>Architecture</category>
            <category>AI</category>
        </item>
        <item>
            <title><![CDATA[Customer AI vs Employee AI — same platform, different boundaries]]></title>
            <link>https://docs.qefro.com/blog/customer-ai-vs-employee-ai</link>
            <guid>https://docs.qefro.com/blog/customer-ai-vs-employee-ai</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How Qefro runs external Customer AI (widget, WhatsApp) and internal Employee AI (Internal Portal) from one Admin Console without mixing knowledge or tools.]]></description>
            <content:encoded><![CDATA[<p><strong>Customer AI</strong> and <strong>Employee AI</strong> share Qefro’s workspace technology — but they differ in audience, channels, identity, and what knowledge is safe to expose.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="side-by-side">Side-by-side<a href="https://docs.qefro.com/blog/customer-ai-vs-employee-ai#side-by-side" class="hash-link" aria-label="Direct link to Side-by-side" title="Direct link to Side-by-side" translate="no">​</a></h2>
<table><thead><tr><th>Dimension</th><th>Customer AI</th><th>Employee AI</th></tr></thead><tbody><tr><td>Audience</td><td>Visitors, shoppers, ticket askers</td><td>Organization members</td></tr><tr><td>Channels</td><td>Website widget, WhatsApp</td><td>Internal Portal</td></tr><tr><td>Auth</td><td>Widget token; optional <code>identify()</code></td><td>Session JWT + Teams / RBAC</td></tr><tr><td>Knowledge</td><td>Customer-safe FAQs and policies</td><td>Internal runbooks and HR/IT</td></tr><tr><td>Risk if mixed</td><td>Internal docs leak publicly</td><td>Unnecessary customer tools on staff chat</td></tr></tbody></table>
<p>Full concept page: <a class="" href="https://docs.qefro.com/docs/concepts/customer-ai-vs-employee-ai">Customer AI vs Employee AI</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configure-once-deploy-twice">Configure once, deploy twice<a href="https://docs.qefro.com/blog/customer-ai-vs-employee-ai#configure-once-deploy-twice" class="hash-link" aria-label="Direct link to Configure once, deploy twice" title="Direct link to Configure once, deploy twice" translate="no">​</a></h2>
<p>In the Admin Console you:</p>
<ol>
<li class="">Create separate workspaces for Support vs HR/IT.</li>
<li class="">Ingest the right corpus into each.</li>
<li class="">Bind the widget / WhatsApp to Support.</li>
<li class="">Grant portal Members access to internal workspaces via Teams.</li>
</ol>
<p>That is the “configure once, deploy everywhere” model without forcing a single shared index.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-to-go-next">Where to go next<a href="https://docs.qefro.com/blog/customer-ai-vs-employee-ai#where-to-go-next" class="hash-link" aria-label="Direct link to Where to go next" title="Direct link to Where to go next" translate="no">​</a></h2>
<ul>
<li class="">Customer path: <a class="" href="https://docs.qefro.com/docs/platform/customer-ai">Customer AI</a> → <a class="" href="https://docs.qefro.com/docs/platform/website-widget">Website Widget</a> → <a class="" href="https://docs.qefro.com/docs/platform/whatsapp">WhatsApp</a></li>
<li class="">Employee path: <a class="" href="https://docs.qefro.com/docs/platform/employee-ai">Employee AI</a> → <a class="" href="https://docs.qefro.com/docs/platform/internal-portal">Internal Portal</a> → <a class="" href="https://docs.qefro.com/docs/platform/rbac">RBAC</a></li>
<li class="">Guides: <a class="" href="https://docs.qefro.com/docs/guides/build-ai-customer-support">Build AI Customer Support</a>, <a class="" href="https://docs.qefro.com/docs/guides/create-employee-ai">Create Employee AI</a></li>
</ul>]]></content:encoded>
            <category>Product</category>
            <category>Platform</category>
        </item>
        <item>
            <title><![CDATA[Hybrid RAG in practice — identifiers meet paraphrases]]></title>
            <link>https://docs.qefro.com/blog/hybrid-rag-in-practice</link>
            <guid>https://docs.qefro.com/blog/hybrid-rag-in-practice</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Why Qefro combines lexical and vector retrieval for enterprise knowledge — SKUs, error codes, and natural-language questions in one grounded answer path.]]></description>
            <content:encoded><![CDATA[<p><strong>Hybrid RAG</strong> combines lexical (keyword-oriented) retrieval with vector (semantic) retrieval so assistants can find both exact identifiers and paraphrased questions — then ground answers with citations.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-vectors-alone-struggle-in-enterprise-corpora">Why vectors alone struggle in enterprise corpora<a href="https://docs.qefro.com/blog/hybrid-rag-in-practice#why-vectors-alone-struggle-in-enterprise-corpora" class="hash-link" aria-label="Direct link to Why vectors alone struggle in enterprise corpora" title="Direct link to Why vectors alone struggle in enterprise corpora" translate="no">​</a></h2>
<p>Customer and employee knowledge bases are full of:</p>
<ul>
<li class="">SKUs and part numbers</li>
<li class="">Error codes (<code>E-4421</code>)</li>
<li class="">Policy IDs and ticket prefixes</li>
<li class="">Product names that look like noise to an embedding model</li>
</ul>
<p>Pure semantic search often misses those. Pure keyword search misses “how do I get my money back?” when the doc title is “Refund policy.” Hybrid retrieval covers both.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-it-fits-the-knowledge-platform">How it fits the Knowledge Platform<a href="https://docs.qefro.com/blog/hybrid-rag-in-practice#how-it-fits-the-knowledge-platform" class="hash-link" aria-label="Direct link to How it fits the Knowledge Platform" title="Direct link to How it fits the Knowledge Platform" translate="no">​</a></h2>
<p>Hybrid RAG is the <strong>retrieval engine</strong>. The <a class="" href="https://docs.qefro.com/docs/concepts/ai-knowledge-platform">AI Knowledge Platform</a> wraps it with ingest, OCR, workspace isolation, and ops.</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">Question</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  → lexical retriever</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  → vector retriever</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  → fusion / re-rank</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  → grounded generation + citations</span><br></div></code></pre></div></div>
<p>Concept deep dive: <a class="" href="https://docs.qefro.com/docs/concepts/hybrid-rag">Hybrid RAG</a>. Product: <a class="" href="https://docs.qefro.com/docs/platform/knowledge-platform">Knowledge Platform</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quality-loop-we-recommend">Quality loop we recommend<a href="https://docs.qefro.com/blog/hybrid-rag-in-practice#quality-loop-we-recommend" class="hash-link" aria-label="Direct link to Quality loop we recommend" title="Direct link to Quality loop we recommend" translate="no">​</a></h2>
<ol>
<li class=""><strong>Curate sources</strong> — remove duplicate drafts and contradictory wikis.</li>
<li class=""><strong>Test identifier queries</strong> — SKUs, error codes, policy numbers.</li>
<li class=""><strong>Test paraphrase queries</strong> — natural variants of the same intent.</li>
<li class=""><strong>Inspect citations</strong> — wrong citation means fix chunking or source, not only the system prompt.</li>
<li class=""><strong>Refuse when empty</strong> — prefer an honest gap over inventing policy.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="isolation-still-comes-first">Isolation still comes first<a href="https://docs.qefro.com/blog/hybrid-rag-in-practice#isolation-still-comes-first" class="hash-link" aria-label="Direct link to Isolation still comes first" title="Direct link to Isolation still comes first" translate="no">​</a></h2>
<p>Hybrid RAG runs <em>inside</em> a workspace index. Tenancy ensures one organization’s documents never appear in another’s answers. See <a class="" href="https://docs.qefro.com/docs/concepts/multi-tenant-ai-architecture">Multi-tenant AI Architecture</a>.</p>
<p>When live state is required (order status, account balance), pair RAG with <a class="" href="https://docs.qefro.com/docs/concepts/business-actions">Business Actions</a> — docs for policy, APIs for state.</p>]]></content:encoded>
            <category>AI</category>
            <category>Engineering</category>
        </item>
        <item>
            <title><![CDATA[Introducing official Qefro documentation]]></title>
            <link>https://docs.qefro.com/blog/introducing-qefro-docs</link>
            <guid>https://docs.qefro.com/blog/introducing-qefro-docs</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing docs.qefro.com — canonical technical documentation for AI Workspaces, Customer AI, Employee AI, and Business Actions.]]></description>
            <content:encoded><![CDATA[<p><strong>Qefro Docs</strong> at <a href="https://docs.qefro.com/" target="_blank" rel="noopener noreferrer" class="">docs.qefro.com</a> is the canonical technical documentation for the Qefro AI Workspace Platform.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-shipped-a-dedicated-docs-site">Why we shipped a dedicated docs site<a href="https://docs.qefro.com/blog/introducing-qefro-docs#why-we-shipped-a-dedicated-docs-site" class="hash-link" aria-label="Direct link to Why we shipped a dedicated docs site" title="Direct link to Why we shipped a dedicated docs site" translate="no">​</a></h2>
<p>Product marketing on <a href="https://qefro.com/" target="_blank" rel="noopener noreferrer" class="">qefro.com</a> explains <em>what</em> Qefro is. Operators and engineers need <em>how</em>: workspace isolation, hybrid retrieval, Business Tools, RBAC, widget embedding, WhatsApp webhooks, and security boundaries.</p>
<p>We modeled the site after documentation teams trust — clear definitions first, then architecture, workflows, APIs, and honest comparisons.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-will-find">What you will find<a href="https://docs.qefro.com/blog/introducing-qefro-docs#what-you-will-find" class="hash-link" aria-label="Direct link to What you will find" title="Direct link to What you will find" translate="no">​</a></h2>
<table><thead><tr><th>Section</th><th>Start here</th></tr></thead><tbody><tr><td>Concepts (GEO)</td><td><a class="" href="https://docs.qefro.com/docs/concepts/what-is-an-ai-workspace">What is an AI Workspace?</a></td></tr><tr><td>Getting started</td><td><a class="" href="https://docs.qefro.com/docs/getting-started/quick-start">Quick Start</a></td></tr><tr><td>Platform</td><td><a class="" href="https://docs.qefro.com/docs/platform/ai-workspaces">AI Workspaces</a></td></tr><tr><td>Guides</td><td><a class="" href="https://docs.qefro.com/docs/guides/build-ai-customer-support">Build AI Customer Support</a></td></tr><tr><td>API</td><td><a class="" href="https://docs.qefro.com/docs/api/authentication">API Authentication</a></td></tr><tr><td>Security</td><td><a class="" href="https://docs.qefro.com/docs/security/overview">Security Overview</a></td></tr><tr><td>Compare</td><td><a class="" href="https://docs.qefro.com/docs/compare/chatbase-vs-qefro">Chatbase vs Qefro</a></td></tr></tbody></table>
<p>For AI systems and agents, we also publish:</p>
<ul>
<li class=""><a href="https://docs.qefro.com/llms.txt" target="_blank" rel="noopener noreferrer" class="">llms.txt</a> — curated map</li>
<li class=""><a href="https://docs.qefro.com/llms-full.txt" target="_blank" rel="noopener noreferrer" class="">llms-full.txt</a> — full Markdown dump</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-read-the-docs">How to read the docs<a href="https://docs.qefro.com/blog/introducing-qefro-docs#how-to-read-the-docs" class="hash-link" aria-label="Direct link to How to read the docs" title="Direct link to How to read the docs" translate="no">​</a></h2>
<ol>
<li class="">Start with a <strong>definition</strong> page under Concepts if you are evaluating the product.</li>
<li class="">Follow a <strong>guide</strong> when you are implementing a channel or integration.</li>
<li class="">Use <strong>API</strong> and <strong>Security</strong> when you are integrating or reviewing risk.</li>
<li class="">Use search (<code>Ctrl</code> / <code>⌘</code> + <code>K</code>) for exact terms like <code>identify()</code> or webhook paths.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="product-hosts-reference">Product hosts (reference)<a href="https://docs.qefro.com/blog/introducing-qefro-docs#product-hosts-reference" class="hash-link" aria-label="Direct link to Product hosts (reference)" title="Direct link to Product hosts (reference)" translate="no">​</a></h2>
<table><thead><tr><th>Surface</th><th>URL</th></tr></thead><tbody><tr><td>Marketing</td><td><a href="https://qefro.com/" target="_blank" rel="noopener noreferrer" class="">https://qefro.com</a></td></tr><tr><td>Admin Console</td><td><a href="https://app.qefro.com/" target="_blank" rel="noopener noreferrer" class="">https://app.qefro.com</a></td></tr><tr><td>API</td><td><a href="https://api.qefro.com/" target="_blank" rel="noopener noreferrer" class="">https://api.qefro.com</a></td></tr><tr><td>Widget CDN</td><td><a href="https://cdn.qefro.com/widget.js" target="_blank" rel="noopener noreferrer" class="">https://cdn.qefro.com/widget.js</a></td></tr><tr><td>Docs</td><td><a href="https://docs.qefro.com/" target="_blank" rel="noopener noreferrer" class="">https://docs.qefro.com</a></td></tr></tbody></table>
<p>Feedback welcome via <a href="https://qefro.com/contact" target="_blank" rel="noopener noreferrer" class="">contact</a> or <a href="mailto:support@qefro.com" target="_blank" rel="noopener noreferrer" class="">support@qefro.com</a>.</p>]]></content:encoded>
            <category>Platform</category>
            <category>Product</category>
        </item>
        <item>
            <title><![CDATA[Securing Business Actions in production]]></title>
            <link>https://docs.qefro.com/blog/securing-business-actions</link>
            <guid>https://docs.qefro.com/blog/securing-business-actions</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Least privilege, encrypted secrets, identity forwarding, SSRF controls, and execution logs for AI assistants that call your APIs.]]></description>
            <content:encoded><![CDATA[<p><strong>Business Actions</strong> let Customer AI and Employee AI call your REST APIs during a conversation. Treat every action like production API traffic — not like a demo plugin.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-a-business-action-is">What a Business Action is<a href="https://docs.qefro.com/blog/securing-business-actions#what-a-business-action-is" class="hash-link" aria-label="Direct link to What a Business Action is" title="Direct link to What a Business Action is" translate="no">​</a></h2>
<table><thead><tr><th>Term</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>Business Tool</strong></td><td>Connector definition: URL, method, auth, schema</td></tr><tr><td><strong>Business Action</strong></td><td>One runtime invocation of that tool</td></tr></tbody></table>
<p>Concept page: <a class="" href="https://docs.qefro.com/docs/concepts/business-actions">What are Business Actions?</a>. Broader threat model: <a class="" href="https://docs.qefro.com/docs/concepts/ai-agent-security">AI Agent Security</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="controls-that-matter-in-order">Controls that matter in order<a href="https://docs.qefro.com/blog/securing-business-actions#controls-that-matter-in-order" class="hash-link" aria-label="Direct link to Controls that matter in order" title="Direct link to Controls that matter in order" translate="no">​</a></h2>
<ol>
<li class=""><strong>Workspace scope</strong> — tools live inside a workspace; do not attach privileged write tools to a public Customer AI workspace without a hard reason.</li>
<li class=""><strong>Least privilege</strong> — start with read-only <code>GET</code> tools. Add writes only after logging and authz are proven.</li>
<li class=""><strong>Encrypted secrets</strong> — store credentials in the Admin Console; never in browser JS or prompts. See <a class="" href="https://docs.qefro.com/docs/security/secrets">Secrets</a>.</li>
<li class=""><strong>SSRF-aware egress</strong> — tool URLs must not become a path to cloud metadata or internal networks.</li>
<li class=""><strong>Identity forwarding</strong> — for customer-facing tools, use widget <a class="" href="https://docs.qefro.com/docs/platform/identity-forwarding"><code>identify()</code></a> so <em>your</em> API authorizes the end user, not only Qefro’s service credential.</li>
<li class=""><strong>Execution logs</strong> — review unexpected calls as incidents. See <a class="" href="https://docs.qefro.com/docs/security/audit-logs">Audit logs</a>.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompt-injection-is-a-blast-radius-problem">Prompt injection is a blast-radius problem<a href="https://docs.qefro.com/blog/securing-business-actions#prompt-injection-is-a-blast-radius-problem" class="hash-link" aria-label="Direct link to Prompt injection is a blast-radius problem" title="Direct link to Prompt injection is a blast-radius problem" translate="no">​</a></h2>
<p>No platform can honestly claim “prompt injection solved.” Design for containment:</p>
<ul>
<li class="">Hostile text may appear in user messages <em>and</em> uploaded documents.</li>
<li class="">Validate tool arguments on your API, not only in the model prompt.</li>
<li class="">Prefer idempotent writes; require human approval for irreversible money movement.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="implementation-path">Implementation path<a href="https://docs.qefro.com/blog/securing-business-actions#implementation-path" class="hash-link" aria-label="Direct link to Implementation path" title="Direct link to Implementation path" translate="no">​</a></h2>
<p>Follow the guide <a class="" href="https://docs.qefro.com/docs/guides/secure-business-actions">Secure Business Actions</a>, then:</p>
<ol>
<li class=""><a class="" href="https://docs.qefro.com/docs/guides/connect-rest-apis">Connect REST APIs</a> or <a class="" href="https://docs.qefro.com/docs/guides/import-openapi">Import OpenAPI</a>.</li>
<li class="">Test the tool in the console before enabling chat invocation.</li>
<li class="">Monitor <code>GET /api/v1/tools/:id/logs</code> (or the console equivalent) during pilot traffic.</li>
</ol>
<p>When in doubt, ship knowledge-only assistants first. Actions can wait until retrieval quality and isolation are solid.</p>]]></content:encoded>
            <category>Security</category>
            <category>Engineering</category>
        </item>
        <item>
            <title><![CDATA[Tutorial — from website widget to WhatsApp]]></title>
            <link>https://docs.qefro.com/blog/widget-to-whatsapp</link>
            <guid>https://docs.qefro.com/blog/widget-to-whatsapp</guid>
            <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Ship Customer AI on the website first, validate retrieval quality, then add WhatsApp on Growth+ using the same Support workspace.]]></description>
            <content:encoded><![CDATA[<p>Ship <strong>Customer AI</strong> on the website first, validate retrieval quality, then add WhatsApp on Growth+ — preferably bound to the same Support workspace so answers stay consistent.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-website-first">Why website first<a href="https://docs.qefro.com/blog/widget-to-whatsapp#why-website-first" class="hash-link" aria-label="Direct link to Why website first" title="Direct link to Why website first" translate="no">​</a></h2>
<p>The website widget is the fastest loop for:</p>
<ul>
<li class="">Citation quality on real FAQs</li>
<li class="">Refusal behavior when knowledge is missing</li>
<li class="">Branding and tone</li>
<li class="">Optional <code>identify()</code> before any Business Tools</li>
</ul>
<p>WhatsApp adds Meta Cloud API setup, webhook verification, and plan limits. Validate the brain before you multiply channels.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1--create-a-support-workspace">Step 1 — Create a Support workspace<a href="https://docs.qefro.com/blog/widget-to-whatsapp#step-1--create-a-support-workspace" class="hash-link" aria-label="Direct link to Step 1 — Create a Support workspace" title="Direct link to Step 1 — Create a Support workspace" translate="no">​</a></h2>
<ol>
<li class="">Sign in at <a href="https://app.qefro.com/" target="_blank" rel="noopener noreferrer" class="">app.qefro.com</a>.</li>
<li class="">Create a workspace named for Support.</li>
<li class="">Upload policies and FAQs (or crawl approved URLs).</li>
<li class="">Ask ten real customer questions and check citations.</li>
</ol>
<p>Guides: <a class="" href="https://docs.qefro.com/docs/getting-started/quick-start">Quick Start</a>, <a class="" href="https://docs.qefro.com/docs/guides/build-ai-customer-support">Build AI Customer Support</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2--embed-the-website-widget">Step 2 — Embed the website widget<a href="https://docs.qefro.com/blog/widget-to-whatsapp#step-2--embed-the-website-widget" class="hash-link" aria-label="Direct link to Step 2 — Embed the website widget" title="Direct link to Step 2 — Embed the website widget" translate="no">​</a></h2>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"></span><br></div><div class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">src</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">https://cdn.qefro.com/widget.js</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></div><div class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-token</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">YOUR_WIDGET_TOKEN</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></div><div class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-endpoint</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">https://api.qefro.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></div><div class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-workspace-id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">YOUR_WORKSPACE_ID</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></div></code></pre></div></div>
<p>Full guide: <a class="" href="https://docs.qefro.com/docs/guides/deploy-website-widget">Deploy Website Widget</a>. Platform notes: <a class="" href="https://docs.qefro.com/docs/platform/website-widget">Website Widget</a>.</p>
<p>If Business Tools need the logged-in shopper or account holder, add <a class="" href="https://docs.qefro.com/docs/platform/identity-forwarding"><code>identify()</code></a> after your existing session is established.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3--add-whatsapp-growth">Step 3 — Add WhatsApp (Growth+)<a href="https://docs.qefro.com/blog/widget-to-whatsapp#step-3--add-whatsapp-growth" class="hash-link" aria-label="Direct link to Step 3 — Add WhatsApp (Growth+)" title="Direct link to Step 3 — Add WhatsApp (Growth+)" translate="no">​</a></h2>
<ol>
<li class="">Confirm your plan includes WhatsApp.</li>
<li class="">Configure Meta Cloud API credentials in the Admin Console.</li>
<li class="">Point Meta’s webhook to Qefro’s WhatsApp webhook path on <code>api.qefro.com</code>.</li>
<li class="">Bind the same Support workspace you already validated.</li>
</ol>
<p>Guide: <a class="" href="https://docs.qefro.com/docs/guides/deploy-whatsapp-ai">Deploy WhatsApp AI</a>. Platform: <a class="" href="https://docs.qefro.com/docs/platform/whatsapp">WhatsApp</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4--keep-audiences-separate">Step 4 — Keep audiences separate<a href="https://docs.qefro.com/blog/widget-to-whatsapp#step-4--keep-audiences-separate" class="hash-link" aria-label="Direct link to Step 4 — Keep audiences separate" title="Direct link to Step 4 — Keep audiences separate" translate="no">​</a></h2>
<p>Customer AI (widget + WhatsApp) should not share an HR or payroll workspace. See <a class="" href="https://docs.qefro.com/docs/concepts/customer-ai-vs-employee-ai">Customer AI vs Employee AI</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="done-when">Done when<a href="https://docs.qefro.com/blog/widget-to-whatsapp#done-when" class="hash-link" aria-label="Direct link to Done when" title="Direct link to Done when" translate="no">​</a></h2>
<ul>
<li class="">Website answers cite the right sources</li>
<li class="">Unknown topics refuse cleanly</li>
<li class="">WhatsApp replies match website quality for the same questions</li>
<li class="">Tools (if any) are logged and least-privileged</li>
</ul>
<p>Next: <a class="" href="https://docs.qefro.com/docs/guides/production-deployment">Production Deployment</a>.</p>]]></content:encoded>
            <category>Tutorials</category>
            <category>Product</category>
        </item>
    </channel>
</rss>