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.
| Column | Description |
|---|---|
| Name | Display name with ID -- e.g., "Alex Tan (9)" |
| Subjects | Subjects taught, grouped by education stage and level |
| Area | Postal code and neighborhood where the tutor is based |
| Onboarding | Status badge: Complete, In Progress, or Pending |
| Matches | Number of active student matches |
| Sessions | Total sessions delivered (all time) |
| Hours | Total tutoring hours (computed from check-in/out) |
| NPS | Net 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-route | Content |
|---|---|
/overview | Full profile: qualifications, availability grid, personal info, introduction text, special needs experience |
/sessions | Complete session history with status, dates, student names, and duration |
/students | Current and past matched students with subject, start date, session count, and match status |
/billing | Earnings summary, per-session rates, payout history, pending amounts |
Tutor Detail API
{ "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.
| Field | Type | Notes |
|---|---|---|
| Subjects | Array of { stage, level, subject } | Grouped by education stage (Primary, Secondary, JC) and level (PSLE, O-Level, etc.) |
| Availability | Weekly time slots | Day + start/end time. Multiple slots per day allowed. |
| Languages | Array of strings | Languages the tutor can teach in |
| Gender | String | Used in match scoring (gender preference dimension) |
| Special Needs Experience | Boolean | Whether the tutor has experience with special needs children |
| Employment Type | String | Full-time, Part-time, or Freelance |
| Area / Postal Code | String | Used in location match scoring (proximity to student) |
| Experience Years | Number | Total years of tutoring experience |
| Introduction | Text | Free-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.
// 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" }// Set or update incentive bonus
{ "bonus_per_hour": 5.00, "reason": "Remote area premium" }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_idfrom 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 Registration: Tutor signs up via
/registeror/applylanding page - 2 Profile completion: Subjects, availability, languages, area, and introduction text filled in
- 3 Credential review: Coordinator verifies qualifications and experience claims
- 4 Identity verification: Singpass OIDC flow (when enabled) or manual document check
- 5 First match: Tutor applies to a posting and is pushed to a parent
- 6 First session: Tutor completes first check-in, check-out, and notes submission