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. 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. 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. 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. 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.

Match Scoring
/
How closely the tutor's subject expertise matches the posting's requirements
/
Overlap in spoken languages (important for young learners)
/
Whether the tutor matches the parent's gender preference (if any)
/
Alignment between tutor availability and the requested schedule
/
Whether the tutor has relevant special needs experience matching the posting's requirements
Total/100

Blind Matching Rules

Tutor identity is hidden until acceptance

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 StatusParent SeesTutor SeesCoordinator Sees
AppliedNothing (not visible yet)"Application submitted"Full application details + score
Coordinator_PushedAnonymous tutor profile + score"Pushed to parent"Full details
Parent_AcceptedFull tutor name + contactFull student details + scheduleFull details
RejectedNot 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.