Demo Runbook — Cofounder Walkthrough 2026-04-21
Demo Runbook — Cofounder Walkthrough 2026-04-21
Section titled “Demo Runbook — Cofounder Walkthrough 2026-04-21”Pre-flight checklist
Section titled “Pre-flight checklist”- Local Docker up:
pnpm docker:up - Seed run:
pnpm seed:demo - API running:
cd apps/api && pnpm dev→ http://localhost:3000 - Expo running:
cd apps/mobile && pnpm dev→ http://localhost:8081 - Demo consumer created in Clerk (see below)
Demo credentials
Section titled “Demo credentials”Consumer (Edoardo — main demo account)
Section titled “Consumer (Edoardo — main demo account)”| Field | Value |
|---|---|
edoardo.demo@ideony.dev | |
| Password | See DEMO_CONSUMER_PASSWORD in apps/api/.env (set manually) |
| Clerk clerkId | user_demo_consumer_edoardo (placeholder until Clerk webhook syncs) |
| Name (Clerk) | Edoardo Demo |
Create Clerk user before demo:
Terminal window cd apps/api && tsx scripts/clerk-admin.ts create-demo edoardo.demo@ideony.dev "$DEMO_CONSUMER_PASSWORD" consumerAfter creation, trigger the Clerk webhook (or log in once to force sync) so the local DB
User.clerkIdgets replaced from the mock value to the real Clerk user ID.
Professionals seeded (Rome only — within 50 km radius)
Section titled “Professionals seeded (Rome only — within 50 km radius)”| Name | Category | Status | isOnline |
|---|---|---|---|
| Giulia Bianchi | Electrical | VERIFIED | true |
| Paolo De Santis | Plumbing | VERIFIED | true |
| Matteo Conti | Locksmith | VERIFIED | true |
Seeded state summary
Section titled “Seeded state summary”| Entity | Count |
|---|---|
| Categories | 3 (plumbing, electrical, locksmith) |
| Professionals | 7 total, 3 in Rome |
| Reviews | 14 (4–5 stars) |
| Demo consumer | 1 (Edoardo) |
| Demo bookings | 2 — PENDING (electrical) + ACCEPTED (plumbing) |
Happy-path click sequence
Section titled “Happy-path click sequence”0. Login
Section titled “0. Login”- Open http://localhost:8081
- Tap Accedi → email:
edoardo.demo@ideony.dev+ password - Land on Home — greeting shows “What do you need, Edoardo?“
1. Search flow (core pitch)
Section titled “1. Search flow (core pitch)”- Tap category tile Elettricità (or Idraulica)
- Map loads — 3 Rome professionals appear as pins
- Tap Giulia Bianchi pin → professional detail screen
- Scroll: bio, trust badge (VERIFIED), rating 4.8★, 2 reviews
- Tap Prenota → booking form
- Fill description, pick date/time → tap Invia richiesta
- Success screen / toast
2. Bookings tab
Section titled “2. Bookings tab”- Tap Prenotazioni tab
- Two cards visible:
- PENDING — Giulia Bianchi (Elettricità) — scheduled 25 Apr
- CONFERMATA (ACCEPTED) — Paolo De Santis (Idraulica) — scheduled 24 Apr
- Tap a card → booking detail screen
3. SOS flow (optional stretch)
Section titled “3. SOS flow (optional stretch)”- Tap SOS tab
- Select Serrature (Matteo Conti is online in Rome)
- Show real-time dispatch UI — do NOT submit (live flow)
API endpoints to verify manually before demo
Section titled “API endpoints to verify manually before demo”# Categoriescurl http://localhost:3000/categories
# Rome professionals (search)curl "http://localhost:3000/professionals/search?lat=41.9028&lng=12.4964&radius=50"
# Healthcurl http://localhost:3000/healthFallback steps
Section titled “Fallback steps”| Problem | Fix |
|---|---|
| Clerk login fails | Reset password in Clerk dashboard → https://dashboard.clerk.com |
| Bookings tab empty | Re-run pnpm seed:demo — idempotent |
| Map blank | Check EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN in apps/mobile/.env; nuke Metro cache: npx expo start --clear |
| Pro not visible on map | Confirm isOnline: true and profilePublished: true via psql/dbhub |
| API 401 on search | Check CLERK_SECRET_KEY in apps/api/.env matches Clerk dashboard |
Post-demo
Section titled “Post-demo”- Do NOT commit real Clerk user IDs or passwords to source control
- Rotate
DEMO_CONSUMER_PASSWORDafter demo session - Archive this plan to
docs/archive/2026-Q2/plans/after sprint closes