PROJECTS · BUILD LOG · 2025–2026

Projects

Things I've built at the intersection of SRE and AI infrastructure. Each one runs in production (or close to it), and each one taught me something I couldn't have learned from reading docs.

runcast-intelligence.vercel.app RunCast Intelligence Ask anything about running how do elites taper for a marathon? Ask Based on podcast transcripts… Elite marathon tapering follows a 2–3 week protocol... The Strength Running Podcast · ep 457 · @44:51 The Morning Shakeout · ep 218 · @28:18 9 Podcasts 4,151 Episodes indexed 589 Searchable chunks
→ runcast-intelligence/
LIVE

RunCast Intelligence

Semantic search · 4,151 episodes · 9 podcasts

I transcribed thousands of hours of running podcasts using OpenAI Whisper, split them into chunks, embedded each chunk with a vector model, and stored everything in Supabase pgvector. Now you can ask "how do elites taper for a marathon?" and get a real answer — with exact timestamps so you can jump straight to the source.

The search pipeline embeds your query, runs cosine similarity against 589 transcript chunks across 9 podcasts, and feeds the top results to a Claude RAG pipeline that writes the answer. The whole thing runs on a FastAPI backend deployed on Railway, with a Next.js frontend on Vercel.

Python FastAPI pgvector Whisper RAG Next.js Railway

WineSnap 📷 Take Photo 📁 Gallery 📸 wine shelf photo.jpg ⭐ BEST PICK Guigal Côtes du Rhône £12.50 · 89pts · Value: 7.12 At £12.50 with 89 points, this beats everything else on the shelf for value. Vision AI reads labels Live search price + ratings LLM picks best value
→ winesnap/
LIVE

WineSnap

AI wine picker · mobile PWA · 3-stage pipeline

You're standing in front of a wine shelf. You don't know where to start. Take a photo — WineSnap reads every label using a vision model, searches the web for live prices and critic scores for each wine, then tells you which bottle is the best value for your money (or your dinner, or your occasion).

The pipeline runs three stages in sequence: Gemini Vision extracts wine names from the photo, Tavily searches for price and score for each one in parallel, and an LLM calculates the value ratio (score ÷ price) and writes the recommendation. Deployed as a mobile-first PWA — add it to your home screen and use it like a native app.

Python FastAPI Gemini Vision Tavily Next.js PWA OpenRouter

kubectl — inferenceforge $ kubectl get pods -n inferenceforge NAME READY STATUS RESTARTS inferenceforge-gateway-7d9f6-x2k9p 1/1 Running 0 inferenceforge-gateway-7d9f6-m8n3q 1/1 Running 0 inferenceforge-model-gpu-6c8b4-t4x7z 1/1 Running 0 nvidia.com/gpu=1 $ helm upgrade inferenceforge . -f values-gpu.yaml Release "inferenceforge" has been upgraded. Happy Helming! STATUS: deployed REVISION: 3 $ curl localhost:8080/metrics | grep tokens inferenceforge_tokens_total{model="mistral-7b"} 84291 Grafana — InferenceForge Dashboard Requests/sec Latency p99 (s) Queue depth GPU utilisation % 87%
→ inferenceforge/
IN PROGRESS

InferenceForge

LLM inference · Kubernetes · GPU-native

A production-grade LLM serving platform designed for GPU Kubernetes clusters. One Helm flag separates a local CPU deployment (Ollama + TinyLlama, zero cost) from a GPU deployment (vLLM + Mistral-7B on NVIDIA T4s on EKS). The architecture is the same either way.

The gateway sits in front of the model backend and handles everything you'd need in production: OpenAI-compatible API, request queue (scales on queue depth via custom HPA metric — not just CPU), rate limiting, streaming responses, and Prometheus metrics for latency histograms, token throughput, and active requests. The Terraform provisions EKS with Karpenter so GPU nodes scale to zero when idle.

Kubernetes Helm Terraform FastAPI Prometheus vLLM NVIDIA T4