Work

Projects

Systems and tools built to make complex work simple. Mostly for The Insurance Center, sometimes for curiosity.

Tools & stack

Build

Next.jsTypeScriptTailwind CSSPython

Marketing & Data

SEO / GEOGoogle AdsGA4 & Search ConsoleSQL

Automation

Zapiern8nAirtableClaude / AI agents

Businesses

Sites and companies I built and run.

The Insurance Center home page: "Your Trusted Utah Insurance Agent Since 1995" with agency award badges
LiveWeb DesignSEOCMSContent Strategy

The Insurance Center: Company Website

Organic search up 203% through the April 2026 site migration

Led the full design, build, and ongoing management of theinsurancecenter.com, the agency's primary digital presence and lead generation engine.

Took the website from concept to launch and have managed it since, handling everything from information architecture and design direction to SEO optimization and content strategy. The site serves as the agency's storefront, referral hub, and a key driver of inbound leads. Includes individual agent pages, a full blog, and structured data for local search.

SearchLight Digital home page: "Get Found In Google" over a spotlight beam
LiveSEOGEOAI SearchAgency

SearchLight Digital

An SEO and GEO agency built for the new era of search — where AI answers are the new page one and most businesses have no idea they're invisible.

SearchLight Digital is the agency I founded to solve a problem I kept running into: the rules of search have changed, but most agencies are still playing the old game. It focuses on SEO and Generative Engine Optimization — helping brands show up in Google, ChatGPT, Perplexity, and AI Overviews. Every strategy is built around where attention actually lives now, not where it lived five years ago.

Apps I shipped

Built for curiosity, deployed for real.

Health metrics and wearable data dashboard
In ProgressPythonApple HealthAutomationHealth Tech

Apple Watch Whoop Replacement

Recovery, strain, and sleep scores from data already on the watch

A personal health algorithm that turns Apple Watch data into Whoop-style recovery and strain scores — without the subscription.

Whoop's insights are genuinely useful, but the data is already sitting in my Apple Watch. This system pulls health metrics directly from Apple Health — HRV, resting heart rate, sleep stages, SpO2, and more — and runs them through a custom algorithm that calculates daily recovery scores, strain scores, and sleep performance. The output mirrors what Whoop delivers but is built on data I already own, costs nothing to run, and can be tuned to how my body actually responds.

Golf Course Tinder start screen with 127 Utah courses tracked
CompletedReactMapsWeb AppGolf

Utah Golf Tinder

Track every golf course you've played in Utah and see how far through the state's full catalog you've made it.

A map-based web app that lets Utah golfers log which courses they've played and visualize them on an interactive map. The app tracks your personal percentage of Utah's total golf courses played, turning it into a fun challenge to work through the whole state. Built for golfers who want to see their progress and discover courses they haven't hit yet.

Premier League Command Center showing fixtures, results, league table and match stats
LiveNext.jsTypeScriptAPI ProxyData Viz

Premier League Command Center

743 KB upstream payload trimmed to the 12 KB the screen renders

A live, one-screen Premier League dashboard — fixtures, results, standings, and match detail, all visible without scrolling.

Built for match days: a dark, data-forward control room for the Premier League. A LIVE pill appears only when a match is actually in progress, live fixtures pulse and show the minute, and clicking any match swaps in a detail panel with possession, shots, xG, and key events. Data comes from FotMob's public JSON through a server-side proxy that caches every 35 seconds and normalizes a 743 KB payload down to the 12 KB the screen actually renders. If the upstream fails, the last good response is served with a "stale" chip so the screen never blanks.

Games

Small things I built because I wanted to play them. More in the Arcade.

Play Me in Chess start screen with the scouting report on The Eldrick
LiveAIChessAPIAirtable

Play Me in Chess

Trained on 311 of my own games

A chess bot trained on 311 of my real games. It plays my openings, at my strength, with my habits.

The bot comes in three strengths: Casual Jett, Jett, and Jett on a good day. The leaderboard runs on an API route I wrote, backed by Airtable, and keeps the five best results by fewest moves.

The Table Talk ranking game
LiveGameSoccerDailyNext.js

Table Talk

Order five Premier League clubs by a hidden stat — founding year, ground size, titles won. One shot a day.

A daily ranking game: drag five clubs into the order you think is right, lock it in, and see how close you got. It keeps your streak, gives you one attempt a day, and produces a shareable result grid.

The Gut Check daily marketing quiz
LiveMarketingDailyNext.js

Gut Check

A daily five-round test of marketing instinct. Which headline actually won? Which line did a machine write?

Each round puts a marketing choice in front of you — two headlines, a button, a subject line — and asks you to pick the winner, or spot the line a machine wrote, before the answer is revealed. New rounds every day.

The Birthdle game
LiveGameDailyVanilla JS

Birthdle

A Wordle riff where the hidden answer is a famous person's birthday.

I built it to find out whether guessing dates carries the same daily-habit loop that makes Wordle stick. Plain JavaScript, no framework.

Work at The Insurance Center

Internal systems behind the results.

Analytics dashboard showing charts and KPIs
LiveReactPythonData VisualizationSEO Analytics

Insurance Center Analytics Dashboard

Built to answer "what's working?" in under 60 seconds

A custom dashboard that surfaces what's actually driving results. Marketing decisions come from real numbers instead of gut feelings.

Aggregates SEO performance, lead flow, keyword rankings, and revenue attribution into one place. The goal was to make it easy to answer "what's working?" in under 60 seconds. Built with React on the frontend and Python for data pipelines and API integrations.

Team performance dashboard with review metrics
LiveAutomationCRM IntegrationLocal SEO

Google Reviews Workflow

95 → 306 Google reviews, rating holding at 4.9

An internal workflow system that tracks Google Review performance across agents. Making getting reviews a competitive, trackable team activity.

Google reviews are one of the highest-leverage local SEO signals, but getting agents to consistently ask for them was inconsistent. This workflow system tracks review requests, captures responses, and surfaces a leaderboard that shows each agent's review count and trend over time. The competitive element changed behavior. Reviews at The Insurance Center increased significantly after implementation.

Plus a pixel city, a quiz, and a few older experiments.

Open the Arcadearrow_forward

More experiments and work-in-progress on GitHub.

GitHub / AirplaneMode2955open_in_new