projects

Everything I’ve shipped.

Everything I've shipped, grouped by purpose. The first shelf is paid client work. I built the rest for myself or for fun.

clients

Client work.

Built through Bloort, my one-person studio, for businesses that needed something working quickly. Each runs on the client's own domain.

Agency site with its own editor2026

Hookana

for Hookana, a performance marketing agency

A site the team edits themselves in the browser. They click any text or image on the live page and change it, with no dashboard to learn.

  • Custom in-page editor built on a few React context hooks.
  • Content and images live in Supabase, and all admin text is in plain language.
  • Next.js
  • TypeScript
  • Supabase
  • Tailwind
Clinical profile with a 3D hand atlas2026

Dr Prabhat Saharia

for Dr Prabhat Saharia, orthopaedic and hand surgeon

A surgeon's profile page with interactive anatomy. Visitors rotate a real hand and skeleton, click a bone and read the clinical note. Live Motion mode tracks the visitor's own hand through the webcam.

  • Three.js and MediaPipe are bundled with no build step. Everything runs in the browser after load, so it works on hospital networks.
  • HTML/JS
  • Three.js
  • MediaPipe
  • Vercel
products

Products with real users.

Live products I run and maintain.

AI agent platform, 2025 to present2025

Bloort

Paste a URL and an agent is built in about a minute, ready to talk to. It started as a RAG chatbot for client sites and is now an agent sandbox with tools, guardrails and an eval harness.

  • Multi-tenant, with per-client Pinecone namespaces, layered prompt-injection defence, and personal data masked before storage.
  • Trajectory evals caught the agent inventing a tool argument, which I then fixed. Retrieval evals ruled out a hybrid retriever that did worse than dense search.
  • Calendar tools over MCP, outbound voice via VAPI and WhatsApp via Twilio.
  • Next.js
  • LangChain
  • OpenAI
  • Pinecone
  • MCP
  • Firebase
  • Railway
tools

Tools for specific problems.

Each one started with someone stuck on something. All run in the browser with nothing uploaded.

Underwater colour correction2026

Dive Color

Water absorbs red first, so dive footage comes out blue-green. Drop in a video or photo and it's corrected on your GPU, ready to download. No upload or account needed.

  • A single WebGL2 shader for red compensation (Ancuti et al. 2018) followed by white balance.
  • Built after a dive trip. Other divers tested it and liked it, so I kept working on it.
  • WebGL2
  • File API
  • vanilla JS
ASL fingerspelling, Duolingo-style2026

Sign School

Learn the ASL alphabet while your webcam checks each letter and tells you what to fix ('straighten your index').

  • A rule-based checker reads your handshape from 21 hand landmarks. Nothing leaves the browser.
  • MediaPipe Hands
  • vanilla JS
A real skeleton you can click2026

Anatomy Atlas

Rotate a real anatomical skeleton and click any of its 144 named bones to learn what it does. The same atlas became the hand model on Dr Saharia's site.

  • Runs in the browser with no camera or upload.
  • Three.js
play

Games, art and simulations.

Built because the idea was fun. Most took a weekend.

Endless runner you play with your body2026

Jump Runner

Jump to clear obstacles and crouch to duck. The webcam tracks your body as the controller.

  • MediaPipe Pose
Leafcutter colony simulation2026

Atta Ant Farm

A glass ant farm at real scale (1 px = 1 mm) and in real time. A queen lands, digs and raises her first workers, and the colony grows into a city of fungus gardens. Two colonies can fight over the same plants.

  • The simulation has no DOM and runs 150 days headless in the test suite. It saves every 15 seconds.
  • vanilla JS
  • Canvas
Strudel patterns2026

Live-coded drums

Drum parts written as code in Strudel, including a reverse-engineered Stranger Things theme.

  • Strudel
  • JavaScript
not live yetAsk me about it
workbench

Tools I built for myself.

Private tooling I use every day. Happy to walk you through it.

One screen for every project and agent2026

Command center

A local app that runs my projects, their AI chats, token budgets and nightly jobs from one page, with a diff tab for code review. Built on the Claude Agent SDK.

  • It only restarts onto new code when no chat is busy, and its health endpoint reports which version is running.
  • Node
  • Claude Agent SDK
  • launchd
A job-search pipeline that runs itself2026

career-ops

Every night it scans job boards, imports new roles, scores fit with a cheap model, updates a tracker and writes a morning digest. It has one source of truth, one writer, and a regression test for every past bug.

  • Fit scores only sort roles. A role is excluded only for checkable facts like visa, location or a closed posting.
  • It writes interview prep cards for each round. That method got me through two final rounds this autumn.
  • Node
  • SQLite
  • Claude