Building Outlo
Solo build Personal Apr 2026 – Present
- Next.js 15
- TypeScript
- Supabase
- Mapbox GL
- Claude
- Vercel
Outlo is a v0.1 prototype at outlo.app that answers one question: what’s worth noticing around me right now? The tide pulling out at Natural Bridges in forty minutes. King tides for the next three days. An atmospheric river closing Highway 17 by morning. The kinds of moments that would otherwise slip past.
The pitch is Dark Sky for experience. Ecological, astronomical, coastal, and cultural moments, pre-computed for a region and pinned to a map. Santa Cruz County first, because that’s where I live and where the data is closest at hand. The future launch corridor is SF to Monterey if the v0.1 product earns it.
The architecturally interesting bet is that AI reasoning here is a regional pre-computation problem, not a per-user-per-session inference problem. Calling Claude on every user session scales linearly with traffic. Calling Claude once per region per cycle is fixed in cost, and the cached pins amortize across every visitor. That single framing changes the unit economics from "expensive at scale" to "near-zero marginal."
The stack is Next.js 15 on Vercel, Supabase for Postgres plus auth plus row-level security, Mapbox GL for the map, Claude Sonnet for signal fusion, Claude Haiku for pin text. A Vercel cron triggers each regional reasoning cycle. The output is rows in a pins table that the map reads. User sessions never call the model directly. Reads are free.
Signals are wired one at a time. NOAA tide predictions for the Monterey Bay station first. Then NOAA marine and weather forecasts. Then a cloud-cover-aware sunset score. Next on the list are eBird notable sightings and iNaturalist observations for recent wildlife, and astronomy for moon phases, ISS passes, and meteor showers. Social media scraping is explicitly out of scope. The signal-fidelity hierarchy I learned the hard way on Athena is the same here: hard sources before vibes.
The product principles fall out of the architecture. AI pins are the seeded baseline. The map is never empty, so there’s no cold-start death. Pins are ephemeral by design and expiration is enforced at the database, not in a cleanup job that might fail. Region is a first-class concept that lives in config rather than code, so adding a new region is a row, not a deploy. And editorial taste is the moat. Anyone can fetch NOAA, but few people can decide which tide is worth a pin.
Where it sits today. The map UI shipped at outlo.app, replacing the coming-soon waitlist. The reasoning layer landed. NOAA weather and sun signals are running on a daily Vercel cron (the Hobby tier cron limit forced the cadence, fine for v0.1). A few embarrassing diagnostic commits at the end of the week verified that the GitHub-to-Vercel webhook chain reconnected after I broke it. The kind of week-of-work where the architecture is right but the wiring is loud.
The harder question I haven’t answered: what makes a pin worth showing? Tide is in: not worth a pin. Tide is the lowest in six months and visibility is forecast at fifteen miles: probably worth a pin. The signal-fusion prompt has to thread that line without becoming a content firehose. v0.1 is intentionally conservative. If the system can’t write five great pins for one weekend, it can’t write fifty mediocre ones every day.
Apps that tell you what’s around you are not new. Apps that pre-compute the answer once for a region and serve it for free to anyone who shows up are.
Tags
- 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.