Product architecture

How Asana works

A high-level look at the core flows, data model, and the rules engine that powers curated discovery and seamless booking.

Core user flows

Step 01

Onboarding

  1. 1Choose role
  2. 2Profile setup
  3. 3Preferences
  4. 4First match

Step 02

Discovery

  1. 1Filters
  2. 2Location signal
  3. 3Ranking engine
  4. 4Curated list

Step 03

Booking

  1. 1Pick session
  2. 2Confirm details
  3. 3Pay (Stripe)
  4. 4Confirmation + reminders

Marketplace flow diagram

Student
Matching engine
Teacher
Discovery API
Catalog DB
Payments (Stripe)
Trust & safety
Booking ledger
Reviews & feedback

Ranking & rules engine

Signal weights
Geo proximity30%
Style preference match25%
Teacher rating × reviews20%
Schedule fit15%
Recency / availability10%
Booking rules
Free cancellation up to 12 hours before start.
Capacity-aware: bookings auto-close when class is full.
Prenatal & beginner classes prioritized for first-time students.
Waitlist auto-promotes when a seat frees up.
Teacher payouts initiated 24h after class completion.

Data model (simplified)

User { id, role, name, email, city, avatar, joined }
   ↓ 1..*
Class { id, teacherId → User, style, level, format,
         price, schedule, capacity, city, lat, lng, status }
   ↓ 1..*
Booking { id, classId → Class, studentId → User,
           date, status, amount, createdAt }
Review  { id, classId, studentId, rating, body }