Matching & Postings
NIVAA uses a postings-based matchmaking workflow. Parents describe their tutoring needs, tutors apply, and coordinators review and push the best-fit match. Tutor identity is hidden from parents until a match is formally accepted.
Posting Lifecycle
- 1 Parent Creates Posting -- The parent fills out a posting form with subject, schedule preferences, location, special needs, and any requirements. The posting is visible to all tutors on the platform.
- 2 Tutors Browse & Apply -- Tutors see open postings in their dashboard and via Telegram (
/postings). They can apply to any posting that matches their skills. Each application includes a short note from the tutor. - 3 Coordinator Reviews -- Coordinators see all applications ranked by match score. They review tutor profiles, check availability alignment, and select the best-fit tutor to push to the parent.
- 4 Parent Accepts or Declines -- The parent sees the coordinator's recommendation (without tutor identity). On acceptance, sessions are auto-scheduled and any applicable discount is applied.
Match Scoring
Each application is scored across 5 dimensions. The total score (0-100) helps coordinators identify the best fit. Scores are precomputed and displayed on the admin detail view.
Blind Matching Rules
Parents see the tutor's qualifications, experience summary, and match score but never the tutor's name or photo until the match status reaches Parent_Accepted.
| Match Status | Parent Sees | Tutor Sees | Coordinator Sees |
|---|---|---|---|
Applied | Nothing (not visible yet) | "Application submitted" | Full application details + score |
Coordinator_Pushed | Anonymous tutor profile + score | "Pushed to parent" | Full details |
Parent_Accepted | Full tutor name + contact | Full student details + schedule | Full details |
Rejected | Not visible | "Application closed" (silent) | Rejection record |
Silent Rejection
When a parent accepts one tutor for a posting, all other applications to that posting are silently rejected. The rejected tutors see their application status change to closed but receive no notification. This prevents negative experiences and keeps the tutor pool engaged.
Auto-scheduling
When a parent accepts a match, sessions are automatically created based on the agreed schedule:
- The system generates appointments for the next 4 weeks based on the posting's day/time preferences.
- All auto-created sessions start with status Scheduled.
- If a discount applies (first-session discount, package discount), it is automatically attached to the relevant sessions.
Discount Handling
Discounts are resolved at session creation via resolveDiscountForSession() and consumed on approval via consumeDiscountSession(). Discount types include:
- First-session trial: Free or reduced-price first session for new matches.
- Package discount: Bulk discount applied when a parent purchases a larger session package.
- Promotional: Time-limited discounts created by coordinators.