Architecture
A ticket enters, and one of three things happens: it gets an approved automatic response, it gets routed to a human with the evidence attached, or it gets blocked outright. Every stage below runs for every ticket, in this order, and every stage's outcome is shown live in the guided demo — nothing in the UI is reconstructed after the fact.
Source policy documents live in
/corpus as plain markdown, committed to the repository. A script splits each document on headings, chunks the content, embeds it, and upserts it into Postgres. Re-running ingestion re-indexes the corpus without any application code changing. Each ingest run is stamped with a corpus version that flows through to every citation shown to a user.