Index / 04 — Website Builds

Websites I've built

No. 01

Bracketology

Fantasy sports, for reality TV. 200,000+ players, daily prediction pools, season-long leagues, iOS & Android.

More

Marketing site for Bracketology — free season-long fantasy leagues across reality TV (dating shows, competition series, talent, cooking, awards), with daily prediction pools for cash prizes and a social leaderboard. Drives downloads to the iOS and Android apps and houses all editorial content (blog posts, drinking games, watch parties, show breakdowns).

How it's built. Astro front end with React components and Tailwind, deployed on Vercel. Sanity CMS is the source of truth for every editable content type — Shows, Contestants, Blog Posts, Authors, Categories, Networks, Partners, Drinking Games, Watch Parties. The team logs into Sanity Studio and edits any of it in a clean, no-code UI. No developer in the loop.

Automations & database cleanup.

Newsletter → blog sync. A weekly cron pulls new posts from the Beehiiv newsletter API, converts the HTML to Sanity Portable Text, uploads images, and auto-categorizes each post by detecting which shows it mentions. Duplicate detection prevents re-syncing.

Historical backfill. A one-time migration script paginated through years of past Beehiiv posts, deduped against Sanity by beehiivId, and imported the full archive with featured and inline images.

Contestant cross-show sync. A Sanity webhook (HMAC-verified) fires whenever a contestant is edited. It finds every profile sharing that name across shows and syncs their secondary references — so a contestant who appears on multiple shows stays consistent everywhere automatically.

Schema migrations. Bio fields normalized from plain strings into structured Portable Text. Network strings (e.g. "cbs, paramount+") rewritten into proper document references with intelligent aliasing. Single-season field expanded to a multi-seasons array so contestants can span multiple seasons cleanly.

visit site →
Bracketology marketing site
No. 02

Highline Power

Investor-facing site for a power-infrastructure private equity firm — every line of copy editable in Sanity, with live preview.

More

Designed and built for Highline, a long-term capital partner for power-services owners looking to grow, modernize, and build enduring businesses. The site speaks to LPs and prospective portfolio companies — premium serif typography, scroll-triggered animations, an interactive SVG schematic of the investment thesis, and an animated EBITDA spec sheet for the investment criteria section.

How it's built. Next.js 16 (App Router) with React 19 and Styled Components, deployed on Vercel. Content lives in Sanity v5 as a single landingPage document organized into nine groups — SEO, Navigation, Hero, Approach, Strategy, Big Claims, Investment Criteria, Contact, Footer. Anyone on the Highline team can edit any field in Sanity Studio and watch it update on a live preview before publishing. Incremental static regeneration with Sanity revalidation tags pushes changes to production within seconds. No developer required for copy changes.

highlinepower.co →
Highline Power homepage
No. 03

AgencyReview

Independent, data-driven directory ranking software, marketing, and digital service agencies — built on a custom scoring system from my years inside Aloa.

More

A directory of software, marketing, and lead-gen agencies around the world — profiles, comparisons, and editorial in one place. Each agency is evaluated against a custom ranking system I designed using criteria pulled directly from co-founding and running Aloa: the signals that actually separate great agencies from average ones, the kind you only notice from the inside.

The ranking model. Pulls from 50+ data sources and weights them: 30% verified reviews (Clutch, G2, Google, Trustpilot), 25% portfolio & case studies, 20% industry recognition, 15% team expertise, 10% pricing transparency. Ranks are computed at runtime — sorted by rating, verified status, then name — so unrated agencies stay clean instead of getting a fake badge.

How it's built. Next.js 16 + React 19 + Tailwind + Styled Components, deployed on Vercel. Sanity v5 backs every editable content type — Agencies, Categories, Insights, Listicles, Comparisons, Authors, Marketplace Reviews. The team manages agency profiles, writes editorial, and updates rankings in Sanity Studio's no-code UI. A Sanity webhook fires Next.js ISR revalidation tags so changes propagate to production within seconds, and the sitemap regenerates whenever an agency or category is touched. Resend handles transactional email for matching and verification, dynamic per-agency OG badges are generated on the fly, and Playwright e2e tests guard the critical flows.

agencyreview.dev →
AgencyReview homepage
No. 04

Davis School Chicago

Pre-launch enrollment site for a new private Jewish high school opening Fall 2027 in downtown Chicago.

More

Designed and built end-to-end for Davis School Chicago — the only non-Orthodox, college-prep Jewish high school of its kind within Chicago city limits. The site is the school's pre-launch front door: storytelling, leadership credentials, press, tour reservations, and lead capture for parents, students, donors, and community members.

How it's built. Custom Vite + React + Tailwind front end on Vercel, with an Express API for form submissions. Signups route into Mailchimp with segmented audiences — prospective parents, students, donors, and community contacts each land in their own funnel. A daily reporting cron summarizes activity for the team, and Google Tag Manager + Facebook Pixel track each step of the multi-step signup flows.

davischicago.org →
Davis School Chicago homepage