Department · Research & Content

Governed research, synthesis, and drafting.

Three agents — research-lead, data-analyst, content-editor — doing real knowledge work on cheap model tiers, grounded in a curated knowledge base, under a propose-not-publish mandate that keeps a human on every output.

Asphodel + Tiresias-ZT · ACME Corporation
The stakes

Knowledge work is where AI cost and AI risk both concentrate.

Research, analysis, and drafting run continuously and produce the language your organization acts on. Left ungoverned, that is exactly where spend leaks and where unverified text reaches a system of record.

The cost problem

Every brief, every synthesis pass, every draft burns tokens. On a frontier tier a single governed call costs $0.19. Multiply that across a department running all day and the model bill is the department budget.

The trust problem

A draft with no provenance, no grounding, and no review is a liability the moment it is published. Content that shapes decisions needs a source, an author, and a reviewer — enforced, not requested.

Src · Grafana ROI dashboard (uid acme-roi-economics), observed per-call cost.
The workforce

367 governed agents, mapped to the real Acme org.

Research & Content is one department inside a live zero-trust workforce: 7 showcase agents on a topological hand-off DAG plus 360 fleet agents mapped like-for-like to the organization by department and role-family.

367
governed agents
360
fleet agents
28
departments mapped
325,154
directory principals
Src · CP registry (367 agent tenants, postgres) · agent-manifest.json · Samba-AD directory (120,120 humans + 205,034 NHI, 10 regions, 626 roles).
Where this department sits

A three-agent slice of a seven-agent hand-off DAG.

The showcase workforce is a 14-edge topological hand-off DAG. Research & Content owns the middle: it receives from the security desk, refines, and passes a reviewable draft to compliance.

soc-lead research-lead data-analyst content-editor compliance-officer
research-lead
Frames the question and gathers grounded source materialOpens each cycle from a domain brief; searches the curated KB before generating.
node 4 / 7
data-analyst
Synthesizes and structures the findingsTurns raw research into an analyzed, cited memory record.
node 5 / 7
content-editor
Drafts the deliverable as a proposalWrites for review — never straight to a system of record.
node 6 / 7
Src · personas.json — 14-edge topological hand-off DAG, container acme-runner-sched.
One job, end to end

Every call is deny-by-default before it does anything.

A research or drafting job never touches data directly. It mints a capability token, passes the enforcement plane, and only then reaches its own isolated tenant — with the whole hop signed into an audit chain.

runner mints HS256 cap-token PEP :8343 soul-svc tenant acme-soul-svc PostgREST acme_soul · RLS
enforce
PEP validates api-key + capability token, evaluates policy deny-by-defaultOn allow, forwards verbatim to that agent's backend only.
:8343
record
PEP signs the call into an Ed25519 audit chain → ships to CPDurable WAL at /data/audit-wal.
audit
meter
Usage reported to /cp/usage/report → tzt_usage → Grafana ROI boardPer model: tokens in/out, cost, events.
tzt_usage
Src · ARCHITECTURE-FACTS · governed request flow (one job).
Live proof · observed

What this department actually spends.

Routing favors free and self-hosted tiers by design. Fleet agents run in rolling batches at ~1–2 governed jobs a day each, and the observed per-call cost reflects it.

$0
gemma-4-31b : free / call
$0.0015
gpt-oss:120b / call
$0.002
deepseek-v4-pro / call
$0.19
opus-4.8 / call
The frontier tier costs $0.19 a call. This department almost never touches it.
Src · Grafana ROI dashboard (uid acme-roi-economics) · fleet_runner.py (FLEET_BATCH=6, INTERVAL=300s, MIN_GAP=10h).
Walkthrough · research-lead

Research that starts governed, not audited after the fact.

research-lead opens each cycle from a domain brief, grounds itself in the curated KB, and runs on a cheap home tier — escalating only when the material demands it.

home
Runs on a free / self-hosted large tier by defaultFree-homed routing: free_large · ollama_oss · ollama_deep.
cheap tier
ground
Searches its curated KB before generatingPOST /v1/memory/search over its own RLS-isolated tenant.
soul-svc
escalate
Keyword triggers raise the tier only when warranted+incident / +breach / +critical → escalate toward the ceiling.
home→ceiling
degrade
Fallback-to-floor on model errorFree-homed floor = ollama_oss for a reliable degrade path.
→ floor
Src · personas.json (per-agent home/ceiling/floor + keyword escalation) · config.json (9 tiers, 3 providers).
Walkthrough · data-analyst

