Frame 01Current roleProduction AIApr 2026 to present
Verita AI: production LLM systems that have to show their work
Software engineer on a small team, across five workstreams: a vision-LLM audit pipeline, the core of an LLM data-annotation platform, a rubric verifier for an AI interviewing product, SOC 2 Type II readiness during a live audit, and the security tooling underneath all of it. What I built and why, at interview depth. The client is not named.
- Role
- Software engineer
- Backend
- Python, Django / DRF, PostgreSQL, Celery, SQS
- Frontend
- React, TypeScript, Vite
- Infrastructure
- AWS, Terraform, Docker, GitHub Actions
- A vision-LLM pipeline reads contractor screen recordings against per-project task policies and seals priced, recomputable audit ledgers. 264 sessions sealed in production.
- The read model was picked by benchmark: 80% precision and recall on a golden evaluation set. Both figures are from my résumé; the code is not public.
- The best find was a bug: four runs sealed without the model ever running, 73 sessions marked clean unread, because a coverage warning was gated on the wrong flag.
A vision-LLM audit pipeline
When a remote contractor bills for a day of work, what was that day? The answer sets what people get paid, so "the model thinks it looks fine" does not survive a dispute.
I built the pipeline that reads session frames from screen recordings with a vision model, checks each frame against that project's task policy, and buckets the time: genuine work, AI-assisted work, off-task activity, and frames the model could not read. Guideline violations are flagged from the same read. The output is a sealed ledger, priced and recomputable from the underlying rows, so a disputed figure can be traced instead of argued about.
One session through the pipeline. The task policy is per project, so the same screen can be clean on one and off-task on another.
Choosing the read model was an evaluation problem, not a preference. I benchmarked candidates across providers through OpenRouter on a golden set of human-labelled sessions, comparing precision, recall and cost per session. The pipeline reached 80% precision and recall on that set, and has sealed 264 sessions in production.
| Chose | Over | Because | Cost |
|---|---|---|---|
| A ledger recomputable from its rows | Stored totals per session | A disputed number has to trace back to the frames that produced it | Recompute is slower than a lookup, and sealing is an explicit step |
| Benchmarking read models across providers | Committing to one vendor | Precision and recall on the golden set were the decision, not the brand | A golden set had to be labelled and kept current |
| An "unreadable" bucket | Forcing every frame into a work category | An unreadable frame counted as clean is a billing error nobody sees | Some time stays unclassified and needs a person |
Three checks. The golden set turns "seems accurate" into a precision and recall number. The ledger is recomputable from its rows, so a changed row no longer adds up to the sealed total. And a coverage check is supposed to assert that every session was read before a run can seal. That last one was wired to the wrong flag; see "What I found".
An LLM data-annotation platform
Distributed annotators produce training data here, and the client's, reviewer's and operator's views must never leak into each other. I built the core: five-role access control with an explicit capability matrix, a workflow state machine with audited transitions and calibration routing, screening and qualification gates before an annotator can claim work, an append-only audit log, and 10+ annotation widget types on the React side.
Two decisions I would defend anywhere. The permission model is tested by a table-driven matrix over every endpoint and every persona, with a completeness guard that fails when an endpoint is added without an assertion, because permission bugs live in the endpoint nobody remembered to test. And audit coverage is derived from the URL configuration rather than a hand-kept list, so the check proves all 54 endpoints are covered instead of trusting the list. Over this work the test suite grew from 210 to 1,239 tests.
The ingestion path took real time too. Remote images are fetched with private address ranges blocked, so a crafted URL cannot turn the server into a proxy for the internal network, then re-hosted to S3 through presigned uploads. Enqueueing moved off the request cycle into asynchronous SQS batches after 1,000-image imports began timing out. That path delivered 6,756 processed images to a client, with geo-derived metadata backfilled.
A rubric verifier, and a testing standard
For an AI interviewing product, I delivered the second generation of the finance-interview rubric verifier in six days: LLM-judge claim validation against the rubric, shadow-verifier gating so a new version runs on production traffic without changing outcomes, and hard execution time limits so a slow evaluation fails predictably instead of hanging.
The lasting contribution was a standard rather than code. A test only counts once a deliberate defect in the source has shown it can fail, and the defect itself has to be confirmed as landed, because a mutation that silently did not apply produces a test that looks proven and is not. Tests that pass against broken code are worse than no tests. They transfer confidence without earning it.
SOC 2 Type II, during a live audit window
I led readiness while the observation period was already running, which removes the option of fixing things quietly. Control coverage moved from 154 to 165 of 173, which is 95%.
- A pgAudit and storage-encryption migration across 11 production PostgreSQL databases, in Terraform rather than applied by hand.
- GuardDuty, CloudTrail and file-integrity monitoring deployed and wired to real alerting, which is how I found the file-integrity rules had been installed in a form that never fired.
- 40+ evidence artifacts for the auditor, and remediation of authenticated penetration-test findings.
- A backup and access review that surfaced backup jobs silently failing on missing role permissions.
The recurring lesson: most compliance failures are not missing controls. They are controls configured once and never verified as working. The interesting work is proving the alarm fires, not installing the alarm.
The security pipeline
I built a pipeline that runs five scanners (gitleaks, OpenGrep, Bandit, Trivy, CodeQL) and hands the merged output to a reasoning model for triage: deduplicating across engines, dropping false positives, and ranking by exploitability. On the production codebase it reduced 345 raw findings to 33 verified vulnerabilities, nine of them critical: remote code execution, SSRF, IDOR and exposed credentials.
The generalised version is open source, with no findings and no customer code in it. The 345 to 33 result belongs here, on the internal run; the public repo ships the method, not the numbers. Read that case study.
What I found
The most useful things I found were not features. Each was silent, and each was caught by asking a question the system was not asking itself.
Investigating why the pipeline had never flagged a violation in production, I found four completed runs sealed without the vision model ever being invoked. A coverage warning was gated on the wrong flag, so a run with no reads looked identical to one with full coverage. 73 sessions had been recorded as clean without being read. The lesson is that a warning is not a gate. What hid it: sealed runs and sessions recorded as clean, with nothing asking whether they had been read.
The deduplication key assumed session identifiers were unique across the system. They were not, so the key was quietly wrong. Nothing failed and nothing warned, which is the point: a wrong key does not announce itself.
The file-integrity rules had been installed in a form that could not produce an alert. An installed agent counts as evidence until someone changes a watched file and waits for the alert that does not come. Found while wiring monitoring to alerting for SOC 2.
Backup jobs were failing on missing role permissions and paging nobody. A backup that fails quietly is indistinguishable from one that ran, until the day it is needed. Found in a backup and access review.
Outcome, and what it does not prove
The audit pipeline runs in production.
Proof264 sessions sealed. Source: my résumé.
The read model was chosen on evidence.
Proof80% precision and recall on a golden evaluation set, benchmarked across providers via OpenRouter. Source: my résumé.
The platform core is tested, not just written.
ProofSuite grew from 210 to 1,239 tests; audit coverage derived over all 54 endpoints. Source: my résumé.
SOC 2 readiness moved during a live audit.
Proof154 to 165 of 173 controls, 11 databases migrated, 40+ artifacts. Source: my résumé.
What it does not prove. 80% on a golden set is not 80% in production; the set is finite and production drifts from it. 1,239 tests says nothing about which would fail, which is why the mutation standard exists. 165 of 173 controls is readiness, not the auditor's opinion. And none of it is public; the numbers are my résumé's and this page is my account of them.
- No public code. Everything on this page is employer work; there is no repo to check it against.
- Every number is taken from my résumé. The four findings are from my own write-up of the work.
- The client behind the audit pipeline and the image delivery is not named.
- 80% precision and recall is a golden-set figure, not a production measurement.
- The three demos illustrate the mechanisms. None of them is a port of Verita source.
- Small team. I write "I" where I built the thing and "led" where I also coordinated others.
Sources Résumé This case study, written by me Scope: software engineer on a small team Verified 3 Sep 2026