Full-stack developer & AI engineer · 10 years

I build full‑stack
AI systems

Web apps in React, TypeScript and Python, with the LLM pipelines, agents and tests behind them.

ask this page
❯
scroll
01selected work

Three systems I built

i. LLM evaluation · open source

Assay

Tells you which test cases a prompt change broke, and whether it's real or noise

Regression tests for AI apps and agents. Each case is compared with its last passing run, so a pull request shows how the AI's behavior changed.

pytestJest / VitestGitHub ActionsOpenTelemetry
pull request → verdict▶ run
PR
Prompt line changed
support_agent/system.md +1 −0
queued
×8
Run every case 8 times
trajectories · tool calls · cost
idle
Δ
Diff against last passing run
refund_flow: 8/8 → 0/8
idle
noise
8/8→7/8
inconclusive
too few
regression
HIGH
✓
PR check blocks the merge
cause: system.md line 14
idle
ii. document AI

Folio

Scanned documents in, checked records out

Every document moves through the same stage engine: lock, run, save, advance. Stalled jobs restart on their own.

FastAPICeleryKafkaPostgreSQLVertex AI
document lifecycle▶ run
↓
ingest
API · bucket · batch
idle
◐
file prep + pre-processing
split · deskew · denoise
idle
Aa
text extraction
OCR + layout
idle
Gemini
default
Claude
per domain
Qwen
per domain
#
classify → index → verify
structured fields, checked
idle
✓
completed
published record
idle
iii. AI operations · agents

Opswren

A request goes in, a tested and approved change comes out

An AI operations platform with Android and iPhone apps. The model does the work; the platform owns approvals and checks the result.

PythonagentsKafkaPrometheusKotlinSwiftUI
live app · plan → approve → fix an incident
02projects

Also built

03experience

Where I've worked

2023 → now
Senior AI Engineer · Things Alive
2021 → 2023
Senior Software Engineer · Infosys
2018 → 2021
ML Engineer & Tech Lead · Capgemini
2014 → 2018
Business Analyst · Bridge & Roof
04contact

Let's build something
that stays up