← home · /hire

Case study

Dolph / Icebreaker — browser-automation agent backend

Icebreaker (Dolph) · Jan – Feb 2026 (delivered) · Python · FastAPI · Gemini Live · Pydantic

[01] batu@batu0:~/case-studies/dolph

A contract to architect and deliver the full backend for an AI-powered Chrome extension using Gemini Live. Delivered end of February 2026 — ~177 commits, frozen architectural contracts with versioned change requirements and comprehensive test coverage.

The problem

The client wanted an AI assistant that could do things in a user’s browser — capture information, stage an action, ask for approval, execute. The catch: the execution layer had to feel trustworthy. A naive LLM-driven agent that clicks and types autonomously in the browser fails fast the moment a user watches a bad action get executed on their behalf. The interesting engineering wasn’t the agent; it was the contract between the agent and the user.

What I built

A backend that treats every action the agent proposes as untrusted until the human has approved it — and that guarantees idempotent, replayable execution once approved.

Deterministic state machine

An approval-first trust model with lawful state transitions. Action contracts are immutable once drafted — the agent can propose a new one, but cannot mutate an in-flight action. Execution is guarded by explicit gates so no transition happens without the expected preconditions.

Intent → action composition pipeline

The backend takes text-based intent from the user, parses it, and composes deterministic action candidates. Sessions queue the candidates; explicit human approval is the only transition from “drafted” to “approvable” to “executable.” Gated execution means a mis-approved or stale action is rejected at the state-machine boundary, not silently run.

Chrome extension as a pure sensing surface (Phase 2)

Architected the extension as read-only sensor: content-script DOM extraction with confidence scoring, background service-worker transport, and a verification panel that shows what the agent believes about the page without acting on it. The backend owns the action semantics; the extension only observes and asks.

Frozen architectural contracts

Versioned change requirements on the contracts, comprehensive test coverage across state transitions, session queuing, and approval flows. Change requests required an explicit contract version bump — not a code-drift re-interpretation.

Stack

Python · FastAPI · Pydantic · Uvicorn · Google Generative AI (Gemini Live) · pytest.

Scale & outcomes

  • Delivered end of February 2026.
  • ~177 commits across the backend repository.
  • Multi-phase delivery: architectural spec → implementation → testing → hand-off.
  • The trust-model shape (approval-first, immutable contracts, idempotent execution) is the reusable architecture here — applicable to any browser-automation agent that wants to stay shippable past the demo.

← back to work · see /hire for similar engagements