Case studies
Curated work.
Production work rebuilt as demos with synthetic data, and public projects you can run yourself. Synthetic fixtures are labeled and never presented as real-world usage.
Production work · Revotas Eight systems from my day job, rebuilt as demos Built at Revotas, a B2B marketing and customer-experience SaaS. The code and client data belong to the company, so each case study recreates the product with synthetic data.
A back-office console written from scratch, with cited AI answers over internal documents →
A back-office console I wrote from scratch as its only author. Staff run accounts, contracts, invoices, support and billing from one place.
React 19 TypeScript Vite 6RAG ~28k lines
One script that puts search and autocomplete on any storefront, live on 271 brands →
A search overlay and autocomplete that attaches to a storefront's own search box with one script, configured per brand without code.
Vanilla JSesbuild ARIA combobox 10 presets 271 brands live
A CLI that took search from one brand to 271 without touching a storefront →
A TypeScript CLI that installs Search V2 through the loader each site already runs, and dry-runs by default.
TypeScript Node 22CLI Dry-run first
Recommendations rendered in the store's own card design and carousel →
One config-driven script that copies a real product card from the page, fills it with recommendation data and starts the store's own slider on it.
Vanilla JSSlick Owl Swiper~12k lines core
A no-code builder that compiles a marketer's settings into a storefront script →
Deal of the Day V2, built from scratch: a builder that turns settings into a self-contained storefront script, with a live preview.
React Vanilla JS runtime JestpostMessage
Paste a product URL and the email block fills itself in →
A block for the panel's drag-and-drop email builder that fills in a product's title, price, image and description from its URL.
React 18Email HTML 4 block variants
A guard that stops saves landing on the wrong brand, and three years of panel work →
Work inside the company's main marketing panel, a React codebase with years of history and many contributors.
React 18Redux Toolkit Chart.jsi18next 847 commits
Push notifications that open the right screen from any app state →
The React Native side of push for the platform's mobile clients, from token registration to deep-link routing.
React Native 0.79 FCMNotifee Deep links
Public projects
Live demos and repositories
A support console where answers cite sources and a human approves every action →
A TypeScript support operations console with cited streaming responses and a human approval gate. Seeded synthetic data.
Next.js 16 TypeScript AI SDK 6 Zod Playwright
One refund policy, two agent runtimes, same outcome: 50 lines against 97 →
One refund policy as a native tool-calling loop and as a LangGraph state graph, measured against a scripted deterministic model. Follow-up: the same refund decision from a chat model and a decision model .
TypeScript Next.js LangGraph Turborepo CI gate
Evals for citations, abstention, latency and cost that fail the build on a drop →
Offline evaluation that produces the same result locally and in CI. No API key, no LLM judge.
Python FastAPI Pydantic Docker CI
Hybrid retrieval with rank fusion, citations and no-context abstention →
A runnable retrieval reference. Fixture scores validate the contract, not real-world quality.
Python FastAPIRRF Docker Pytest
05 Founder product 2026
Tedavio AI
An AI assistant and admin panel for clinics, built from scratch Tedavio AI Private live MVP · healthcare clinics
An AI-first platform for clinics. Private product, so there is no public demo.
pgvector Row-level security Claude GeminiWhatsApp Cloud API
How to review
A short path through the evidence
1 Run the recruiter path Open Relay Desk, generate a cited reply, inspect proposed actions, approve a safe action, then review the synthetic reliability dashboard.
Open live demo ↗
2 Inspect the eval contract Review the golden-set contract, failure taxonomy, non-zero CI gate and deterministic HTML report in LLM Reliability Lab.
Open repository ↗
3 Trace the RAG contract Follow ingestion through lexical and vector ranking, RRF, citations, abstention and offline Hit@3/MRR fixtures.
Open repository ↗