What I’ve built

Fifteen projects, each one written up properly.

Some of these paid the bills; some existed only because I wanted to know how the thing worked. Every one has a page explaining the problem, the architecture, the parts that broke, and what I would do differently. Filter by what you care about — or hit / and search.

15 projects
Featured
Vanilla JS vLLM Docker

Easy-vLLM

Works out which vLLM settings your GPU can actually run. Type a model id, pick your card, and get a working vllm serve command, a vendor-correct Docker setup and an honest VRAM verdict — including how many concurrent requests will fit. Runs entirely in the browser, nothing to install.

2026 Live demo Open it
Featured
Python pandas PyYAML

CleanFrame

A reproducible data-cleaning engine for Python. An LLM writes the cleaning plan once; that plan compiles to a YAML recipe which replays in pure pandas with zero API calls, tracks every changed cell, and refuses to run when the incoming schema has drifted.

2026 On PyPI Source
Python FastAPI PostgreSQL

Docuvera — Loss360

Multi-tenant SaaS that turns insurance loss-run PDFs and scans into structured claims data, pairing a custom OCR engine with domain-tuned LLMs. Schema-per-tenant isolation in PostgreSQL, 92% extraction accuracy, and under two minutes per document.

In production Lead engineer, team of 8 Closed source
Featured
Flask Celery Redis Whisper

MoM AI — Minutes of Meeting

Meeting recordings in, structured minutes out. FFmpeg normalizes the audio, a Celery worker routes it to one of six speech-to-text backends — including Whisper on your own machine, no API key — and an LLM writes the summary, decisions and action items. Both layers swap at runtime.

2026 Open source Source
Flask Whisper FFmpeg

Speech Annotation Tool

A review desk for ASR output. FFmpeg converts any format to 16 kHz mono WAV, splits it into 30-second segments, and Whisper transcribes them in daemon threads. Type-based job locking and JSON-persisted progress, so no Celery and no Redis.

2025 Open source Source
Python Flask librosa

AudioFP

Shazam's 2003 paper, rebuilt from scratch. Spectral peaks come off an STFT spectrogram, peak pairs and time gaps hash into single integers, and time-offset voting over one batched SQLite lookup identifies a three-second clip — entirely offline.

2025 Open source Source
Python PyTorch FAISS

Context Search Engine

Semantic search over your own files. PDF, DOCX and TXT get chunked with overlap, embedded with DistilBERT and indexed in FAISS. Chunk size, overlap, model and top-k are all knobs, because retrieval quality is an empirical question.

2025 Open source Source
Python Django scikit-learn

Movie Recommendation System

Content-based movie recommendations at scale. TF-IDF vectors over genres, keywords, companies and plot text, compressed from 20K features to 500 dimensions with SVD. Sparse storage turns a 40GB dense matrix into 150MB; queries land under 50ms.

2025 Open source Source
TensorFlow Keras Flask

Skin Cancer Detection

Seven-class skin lesion classifier trained from scratch on HAM10000. The custom CNN head uses 1x1 and kernel-sized convolutions instead of dense layers, with a concatenation-skip ResNet variant alongside. Ships with a Flask API and a webcam service.

2024 Open source Source
Featured
Vanilla JS HTML CSS

Py Internals

An interactive Python course where every lesson is a hand-authored memory snapshot — frames, bindings, heap objects, refcounts — that you step through like a debugger. Five sessions and around 100 steps, running as static files.

2026 Actively shipping Source
Python Flask scikit-learn

FIFA Player Recommendation System

FC 25 player similarity over 34 min-max normalized attributes. The full pairwise cosine matrix is precomputed at training time and pickled, so Flask loads it once at startup and every query becomes a row lookup plus a couple of filters.

2024 Open source Source
TensorFlow Keras Python

Autoencoders & Decoders

Three autoencoders — PCA-style linear, convolutional and denoising — sharing one encoder/decoder interface behind a five-mode CLI. A 32-number code gives 96x compression on STL-10 and drives k-NN image retrieval and latent-space morphing.

2024 Open source Source
Python NumPy scikit-learn

ML Algorithms from Scratch

Regression and classification in raw NumPy: the normal equation, its ridge form with an unpenalised intercept, and logistic regression by gradient descent on binary cross-entropy. Every algorithm derives the maths before it writes a line of code.

2025 4 of 18 done Source
Flask SQLite Chart.js

HabitFlow

A habit tracker that stays on your machine. Flask and SQLite behind a monthly check-off grid, Chart.js dashboards, and Excel export to three formatted sheets. PyInstaller ships it as one Windows exe that picks a free port and quits when you stop using it.

2025 Open source Source
HTML CSS Vanilla JS

Portfolio Website

This site. Static HTML pages over one CSS custom-property design system, with pointer-tracked card glows and Intersection Observer reveals in plain JavaScript. No framework, no bundler, no build step — pushing to main is the whole deploy.

2025 Actively maintained Source

Say hello

Want one of these, but for your problem?

Happy to talk through architecture, trade-offs, or why the obvious approach is not working. Email is fastest.