02 — User Personas (Biometric Module)
- 1. Ops Manager / School Admin — "Riya"
- 2. Office Clerk / Device Operator — "Arjun"
- 3. IT / Technical Admin — "Dev"
- 4. Teacher — "Meera"
- 5. Platform Admin (cross-tenant) — "Sam"
- 6. Parent — passive consumer
- Permission → persona matrix (real today)
- Persona acceptance notes
Five operational personas + one passive consumer. Permission bounds from
permissions.constants.ts:41-43(biometric.log.create,biometric.log.read,biometric.device.manage). Only the clerk persona maps 1:1 to a today-implementable surface (log read); device management and enrollment screens are(planned).
1. Ops Manager / School Admin — "Riya"
| Aspect | Detail |
|---|---|
| Role | Senior administrator; owns daily operations |
| Context | Desktop + phone; busy between 7:00-9:00 AM (gate rush) |
| Goals | Gate works with zero babysitting; disputes resolved before parent asks |
| Pains | Device offline for 3 days unnoticed; manual re-entry when sync breaks |
| Permissions | biometric.device.manage, biometric.log.read, biometric.log.create (all three) |
| Surfaces | Device list, sync status, log audit (planned screens) |
| Key metric | "Did every student who entered get counted?" |
| Behaviour | Checks device fleet once daily; flags offline devices immediately |
2. Office Clerk / Device Operator — "Arjun"
| Aspect | Detail |
|---|---|
| Role | Front-office staff who physically operates the gate device |
| Context | Stands next to the hardware; runs the admin console on a tablet/kiosk |
| Goals | Enroll new students fast; re-enroll on scanner rejection; confirm a student "actually scanned" |
| Pains | Fingerprint rejected on dry hands; duplicate enrollment mistakes; unclear enrollment status |
| Permissions | biometric.device.manage, biometric.log.read |
| Surfaces | Enrollment wizard (planned), device detail, punch timeline, log search |
| Behaviour | High-frequency short tasks; one-handed; hates multi-step dialogs |
3. IT / Technical Admin — "Dev"
| Aspect | Detail |
|---|---|
| Role | Manages device fleet, network, vendor SDK integration |
| Context | Desktop; SSH-level comfort; reads logs |
| Goals | Diagnose sync failures; push config to devices; watch the biometric-sync queue |
| Pains | No worker behind biometric-sync today (jobs stall — queue.constants.ts:7, no @Processor); vendor SDK availability gates everything (FEATURE_ROADMAP.md:56) |
| Permissions | biometric.device.manage, biometric.log.read |
| Surfaces | Device config, sync job history, Bull-Board queue view |
| Behaviour | Batch operations; export-friendly; tolerates dense technical UI |
4. Teacher — "Meera"
| Aspect | Detail |
|---|---|
| Role | Takes class attendance; checks "who's in" at start |
| Context | Phone, 2 minutes before period |
| Goals | See biometric check-ins merged into the class attendance view without re-counting |
| Pains | If derivation isn't wired, she still marks manually and trusts nothing |
| Permissions | attendance.mark (+ read via attendance endpoints); no biometric permission today |
| Surfaces | Class attendance list (attendance/class/:classId); biometric contribution is passive |
| Behaviour | Only cares about the derived result, not the device |
5. Platform Admin (cross-tenant) — "Sam"
| Aspect | Detail |
|---|---|
| Role | StudyLyon operator; sees fleet across tenants |
| Context | Desktop; support tickets |
| Goals | Fleet health; spot tenants with dead devices; vendor-SDK risk tracking |
| Pains | No cross-tenant biometric view exists; roadmap gates the whole feature |
| Surfaces | (planned) platform dashboard tile |
| Behaviour | Weekly health review |
6. Parent — passive consumer
| Aspect | Detail |
|---|---|
| Role | Wants "reached school" confidence |
| Context | Push notification (forward-looking) |
| Goals | Check-in reflected in daily attendance; late-punch alerts (proposed) |
| Pains | Device misread → child marked absent → angry call to office |
| Surfaces | Attendance record only (attendance/student/:studentId) |
| Behaviour | Reads, never administers |
Permission → persona matrix (real today)
| Permission | Source | Riya | Arjun | Dev | Meera | Sam |
|---|---|---|---|---|---|---|
biometric.log.create | permissions.constants.ts:41 | ✅ | — | — | — | — |
biometric.log.read | permissions.constants.ts:42 | ✅ | ✅ | ✅ | — | — |
biometric.device.manage | permissions.constants.ts:43 | ✅ | ✅ | ✅ | — | — |
biometric.sync (blueprint name) | blueprint Biometric.md:67 | — | — | ✅ | — | — |
Persona acceptance notes
- Only Riya/Arjun/Dev can touch biometric screens; Meera and parents see derived attendance only — keep biometric internals out of their navigation.
- Arjun's enrollment flow must be ≤ 3 taps per student or it won't be used at the gate.