tickatap
You pick a day, they pick what they’re into, and it’s a plan. tickatap turns going out with friends into an invitation: the host names the day, each friend taps through a full-screen board of real events and places, and the plan builds itself the moment the last person finishes. Round two handles the mismatches. It went live in 2026 and ships daily.
The board is fed by a daily curation agent with a two-tier model split. Bulk page extraction runs on a local 14B model I chose by measuring two candidates head to head on the same real page; one frontier model call per city writes the final board. Behind it sits a 193-source registry spanning more than 40 US cities, every URL probed live before it was allowed in. When a dependency is down, the run reports an honest skip on the ops console. It never invents an event.
The same discipline runs the marketing side: a studio renders short-form vertical video from live product data, the script may only choose from real candidate places validated back by name, and a person approves every post.
Under it: a 10-workspace TypeScript monorepo. Fastify and BullMQ behind the API, Next.js 15 on the web, Expo on mobile, Postgres and Redis underneath, 37 SQL migrations, and 3,682 tests passing with no database, no network, and no vendor keys. Every commerce integration sits behind a provider interface with a mock, so the whole stack runs and tests offline. A native iPhone app is in progress in the same repo.
There was a booking agent, Tap, with one hard rule: it could not execute a purchase without an active mandate, and the rule lived in the tool executor rather than the prompt. A 25-case adversarial suite held it at 100%. I retired the surface in July 2026, when it peaked at 13.3% task success against a 90% bar. The mandate model and the single-consumption invariant stayed, because those are true of the domain no matter what calls them.
Everblue
A journal that writes itself. Everblue fuses five passive signal streams (HealthKit, calendar, photos, music, weather) into 15-minute windows, scores each window for salience, and writes the day up on its own. I built and operate all of it.
Retrieval runs on the phone. BM25 plus MiniLM embeddings with MMR re-ranking and recency decay, in SQLite, in JavaScript. There is no vector database; at this corpus size one would be pure overhead, and I can name the size at which that stops being true. Raw text and embeddings never leave the device.
Every prompt change ships through an eval harness that runs the real production pipeline on synthetic days and grades the output with the production rubric. The bar is 92% on generation quality and exactly 100% on memory fabrication. A journaling companion that invents a memory is worse than no journal at all.
The backend is Django. It routes Gemini and Claude by feature and subscription tier, retries across providers, redacts PII before every prompt, and instruments billing per request so cache-stable prompts and thinking-token caps get tuned against real numbers.
The work I’m proudest of is a deletion. Photo captioning originally ran fully on-device: about 500MB of FP16 Florence-2 in Core ML, a custom Expo config plugin, a Swift bridge, and four separate out-of-memory root causes debugged on 4GB iPhones. It worked. Then honest accounting showed a 1.1GB bundle that wasn’t earning its cost, so I replaced it with a gated backend service and rewrote the privacy copy to match.
A View From My Seat
A sports and venue platform with 1.2 million monthly active users. I owned native iOS and Android end to end: 80+ releases, feature parity throughout. Along the way I rebuilt the maps feature and cut its server costs with caching, reworked every seating chart on the platform as optimized SVG, and shipped vision moderation for seat-view photos.
I also automated the seating-chart ingestion pipeline that publishes charts to client websites; a teammate reported it saved a full day of work per chart. And I built a venue-scouting agent that diffs live venue data against stored snapshots daily and alerts only on real changes.
Earlier
- Jibbr 2024
- An OpenAI-powered conversation coach: interest-tailored prompts and actionable soft-skills feedback.
- +Luv 2022
- A couples app, shipped to the App Store and Google Play. Real-time WebSocket chat, drawing notes, photo sharing, OpenAI-generated prompts, subscriptions.
- Fabspeed Motorsport 2022
- Launched wholesale.fabspeed.com, raised site conversion with heatmap-driven UX changes, built React tools for bulk product updates, and wrote Python scrapers pulling Google and Yelp reviews at scale.
Get in touch
If you work on applied LLM systems, on-device ML, or mobile products, I want to compare notes. Email me at yoonbocho1@gmail.com. I reply, including to mail that starts with “I think this part of your stack is wrong.”