نموذج · لم يُراجَع
مشروع التخرج: تتبّع الطلبات + شات دعم بالـ AI لـ DukkanGo (مثال)
1. التحليل: المشكلة، الأهداف، أصحاب المصلحة وخطة المقابلات
PROBLEM
DukkanGo customers cannot see where their order is after they pay. They call the shop again and again, and Abu Youssef says he stops packing to answer these calls. Orders also arrive late or with wrong items, and Hala's support team is overloaded with "where is my order" chats.
BUSINESS GOALS
G-1: Fewer status calls to shops and fewer status chats to support.
G-2: Customers trust the delivery time we show them.
G-3: Support agents spend their time on real problems, not status questions.
STAKEHOLDER MAP
Name | Role | Power (H/L) | Interest (H/L) | Grid box | Reason
Karim Mansour | CEO | H | H | Manage closely | Because he funds the project and decides the release.
Nour Adel | Operations manager | H | H | Manage closely | Because the riders and shops report to her team.
Hala Saeed | Customer support lead | L | H | Keep informed | Since her team handles the status chats every day.
Abu Youssef | Shop owner | L | H | Keep informed | Because he gets the calls and must accept orders on time.
Omar | Rider | L | H | Keep informed | Because he must tap the new statuses on the road.
Reem | Customer | L | H | Keep informed | Since she is the one who wants to track the order.
Tarek Fawzy | Tech lead | H | L | Keep satisfied | Because he decides what is possible in release 1.
Dina Khalil | Legal & privacy | H | L | Keep satisfied | Because she can stop the release if rider location is shared without a legal basis.
ELICITATION PLAN
Technique: interviews – why: to hear the pain from support and shops in their own words.
Technique: observation – why: sit with Hala's team for 2 hours and see real chats.
Technique: document analysis – why: read last month's support tickets to count the reasons.
INTERVIEW 1: Hala Saeed, Customer support lead
Goal: understand which questions fill the support queue and how agents find the order status.
Time: 40 minutes
Questions:
1. What are the most common reasons customers contact support?
2. Tell me about the last difficult "where is my order" chat. What happened?
3. How do your agents find the order status today?
4. What would you want an assistant to never say to a customer?
5. When should a chat always go to a human agent?
INTERVIEW 2: Abu Youssef, shop owner
Goal: understand how the calls affect packing and how he accepts orders.
Time: 30 minutes
Questions:
1. How many calls about order status do you get on a normal day?
2. Walk me through what you do when a customer calls about an order.
3. How do you know when the rider has picked up an order?
4. What happens when an item is missing from your shelf?
AFTER THE INTERVIEWS
I will send each person a short summary within one day and ask them to confirm or correct it, and ask who else I should talk to.2. الـ BRD: الأهداف، النطاق والمتطلبات
OBJECTIVES
OBJ-1: Reduce "where is my order" calls to shops by 40% within 3 months of launch.
OBJ-2: The support chat answers at least 60% of order-status questions without a human within 3 months.
OBJ-3: 90% of orders show a correct status within 1 minute of each change, from launch.
SCOPE
In scope: live order status for customers, push notifications, rider location on a map while the order is on the way, an AI support chat for order questions in Arabic and English, handover to a human agent.
Out of scope: refunds inside the chat, rider tips, loyalty points, new cities.
FUNCTIONAL REQUIREMENTS
FR-01: The system shall show the customer the current order status (Placed, Accepted, Packing, Picked up, Delivered, Cancelled).
FR-02: The system shall let the rider update the status with one tap (Picked up, Delivered).
FR-03: The system shall send the customer a push notification when the status changes.
FR-04: The system shall show the rider's location on a map and an arrival estimate while the order is out for delivery.
FR-05: The support chat shall answer order-status questions using the customer's own order data.
FR-06: The support chat shall hand the conversation to a human agent when the customer asks, or when it cannot answer.
FR-07: The system shall let the shop owner mark an item as missing and notify the customer.
NON-FUNCTIONAL REQUIREMENTS
NFR-01: Status changes shall reach the customer within 30 seconds.
NFR-02: The chat shall reply in the customer's language (Arabic or English) within 5 seconds.
NFR-03: Rider location data shall be deleted 30 days after delivery.
BUSINESS RULES
BR-01: Rider location is visible to the customer only while their order is out for delivery.
BR-02: The chat never promises a refund; refunds are handled by a human agent.
ASSUMPTIONS AND RISKS
Assumption: riders have smartphones with mobile data.
Risk: riders forget to tap "Picked up", so the status is wrong.
Risk: the AI chat gives a wrong answer and customers lose trust.3. الـ SRS: مواصفات تفصيلية للتتبّع وشات الدعم
1. INTRODUCTION
Purpose: describe exactly how order tracking and the AI support chat behave, so developers and testers can build and test them.
Features covered: order tracking, AI support chat
Users: customer, shop owner, rider, support agent
2. FUNCTIONAL SPECIFICATIONS
FR-01 – Show the order status
Actor: Customer
Preconditions: the customer is logged in and has an active order.
Main flow:
1. The customer opens the order screen.
2. The system reads the order status from the order system.
3. The system shows the status bar and the time of the last update.
Error / alternative flows:
E1: no internet → show the last known status with "Updated X min ago".
FR-02 – Rider updates the status
Actor: Rider
Preconditions: the order is assigned to the rider.
Main flow:
1. The rider taps "Picked up" or "Delivered" in the rider app.
2. The order system saves the new status and the time.
Error / alternative flows:
E2: the rider app is offline → the tap is saved on the phone and sent when the connection returns.
FR-03 – Push notification on status change
Actor: System
Preconditions: the customer allowed notifications.
Main flow:
1. The status changes.
2. The notification service sends a push message with the new status.
Error / alternative flows:
E3: notifications are off → the status shows next time the app opens.
FR-04 – Rider on the map
Actor: Customer
Preconditions: the status is "Picked up".
Main flow:
1. The customer taps "Track on map".
2. The system shows the rider's location from GPS and the arrival estimate.
Error / alternative flows:
E4: GPS not available → hide the map and show the estimate only.
FR-05 – Chat answers order questions
Actor: Customer
Preconditions: the customer is logged in.
Main flow:
1. The customer asks a question in Arabic or English.
2. The chat reads the customer's own orders through the order API.
3. The chat replies with the real status and arrival estimate.
Error / alternative flows:
E5: the chat cannot find the order → it says so honestly and offers a human agent.
FR-06 – Handover to a human
Actor: Customer, Support agent
Main flow:
1. The customer asks for a person, or the chat is not sure.
2. The chat creates a ticket in the support tool with the whole chat history.
3. The agent replies in the same chat.
Error / alternative flows:
E6: no agent online → the chat says when the team will reply.
FR-07 – Missing item
Actor: Shop owner
Main flow:
1. The shop owner marks an item as missing.
2. The customer gets a notification and can accept a replacement or remove the item.
3. ORDER STATUS MODEL
Statuses: Placed → Accepted → Packing → Picked up → Delivered; Cancelled
Who changes each status: shop (Accepted, Packing), rider (Picked up, Delivered), customer or shop (Cancelled).
4. AI SUPPORT CHAT BEHAVIOUR
Can answer: order status, arrival estimate, missing items.
Data it may read: only the logged-in customer's own orders.
Never does: share the rider's phone number or other customers' data; promise a refund; invent a delivery time.
Hands over to a human when: the customer asks, is angry, or the chat is not sure or cannot find the order.
Languages: Arabic and English.
5. DATA AND VALIDATIONS
order_id – text – required, must exist
status – one of the 6 statuses – required
updated_at – timestamp – required
message – text – max length 500 characters
6. INTEGRATIONS
Order system API – order status and items – read/write – if it is down, the chat offers a human agent.
Rider app – status taps and GPS – sends to the order system.
Push notification service – status messages – one way.
Support tool – tickets with chat history – write.
7. ERROR STATES
ERR-01: no internet → "You're offline. Showing the last update."
ERR-02: order system not reachable → "We can't check your order right now. Want to talk to our team?"
ERR-03: order not found → "I can't find this order. Let me connect you to a person." 4. العملية: AS-IS وTO-BE
AS-IS PROCESS (today)
1. [Customer] places an order in the app.
2. [Shop] accepts the order by phone or in the shop app.
3. [Shop] packs the order. (P1: no update to the customer while packing)
4. [Rider] picks up the order. No one is told.
5. [Customer] calls the shop to ask where the order is. (P2: the shop owner stops packing to answer)
6. [Customer] writes to support; [Support agent] calls the shop to check. (P3: agents have no status screen)
7. [Rider] delivers the order.
PAIN POINTS
P1: the customer gets no status after placing the order.
P2: status calls interrupt the shop owner.
P3: support agents must call shops to find the status.
TO-BE PROCESS (after the project)
1. [Customer] places an order in the app.
2. [Shop] accepts and packs; the status updates. (fixes P1 – FR-01)
3. [Rider] taps "Picked up"; [System] sends a notification with an arrival estimate. (fixes P1 – FR-02, FR-03)
4. [Customer] tracks the rider on the map. (fixes P2 – FR-04)
5. [Customer] asks the support chat; [Chat] answers with the real status. (fixes P2 – FR-05)
6. [Chat] hands hard cases to a [Support agent] with the full history. (fixes P3 – FR-06)
7. [Rider] taps "Delivered".5. الـ user stories والـ acceptance criteria والـ backlog
EPIC 1: Customer order tracking
US-01: As a customer, I want to see my order status, so that I know if it is packed or on the way.
AC1: Given the shop accepted my order, when I open the order screen, then I see "Accepted" and the shop name.
AC2: Given I have no internet, when I open the order screen, then I see the last status and when it was updated.
Priority: Must – because status calls are our main problem (OBJ-1).
Traces to: FR-01, NFR-01
US-02: As a rider, I want to update the status with one tap, so that customers know the order is coming.
AC1: Given the order is assigned to me, when I tap "Picked up", then the status changes within 30 seconds.
AC2: Given I am offline, when I tap "Picked up", then the tap is sent when I am back online.
Priority: Must – because without it there is no real status (OBJ-3).
Traces to: FR-02
US-03: As a customer, I want a notification when my order is picked up, so that I don't need to call the shop.
AC1: Given the rider taps "Picked up", when the status is saved, then I get a push notification within 30 seconds.
AC2: Given notifications are off, when I open the app, then I see the new status.
Priority: Must – because it removes most calls (OBJ-1).
Traces to: FR-03, NFR-01
US-04: As a customer, I want to see the rider on a map, so that I can be ready at the door.
AC1: Given the order is picked up, when I tap "Track on map", then I see the rider and the arrival estimate.
AC2: Given the order is delivered, when I open the map, then the rider's location is hidden.
Priority: Should – because the status already removes most calls; the map adds privacy work.
Traces to: FR-04, BR-01
US-05: As a shop owner, I want to mark a missing item, so that the customer can choose a replacement.
AC1: Given an item is not on my shelf, when I mark it missing, then the customer gets a notification.
AC2: Given the customer does not answer in 10 minutes, when time is up, then the item is removed.
Priority: Could – because wrong items matter, but tracking comes first.
Traces to: FR-07
EPIC 2: AI support chat
US-06: As a customer, I want to ask the chat where my order is in Arabic or English, so that I get an answer without waiting.
AC1: Given my order is on the way, when I ask "وصل فين الأوردر؟", then the chat replies in Arabic with the real status.
AC2 (fallback): Given the chat cannot find my order, when it replies, then it says so honestly and offers a human agent.
Priority: Must – because it carries OBJ-2.
Traces to: FR-05, NFR-02
US-07: As a customer, I want to talk to a person when the chat cannot help, so that my problem gets solved.
AC1: Given I ask for a person, when I send the message, then the chat connects me to an agent.
AC2: Given no agent is online, when I ask, then the chat tells me when the team will reply.
Priority: Must – because a wrong AI answer is a big risk.
Traces to: FR-06, BR-02
US-08: As a support agent, I want to see the full chat history, so that I don't ask the customer again.
AC1: Given a chat is handed to me, when I open it, then I see all messages and the order.
AC2: Given the order system is down, when I open the chat, then I see a warning.
Priority: Must – because the handover is useless without it.
Traces to: FR-06
RELEASE 1 CUT
In release 1: US-01, US-02, US-03, US-06, US-07, US-08
Later: US-04, US-05
DEFINITION OF DONE
- All acceptance criteria pass in testing.
- Works in Arabic and English.
- Reviewed by Legal for any personal data.
- Tested on Android and iPhone.
TRACEABILITY
Story | BRD requirement
US-01 | FR-01, NFR-01
US-02 | FR-02
US-03 | FR-03
US-04 | FR-04, BR-01
US-05 | FR-07
US-06 | FR-05, NFR-02
US-07 | FR-06, BR-02
US-08 | FR-066. الـ Wireframe: الشاشات
MOCKUP LINK (optional)
https://dukkango-demo.lovable.app
SCREEN 1 – Order status
Shows: the shop name, a status bar (Placed → Accepted → Packing → On the way → Delivered) and the arrival estimate.
Actions: "Track on map" button, "Help" button that opens the chat.
Empty / error state: offline → last status with "Updated 3 min ago".
Stories covered: US-01, US-03
SCREEN 2 – Rider app: status buttons
Shows: the order number and the customer's area (no phone number).
Actions: big "Picked up" and "Delivered" buttons.
Empty / error state: offline → "Saved, will send when online".
Stories covered: US-02
SCREEN 3 – Support chat
Shows: chat messages in Arabic or English and an order card with the real status.
Actions: text input, "Talk to a person" button.
Empty / error state: order not found → honest message and the "Talk to a person" button.
Stories covered: US-06
SCREEN 4 – Handover to a human
Shows: banner "Connecting you to our team", the expected wait, and the whole chat history.
Actions: "Keep chatting with the assistant".
Empty / error state: no agent online → "Our team replies at 9 AM".
Stories covered: US-07, US-08