⚓ The moat — included in every plan

Botline Anchor

The only WhatsApp AI grounded in your real catalog, your customers' real language, and your industry's real rules.

A five-layer middleware between every LLM call and every customer reply. It catches price hallucinations before they reach the customer, blocks recommendations of out-of-stock products, and stops language drift cold. Powered by a versioned rule registry that gets smarter with every tenant we onboard.


From a real audit

Three bugs in seven days. One pattern.

We audited a Pakistani electronics retailer's last 7 days of bot replies. We found a roughly 12% bug rate on a 25-reply spot check — and every bug fell into the same family: the model confidently asserted things that were not true about the catalog, the stock, or the customer's language. These three are the worst of them. Anchor was built to make every one of them impossible.

Price hallucination2026-05-07
Customer asked
Galaxy Watch Ultra 2025 ka kya price hai?
Bot replied (wrong)
Galaxy Watch Ultra 2025 Rs. 1,04,999 mein available hai.
Real catalog said
woocommerce_products.price_cents = 9899900
Anchor verdict
Output Verifier extracts the Rs. 1,04,999 claim, looks up the product in the live snapshot, sees Rs. 98,999, and forces a regenerate with the corrected number injected as critique. Customer never sees the wrong price.
Out-of-stock offer2026-05-02
Customer asked
Anker Power Bank 25K mAh chahiye, Rs. 28,999 wala?
Bot replied (wrong)
Ji haan, Anker Power Bank 25K mAh 165W available hai. Order karenge?
Real catalog said
stock_status = 'outofstock'
Anchor verdict
Live Data Injector seeds the snapshot with stock_status=outofstock; Output Verifier flags the ‘available hai’ claim as ungrounded; reply regenerates pointing the customer to alternatives that are actually in stock.
Language drift2026-05-05
Customer asked
UGREEN Nexode 25k mAh ki price batao.
Bot replied (wrong)
UGREEN Nexode 20k mAh tersedia, dengan harga Rs. 27,999. Ia mempunyai...
Real catalog said
expected_language = 'roman_urdu' / 'english'
Anchor verdict
The Language Guard detects the reply drifted into Bahasa, looks up the tenant's Codex entry (PK tenant, banned: bahasa, thai, vietnamese), and forces a regenerate. Wrong capacity and wrong price — both caught by the Output Verifier in the same regenerate pass.

How it works

Five layers around every LLM call.

Anchor is not a single prompt. It is five distinct layers, each with its own job, each independently testable, each independently disable-able. Two of them run before the LLM call to make hallucinations less likely; two of them run after to catch what slipped through; the fifth keeps score so we know which rules are biting hardest and where the moat needs widening next.

The whole pipeline runs in-process inside the existing message service — no new container, no new network hop, no new SSL cert. Realistic added latency is 50–300ms p50.

