Surfaces / channels
Web, embed, SMS, messaging, USSD, voice - thin adapters over one contract.
A capability and architecture overview, what each layer does and the guarantees it gives. It is intentionally not a reproduction blueprint.
01 · Architecture
One governed core sits behind every channel and in front of a pluggable model. The core is where accountability lives; the model is a swappable component.
Web, embed, SMS, messaging, USSD, voice - thin adapters over one contract.
The accountable request lifecycle. Policy decides whether to engage; verification decides whether to speak. Everything in between is grounded in your content.
Sources, checks, and a hash-chained record attached to every decision.
Extractive (no model), a local LLM, or an opt-in remote model selected at installation, swapped without touching the core.
02 · Lifecycle
What each stage guarantees - not how it decides. The how is deliberately withheld.
03 · Policy engine
The policy engine evaluates each request before any content is fetched. Institutions configure the actions - answer, refuse, escalate, human-review, or block and the engine attaches its policy-check evidence to every response. Policy is versioned and editable in-app, so a change is deliberate, attributed, and reversible.
Configurable actions
Each response carries the policy decision that produced it.
04 · Skills layer
For a class of requests - glossary terms, contact details, institution-registerable tools a deterministic skill answers directly, carrying its provenance, rather than reaching for retrieval and generation. The purpose is correctness and speed on the things that shouldn't be left to a model. How a skill is selected and arbitrated is part of the implementation we don't disclose.
05 · Retrieval & ingestion
Ingestion preserves document structure headings and tables and chunks along the nested-heading hierarchy, so a passage keeps the context it lives in. Retrieval is hybrid: lexical BM25, local embeddings, and a reranking stage, with recency awareness so newer guidance wins. A lexical fallback keeps the zero-dependency install working even with no model present.
Components are named for credibility. Tuning, weights, and the ranking recipe are withheld.
Named components
06 · Refusal-first & verification
Verification is layered so a weak answer has several ways to be stopped and only one way to ship by passing all of them.
No generation without supporting content. Bounds answers to what your content can back.
The draft is challenged against its own evidence before release.
A confidence signal the institution can tune the threshold on without seeing the recipe.
A final stop: weak or unsupported drafts are discarded, not shipped.
Guards against invented figures, dates, and amounts that aren't in source.
An accessibility bar on the wording before it reaches a resident.
07 · Evidence & audit
Every answer ships its sources, the basis for its confidence, and the policy checks it passed. Every decision is written to a hash-chained, tamper-evident audit log, with the reason recorded. Exports are signed and verifiable. A retention purge re-chains the log, so erasure doesn't break verifiability.
Properties
08 · Trust & security
Email-OTP sign-in - no stored passwords to leak.
Auditor, officer, admin, superadmin - least privilege by role.
Keys are stored hashed, never in plaintext.
CSRF protection, security headers, rate limiting, and an input-size guard.
PII scrubbing, retention purge, and right-to-erasure under UK GDPR.
Production-config guards plus health and metrics endpoints.
09 · Governance & versioned config
Configuration is immutable, timestamped, and attributed every version records who changed what, and when. One version is active at a time. An in-app policy editor validates a change, deploys it live, and can roll it back. Multi-employee accounts are gated by a superadmin.
Edit → validate → deploy → rollback
10 · Channels
Every channel is an output adapter over one webhook contract, built and unit-tested against simulated provider payloads, not yet wired to a live carrier. The adapter translates the provider's format; the governed engine never changes. Adding a surface is an adapter, not a new build.
11 · Intelligence & quality metrics
CiX scoring turns the audit log into a citizen-experience read and a content/automation backlog. Demand and gaps are clustered to show what residents ask and where content falls short. Quality metrics, grounded-ness, citation quality, hallucination rate, escalation quality, are computed over the same log, so the numbers come from the system's own record.
Computed over the audit log
live values populate from real traffic - withheld until a pilot
12 · Model & deployment
Choose a backend at install: extractive with no model, a local LLM, or an opt-in remote. The default is Llama 3.2 3B - roughly 2 GB and CPU-capable. A one-command install ships with a model picker. Docker and docker-compose (with a TLS profile) and Helm cover deployment. Nothing egresses unless you choose it.
Deployment
13 · Quality engineering
CI runs on every change
Eval gate, green: 15/15 answerable, 7/7 correct refusals, 3/3 out-of-scope, 0 false refusals, 0 confident-wrong - on a 27-item set. The gate measures correctness and refusal; it asserts no headline accuracy percentage.
14 · Standards & compliance
The build is mapped against recognised standards. That's readiness, not certification - external sign-off is still ahead, and we say so.
Mapped · readiness
Annex A themes mapped
Mapped · audit pending
DPIA pack · DPIA signing pending
Readiness, external sign-off pending - stated plainly.
15 · The moat
This page describes what each layer does and what it guarantees. It deliberately stops short of how. The exact prompts, thresholds, confidence calibration, ranking recipe, and decision heuristics are withheld.
That isn't evasion; it's the contribution. The value of CiviQ is the system design and the discipline around it, the part that turns a small model into an accountable system. Naming the standard components (BM25, local embeddings, hash-chaining) earns credibility. Keeping the recipe is the moat.
Withheld by design
The source is open. The judgement encoded in it is earned.