How the answer is made. Cited.
Every answer is a verbatim passage from the governing policy — with its section and a link to source. A fabricated citation is structurally impossible; when there's no answer, the tool says so.
Six steps from a question to a quote you can stand behind.
The same sequence runs on every lookup. The last two steps exist to make a wrong-but-confident answer impossible to emit.
Plain-language question, identifiers stripped
You ask in plain language — a question or a short situation. Before the query leaves your browser, direct identifiers (SIN, health number, phone, email, postal code, account IDs, and labelled lines) are stripped, and again server-side. Staff are asked to enter the policy question, not the person.
question → scrubbed queryKeyword retrieval over the manual
Policy language is keyword-heavy, so retrieval today runs BM25 keyword search over the indexed manual chunks and ranks the candidates by relevance to the query. A vector-similarity and rerank layer is in development to close vocabulary gaps; it is not yet live.
keyword search over indexed chunksOne-hop cross-reference expansion
Eligibility is a conjunction of gates. The tool pulls in the sections that the top hits point to via parsed "see Section X" links, so the whole gate set surfaces — assets, income, residency — not one lexical match seen in isolation.
top hits → +referenced sectionsAnswer as verbatim spans only
The engine returns quoted spans drawn as verbatim substrings of the retrieved chunks — never paraphrased into a citation, never composed from memory. There is no text generation, so there is nothing to invent.
quotes = substrings of real chunksProgrammatic verification
Every returned quote is checked against the source chunk: it must be an exact substring (whitespace-normalized) of a real chunk, or it is dropped. The URL and effective date are then attached from the chunk's metadata by chunk ID — the engine never emits a link or a date itself.
exact-substring check · metadata by IDRefusal by construction
If the top match score falls below the calibrated threshold, or the set of verified quotes comes back empty, the tool returns the escalate message instead of an answer. A guess is not one of the outcomes it can produce.
below threshold → escalate“A person who resides with a relative and is a party to the tenancy agreement is paid the Core Shelter rate for private housing.”
This also depends on: Assets — liquid-asset limit § 03, Living with relatives § 05 · LA 7.
Illustrative · Alberta Income Support
This example draws on Alberta Income Support, the first coverage loaded (see /coverage). The quote, section code and date are a representative specimen of the on-screen result shape. In the product these fields are populated only from the live indexed source and the check described in step 05.
Fabricated citations aren't discouraged. They're structurally impossible.
A language model asked for a citation can invent a plausible one — a real-sounding section number, a URL that resolves to nothing. policyratio removes the two places that failure can happen, rather than asking the model to behave.
The quote must exist, character-for-character
Every span the model returns is compared against the actual chunk text. If it is not an exact substring (after normalizing whitespace) of a real, indexed passage, it is dropped before it reaches the screen. A paraphrase cannot pose as a quote.
The model never writes the link or the date
URLs and effective dates are not generated. Once a quote is verified, they are looked up from the source chunk's metadata by chunk ID and attached. The model has no path to emit a citation that points anywhere but the passage it actually quoted.
It refuses instead of guessing.
“I don't know” is a first-class result. When retrieval doesn't clear the relevance threshold, or verification leaves no quotes standing, the tool declines to answer — because for a legally accountable decision, a confident wrong answer is worse than none.
The threshold is calibrated on the evaluation set so that out-of-scope questions land here. The tool would rather send you to the binder than manufacture a passage that isn't there.
Built to hold as little as possible.
Whatever regime governs your jurisdiction — FOIP, PIPEDA, PHIPA and provincial equivalents — the tool is built to keep client identifiers out. Direct identifiers are stripped in the browser and again server-side, and staff are asked to enter the policy question, not the person. Free text can still contain a name, so the discipline matters — the tool asks about the rule, not the client.
Direct identifiers stripped, both sides
SIN, health number, phone, email, postal code, account IDs, and labelled lines are removed in the browser before the query is sent, and again server-side. Free text can still hold a name, so staff are asked to enter the policy question, not the person.
The scrubbed question, not a client file
Each lookup records the scrubbed question, returned section IDs, and quote hashes — enough to reconstruct an answer, with direct identifiers already stripped and no client file attached.
Every answer is reconstructable
Because the log pins the sections and quote hashes, the exact basis of any past answer can be reconstructed on appeal — without holding the client's details.
Access-controlled, short retention
Even structured situational facts can be re-identifying in rare combinations, so access is per-worker and retention is deliberately short.
Today the engine is deterministic — keyword retrieval with exact-substring verification, no text generation. If a model is later added for reranking or a plain-language gloss, real-client use stays gated behind concrete prerequisites — not promises:
- A completed Privacy Impact Assessment (PIA).
- A data-processing agreement with zero data retention and no training on inputs.
- Queries carry no client identifiers — direct identifiers stripped before send.
- Logged engine and version for every call, for reproducibility.
It checks the policy. You make the decision.
policyratio never renders the official eligibility determination. It can check a stated situation against the cited rules — flagging, for example, that liquid assets are over the computed limit — but every result is decision support with its policy citation, and the determination, the benefit calculation, and the accountability always stay with the staff member.
Dollar figures follow the same discipline as citations. Amounts are verified against the government's published rate schedule (the Financial Benefits Summary) by an automated check, carry their own effective date and source page, and are never model-generated. This framing is persistent, not a dismissible banner: the answer is evidence for your judgment, not a substitute for it.
The launch gate.
Trust is measured before release, not asserted. For each coverage area, a golden set of 50–100 SME-verified questions — seeded from what frontline staff actually ask — is run against the tool, scoring four things.