Colin GillinghamBook a call

Portfolio

Ten AI products I designed, built and shipped myself. Open one to see how, or flip through them as a deck.

PhoneScreen AI

Voice agents that run the first phone interview for hourly jobs, at any hour.

phonescreen.ai ↗Live

2,500+
completed phone screens
80+
hiring teams
58%
start outside 9 to 5
One call, from ringing to scorecard
Running hiring from ChatGPT or Claude

What made it hard

  • Owning the voice stackTwilio media streams bridged to a realtime model, rebuilt through three generations of voice models.
  • Knowing when a call is overThe newest model can’t reliably signal the end, so the server listens for the farewell, the silence and the last answer, then hangs up itself.
  • Hiring from the chatAn MCP server with OAuth 2.1, so teams can run screens from ChatGPT or Claude.

Stack

  • Next.js
  • TypeScript
  • Prisma
  • Neon Postgres
  • Node.js voice server
  • Railway
  • Twilio
  • OpenAI GPT-Live
  • Claude
  • Stripe
  • PostHog
  • MCP

Timeline

  1. First commit
  2. Own voice server, on OpenAI Realtime and Twilio
  3. Every call on GPT-Live
  4. Live, with résumé and reference agents

Related reading

Peregrine

Calls new web leads seconds after they fill in a form, qualifies them, and live-transfers the good ones to a rep.

peregrinelead.com ↗Live

4 sec
to the first call
9 days
first commit to open sign-up
From form fill to live transfer
The explainer

What made it hard

  • One Durable Object per callIt bridges Twilio’s media stream to the voice model byte for byte, on hibernation-safe WebSockets.
  • One Durable Object per companyIt owns dialing, retries and the transfer chain, single-threaded, so there are no races on who’s next.
  • A live handoffThe rep presses 1 to accept, then it tries the next rep, then books a callback and sends a hot-lead alert.

Stack

  • Cloudflare Workers
  • Durable Objects
  • D1
  • Twilio
  • OpenAI gpt-live-1
  • Stripe
  • React
  • Vite
  • GSAP
  • HubSpot
  • Salesforce

Timeline

  1. First commit
  2. Real calls to the US and Canada
  3. Sign-up and free trial in production
  4. Live

Related reading

Glottie

An iPhone language tutor you learn from by talking.

glottie.app ↗On the App Store

63 days
first commit to the App Store
41
languages
1,632
language pairs
A spoken lesson on the iPhone

What made it hard

  • Direct to the modelThe iPhone talks to the realtime model over WebRTC. Audio never touches my servers; a Worker only sets up the call.
  • A meter on every minuteA Durable Object per session warns at 80%, wraps up at 95% and hangs up at 100%.
  • Progress you have to earnAfter each session a cheaper model grades the transcript and schedules your spoken mistakes with FSRS spaced repetition.

Stack

  • Swift
  • SwiftUI
  • WebRTC
  • OpenAI Realtime
  • Cloudflare Workers
  • Durable Objects
  • D1
  • R2
  • Queues
  • StoreKit
  • fastlane
  • Sentry

Timeline

  1. First commit
  2. On the App Store
  3. Version 1.0.15

Related reading

Corpus

Reads your lab reports, scans, Apple Health, meals and DNA file, then tells you what matters in a few plain words. It all lives on your iPhone.

downloadcorpus.com ↗iPhone

192
Apple Health data types
  • Corpus on iPhone: a morning brief.
  • Corpus on iPhone: lab results on their ranges.
  • Corpus on iPhone: sleep, night by night.
  • Corpus on iPhone: a DNA file, read on the phone.
Screens from the app, with fictional sample data

What made it hard

  • Answers bound to sourcesEvery value is checked against its source quote and its own lab range before it’s shown.
  • Private by architectureAn encrypted vault on the iPhone. PDFs are parsed on device, and raw DNA data is kept separate.
  • The right contextEach answer gets a packet bounded to 60 sources and 1,800 observations, ranked so the model sees what matters.

Stack

  • Swift
  • SwiftUI
  • HealthKit
  • Vision
  • PDFKit
  • CryptoKit
  • Charts
  • LiteParse
  • Cloudflare Workers
  • D1
  • OpenAI
  • Sentry

Timeline

  1. First commit, as Whoosh
  2. Whoosh on the App Store
  3. Rebuilt from scratch as Whoosh 2.0
  4. Renamed Corpus

Related reading

Picture.Repair

Repairs the photos you already take, in the background. Same people, same moment. Your original is always kept.

picture.repair ↗iPhone

What made it hard

  • No hook for new photosiOS doesn’t announce them, so it runs on the Photos background upload extension, an in-app watcher and a Shortcuts automation.
  • Triage before spendOn-device checks and a cheap vision model skip screenshots, bursts and good photos before any paid edit runs.
  • Never change the momentA separate model checks every result. One that fails is retried once, then refunded.

