Product Architecture

How TutorHub UAE works under the hood.

A trust-first tutoring marketplace built for Dubai. Below is a plain-language walk-through of the platform's core flows, data model, moderation rules, and matching engine.

Three personas, one workflow

Student / Parent
  1. 1Search & filter
  2. 2Save favorites
  3. 3Send inquiry
  4. 4Track responses
Tutor
  1. 1Create profile
  2. 2Submit for review
  3. 3Receive inquiries
  4. 4Manage schedule
Admin
  1. 1Approve tutors
  2. 2Moderate content
  3. 3Manage taxonomy
  4. 4View analytics

End-to-end inquiry flow

Step 1
Discovery
Browse, filter by subject/level/area/mode/language/price.
Step 2
Profile view
Read bio, qualifications, reviews, service area map.
Step 3
Inquiry
Send scoped message. Contact details stay hidden.
Step 4
Rules engine
Spam / contact-sharing / duplicate checks.
Step 5
Notify tutor
Tutor gets email + dashboard notification.
Rules engine
Deterministic checks running on every inquiry, profile edit, and login.
Contact info detector
high
IF message contains email / phone / social handle THEN Flag for review
Duplicate profile guard
high
IF photo hash or name matches existing profile THEN Block registration
Spam heuristic
medium
IF message < 15 chars OR > 10 links THEN Rate-limit sender
Rate limit
medium
IF > 5 inquiries in 10 minutes THEN Cooldown 60m
Profile completeness
low
IF bio < 100 chars THEN Hide from search
Matching engine
Ranking signals for the tutor search results.
score = 0.30·subject + 0.20·rating + 0.15·level + 0.12·location + 0.10·respRate + 0.08·language + 0.05·price

System architecture

Presentation
  • React + TanStack Router
  • TailwindCSS design system
  • Mapbox for service areas
  • Recharts analytics
Application
  • Search / filter engine
  • Matching & ranking
  • Rules engine
  • Notifications router
Data & security
  • PostgreSQL data store
  • Object storage for media
  • Role-based access
  • Audit logs
Layer 1
Users
Layer 2
API Gateway
Layer 3
Application Services
Layer 4
Data Layer

Core data model

User
  • · id
  • · role
  • · name
  • · email
  • · createdAt
Tutor
  • · userId
  • · subjects[]
  • · levels[]
  • · areas[]
  • · hourlyRate
  • · status
Inquiry
  • · id
  • · tutorId
  • · studentId
  • · subject
  • · budget
  • · status
Review
  • · id
  • · tutorId
  • · rating
  • · body
  • · createdAt