← Back to portfolio
Sample work · fictional feature, no company data

PRD: Provider Reassignment

Let Operations move a booking to another provider when the assigned one drops out, instead of cancelling it.

OwnerMostafa Mahmoud
Version1.2 · Ready for grooming
PlatformsOps Admin, Provider Portal, Customer App
Reviewed withOps lead, Eng lead, Design, Finance

1Problem

When a provider drops a booking they already accepted, the only action available is to cancel and refund. The customer has to start over, and the order is lost even when another provider in the same area is free at that time.

Figures are illustrative for this sample.

2Goal & success metrics

Save bookings that would otherwise be cancelled, without the customer doing anything and without hurting service quality.

MetricTypeBaselineTarget (90 days)
Eligible provider-side cancellations saved by reassignmentPrimary0%40%
Provider-side cancellation rate (of all bookings)Secondary3.5%≤ 2%
60-day rebooking rate of affected customersSecondaryCurrent+15%
Complaints per 1,000 reassigned bookingsGuardrailSame as normal bookingsNo increase

3Scope

In (phase 1)Out (later or never)
Ops Admin reassigns a booking or a single service in itCustomer picks a new provider by themselves
List of eligible providers (same service, area, free at the slot)Automatic matching without an agent
Updates in both providers' portalsAny change to price, slot or commission
One combined customer notificationReassigning in-progress or completed services
Audit log and tracking eventsProvider rating impact (separate ticket)

4Ops flow

1Open booking
→
2Click "Reassign"
→
3Pick service (if more than one)
→
4Choose provider + reason
→
5Confirm
→
6Notify + log
Reassign service · Deep cleaning✕
Provider B · 4.8 ★Available
Provider C · 4.6 ★Available
Provider unavailable (sick / emergency) ▾
CancelReassign

Low-fidelity wireframe. Final UI follows the design file.

5Business rules

  1. BR-1 Reassignment is allowed for services that are Pending or Accepted only.
  2. BR-2 Each service can be reassigned once. A second drop goes to the normal cancellation flow.
  3. BR-3 In a multi-service booking, reassignment is per service. Other services stay with their providers.
  4. BR-4 Eligible providers offer the same service, cover the customer's area and are free at the same slot.
  5. BR-5 Reassignment must happen at least 2 hours before the slot. Under 2 hours, the action is hidden.
  6. BR-6 The new provider gets the service as Accepted with no extra confirmation step.
  7. BR-7 Price, date, time and commission don't change. Payment is not touched.
  8. BR-8 The original provider loses access right away, and the drop still counts as a provider-side cancellation for penalty purposes.
  9. BR-9 A reason is mandatory and comes from a fixed list.
  10. BR-10 Every reassignment writes an audit entry: agent, time, service, from-provider, to-provider, reason.

6User stories & acceptance criteria

US-01 · Ops reassigns a service

As an Ops agent, I want to move a service to another provider, so the customer is still served.

AC-01.1 Given an Accepted service, never reassigned, more than 2 hours before its slot When the agent picks an eligible provider and a reason and confirms Then the service moves to the new provider as Accepted And an audit entry is created
AC-01.2 Given a service that was already reassigned once When the agent opens the booking Then the "Reassign" action is not shown for that service
AC-01.3 Given no provider meets the eligibility rules When the agent opens "Reassign" Then an empty state explains why And the agent can go to the normal cancellation flow

US-02 · Providers see the change

As a provider, I want my schedule to reflect bookings moved to or away from me.

AC-02.1 Given a service moved from Provider A to Provider B When Provider A opens their bookings Then the service is no longer in their active list And Provider B sees it as Accepted with the original slot and price

US-03 · Customer is informed

As a customer, I want to know if my provider changed, so I'm not surprised on the day.

AC-03.1 Given my service was reassigned When the change is saved Then I get one notification with the new provider's name And the booking details show the new provider

7Notifications

ToChannelEnglishArabic
CustomerPush + in-appYour provider has changed. Same date and time, your new provider is {name}.تم تغيير مقدّم الخدمة. نفس الموعد، ومقدّم الخدمة الجديد هو {name}.
Provider BPushNew booking assigned to you: {service}, {date} {time}.تم إسناد حجز جديد لك: {service}، {date} {time}.
Provider AIn-app{service} on {date} was moved to another provider.تم نقل خدمة {service} بتاريخ {date} إلى مقدّم خدمة آخر.

8Edge cases

CaseExpected behavior
Provider B becomes unavailable after reassignmentNormal provider cancellation flow (BR-2), full refund to customer.
Two agents reassign the same service at onceFirst save wins; second agent sees "Already reassigned".
Customer cancels while the agent is reassigningCustomer action wins; reassign fails with a clear message.
Booking has 3 services, only one droppedOnly that service moves (BR-3); one notification mentions that service only.
Slot is in under 2 hoursAction hidden (BR-5); agent uses cancellation flow.

9Traceability & tracking

MetricRulesStories / ACEvent
Saved cancellationsBR-1, BR-4, BR-5AC-01.1, AC-01.3service_reassigned, reassign_no_provider
Provider-side cancellation rateBR-2, BR-8AC-01.2service_cancelled (actor = provider)
Rebooking rateBR-6, BR-7AC-02.1, AC-03.1booking_created (60-day window)
Complaints (guardrail)BR-9, BR-10AC-01.1ticket_created (tag = reassigned)

10Decisions & risks

DecisionWhy
Auto-accept for Provider BOps already confirms by phone. An extra step adds delay and a second chance to drop.
Once per serviceAvoids bookings bouncing between providers. Ops agreed after reviewing last quarter's cases.
Ops-only in phase 1Keeps quality under control while we learn. Customer self-service is phase 2 if the primary metric holds.
Penalty still applies to Provider AWithout it, providers could drop bookings knowing Ops will cover them.

Risks

11Rollout & open questions

  1. Release to Ops in one city first, with release notes and a 15-minute walkthrough.
  2. Compare metrics weekly against the 4 weeks before launch.
  3. Go to all cities if the primary metric is above 25% after 4 weeks and the guardrail holds.

Open questions

Changelog

A sample of how I write PRDs. The feature, numbers and rules are fictional and don't describe any company's product.