← for organizations · How it works · FAQ · live demos · pilot program

How the Guide works — the whole story

We don't hide how this is built. This page explains the entire mechanism, in plain language first, with deeper detail for your technical team in the blue boxes. Examples use Maplewood Wildlife Park, our fictional demo site — your private demo shows the same thing on your own content.

1. The one idea: it chooses, it never generates

Most "AI chat" products work by generating text: a large language model writes a new answer, word by word, every time. That's powerful — and it's why those products can say things nobody approved, invent pages that don't exist, and cost money on every message.

The Guide works the other way around. It never writes a sentence. It chooses — from two things you control completely:

The intelligence is in the choosing: understanding a vague, human question well enough to pick the right line and the right page. We call this authored voice, computed understanding.

A generative chatbot writes a NEW answer each time "The zoo opens at 8am!" ← invented ✗ can say anything, to anyone ✗ pay per message, forever The Guide CHOOSES from approved material "Hours live on Plan Your Visit:" + link ✓ only approved lines + real pages ✓ runs in the browser, no usage fees
The trade we chose on purpose: less open-ended, completely trustworthy.

2. A walkthrough: one real question

Say a visitor at Maplewood types:

tickets for a family of five
Found it — Family pass
Family pass One price, two adults and up to three kids, all day.

What actually happened, in order:

For your technical team: the scorer is deterministic lexical matching over the index — exact/prefix/substring matches on titles, curated keywords and aliases, with bounded edit-distance for typos ("familly" still works) and acronym handling. Every candidate page gets a score; results below a tuned confidence floor become an honest miss instead of a wrong guess. There is no randomness in routing and no network call — the whole decision runs in the visitor's browser in under a millisecond.

3. The layers, in the order they run

Routing is actually the fifth thing that happens to a message. The pipeline is a fixed sequence of layers, and the order is deliberate: the most important things claim the message first.

visitor's message 1 · Care & safety — distress is met with help lines, never marketing 2 · Memory — "my name is Ana" is kept, on the visitor's device 3 · The script — greetings, small talk, your authored answers 4 · Intents — "help", "surprise me", "something for kids"… 5 · Routing — score every page, answer with the best match 6 · Graceful miss — honest "I don't have that" + directions reply = an approved line + real page cards
First layer to recognize the message answers it. Safety always gets first claim.

Why safety runs first: if a visitor — often a young one, on a family site — types something that signals real distress, the Guide drops the tour-guide act entirely and offers real help lines. That check happens before anything else can claim the message, it's tested by an automated suite of regression cases we run before every release, and it never depends on any AI model. This is the part that makes the Guide shippable on a children's brand.

