How Warburton Works

A message enters the system. Here is exactly what happens to it — every step, every check, every decision point — from arrival to response.

The Message Pipeline

When a message arrives from Telegram, Discord, or WhatsApp, it enters a fixed-order processing pipeline. The order is enforced in code — not configurable, not reorderable, not skippable. Edit handlers run the same pipeline as new messages, closing the edit-evasion attack vector.

Step 1 — Platform Adapter

The message is received by the platform-specific adapter (Telegram, Discord, or WhatsApp). It is normalised into a common format and wrapped with tenant context using AsyncLocalStorage. From this point forward, all data access is scoped to the correct deployment — memory queries, learned cache responses, and audit records are tenant-isolated.

Step 2 — Safety Pipeline

The message passes through a fixed-order safety pipeline: scam detection, safeguarding, community standards, job-posting checks, NSFW/advances. If any check triggers, the message is handled immediately — deleted, flagged, or escalated depending on severity. Every detection is metered to Prometheus via recordSafetyTrigger. The pipeline has 19 call sites across five moderation modules.

This is where deterministic safety rules apply. The eight hard rules — persona lock, injection guard, memory poisoning guard, and others — fire at the system level, not the prompt level. No language model decides whether to enforce them.

Step 3 — Community Health

Community health monitoring evaluates the message in context. Temperature tracking, silence detection, repeated-target tracking, moderator burnout signals, and exclusion patterns are updated. This is passive — it observes and records without blocking the message pipeline.

Step 4 — Protection Protocols

Three deterministic protocols check for pile-on behaviour (PP1), absent-person discussion (PP2), and pattern-break signatures (PP3). These are state machines — the same inputs always produce the same output. If a protocol triggers, the intervention is deterministic and the full decision chain is recorded.

Step 5 — Knowledge Retrieval

If the message is a question, the system checks five knowledge domains: learned community answers, Substack diary, specialist lore, Wikipedia, and Reddit. The provenance-weighted cache is checked first. Only answers meeting the 71% cosine similarity threshold are served. If no cache hit, a local model (Ollama) is queried. If needed, Claude is escalated to. Every retrieval path is guarded against prompt injection with write-time and read-time guards.

Step 6 — Response Generation

The tiered multi-model architecture generates the response. Ollama handles most requests. Granite provides automatic fallback. Claude is escalated to for complex queries. The character engine applies the consistent authored voice — Warburton's character is the interface. Deterministic safety rules fire post-generation: citation guard, repetition guard, fake-fetch intercept, and voice anchor ensure the response meets all safety constraints.

Step 7 — Operational Assurance

Full routing provenance is recorded fire-and-forget via the Context Accumulator Pattern: 12 fields per response including routing path, model used, retrieval sources, middleware intercepts, token counts, cost, and a decision_reason classification. Quality score is written back asynchronously. Provenance failures never block response delivery.

Step 8 — Governance

The complete decision chain is persisted to hash-chained audit trails — each record cryptographically linked to its predecessor, making tampering detectable. Consent events are logged to the consent ledger with FCA-aligned retention. If a kill switch is active, the affected subsystem was already bypassed earlier in the pipeline.

Step 9 — Learning

If the response was helpful (confirmed by quality scoring or human feedback), it enters the knowledge capture pipeline for potential caching. Human-provided answers carry provenance weights and attribution. AI-generated answers are clearly marked as AI-sourced until a human confirms them. Entries carry a 90-day TTL — stale knowledge expires automatically.

What the moderator sees

The Daily Digest surfaces what happened — unanswered questions, moderation actions, sentiment shifts, new members, and quiet departures. The moderator gets a structured summary delivered to their DMs. No dashboard login required. In two minutes, they know what happened in their community and what needs their attention.