Case StudyPasselio

Your visual travel compass

Upload mood board photos and AI identifies the places in them, then generates personalized day-by-day itineraries with routes, timing, and recommendations.

Passelio home screen showing journey cards

See it in action

From photo upload to a complete itinerary — watch the full workflow in under two minutes.

passelio.app/demo

How it works

01

Upload Photos

Drag and drop mood board photos onto a visual canvas. Pin images of places, landmarks, restaurants — anything that inspires your trip.

Passelio mood board canvas with photos scattered for Barcelona trip
02

AI Identifies Places

Gemini Vision analyzes each photo to identify real-world locations — landmarks, restaurants, neighborhoods. No manual tagging needed.

Interactive map view showing identified places with pins across Barcelona
03

Get Your Itinerary

Claude generates a complete day-by-day itinerary with optimal routes, time slots, transit directions, and local recommendations.

AI-crafted itinerary showing Day 1 with timed stops and routes

App showcase

Home screen — journey cards overview

Your Journeys

Visual mood board canvas

Mood Board

AI-generated day-by-day itinerary

AI Itinerary

Interactive map with all stops

Map View

Add custom track to your plan

Add Spots

Technical architecture

Multi-model AI orchestration with edge computing, video processing pipeline, and cross-platform delivery

Frontend
React 19ViteTailwind CSS 4Shadcn UIZustandFramer MotionReact RouterGoogle Maps SDK
Backend
HonoCloudflare WorkersDrizzle ORMNeon PostgreSQLCloudflare R2Cobalt ServerResendRevenueCat
AI Layer
Gemini 2.5 Flash (Vision + Video)Claude API (Itinerary Gen)Gemini File APICircuit Breakers
Infrastructure
Cloudflare Workers (Edge)Cloudflare R2 (Storage)Neon (Serverless Postgres)Sentry (Monitoring)
Mobile
CapacitoriOSAndroidPWA / Workbox

AI orchestration flow

Two input paths — photos and videos — converge through Gemini for place detection, then Claude for itinerary generation.

Photo Upload
Reel URL
Extract Video
Gemini
Vision + Video Analysis
Orchestrator
Claude
Itinerary Gen
Itinerary

Engineering decisions

Key technical choices and the reasoning behind them

Dual-AI orchestration

Gemini 2.5 Flash handles vision — analyzing photos and full videos to identify real-world places. Claude handles structured generation — building coherent multi-day itineraries with timing logic. Each model plays to its strengths, with circuit breakers protecting against cascading failures.

Video pipeline with Cobalt

Users paste a TikTok or Instagram Reel URL and the Cobalt server extracts the video. It's uploaded to Gemini's File API for full-video analysis — extracting transcripts, OCR text, places, and timestamps. A client-side frame extractor provides a parallel path using scene-change detection to select 4-8 key frames.

Edge-first with Hono on Workers

Sub-50ms cold starts, zero server management, and global edge distribution. Hono's lightweight router is built for Workers' constraints. API routes handle image upload to R2, AI orchestration, and itinerary CRUD — all at the edge.

Visual canvas with free-form layout

The mood board uses pointer events, drag-and-drop, and a virtualized canvas. Photos can be freely positioned, zoomed, and rotated — making trip planning feel creative rather than transactional.

Cross-platform with Capacitor

Single React codebase compiles to web, iOS, and Android via Capacitor, plus a PWA fallback with Workbox. Native bridge access for camera, haptics, and share sheets. No separate mobile codebase to maintain.

Serverless Postgres with Drizzle

Neon provides serverless PostgreSQL that scales to zero. Drizzle ORM gives type-safe queries with zero overhead — the schema is the source of truth. Migrations are versioned and reproducible.

Interested in working together?

Passelio demonstrates my approach to building products: thoughtful architecture, multi-model AI integration, and shipping cross-platform from a single codebase.