Labs
02

Building Outlo

Solo build Personal Apr 2026 – Present

Outlo is a small v0.1 prototype, live at outlo.app, built around one question: what’s worth noticing around me right now? A low tide pulling out at Natural Bridges in forty minutes. King tides for the next three days. An atmospheric river that’ll close Highway 17 by morning. The kind of thing you’d kick yourself for missing.

The pitch, if I have to give one, is Dark Sky for experience: ecological, astronomical, coastal, and cultural moments worked out ahead of time for a region and dropped onto a map. I started with Santa Cruz County, because it’s where I live and the data is closest at hand. If the prototype earns it, the natural next step is the whole SF-to-Monterey corridor.

The bet that makes it interesting is treating the AI reasoning as a regional pre-computation problem instead of a per-user, per-session one. If you call Claude on every visit, your cost grows with your traffic. If you call it once per region per cycle and cache the result, the cost is basically fixed and every visitor shares the same pins. That one reframing is what turns the economics from "expensive at scale" into "almost free."

Fig 01
Outlo title plate with a stylized Monterey Bay coastline and AI-pinned moments: king tide, sunset score, eBird notable, atmospheric river

The stack is Next.js 15 on Vercel, Supabase for Postgres plus auth and row-level security, Mapbox GL for the map, Claude Sonnet to fuse the signals, and Claude Haiku to write the pin text. A Vercel cron kicks off each regional reasoning cycle, and the result is just rows in a pins table that the map reads. Nobody’s session ever calls the model directly, so reads cost nothing.

I’m wiring the signals up one at a time. NOAA tide predictions for the Monterey Bay station came first, then NOAA’s marine and weather forecasts, then a sunset score that accounts for cloud cover. Next on the list are eBird notable sightings and iNaturalist observations for recent wildlife, plus some astronomy: moon phases, ISS passes, and meteor showers. Scraping social media is deliberately off the table. The lesson I learned the hard way on Athena holds here too: trust the hard sources before the vibes.

A few product principles came out of building it this way. The AI pins seed a baseline, so the map is never empty and there’s no cold-start problem. Pins are meant to expire, and that expiration lives in the database rather than in a cleanup job that might quietly fail. A region is a first-class thing that lives in config, not code, so adding one is a row in a table instead of a deploy. And the real moat is editorial taste. Anyone can pull data from NOAA, but deciding which tide is actually worth pinning is the hard part.

Fig 02 Pre-compute once per region. Serve forever.
Outlo architecture: signal sources fan into a daily Vercel cron that calls Claude for signal fusion and pin text, results cache to Supabase, clients read cached pins

Where it stands now: the map UI is live at outlo.app, in place of the old coming-soon waitlist, and the reasoning layer has landed. The NOAA weather and sun signals run on a daily Vercel cron. The Hobby tier cron limit set that cadence, which is fine for v0.1. There were a few embarrassing diagnostic commits at the end of the week, the kind you push just to confirm the GitHub-to-Vercel webhook reconnected after you broke it. One of those weeks where the architecture is right and the wiring is loud.

The harder question, the one I haven’t really answered, is what makes a pin worth showing at all. A tide that’s simply in isn’t worth one. A tide that’s the lowest in six months, with visibility forecast at fifteen miles, probably is. The signal-fusion prompt has to walk that line without turning into a firehose, so v0.1 stays conservative on purpose. If it can’t write five genuinely good pins for a single weekend, it has no business writing fifty mediocre ones a day.

Apps that tell you what’s around you aren’t new. What I haven’t seen is one that works the answer out once for a whole region and then hands it to everyone who shows up, for free. That’s the part I think is worth building.

Fig 03 The product is the prompt, not the map.
Outlo product principles: AI pins seed the baseline, pins expire on purpose, region lives in data not code, prompts and scoring rules are the moat

Tags

  • Applied AI Product Design Designing for models that are good, wrong, or weird. Often on the same screen. I care more about trustworthy and unobtrusive than flashy.
  • AI Agents Agents that act on the world need guardrails before they need cleverness. Calibration before scale.
  • Next.js React with the server back in. My default for shipping web apps.
  • TypeScript JavaScript that catches the dumb stuff. Hard to ship a real web app without it now.
  • Supabase Postgres plus auth plus row-level security, with less ceremony. The plumbing layer for small builds.
  • Maps Geography is a constraint and a feature, both at once.
  • PWA A web app that behaves native. The right answer when the App Store isn’t.
  • Regional Reasoning AI cost as a regional pre-compute problem, not a per-user one. Changes the unit economics.