Documentation agent/Rust · Python · Cloud Run
Slate
Send it anything. Ask for the document later.
Write a line, send a photo of a whiteboard, leave a voice note — Slate keeps it without asking where it belongs. Ask for a document and it writes one in your organisation’s format, cites every block, and asks you about anything it cannot support.
The demo
One narrated take against the deployed system. Pick a chapter to jump to it.
How a document gets written
“Write the ward handover.” Decided without a model, drafted with one, and parked as a question when the material runs out.
- 01
Route it — no model
The gateway decides deterministically whether this is a thought to keep, a question, or a document to write.
slate_core::route() - 02
Retrieve in the gateway
It announces the tenant, then searches material, facts and approved guidance. A chat has no session token, so retrieval cannot live in the agents.
Cloud SQL · row-level security - 03
Draft with sources inline
One model call returns blocks, each naming its sources; the agent searches the body for each block to compute its exact span.
slate-ai → Vertex AI - 04
Ask, or file
If a required section has nothing behind it, the run is parked and the question goes back on the surface you asked from — answerable later, from another device. Otherwise it is filed with its citations.
status = awaiting · or · artifact + citations
An agent cannot read another team’s documents
Every content table carries tenant_id under FORCEd row-level security, so a query that forgets its WHERE returns zero rows, not someone else’s. The agent service has no route to Postgres at all — it goes through the same /api/* door as the dashboard.
The policy tests run against a real Postgres as a non-superuser, because a superuser bypasses RLS and would make a broken policy look like a passing test.