A real docs-answering agent, not a teaser. Grounded answers with citations on your site today.
What's included
- 1 knowledge source
- 50 conversations / mo
- Widget with citations
- Turn-level traces
- Community support
Built for small SaaS support teams
One script tag. Answers from your docs, customer data lookups, real actions — behind guards that are code, not prompt.
What you’re watching
Fig. 00 · Get order status, run on its own
Where is my order #A-58291?
Refund for a duplicate charge
Can't log in after 2FA reset
Update the shipping address
Cancel my subscription
Need an invoice PDF
Measured on our demo workspace over 14 days · point Zealoop at your docs and it reports the same four numbers for you — free
20-minute setup
No procedures DSL, no solutions engineer, no six-week onboarding. Paste the snippet, point it at your docs, and watch the first grounded answer land on your own site.
The free plan is a real docs-answering agent, not a teaser. Identity and actions bolt on later — when you decide “where is my order” should work, not before.
<!-- Zealoop chat widget -->
<script
async
src="https://cdn.zealoop.com/zealoop-widget.js?orgId=org_acmeship">
</script>Fig. 02 · Paste, crawl, ready
Retrieval
Hybrid vector and full-text search find the candidates; a cross-encoder scores every one against the actual question. Only what clears the bar reaches the model — and the answer cites the section it came from.
Most support bots stuff the top-k into a prompt and hope. Zealoop scores relevance with a reranker and enforces a floor — which is the difference between an answer and a guess dressed as one.
Fig. 03 · Reranked, thresholded, cited
Honesty
A wrong answer gets acted on; a missing one gets escalated. When nothing clears the confidence threshold, the agent admits it, offers a human, and files the query as a content gap.
This is the behaviour that makes it safe to put in front of paying customers. An agent that invents a refund policy costs more than one that says “I don’t know” — because the invention gets screenshot, shared, and honoured.
Outcome recorded as ABSTAINED — and the query lands in your content-gap report, so the missing article gets written once, not asked forever.
Fig. 04 · The honest miss
Identity
Anyone can type any email into a chat box. Zealoop only trusts an address when your server has signed it — so customer data unlocks for the actual customer, and nobody else.
The secret never ships to a browser. Rotate it any time from the dashboard; the old one stops verifying the moment the new one is issued.
import crypto from "node:crypto";
const signature = crypto
.createHmac("sha256", process.env.ZEALOOP_WIDGET_SECRET)
.update(email)
.digest("hex");
// browser — hand over the finished signature
window.Zea.identify({ email, signature });Fig. 05 · The secret stays server-side
Customer data
Upload a CSV, name the identity column, and a verified customer can ask about their own plan, order, or account — matched on the signed email, scoped to exactly one row.
For live systems, connect an Action instead and the agent calls your API. Tables are for the data you would otherwise build an endpoint just to serve.
| email (identity key) | plan | status |
|---|---|---|
| dan@corvid.app | Scale | active |
| maya@brightloop.io | Growth | active |
| tomas@vela.co | Free | past_due |
Fig. 06 · One signed row
Actions
The agent can call the endpoints you define — check an order, create a refund, update an address. Every call passes the same ladder of checks, enforced in code where a clever prompt can't reach.
Guards described in a prompt are suggestions. Guards in the execution path are physics. Zealoop’s are the second kind.
BLOCKED · CONFIRMATION_REQUIRED
Proposed, not executed. It runs next turn — once they say yes.
Fig. 07 · Four checks, in code
Prompt vs code
Send one customer message to a bot whose only guard is a sentence in its prompt, then to Zealoop. Left is what the customer sees. Right is what actually happened.
A guard that lives in the prompt is an argument. Arguments can be lost.
The four checks on the right are the same ladder from Fig. 07 — evaluated before the model ever sees the tool, not after it has decided to use it.
The write path
A write action never executes inside the generation loop. It is proposed on one turn, confirmed by the customer, and executed on the next — with the execution happening outside the model’s control flow entirely.
“I can refund $42.50 to your original card for order A-58291. It takes 5–10 business days. Should I go ahead?”
“Yes, please.”
POST /refunds → 200 · 312 ms · execution logged with request and response
There is no argument the model can construct, and no context an attacker can inject, that collapses those three steps into one.
The turn pipeline
Every message runs the same pipeline: three fast small-model calls around one large one, then a check. The latency budget is drawn to scale — Generate dominates, everything else is guardrails.
A small model classifies language, intent, safety and sentiment before anything else runs.
Resolves “and its price?” into a standalone query using conversation history.
Hybrid vector + full-text search, tables, actions and procedures — loaded in parallel.
A cross-encoder orders candidates. Below the threshold, the agent abstains instead of guessing.
The large model answers, asks a clarifying question, or proposes a tool call.
A second model checks the answer is grounded and on-topic. Failure means abstain.
Fig. 08 · One turn, drawn to scale
Observability
Every turn writes a record: the rewritten query, every candidate and its score, the model, the tokens, the cost, the latency of each stage, and the outcome. When someone asks why it said that — the answer is a record, not a theory.
This is the feature your engineers will actually evaluate you on. A support agent you can’t debug is a liability with a chat interface.
Fig. 09 · The receipt
Escalation
Ask for a human and you get one — the gate recognizes that intent before retrieval even runs. Repeated abstention, blocked actions, or an angry customer all trigger the same graceful handoff.
The customer never repeats themselves. A handoff that starts with “can you explain the problem again?” throws away the entire conversation that preceded it.
“That's the third time this shipment has been rescheduled. I need someone to actually fix this.”
Fig. 10 · Context travels with it
The loop
Every question the agent couldn't answer is clustered into a ranked list of the documentation you're missing — written in your customers' own words. Fix the top three and watch the resolution rate move.
Fig. 11 · Abstentions in, articles out, rate up
Pricing
Docs-only Q&A is free forever. The moment you want “where is my order” to work, Tables and Actions are one upgrade away.
Flat plans — resolving more never raises the bill
A real docs-answering agent, not a teaser. Grounded answers with citations on your site today.
What's included
The cheapest way to make “where is my order” work. Tables and Actions, on your own data.
Everything in Free, plus
The full agent. Identity, customer data, and read & write actions behind guards.
Everything in Starter, plus
14 days free · cancel anytime
For teams where support volume is the business. Analytics that close the loop.
Everything in Growth, plus
A conversation is a thread with at least one visitor message, counted once per month. Limits in detail · Already have an account? Sign in
Questions
Straight answers — including the ones that aren’t flattering.
More detail in the documentation — limits, latencies, and failure modes included.
It says so. After reranking, if no retrieved passage clears the confidence threshold, the agent abstains instead of assembling a plausible paragraph — and offers a human. Every abstention is logged and clustered into a content-gap report, so the missing article gets written once instead of asked forever.
Per-resolution pricing punishes success — Zealoop plans are flat, so your best month isn't your biggest bill. A custom GPT can't verify a customer's identity, read exactly one row of their data, or execute a refund behind code-level guards. And every answer here ships with a trace you can open — not a vibe you have to trust.
The guards are code in the execution path, not sentences in a prompt. An action that has never passed a test call is never shown to the model. Writes are proposed, confirmed by the customer, and executed on a later turn — outside the generation loop. A prompt injection that convinces the model still meets the same code.
Your server signs the customer's email with an HMAC using your widget secret, and the widget passes the signature along. We recompute and compare in constant time. An unsigned email is treated as a claim, not a fact — nothing customer-specific ever unlocks for it.
No. Your conversations, documents and customer records are used to answer your customers' questions, and for nothing else. Our model providers are engaged under terms that prohibit training on API traffic.
Yes — that's the Free plan, and it's a real docs-answering agent, not a teaser. Crawl your actual documentation, ask it the questions your customers ask, and read the trace of how every answer was produced. No card required.
Yes. Escalations land in a shared inbox with the full conversation, the customer's verified identity, and a summary of what the agent already tried. Your reply appears in the same widget thread — the customer never repeats themselves.
Paste a URL, wait for the crawl, and watch the first grounded answer land on your own site — trace included.
Fig. 12 · Start here