Workflow: Dispute Resolution
Swimlane diagram of the dispute workflow — from a parent raising an issue on specific sessions through coordinator review to resolution and invoice adjustment.
Disputes vs. Cancellations
Disputes are parent-initiated issues on completed sessions. Cancellations (Cancelled_By_Tutor) are tutor-initiated via Telegram before a session occurs. These are separate flows.
Dispute Resolution Flow
Step 1 of 8 — parent: Selects sessions to dispute
Step Details
| Step | Actor | Action | Notifications | Backend State | Next Action (by whom) |
|---|---|---|---|---|---|
| 1 | parent | Selects one or more sessions from invoice or sessions page | None | No state change | Parent enters reason (Parent) |
| 2 | parent | Enters dispute reason and submits | None (happens on submit in step 3) | parent_issues row created with linked appointment IDs | System creates ticket (System) |
| 3 | System | Ticket created and categorized as Dispute | Coordinator Telegram: new dispute ticket | ticket.status = Open, type = Dispute | Coordinator reviews (Coordinator) |
| 4 | Coordinator | Views ticket in admin Billing > Tickets | None | No state change | Coordinator investigates (Coordinator) |
| 5 | Coordinator | Reviews session details — check-in/out times, educator notes, parent complaint | May reach out to educator via Telegram for their side | No state change | Coordinator resolves (Coordinator) |
| 6 | Coordinator | Resolves dispute (in favor of parent, educator, or split) | Parent Telegram: dispute resolved | ticket.status = Resolved, resolution recorded | System notifies parent (System) |
| 7 | System | Sends resolution notification to parent | Telegram + in-app notification | No state change | System adjusts invoice if needed (System) |
| 8 | System | Adjusts invoice if resolution favors parent | Parent alert: invoice updated | Invoice line items credited or voided | Cycle complete |
Dispute Categories
| Type | Description | Typical Resolution |
|---|---|---|
| No-show | Educator did not arrive for scheduled session | Session voided, package credit restored |
| Duration | Session was shorter than scheduled duration | Partial credit or reschedule |
| Quality | Parent unsatisfied with session quality | Coordinator mediates, possible educator reassignment |
| Billing | Incorrect charge or duplicate billing | Invoice adjustment, credit note issued |
| Scheduling | Session occurred at wrong time or date | Reschedule or session credit |
Key Observations
- Parents can raise disputes from the sessions page with no time window restriction — they can dispute any past session.
- All dispute types are unified under the Tickets system (merged Support + Disputes + Feedback + Risk).
- Tickets are nested under Billing in the admin nav since they most commonly relate to billing issues.
- The coordinator has full visibility into check-in/out timestamps, which provides objective evidence for dispute resolution.