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, and the leak probes re-run after every index pass: 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. The first outside tenant went live in August and tripled its own user base in forty-eight hours entirely by pull — one person used it to prepare for a meeting, then recruited colleagues. The rest of the work is retrieval hygiene: stale copies of corrected documents were outranking the fixes, so the exporter now skips them and logs every skip, and the sync pipeline watches itself with a heartbeat and an alarm that stays silent until something is actually wrong.
1,031 documents indexed, 0 failed
- Deployed into
- Emerge Digital, plus outside client tenants
- Live since
- July–August 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, so dragging the mortgage term from 25 years to 10 recomputes the repayment with zero calls back to the model — and that grew into the rule that governs the whole surface: a feature ships on by default only if it cannot spend money. Four of the five agent surfaces are pure TypeScript. The build finished in August with typed next-step chips, where following a link costs nothing and only a genuine question spends a model turn, and a printable research report whose access control is the point — a non-owner gets a 404 that is byte-identical for real and invented ids, so the endpoint cannot be used to probe what exists. 468 end-to-end tests hold all of it in place.
0 model calls per slider interaction
- Deployed into
- A Dubai off-plan property portal
- Live since
- July–August 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 store’s browse and search ran on a metered commerce-search API, and crawler traffic was quietly burning the quota — inflating the bill and starving real shoppers of search.
Every browse call was billed, bots do most of the browsing, and the rate-limit errors they triggered degraded search for humans. Worse, the crawler path returned zero products and empty facets, so search engines saw a hollow store. The fix was an in-process stale-while-revalidate catalogue index built straight from Postgres — ten-minute TTL, single-flight refresh, the vendor’s multi-select facet semantics reproduced exactly — so browse traffic never touches the paid API at all. Billed calls fell from 233 an hour to 48, quota errors went from 32 an hour to zero, and crawlers now receive fully populated pages. This one is my own store and my own bill, which is precisely why the guardrail got built properly.
0 quota errors per hour, down from 32
- Deployed into
- Aquora, my own ecommerce build
- Live since
- August 2026
- Next.js
- Medusa
- Google Retail Search
- Postgres
- Cloudflare
Booking events flow from the scheduling webhook through a Cloudflare Worker into LinkedIn’s Conversions API — no browser pixel in the loop, so an ad-blocker cannot eat the signal and nothing is counted twice.
The design decision was subtraction. The platform sums every conversion rule attached to an ad set with no cross-source dedup, so running the browser tag beside the server path would double-count each booking and halve the apparent cost per booking — the exact number the pilot’s kill gate reads. The browser call was removed and the account now holds exactly one enabled rule, which makes double-counting impossible rather than merely unlikely. Match keys are a hashed email plus a click id captured at landing and carried through the cross-origin booking iframe. And because a webhook receiver that returns the same status for success and skip is unverifiable, it logs the outcome, not just the status. Proven end to end with real bookings — my own, as ever — accepted by the platform with a 201.
1 enabled conversion rule, so double-counting is structurally impossible
- Deployed into
- Emerge Digital
- Live since
- July–August 2026
- Cloudflare Workers
- Cal.com webhooks
- LinkedIn Conversions API
- SHA-256 match keys
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.