Portfolio

What I'vebuilt.

Five products, built before the privacy focus took over — but the habits show up in all of them: locking down data, keeping keys off the client, building only what's needed.

01
Consumer  ·  AI Tool

Pocket Technician

Visit Project →

The Problem

People were booking Apple Store appointments for problems Google could solve in 30 seconds.

Half a day off, a drive to the mall, a wait in line — for a frozen screen or a bad battery. The information to fix it already existed. What was missing was a single place that just told you what to do, clearly.

What I Built

An AI support tool that skips the appointment entirely.

Describe your iPhone problem in plain English, get a real answer — battery drain, frozen screen, Wi-Fi dropping. No login, no upsell, no data collected. Just a clear fix, fast.

What I Learned

How to wire an AI API into a production app and ship it without a build process.

My introduction to the Anthropic Claude API — authenticating requests, structuring payloads, and writing system prompts that keep the model on-topic. I built it as a single self-contained HTML file, which taught me the value of zero-dependency shipping.

Anthropic Claude API System Prompting Vanilla JS Single-file Architecture Netlify
"The fastest product is the one with the fewest moving parts."
02
Field Services  ·  Web App

TradeSpot

Visit Project →

The Problem

Trade workers are out here grinding — and still relying on word of mouth to find work.

Skilled people with real local demand, stuck with tools built to extract money from them. Pay-per-lead platforms, overpriced directories — none of it puts them in control.

What I Built

A prospecting tool that actually works for the person using it.

TradeSpot lets a worker search a map by category and see every local business that might need their services, generate a call script, and export leads across 18 trade categories. Free for the worker. Businesses pay to be found.

What I Learned

How to build a location-aware app using the full Google Maps platform.

My deep dive into Google's Maps ecosystem — the Maps JavaScript API, Geolocation, Places, and Geocoding APIs. I also learned to restrict API keys by HTTP referrer so they can't be abused, and to handle rate limits without breaking the UI.

Google Maps JS API Places API Geocoding API Geolocation API API Key Security Netlify
"Charge the side with the budget. Serve the side with the need."
03
Sports  ·  Betting Intelligence

OctagonOdds

Visit Project →

The Problem

Every serious UFC bettor is doing the same manual research. Nobody built them a shortcut.

The data exists — fight history, styles, live odds — but people pull it from four tabs and guess anyway. The gap wasn't information. It was synthesis.

What I Built

One screen with everything a UFC bettor actually needs.

OctagonOdds pulls live odds, line movement, and fighter matchup data from 2,200+ historical fights. It doesn't tell you who to bet. It gives you a real basis for deciding.

What I Learned

How to build and operate a real backend with a live database and automated data pipelines.

My first real server-side project — a Flask app on Render with a SQLite database on a persistent disk, and a background polling thread that keeps odds current automatically. I built a custom web scraper for fight history, structured REST endpoints, handled CORS, and wired up auto-deploy from GitHub.

Flask SQLite Render The Odds API Web Scraping Background Threading REST API GitHub CI/CD
"The moat is the data. Build the infrastructure first."
04
B2B SaaS  ·  AI Tool

Debrief

Visit Project →

The Problem

Personal trainers and PTs are good at their jobs. The paperwork is killing them.

Session notes and follow-ups pile up fast — practitioners were spending an hour after every shift just writing things down. The existing tools were generic practice software with a skin on top, not built for the actual friction point.

What I Built

You talk like a human. It writes like a professional.

Practitioners submit notes by text or photo, however they actually capture things — Debrief turns them into a clean, structured summary with action items. No templates, no formatting. The app handles the rest.

What I Learned

How to build a full-stack app with authentication, a real database, and serverless functions.

My most technically complex build — Supabase end to end, including row-level security policies so users can only ever access their own data, and session-persisted auth. On the frontend, React with Vite for the first time. AI calls run through a Netlify serverless function that proxies to the Anthropic API, keeping the key off the client entirely — a pattern I now use on every project that touches a third-party API.

React Vite Supabase PostgreSQL Row-Level Security Netlify Functions Anthropic API
"Distribution is not a feature. It's the strategy."
05
Education  ·  Reference

Groundwork

Visit Project →

The Problem

Every high school graduate gets told to go to college. Half of them shouldn't.

College isn't the only path, and it's rarely presented as a real choice. Trades, military, apprenticeships, gap years — they exist and they work, but the default conversation never mentions them.

What I Built

A no-agenda reference for what actually comes after high school.

Groundwork lays out college, trades, military, and alternative paths — what each costs and where it leads, written without an admissions pitch attached. The student is the reader. The school or counselor is the buyer.

What I Learned

How to register a custom domain, configure DNS, and take a site fully live end to end.

Where I learned the full domain-to-live workflow: registering a custom domain, setting A and CNAME records, provisioning an SSL certificate via Let's Encrypt, and configuring Netlify Forms with email notifications — no backend required.

Custom Domain (postgrad.wiki) DNS Configuration SSL / Let's Encrypt Netlify Forms Email Notifications
"Know the user. Know the buyer. They're rarely the same person."

Something new is always
in progress.

If you've got a problem worth solving, let's talk about it.

Get in Touch Back to Home