Inspiration

Food trucks are the heart of a neighborhood, mostly small, independent, and often immigrant-run. Immigrants own roughly 30% of America's food trucks (Bush Institute), and for many families a cart is the first step into business when they have the recipes but not the capital for a storefront. But they fail on two things nobody helps with: finding a spot where customers actually show up, and clearing a permit maze that spans four separate San Francisco city agencies. Big chains pay analysts to solve location. A one-person taco truck guesses. We built Rollaway to close that gap.

What it does

Rollaway is a map-first copilot for SF mobile food vendors. Tell it your vendor type, menu, home base, and how far you'll travel, and it scores real locations on foot traffic, competition, legality, and travel time, then shows ranked spots on a map colored good / caution / avoid. Each spot opens a breakdown: the demand signals, competitor overlap based on your actual menu, and the legality checks. A Permits tab turns the four-agency maze into a verified, vendor-type-specific checklist with the city's 30/90/15-day deadlines, plus an EasyApply flow that pre-fills a draft application from your profile to review. It never submits to any agency.

How we built it

The whole system runs on DigitalOcean. A React 19 + TypeScript + Mapbox PWA (App Platform) talks to seven DigitalOcean Functions and three Gradient AI endpoints running on DigitalOcean Gradient serverless inference, Spot Scout, Permit Copilot, and a Menu RAG, with managed Gradient Agents as the production target.

Our core design invariant: the LLM never does math or law. Legality clearances, demand scoring, and ranking are all deterministic code. The recommend_spots Function samples candidate points around the pin, filters by travel budget (Google Distance Matrix), and fans out concurrently to signal Functions (vendors, closures, restaurants, foot traffic, events, clearance). It then scores each surviving candidate by weighing three signals, foot traffic most heavily, then restaurant density, then a smaller bonus for nearby events, minus a penalty for menu-level competition. Any candidate that fails a hard constraint (active closure, occupied spot, failed clearance, or over travel budget) is eliminated outright before ranking. Only then does Spot Scout write a one-line "why" over the pre-computed signals.

Permit Copilot serves authored, verified checklists (not model-generated) and adds a short AI explanation with citations. Menu RAG is a real Gradient Knowledge Base that reasons over menu items and prices, not a cuisine label, to score competitor overlap. We also use Gradient serverless inference with prompt caching to classify messy vendor food descriptions into clean cuisine categories offline.

The permit path is the deepest piece. The EasyApply flow fetches the real SF agency PDF through an allowlisted proxy (agency hosts have no CORS), fills its actual form fields from the vendor's profile while keeping them editable, and renders it inline on the page, no flattening, no forced download. The form schemas and checklists come from a hand-authored knowledge base of verified form URLs and field catalogs, so nothing about the legal forms is invented by the model.

Data is real SF: SF Open Data (permits, schedules, closures), Bay Wheels bike activity as a foot-traffic proxy, Google Places for restaurant saturation, and Ticketmaster for event crowds.

Challenges we ran into

Block-level pedestrian counts don't exist for free, so we triangulate demand from proxies and label it honestly as an estimate. SF's mobile-food permit data describes food as messy free text, which pushed us toward menu-level RAG instead of crude cuisine labels. The UI animations took real work to get right, keeping map markers pinned to their coordinates when zooming, timing the truck loading screen to dismiss only once everything was actually ready instead of on a fixed timer, and avoiding a blank flash before the map painted. And a live demo on venue wifi is risky, so we made the app demo-safe by default: it ships with fixture snapshots and degrades gracefully to deterministic templates with no live AI at all.

Accomplishments that we're proud of

A clean split of deterministic logic and AI explanation, so the app never hallucinates legal or scoring facts. It's tested, too: 100+ automated tests across frontend, functions, and geometry, plus a 24/24 Gradient agent-evaluation gate.

What we learned

The honest version of an AI product is usually the stronger one. Keeping the model out of the math made Rollaway more trustworthy, more testable, and easier to demo.

What's next for Rollaway

Expanding beyond SF to other cities' permit regimes, adding live event-based outreach drafting, and turning the EasyApply drafts into real guided submissions where cities offer the APIs.

Built With

Share this project:

Updates