Synthesis that leaves a durable, isolated record.

data-analyst takes the research hand-off and turns it into structured findings. Every job is the same governed shape — brief in, reasoning and memory out, usage metered.

domain brief tiered LLM governed CoT capture memory write usage report

Reasoning is captured

The chain of thought is written through the governed path via POST /v1/cot/capture — the analysis is inspectable, not a black box.

Findings are isolated

The result lands in acme_soul with RLS forced. Each agent is its own soul-svc tenant; cross-tenant reads require an explicit SET ROLE service_role.

Src · fleet_runner.py job shape · soul-svc endpoints (/v1/cot/capture, /v1/memory/write) · acme_soul RLS forced.
Walkthrough · content-editor

Propose, not publish.

content-editor writes the deliverable — but as a proposal, into governed memory. Nothing reaches a system of record until a human dispositions it, and the writes themselves are inspected at ingest.

draft
Writes the deliverable to its tenant memory as a proposalHanded downstream to compliance-officer, node 7 of 7.
/v1/memory/write
inspect
ContentInspection (enforce) rejects unprovenanced writesRequires source_type + authored_by on every write.
enforce
review
Memory and CoT are reviewed in the management consoleasphodel-ui — a human approves before anything is published.
:3001
Every draft carries a source, an author, and a reviewer — enforced at the write, not requested in a guideline.
Src · soul-svc ContentInspection (source_type + authored_by) · asphodel-ui memory/CoT review (host :3001).
Grounding & isolation

Grounded in a curated KB it is not allowed to leave.

Every agent in the department reads and writes only its own slice of the data plane. The curated knowledge base is the ground truth for research — and the row-level boundary is enforced by the database, not the application.

Curated-KB grounding

Agents search their memory before drafting — GET /v1/memory and POST /v1/memory/search, embeddings via OpenAI — so synthesis stands on retrieved sources rather than model recall.

Forced row-level security

_memories and _soul_api_keys carry FORCE RLS in acme_soul. Even the postgres role is subject to it; crossing a tenant boundary is impossible without SET ROLE service_role.

Src · Plane 4 (data) — acme-soul-svc → Caddy /rest/v1 stripper → PostgREST → Cloud SQL acme_soul (RLS forced).
Governance & audit

Deny-by-default, signed, and watched for drift.

The department runs under the same enforcement as the rest of the workforce: nothing is permitted implicitly, every call is signed into a tamper-evident chain, and behavioral drift is caught automatically.

policy
Deny-by-default at the PEP; on allow, forwarded verbatimEach agent reaches only its own soul-svc backend.
:8343
audit
SoulKey Ed25519 signed audit chain shipped to the control planeDurable WAL at /data/audit-wal · SIEM via RFC5424 syslog → Promtail:1514 → Loki.
signed
watch
SoulWatch detects behavioral drift → auto-quarantineShared postgres quarantine store.
auto
review
Analyst console for audit/verify, soulwatch, trajectory + drift analyticsRole-token gated (pdp.tiresias.watch).
/admin/*
Src · Plane 3 (enforcement) — PEP acme-tiresias-zt · signed audit chain · SoulWatch → quarantine.
Economics

The self-host-vs-API answer, per call.

The ROI board measures observed cost per model. For a department that runs research and drafting all day, tier choice is the entire economics — and the governed floor is effectively free.

Model tierProviderObserved cost / callUSD
opus-4.8OpenRouter paid
$0.19
sonnet-4.5OpenRouter paid
$0.03
deepseek-v4-proOllama Cloud
$0.002
gpt-oss:120bOllama Cloud
$0.0015
Llama-3.3-70BHuggingFace
$0.0012
gemma-4-31b : freeOpenRouter free
$0

Free tiers do saturate — hermes-405b:free returns chronic 429s — which is precisely the self-host case that deepseek-v4-pro and gpt-oss:120b answer at fractions of a cent.

Src · Grafana ROI dashboard (uid acme-roi-economics), observed per-call cost · config.json (9 tiers, 3 providers).
Research & Content · in one line

Cheap tiers, curated grounding, a human on every draft.

research-lead, data-analyst, and content-editor do governed knowledge work at fractions of a cent per call — every job deny-by-default, every write provenanced, every deliverable proposed for review before it is ever published.

Asphodel + Tiresias-ZT · ACME Corporation · 367 agents live on GCP
1 / 1