Selected work

What I do, and the proof behind it.

The projects stay the same. Pick the capability you care about, then inspect the decisions and evidence behind the work.

AI-powered apps

The app is the easy part. The system around it is not.

These products hold conversation state, bound what a model may decide, keep commercial truth in a database, and stay operable after launch. Each one reached real users, not a demo.

01Truth

Commercial and operational truth stays outside model prose.

02Retrieval

Candidate sets are bounded before a planner can select.

03Authority

Safety, eligibility, and human takeover remain explicit.

04Proof

Claims are tied to a named verification surface.

AI-powered apps

Each record starts with the operating problem and ends with evidence.

07Client Delivery

Muriersilk AI Sales Concierge

Production deployed / live customer surface

A reusable commerce concierge that streams through CopilotKit and AG-UI, retrieves products and knowledge through a guarded hybrid pipeline, hydrates current commercial facts in the browser, preserves durable context, and hands operations to Chatwoot.

The operating problem

A useful commerce assistant must help with discovery and care questions without inventing prices, recommending ineligible products, turning marketing copy into medical claims, or coupling model failures to checkout.

What I owned

I defined the product boundary, retrieval architecture, two-run interaction contract, context budgets, catalog and safety guards, multi-tenant runtime, operator workflow, and release evidence. AI agents produced most implementation code under those constraints.

The decisions that mattered

  • Keep PostgreSQL and Medusa as the commercial source of truth while treating Qdrant as a rebuildable retrieval projection.
  • Let the model select stable product IDs and reasons, then let the browser hydrate current names, images, prices, currency, and URLs.
  • Compile planner and final-generation context below a 28k hard budget so provider input remains below the 32k pricing boundary.

What can be checked

  • A real provider smoke completed Run A, exact glove cards, Run B, a second product-card turn, and replay. The highest observed compiler input was 25,822 tokens and the highest provider prompt was 5,785.
  • Backend fresh verification passed 70 test suites and 572 tests, followed by build:chatbot.
Read the full case
01Independent Project

OptiTalent

Independent product / active validation

A multi-tenant recruitment product that turns candidate search, evidence review, shortlist decisions, controlled sharing, and recruiter feedback into one coherent workflow.

The operating problem

Recruiting teams need to move quickly without turning matching into an opaque score or losing the evidence behind a decision.

What I owned

I defined the product boundaries, tenant model, evidence contracts, recruiter workflow, review gates, and release acceptance. AI agents produced most implementation code under those constraints.

The decisions that mattered

  • Prefer evidence-first retrieval and explicit unknowns over a single opaque LLM judgment.
  • Place bounded embedding and retrieval work close to tenant data while preserving server-side policy and review authority.

What can be checked

  • Implemented candidate search, candidate evidence, shortlist, and sharing contracts.
  • LightGBM LambdaRank was evaluated against deterministic baselines on a frozen retrieval protocol and was not selected as the production winner for that feature shape.
Read the full case
06Open Source

Piveo

Public open-source repository

An open-source creative workstation for image and video generation workflows, designed around repeatable creative settings, queues, galleries, comparison, and human control.

The operating problem

Creative generation becomes difficult to operate when prompts, media, retries, settings, outputs, and comparisons are scattered across one-off chats.

What I owned

I defined the workstation product, generation flow, queue behavior, creative controls, gallery, cancellation and retry states, and self-hostable release shape.

The decisions that mattered

  • Treat generation as a controllable workflow with state, not a single prompt box.
  • Keep outputs and settings inspectable so people can iterate deliberately.

What can be checked

  • Public repository contains image and video generation surfaces.
  • Runtime includes a generation queue, gallery, download, comparison, retry, and cancel behavior.
Read the full case