Educator Management

Educators (tutors) are the supply side of the platform. Coordinators manage their profiles, monitor performance, set incentive bonuses, and ensure every educator is properly onboarded and matched to appropriate students.

Tutor List

The tutor list at /admin/tutors shows all registered educators with key metrics. The frontend fetches data via GET /admin/metrics/tutor-performance.

ColumnDescription
NameDisplay name with ID -- e.g., "Alex Tan (9)"
SubjectsSubjects taught, grouped by education stage and level
AreaPostal code and neighborhood where the tutor is based
OnboardingStatus badge: Complete, In Progress, or Pending
MatchesNumber of active student matches
SessionsTotal sessions delivered (all time)
HoursTotal tutoring hours (computed from check-in/out)
NPSNet Promoter Score from parent feedback

Tutor Detail Page

Clicking a tutor opens the detail view at /admin/tutors/view/[id]/ with four sub-routes.

Sub-routeContent
/overviewFull profile: qualifications, availability grid, personal info, introduction text, special needs experience
/sessionsComplete session history with status, dates, student names, and duration
/studentsCurrent and past matched students with subject, start date, session count, and match status
/billingEarnings summary, per-session rates, payout history, pending amounts

Tutor Detail API

GET /admin/tutors/:id/detail
{ "tutor_id": 9, "display_name": "Alex Tan",
  "email": "[email protected]", "phone": "+65...",
  "subjects": [{ "stage": "Secondary", "level": "O-Level", "subject": "Mathematics" }],
  "availability": [{ "day": "Monday", "start": "15:00", "end": "18:00" }],
  "languages": ["English", "Mandarin"],
  "gender": "Male",
  "special_needs_experience": true,
  "employment_type": "Part-time",
  "area": "Tampines", "postal_code": "520123",
  "experience_years": 4,
  "introduction": "Passionate about helping students...",
  "matches": [...], "session_stats": { "total": 87, "hours": 130.5 } }

Tutor Profile Fields

Each tutor profile consists of the following configurable fields. Coordinators can view all fields; tutors can edit their own profile.

FieldTypeNotes
SubjectsArray of { stage, level, subject }Grouped by education stage (Primary, Secondary, JC) and level (PSLE, O-Level, etc.)
AvailabilityWeekly time slotsDay + start/end time. Multiple slots per day allowed.
LanguagesArray of stringsLanguages the tutor can teach in
GenderStringUsed in match scoring (gender preference dimension)
Special Needs ExperienceBooleanWhether the tutor has experience with special needs children
Employment TypeStringFull-time, Part-time, or Freelance
Area / Postal CodeStringUsed in location match scoring (proximity to student)
Experience YearsNumberTotal years of tutoring experience
IntroductionTextFree-form text visible to coordinators; anonymized summary shown to parents

Incentive Bonuses

Coordinators can set per-match incentive bonuses to reward high-performing tutors or incentivize difficult-to-fill matches. The bonus is an additional per-hour amount on top of the standard rate.

GET /admin/matches/:id/incentive
// Returns current incentive for a specific match
{ "match_id": 45, "tutor_id": 9, "bonus_per_hour": 5.00,
  "reason": "Remote area premium", "set_by": "admin",
  "created_at": "2026-03-01T10:00:00Z" }
PUT /admin/matches/:id/incentive
// Set or update incentive bonus
{ "bonus_per_hour": 5.00, "reason": "Remote area premium" }
Incentive guidelines

Use incentives sparingly. Common reasons: remote area premium, high-demand subject, special needs experience, retention bonus for top-performing tutors. All incentives are visible in billing reports.

Name Display Convention

Across all admin pages, tutor names follow the format {display_name} ({id}). This convention ensures coordinators can always distinguish between tutors with similar names and quickly reference IDs in communication.

  • Example: Alex Tan (9), Priya Kumar (14)
  • The ID in parentheses is the internal user_id from the database
  • This format is used in tables, dropdowns, session logs, and all admin-facing displays
  • Parent-facing views show anonymized tutor info until the match reaches Parent_Accepted status

Onboarding Checklist

New tutors go through a structured onboarding process. Coordinators track completion via the onboarding status badge on the tutor list.

  1. 1 Registration: Tutor signs up via /register or /apply landing page
  2. 2 Profile completion: Subjects, availability, languages, area, and introduction text filled in
  3. 3 Credential review: Coordinator verifies qualifications and experience claims
  4. 4 Identity verification: Singpass OIDC flow (when enabled) or manual document check
  5. 5 First match: Tutor applies to a posting and is pushed to a parent
  6. 6 First session: Tutor completes first check-in, check-out, and notes submission