About
I build AI agents that know when to ask a person.
I build AI agents that do business work with real tools: read an invoice, query a database, decide what happens next. Getting an agent to act is the easy part. The work is getting it to stop when it should, and proving that it does.
I came to this from security. For several years I have worked security operations inside an enterprise data centre: badge access, vendor coordination, equipment flow, and the loading dock during server deployments. Access control, chain of custody, and the gap between a written procedure and what people actually do at 3am are not abstractions to me. An agent needs the same things: a policy it cannot argue its way around, a log nobody can quietly edit, and a person who signs off on what matters.
My main project is an accounts-payable agent. A policy engine, not the model, decides what happens to each invoice. Every step goes into a hash-chained audit log, personal data is redacted before any model sees it, and a person reviews escalations from the command line or Slack. When the model or a prompt changes, the same 158 test invoices run again, and a regression gate blocks the change if accuracy falls or any safety count rises above zero.
That source is private for now, so this site marks those rows as building. You can read what each one measured and when; you cannot clone it yet. A row moves to shipped only when its source is public, and the build enforces that rule: a project claiming to be shipped without a repository, a stated result, and evidence fails validation, and the deploy is refused.
This site
The site is a piece of the argument. It sets a Content Security Policy with no unsafe-inline anywhere, self-hosts its fonts so no third-party origin appears in the policy, sets no cookies, runs no analytics, and ships under ten kilobytes of JavaScript. Every one of those claims is visible in your own browser: read the response headers, then open the network tab and count what loads.
Contact
Open to AI agent engineering roles.