One reply · five layers
⚓ Anchor
inCustomer: “Watch Ultra 2025 ka rate kya hai?”
1Codex resolves rules price-grounded · roman_urdu · pk
2Prompt Composer builds system prompt with vocab + register
3Live Data Injector snapshots Rs. 98,999 · in stock
LLM call · bare reply: “Watch Ultra 2025 Rs. 1,04,999 mein available hai…”
4Output Verifier: price 1,04,999 ≠ 98,999 · regenerate
Customer sees: “Watch Ultra 2025 Rs. 98,999 mein available hai…”
5Telemetry logs: composite 0.97 · price 1.0 · language 1.0 · vocab 0.95
Embedded adapter · in-process · 50-300ms p50 added latencyFail-open guarantee
The path of one customer message through Anchor
01
The Codex
Rule registry
A versioned registry of vocabulary preferences, banned phrases, market facts, register hints, and grounding constraints. One Pakistani Codex v0 ships with 30+ rules including the three audit findings above. New rules go live within 60 seconds, no code deploy, with one-click rollback on any version. Every change is audited.
02
Prompt Composer
Pre-LLM
Builds the responder system prompt fresh on every reply by merging the active Codex, the tenant's overrides, the conversation classification (complaint vs browse vs confirm), and the founder voice. Replaces the hand-rolled string concat in the legacy responder.
03
Live Data Injector
Pre-LLM
Extracts product entities from the last 10 messages, queries WooCommerce or Shopify for matches (sku exact > token-overlap > substring), and injects a structured live_inventory block into the responder context. The constraint baked into the prompt: only quote prices, stock, and variants from this block. This is what stops price hallucinations from happening in the first place.
04
Output Verifier
Post-LLM
Regex-extracts every Rs. NNN claim and every 'in stock' / 'available hai' assertion from the reply, looks each one up in the live snapshot, and flags any mismatch. On any block-severity violation, the reply is regenerated with the violation injected as critique. Cap of 2 regenerates; on the 3rd attempt the reply falls open and is flagged for human review.
05
Language Guard
Post-LLM
Detects the dominant language of every reply and regenerates anything that drifted into a wrong language for the tenant's market — for example a Bahasa Malay sentence on a Pakistani tenant. The kind of language slip that breaks customer trust, caught before the customer ever sees it.
06
Quality Telemetry
Post-reply
Scores every reply on four axes — price accuracy, stock accuracy, language fit, and vocabulary fit — with a weighted composite score. Replies that fall below the threshold are queued for review. The data flywheel reveals which rules are catching the most issues and where the next rule should be added.

Three levels of override
1
Master kill switch
ANCHOR_KILL_SWITCH=true + force-recreate. Bypasses every layer. ~90 seconds to apply.
2
Per-feature flags
Disable a single misbehaving layer, e.g. ANCHOR_LANGUAGE_GUARD_ENABLED=false. Other layers keep working.
3
Per-tenant DB toggle
UPDATE tenants SET anchor_enabled=false WHERE id=… takes effect on the next reply. ~10 seconds end-to-end.
Reliability invariant

If Anchor ever fails, your AI just falls back to baseline. It never breaks.

The most common reason teams hesitate to add a quality middleware is the fear of adding a new failure mode. We thought about that before writing the first line of code, and the architecture answers it directly.

Every Anchor call is wrapped in a 2-second timeout and a try/catch that logs to anchor_failures. If any layer crashes, times out, or returns garbage, the reply falls open to the bare LLM output — exactly what you get today, without Anchor.

The reliability invariant: Anchor's reliability is bounded above by Anchor's success rate, never below today's baseline. If every single Anchor layer crashes simultaneously, your customers get the same replies they get today. Anchor only adds upside.


The moat

The AI engine is interchangeable. The Codex is not.

Any competitor can swap their LLM provider in an afternoon. None of them can recreate four years of accumulated Pakistani-market grounding rules in less than two years. The Codex compounds with every tenant we onboard, every flagged reply we review, and every market quirk we encode.

🧠
The flywheel
Every flagged reply becomes a candidate Codex rule. Every published rule retroactively grades every past reply via the telemetry log. The dataset and the rule registry grow together, and both compound.
🌏
Per-market depth
Day one ships a Pakistani Codex. v2 adds Malaysia, the Gulf, and Indonesia. Each market gets its own vocabulary, its own register rules, its own banned languages, its own cultural quirks — all editable, all versioned.
📡
B2B Anchor (coming)
The HTTP adapter is scaffolded today and dormant. When the rule count crosses critical mass, we expose Anchor as a standalone API any WhatsApp-AI vendor can call. The same engine that protects Botline tenants will protect everyone else's.

Quality you can verify, on every reply, every tenant.

Most WhatsApp-AI vendors say “our AI is high-quality” and ask you to take it on faith. We don't. Every reply on the platform is scored on four axes — price, stock, language, vocabulary — and tracked continuously. If a tenant's number drops below 0.95, our team knows within an hour and a personal outreach goes out the same day.

Anchor is included in every plan. No upcharge, no metered tier, no “quality add-on”. It is just how every Botline tenant's AI works.

Get a WhatsApp AI that cannot lie about your prices.

Free plan to start. Anchor is on by default for every account from day one.