For your technical team: the care layer is pattern-based detection for crisis, abuse and bullying disclosures plus a graded emotional taxonomy — all negation-aware ("I do not want to…" doesn't trip it, coded slang does). It's maintained per language with its own regression suite. Distress turns are hard-fenced: they can never fall through to routing or any other layer — and this layer is deliberately not AI-based: embedding models score a sentence and its exact negation as near-identical (measured in §8), which is disqualifying for safety.

4. What it knows: the pack

Everything the Guide knows about a site lives in one reviewable bundle we call the pack. For Maplewood it contains three kinds of things:

{
  "index": [   // one entry per page — the ONLY destinations it can offer
    { "t": "Family pass",
      "u": "/tickets/family-pass",
      "s": "Tickets",
      "k": ["family", "children", "price", "pass"] },
    …
  ],
  "guide": {  // the hand-curated tour: categories + featured pages
    "cats": ["Tours", "Tickets", "Animals", …], "featured": [ … ] },
  "lines":   { /* every sentence it can say — written with you */ },
  "bank":    { /* your authored answers: "what are your hours?" → your line + your page */ }
}

The pack is compiled together with the Guide's engine into one static file — the single <script> tag you add to your site. There is no database, no content server, no account system. Your web page is the deployment.

For your technical team: the pack is plain JSON baked into a self-contained JS bundle (~150 KB, no dependencies, strict-CSP friendly, self-hostable on your origin). Because it's data, you can audit every line and every destination before it ships — and "what can it say?" has a finite, printable answer.

5. How we learn your site (and what we don't take)

We build the index by reading your public pages once, the way a search engine does, but far more politely: we identify ourselves, fetch slowly, respect your robots rules, and read only titles, addresses, headings and description lines — facts about your pages, never copies of them. Nothing of your site is rehosted; every card the Guide shows opens your real page.

Then comes the human pass — the part that's craft, not crawling: we fix titles, choose the tour categories, pick the featured pages, and write the voice with you. When your site changes, we re-read it on a schedule and refresh the pack.

6. You write the script — that's the point

Clients sometimes ask, carefully, whether they can be involved in what the Guide says. The answer is that it doesn't work any other way: the script is yours. In onboarding we draft the greetings, the small talk, and answers to the questions your visitors actually ask — in your brand's voice — and nothing ships until your team has approved every line. You can read the entire script; that's precisely the property your legal and brand teams will like most.

After launch, the Guide's misses become a monthly list of what visitors asked for and didn't find — which tells you which lines (or which pages) to add next. The script grows with you.

7. English and French: two brains, one engine

The French Guide is not a translation layer bolted on top. The engine is shared, but every language-dependent part exists separately per language: the script, the question patterns, and — most importantly — the safety layer. French grammar negates differently, French distress has its own idioms, and French visitors deserve the same care as English ones. So the French safety patterns are built and tested in French, with their own automated regression suite, and the French help lines are the right ones for francophone visitors.

One shared engine pipeline · memory · character · routing English brain EN script · EN question patterns EN safety patterns + test suite Cerveau français script FR · compréhension FR sécurité FR + suite de tests FR
An engine improvement reaches both languages; each language's safety is first-class.

8. The optional "understanding" upgrade

Everything above uses word matching — fast, predictable, and surprisingly capable once the keywords are curated. There is an optional module that adds understanding by meaning: "we're bored and it's raining" finding the indoor activities page even though no words overlap.

For your technical team: the upgrade uses a small open sentence-embedding model (MiniLM-class, ~44 MB) that runs in the visitor's browser — the model and version are pinned and named in your agreement. Page vectors are precomputed offline and shipped quantized with the pack; at question time the visitor's phrase is embedded on-device and cosine-ranked against them. Crucially, meaning-based results are agreement-gated against the word-based results — similarity alone never overrides an honest miss — and it only ever re-ranks your pages. It cannot add a single word to what the Guide can say. Demos currently run without this module; it's a production option.

Why meaning-matching is only ever allowed to route pages — the negation problem. Embedding models are famously blind to negation: they encode what a sentence is about far more strongly than which way it points. We measured this on the exact model we'd ship:

sentence pair similarity
"i like hiking" ↔ "i do not like hiking"0.78 — "same meaning"
"i like hiking" ↔ "i hate hiking"0.77
"i like hiking" ↔ "i just ate"0.11 — unrelated
"i want to die" ↔ "i do not want to die"0.79
Measured with the module's own model (all-MiniLM-L6-v2, cosine similarity). A sentence and its exact opposite score as near-duplicates.

For page routing this hardly matters — "I don't want a family pass" still belongs in the tickets neighbourhood, and a slightly-wrong card costs one click. But look at the last row: for anything involving how a person feels, this blindness would be catastrophic. That is why, by architectural rule, the safety layer never touches embeddings: distress, and every emotional turn, is handled by the deterministic first layer with hand-built, per-language negation guards ("I do not want to…" structurally cannot trip it), each protected by its own automated test suite. The geometry is allowed to answer what is this about — never how does this person feel about it.

9. What it deliberately can't do

An honest note on "couldn't we build this ourselves?" — Parts of it, yes: the technology ingredients here are published and we've just explained the design. What you'd be rebuilding is the part that took the time: a safety layer refined across hundreds of tested edge cases in two languages, a character rig that animates without an art pipeline, and the ongoing curation, re-crawls and script-writing. We think the honest comparison is a pilot at CA$1,500 against months of specialist time — and if we ever disappear, your deployment keeps working and our agreements include a source-escrow clause. We'd rather you know exactly what you're buying.

See it live in the demos → · Frequently asked questions →