I build things I wish existed.

Sometimes the problem is mine. Sometimes it belongs to a team, a community, or a user. Each build below starts with who it's for and the decision that shaped it.

Selected Builds

Explore Sightline (opens in a new tab)
Sightline's home page: the headline 'Go deeper than the destination' over an underwater scene, with experience categories below

Sightline

Is this the right dive trip for me, this month, at my level?

Operator pages are sales copy, so every destination is good year-round and every animal is “frequently sighted.” Sightline is for divers with 15 to 100 logged dives and one trip a year. Describe a trip in plain words, and it ranks destinations against it and answers each worry with sourced sentences from researched notes.

36destinations · 77 species · every claim sourced

Rules decide which destinations fit a trip. The model reads the diver's description and picks which researched sentences answer each concern; it can lower a destination's rank but never raise it.

I tested embedding search against a hand-built vocabulary for matching divers' concerns to evidence. The vocabulary found the right evidence 93% of the time versus 33–44%, so it's what shipped.

A ‘confirmed’ badge appeared on 64% of checked claims and hid the 28 that came back weaker. Confirmed claims now show nothing, so only the warnings stand out.

Watchlist's board: a sortable table of product management roles with filters for level, work mode, and experience

Watchlist

Product management roles, and only those

For product managers comparing dozens of roles to find the two or three worth applying to. That's why it's a dense, sortable table rather than a feed, and every row links to the employer's own posting.

An audit of my own live board found nearly half the listings weren't product roles. The code did what I'd told it; the definition was wrong. I cut that job family, then built the eval that proves the fix held: zero false positives across 30 negatives in 85 real postings.

Python·Claude API·Supabase·GitHub Actions

~3,600company job boards read at the source

Coming soon

ClaimLens

A research assistant for health plan claims correspondence.

For a health plan's claims correspondence team, whose hardest cases mean checking a provider's letter against claim, authorization, and policy records. The AI researches and cites the relevant records, and a person chooses every next step. A working prototype, built on synthetic data.

Success means research time saved on real cases, net of running cost. The rollout plan measures that first and names the results that would stop it.

Tool calling·Retrieval·Server-side validation

Private prototype · demo and code not public yet.

Code
Daybreak's daily brief: a summary of the day, then must-read stories ranked by signal

Daybreak

The same story once, not five times

A once-a-day AI and tech brief for product managers: about ten stories from 8 sources, each threaded to that company's earlier news.

Every free, predictable filter runs first, so a single call can rank what's left. The archive is a file in git, not a database.

Claude API·GitHub Actions·Bun

Tidepool event page for a beach cleanup, with friends going shown beside the projected impact

Tidepool

Volunteering, planned with your friends

For people who plan hikes and brunches with friends but rarely volunteer. The bet: the barrier is coordination, not motivation.

“Bring your crew” is the main button and joining solo is a small link, the reverse of the usual layout. Friends going sit beside the impact number.

TanStack Start·React·Tailwind

Prototypea hypothesis, not yet tested with users

CRS Compass comparing a score of 472 with the latest relevant cutoff of 389, labelled by round type

CRS Compass

Your score, against the cutoffs that count

For Canadian permanent residence applicants who already know their Express Entry score. Past cutoffs mislead unless they applied to you.

Future cutoffs depend on how many invitations the government issues, so history stays history. The calculator was cut too: users already have a score.

React·Supabase·Python·PostHog

Client & Applied Work

Paid engagements with real stakeholders and measured outcomes.

UCLA Anderson School of Management
Paid engagement · Tech

Easton Digital Transformation

One front door for a program running on 8+ tools

Students and staff were navigating a program spread across disconnected systems. I worked with stakeholders to consolidate the experience into a single BruinLearn front door, with a SmartSuite operations layer behind it for the team running the program, covering 350+ student records.

4,500+admin clicks removed · 5 hrs/week back

SmartSuite·BruinLearn·Canvas

Long Beach Unified School District
Paid engagement · MBA Capstone

LBUSD Staffing Strategy

Workload-based staffing for a 63,000-student district

The district needed a defensible way to decide where limited specialist capacity should go across schools with very different needs. As part of a 5-person MBA capstone team, I led the psychologists workstream, building a workload-based staffing model and benchmarking against other California districts.

10 → 2districts benchmarked to close peers

Workload modeling·Stakeholder interviews

Build Notes

How I decide what to build, where AI belongs, and how I check that it works.