Deployments
Systems running in production.
Real data, real customers, real money moving. Where the business is not mine, it is
described by what it does rather than named — I will name any of them on a call once
the owner has agreed.
Reads the contractor’s own job history and pricebook, then drafts a priced quote into their job-management system within minutes of a lead landing. A human reviews and sends every one.
Runs on a five-minute cron against the live system of record, so the hard problem is not generation — it is never double-quoting a job. The completion marker can be stripped by an ordinary edit in the vendor UI, so idempotency is held in a separate state database rather than inferred from the record itself. Re-running the full pass skips every job it has already seen. A guardrail clamps labour estimates against the pricebook, and the whole thing stops dead on a single file touch.
100% idempotent on re-run, proven in production
- Deployed into
- A Sydney electrical contractor
- Live since
- July 2026
- Python
- BM25 retrieval
- Claude via OpenRouter
- SQLite
- ServiceM8 API
- cron on GCE
Turns a private document store into an assistant that answers with citations — and shows each person only the material they are cleared to see.
Scope is enforced server-side at the retrieval layer, not asked for in a prompt, so a determined question cannot talk its way past it. I verified it by trying to break it: queries aimed at out-of-scope material return zero sources rather than a refusal message, which is the difference between a filter and a guardrail. Provisioning a new tenant — access policy, scoped service, DNS, proxy — is one command.
904 documents indexed, 0 failed
- Deployed into
- Emerge Digital, and one client tenant
- Live since
- July 2026
- Google Cloud Run
- Discovery Engine
- Cloudflare Access
- Workers
- BigQuery
Instead of returning a wall of text, the assistant returns working interface — project cards, comparison tables, a mortgage calculator the buyer can drag.
The model never emits UI. A deterministic TypeScript composer builds the component tree, which means the expensive part happens once and every subsequent interaction is free. Dragging the mortgage term from 25 years to 10 recomputes the repayment with zero calls back to the model. That property is what makes agent-grade surfaces affordable to put on a page that gets real traffic.
0 model calls per slider interaction
- Deployed into
- A Dubai off-plan property portal
- Live since
- July 2026
- Next.js
- OpenNext
- Cloudflare Workers
- D1
- Workers AI
- A2UI
Overflow calls are answered, transcribed, qualified, and written onto the right job — plus a one-time link that pulls the customer’s photos and plans straight onto that job.
Most of the work here was diagnosis, not generation. The intake was silently locked to a single phone extension, so calls answered by anyone else never became jobs at all — that was found by reading the data, not the code. The upload path sniffs file types from magic bytes instead of trusting the browser, because customers send HEIC from an iPhone and CAD plans from a builder. Outbound SMS is a polled outbox relayed through the PBX, because the carrier only accepts sends from that host. A prompt change was validated in memory against fifteen real recorded calls before it went anywhere near production.
15 real calls replayed before deploy
- Deployed into
- A Sydney electrical contractor
- Live since
- June–July 2026
- 3CX
- faster-whisper
- Cloudflare Workers + KV
- ServiceM8 API
- Python
A grounded answer agent, a cost-audit agent reading live billing data, and a policy check — deployed to Google’s managed Agent Engine and registered into the enterprise search app.
The guardrails are code callbacks, not instructions. A save is refused until a search has actually run; anything that looks like outbound is refused until the policy preflight has run. That distinction matters because a prompt-level rule degrades quietly under pressure and a callback does not — it either ran or it did not, and you can see which in the trace.
3 agents live on Vertex AI Agent Engine
- Deployed into
- Emerge Digital
- Live since
- July 2026
- Google ADK
- Vertex AI Agent Engine
- Gemini 2.5
- Python
- BigQuery
An API an AI agent can pay for by itself — it receives a price, settles on-chain, and the call is metered and billed. Listed in a public agent directory.
The interesting part is reconciliation. An agent paid 0.25 RLUSD on-chain and the metering system billed $0.25 — matched to the cent, which is the whole question anyone sensible asks about machine payments. Built and proved as rails, not as a business: the buying wallet was mine, so this demonstrates that settlement and metering agree, and nothing about demand.
56 resources live, 0 failed directory verification
- Deployed into
- Emerge Digital
- Live since
- July 2026
- Cloudflare Workers
- Hono
- x402
- XRPL
- Metronome
The part I would want to be judged on
I published 47 statistics and withheld 85.
Building a machine-readable data feed for a property portal meant deriving price statistics per community. Only 47 of 132 had enough underlying sales to survive a minimum-sample test. The other 85 were withheld entirely rather than smoothed, clamped, or averaged into something that looked complete. A number an agent will cite has to be a number that is true — and the honest move is usually to publish less than you can.