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
parentCoordinatorSystem1 / 8PARENTSelects sessions todisputeNone2 / 8PARENTEnters dispute reasonPOST /issues3 / 8SYSTEMTicket createdCoordinator Telegram notification4 / 8COORDINATORViews ticket in TicketCenterNone5 / 8COORDINATORReviews disputedsessionsMay contact educator/parent for details6 / 8COORDINATORResolves disputeParent notified of resolution7 / 8SYSTEMParent notifiedTelegram + in-app notification8 / 8SYSTEMInvoice adjusted ifapplicableCredit note or adjustment created

Step Details

StepActorActionNotificationsBackend StateNext Action (by whom)
1parentSelects one or more sessions from invoice or sessions pageNoneNo state changeParent enters reason (Parent)
2parentEnters dispute reason and submitsNone (happens on submit in step 3)parent_issues row created with linked appointment IDsSystem creates ticket (System)
3SystemTicket created and categorized as DisputeCoordinator Telegram: new dispute ticketticket.status = Open, type = DisputeCoordinator reviews (Coordinator)
4CoordinatorViews ticket in admin Billing > TicketsNoneNo state changeCoordinator investigates (Coordinator)
5CoordinatorReviews session details — check-in/out times, educator notes, parent complaintMay reach out to educator via Telegram for their sideNo state changeCoordinator resolves (Coordinator)
6CoordinatorResolves dispute (in favor of parent, educator, or split)Parent Telegram: dispute resolvedticket.status = Resolved, resolution recordedSystem notifies parent (System)
7SystemSends resolution notification to parentTelegram + in-app notificationNo state changeSystem adjusts invoice if needed (System)
8SystemAdjusts invoice if resolution favors parentParent alert: invoice updatedInvoice line items credited or voidedCycle complete

Dispute Categories

TypeDescriptionTypical Resolution
No-showEducator did not arrive for scheduled sessionSession voided, package credit restored
DurationSession was shorter than scheduled durationPartial credit or reschedule
QualityParent unsatisfied with session qualityCoordinator mediates, possible educator reassignment
BillingIncorrect charge or duplicate billingInvoice adjustment, credit note issued
SchedulingSession occurred at wrong time or dateReschedule 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.