Software engineer · Liam Schauerman

I build web products end to end, and the AI agents that ship them.

Today · Push A

Bench Press 3 × 8 @ 185
Incline DB Press 3 × 10 @ 60
Cable Fly 3 × 12 @ 30
Chest12 / 16 sets
Illustration in lift’s design system. Sample data.

lift

lift is a mobile strength-training app where the app keeps the record and an AI does the coaching. Any LLM, from claude.ai to a local agent, can read lift’s published context, build a regimen, progress the weights after each session, and log meals in plain English. I train with it every day, and my brother runs his training through Claude with it.

Key features

  • MCP server with its own OAuth 2.1 provider. 23 tools for regimens, templates, sessions, goals, and meals. claude.ai adds lift as a custom connector and signs the user in through a standard authorization flow.
  • Context any agent can pick up. /llms.txt and /skill.md publish the full playbook. A zero-dependency CLI pairs a terminal agent with the OAuth device flow, so agents that can’t speak MCP still get in.
  • The model owns the judgment. There is no food database: the agent estimates macros and stores its itemized reasoning so a later correction has something to revise. Loosely remembered workouts still count, logged as muscle groups and intensity.
  • Built for the gym floor. A thumb-driven PWA with every set pre-filled from the plan. Weekly sets against target per muscle group and estimated one-rep maxes come from pure, tested functions.

Open lift ↗ Sign in with Discord

SvelteKit · MCP · Better Auth · Drizzle · Neon Postgres · Vercel

LMJK
Heat 19954.545
Old School 20034.53.5
Arrival 201654.54
Past Lives 20234
Illustration in movie-league’s design system. Sample data.

movie-league

movie-league answers the question Letterboxd doesn’t: what has my group seen, who liked it, and who still hasn’t seen it. It seeds itself from the services people already use, TMDB, Letterboxd, and Plex, so nobody starts from an empty profile. Friends can rate a film straight from a Discord channel.

Key features

  • Imports from the services you already use. A Letterboxd username syncs daily, a Letterboxd export imports in one step, and Plex history comes in through plex.tv sign-in with the token kept in the browser.
  • Recommendations that explain themselves. “Seen it?” ranks TMDB recommendations from your favorite and recent films and your group’s watches. Each pick names its reason, and films you skip twice sink.
  • Discord slash command. /movie-league rate posts a film card to a channel. Friends answer with buttons, and each answer becomes a log entry. Requests are verified with Ed25519, and the app runs without a bot token.
  • A data model that respects rewatches. Every watch is its own entry, and rating, date, and review are optional. The group ledger shows who has and hasn’t seen each film, filtered by genre, director, or keyword.

Open movie-league ↗ Sign in with Discord

SvelteKit · TMDB API · Discord Interactions · Better Auth · Drizzle · Neon Postgres

Week 3All-playPTSREBAST
Team 410–1–0131
Team 78–2–1412
Team 26–5–0265
Team 93–8–0948
Illustration in fantasy-bball’s design system. Sample data.

fantasy-bball

In head-to-head fantasy basketball, one lucky opponent can hide how strong a team’s week was. fantasy-bball scores every team against every other team in the league, category by category, and points out the weeks that were truly unusual. Managers sign in with Yahoo and claim their team.

Key features

  • Built around a closed API. Yahoo’s Fantasy API refuses unapproved apps, so a daily cron reads the league’s own pages through an encrypted saved session and parses them into typed rows at the boundary.
  • Exact numbers. It stores made and attempted counts, never rounded percentages, because Yahoo’s three-decimal display shows ties where the real ratios differ. Every week is checked against Yahoo’s pages.
  • All-play records and outliers. Each week shows an all-play record, per-category ranks, a standard-deviation table, and head-to-head nets, with the biggest outliers first.

Open fantasy-bball ↗ Sign in with Yahoo, league members only

SvelteKit · Yahoo OAuth · Vercel Cron · Drizzle · Neon Postgres

liftup
movie-leagueup
fantasy-bballup
portfolioup

2026-11-03 · movie-league · Discord posts shipped and verified live

Illustration in isengard’s design system. Sample data.

isengard

isengard is the control plane behind every app on this page: an AI agent that acts as product manager and platform owner. I ask for a change in plain language. It writes the plan, briefs a coding agent in that app’s repo, ships to production, checks the live site, and logs the result.

Key features

  • Plans in one place, code in each repo. Each app’s brief, roadmap, plans, and decisions live in isengard. Other agents and machines also commit to the app repos, so every job syncs and reads what changed before it plans.
  • Autonomous on approved work. Agents commit to master and deploy to production without asking, then prove the change on the live site with screenshots and real data. New ideas wait for my approval.
  • A fleet with one engineering guide. A shared stack, guide, and runbook mean a new app goes from an empty folder to a signed-in production deploy in about 17 minutes. This portfolio is one of them.
  • A console that reads the repo. A web console shows each app’s roadmap, live health, and changelog. It is parsed strictly from the repo at build time, so a malformed log entry fails the build.

Open isengard ↗ Private console

Claude Code · Agent orchestration · SvelteKit · Vercel · Neon