Stack

  • Swift
  • SwiftUI
  • PhotoKit
  • Vision
  • App Intents
  • Cloudflare Workers
  • D1
  • R2
  • Queues
  • Workers AI
  • OpenAI images
  • Sentry

Timeline

  1. First commit, as Kamera
  2. Kamera on the App Store
  3. Rebuilt around repair, as Candid
  4. Renamed Picture.Repair

Related reading

Example images from picture.repair.

UXLoops

Describe a product, get a clickable prototype, and let an AI run the user research.

uxloops.com ↗Live

What made it hard

  • Prototypes on demandDescriptions and mockups become clickable prototypes through the v0 SDK.
  • Research without a moderatorAn AI assistant guides each tester on their own time, while rrweb records the session.
  • From evidence to the next versionSessions are transcribed and scored, with SUS, NPS and heatmaps, then the feedback goes back into the design.

Stack

  • Next.js
  • React
  • TypeScript
  • Clerk
  • Prisma
  • Postgres
  • v0 SDK
  • OpenAI
  • rrweb
  • AWS S3
  • Vercel

Timeline

  1. First commit, as Speedback
  2. Live as UXLoops

Related reading

Agent Wonderland

A marketplace where AI agents find, pay for and run other agents over MCP.

agentwonderland.com ↗Live

9,600+
npm downloads
58
releases in six weeks
3
payment chains

What made it hard

  • Routing by resultsThompson Sampling keeps trying newer agents while sending most work to the ones that keep succeeding.
  • Agents pay, builders get dollarsUSDC on Tempo, Base or Solana through x402 or MPP, with payouts through Stripe Connect and refunds on failed runs.
  • Listing in minutesImport an OpenAPI spec or a curl request, review the schema and price, and it’s live in MCP search.

Stack

  • TypeScript
  • MCP
  • Fastify
  • Postgres
  • Drizzle
  • Redis
  • x402
  • Solana
  • viem
  • Stripe Connect
  • React
  • Cloudflare
  • Railway

Timeline

  1. First commit
  2. MCP server on npm
  3. Release 58
  4. Live, in maintenance

Related reading

TinyNews

Reads the internet, your neighborhood and what your agents did overnight, then edits it down to one page.

tinynews.ai ↗Live

< 4 days
first commit to public sign-up
3
ways to get it: email, printer, e-ink
Thousands of articles, edited down to one page

What made it hard

  • An editor, not a summarizerEvery article is read once, grouped by event and ranked on relevance, novelty and consequence.
  • Failing closedA separate review checks every factual claim. Unsupported drafts don’t go out.
  • Exactly one pageA headless browser lays out the edition, measures each sheet and cuts the weakest stories until it fits.

Stack

  • Cloudflare Workers
  • D1
  • Workflows
  • Workers AI
  • Browser Rendering
  • React
  • Three.js
  • pdf-lib
  • Swift
  • Rust

Timeline

  1. First version, an AI newsletter
  2. Rebuilt from scratch
  3. Public sign-up
  4. Live

Related reading

Logos in the film are examples of sources TinyNews reads, not partners or endorsements.

Tokens of Appreciation

Before your AI plan resets each week, your own agent spends what’s left fixing open-source issues.

donatetokens.org ↗Open source

10
agent tools supported
14
curated projects

What made it hard

  • Runs while you’re awayAn hourly launchd, cron or schtasks check wakes your agent shortly before your reset.
  • A second agent reviewsA fresh-context reviewer has to pass the fix before anything is sent.
  • Your account, disclosedThe pull request opens from your own GitHub account, with an AI disclosure.

Stack

  • Node.js
  • npm CLI
  • Agent skills
  • Claude Code
  • Codex
  • Cursor
  • Gemini CLI
  • GitHub CLI
  • Cloudflare Workers
  • Workers KV
  • Workers AI
  • MCP

Timeline

  1. Launched, open source
  2. Live on npm

Related reading

Tractor Beam

An AI accountability partner that phones you on your schedule about your goals.

tractorbe.am ↗Live

What made it hard

  • It calls youScheduled outbound calls through an Edge Function and a cron job, handled by VAPI over the phone network.
  • It remembersmem0 keeps the conversation memory, so each call picks up where the last one left off.
  • Your goals, everywhereAn MCP server lets Claude and Cursor see your goals too.

Stack

  • Go
  • Fly.io
  • SvelteKit
  • Supabase
  • Twilio Verify
  • VAPI
  • ElevenLabs
  • Deepgram
  • mem0
  • Stripe
  • MCP

Timeline

  1. First commit, as BetterMe
  2. Working product, 94 commits in
  3. Live as Tractor Beam

Related reading

Want one of these for your company?