Iter AI Parking
Affordable parking management for LATAM lot owners who can't justify mall-grade infrastructure
- Role
- Sole developer
- Stack
- TanStack StartReactTypeScriptSupabaseCloudflare WorkersGeminiCreemPWA

Test account credentials for all four personas (driver, owner, staff, iter_ops) are available on request. Credentials are rotated when you finish exploring or after one hour — whichever comes first. Request access
Problem
Across Latin America, thousands of independent parking lots — street-level, commercial buildings, neighborhood garages — never get the management systems malls take for granted. Enterprise parking infrastructure is priced and scoped for operators with capital and volume incentives. Smaller lot owners run on gate logs, cash drawers, and WhatsApp threads because nothing affordable gives them reservations, occupancy visibility, staff coordination, and digital payments in one place.
The gap is on the owner side: operators who would pay a small monthly fee for real digital infrastructure if the product matched their budget and complexity — not a six-figure platform rollout.
Drivers feel the downstream pain (no reliable way to find or reserve a space), but the product is built to serve the owner who needs management tools first and a driver-facing channel second.
Solution
Iter AI Parking is affordable parking management for those owners — a multi-persona platform on TanStack Start + Supabase, deployed to Cloudflare Workers, priced for low monthly ARPU (Pro at $6/mo). Lot owners get a full operations portal: spaces, reservations, gate verify, walk-ins, staff delegation, billing, and offline gate workflows. Drivers get nearby discovery and space-level booking on top of that owner network.
The entire product you can try today is the result of a timed MVP exercise: under 40 hours of solo work — proof that meaningful digital infrastructure for this segment does not require enterprise budgets or timelines.
Try it live — browse as a guest, or request test accounts for any persona.
Personas in depth
Driver
Mobile-first consumer app at /home: toggle On the road (live GPS anchor, 50 km radius) or Home local (saved home anchor, 15 km radius). Nearby lots come from a Postgres RPC — sorted by distance, filtered by availability. Tap a lot → /lots/:id for pricing and amenities → /lots/:id/reserve to pick a space and time slot → confirmation with checkout QR, external payment link, and gate deep links. Manage upcoming and past bookings at /bookings. No embedded map — list-based discovery keeps costs at zero.
Lot owner
B2B portal at /owner/*: dashboard with KPIs, occupancy grid, and revenue; operations for lot/space CRUD, contracts, walk-in reservations, and image uploads; access tab for gate lookup and checkout verification; Creem Pro billing ($6/mo) with addon lot slots; settings for business profile and payment methods. Pro tier unlocks offline operations (IndexedDB cache for gate workflows when connectivity drops). Preview lots as a driver would see them at /discover.
Staff
Delegated workspace at /staff/work/:ownerId: accept employer invites via /staff/dashboard, then work inside the owner's portal with tab-level permissions (dashboard, operations, access, customer view). Submit hours and manage schedule per employer link. Permissions are a UI delegation layer on top of employer-scoped RLS.
Iter ops (internal)
Console at /internal/* behind MFA and optional IP allowlist: bug triage, trust events, cross-tenant lot/reservation read-only view, GDPR people search, Creem refund queue (admin rank), and audited merchant impersonation. Nav items filtered by ops rank — support, commercial, admin.
How nearby discovery works
The geolocation challenge drove the architecture:
- Browser only —
navigator.geolocation.getCurrentPosition; no geocoding API, no map tiles. - Postgres RPC —
nearby_parking_lotsapplies a bounding-box prefilter on indexed coordinates, then haversine distance in SQL, amenity filters, and a hard 50-row cap. - Client efficiency — 3-minute in-memory cache on Home, in-flight deduplication for identical requests, slim column lists on list views (heavy fields only on lot detail), ETag caching on detail fetches.
- Graceful fallback — if GPS is denied or no anchor is set, return a capped global lot list ordered by name.
Documented in the repo's cost-governance checklist so egress and MAU stay within Supabase free-tier headroom.
AI layer (honest scope)
Shipped backend: Gemini-powered owner how-to copilot (owner-copilot Edge Function) with NVIDIA NeMo guardrails, conversation history, and token-metered debits. UI is feature-flagged off pre-launch.
Roadmap (not shipped): driver-facing recommendations, availability forecasting, WhatsApp concierge booking.
The 40-hour MVP
This is not a roadmap slide — it is the shipping constraint the whole product was built under. The question was: what does a production-grade parking platform look like when a solo developer has less than 40 hours total?
The answer is what you see in the live app: four personas with route guards and RLS, space-level reservations, owner operations and billing, staff delegation, an internal ops console, Creem subscriptions, external payment links, Pro-tier offline gate workflows, and a Gemini copilot backend — all on one TanStack Start + Supabase stack, deployed to Cloudflare Workers. No phased rewrite; the current state is the MVP.
Engineering scale
TanStack Start SSR on Cloudflare Workers, 11 Supabase Edge Functions (billing webhooks, payment runtime, owner copilot, ops impersonation, account deletion), RLS hardening with profile role guards, hCaptcha on auth, EN/ES i18n, and a manual QA playbook with an abuse matrix across all four personas.
Highlights
- Built for independent LATAM lot owners who need digital management at a small monthly fee — not mall-grade enterprise infrastructure
- Entire product — four portals, billing, payments, offline mode — built in under 40 hours of solo work as a timed MVP exercise
- Four portals — driver, owner, staff, and internal ops — each with route guards and role-scoped RLS on shared tables
- End-to-end driver flow: GPS-aware nearby discovery → space/time reservation → checkout QR + external payment → booking management
- Owner B2B portal: lot/space CRUD, live occupancy, gate verify, walk-ins, Creem Pro billing, and Pro-tier offline operations
- Zero maps API spend — browser Geolocation + Postgres bounding-box/haversine RPC (50-row cap, client cache)
- Gemini owner copilot backend with NeMo guardrails and token-metered billing (UI feature-flagged pre-launch)
Challenges
Outcomes
- Full multi-persona MVP live on Cloudflare Workers — driver, owner, staff, and ops — from under 40 hours of total build time
- Manila seed lots with end-to-end reserve, pay, and gate-verify flows across all personas
- Pre-launch authz review complete — no exploitable P0/P1 in persona pass
- Vitest coverage for geo math, billing webhooks, cap errors, auth redirects, and internal ops gates
Demo
Open live appDriver flow
- Open /home → nearby lots sorted by distance (GPS On the road or saved Home local anchor)
- Select lot → view pricing, amenities, and space availability
- Reserve → pick space + time slot → confirm booking
- Pay via owner's external wallet link or checkout QR → track in /bookings