SoleFlow

Turn WhatsApp orders into traceable laundry tickets.

SoleFlow is a web dashboard and WhatsApp-first order intake system for a shoe laundry business. It helps owners capture every order from chat, track cleaning status, prevent revenue leakage, and generate daily payment reports without relying on manual re-entry.

Business Goals

  • Reduce unrecorded orders by at least 80% within 3 months by forcing all new requests through a structured WhatsApp intake flow.
  • Cut daily reconciliation time from 30–45 minutes to under 10 minutes within 6 weeks.
  • Increase captured order-to-cash conversion to 95%+ for orders that enter through WhatsApp within 90 days.
  • Improve on-time status updates to 98% of active orders receiving a current status in less than 5 seconds.
  • Create a repeatable management report that is used by the owner at least 5 days per week within the first month.

User Goals

  • Customers can place an order using a clear, guided WhatsApp format without calling or waiting for staff.
  • Customers can check order progress themselves using a phone number or order code.
  • Staff can open the customer chat directly from the dashboard to send quick updates without saving the contact manually.
  • Owners can see all orders, statuses, and payment states in one place.
  • Owners can generate a same-day report of unpaid and paid orders without manual spreadsheet cleanup.

Non-Goals

  • Replacing Olsera POS as the primary cashier system in phase 1.
  • Handling route optimization, driver dispatch, or delivery fleet management.
  • Building a full ERP or accounting system with tax filing and bookkeeping.
  • Supporting multiple business branches with complex inventory separation in the first release.

Rina, 34, Owner - Rina owns a shoe laundry shop and wants full visibility into every order that enters from WhatsApp. She is worried about staff receiving items without recording them and wants a simple system that shows daily revenue and unpaid orders.

Rina, 34, Owner

  • As an owner, I want every WhatsApp order to become a unique ticket, so that no order can be hidden or edited quietly.
  • As an owner, I want a daily report of paid and unpaid orders, so that I can reconcile cash quickly.
  • As an owner, I want to see order status trends, so that I can spot delays before customers complain.

Deni, 27, Counter Staff - Deni handles incoming customer messages and physical drop-offs. He needs a fast way to confirm order details and update statuses without switching between many apps.

Deni, 27, Counter Staff

  • As a staff member, I want to open a customer chat from the dashboard, so that I can reply faster without manually saving numbers.
  • As a staff member, I want to update a ticket status in one tap, so that the dashboard stays accurate.
  • As a staff member, I want invalid or incomplete order data to be flagged, so that I can ask for corrections immediately.

Budi, 41, Customer - Budi sends orders through WhatsApp and wants a simple experience. He needs pricing, format guidance, and a way to check whether his shoes are being cleaned or ready for pickup.

Budi, 41, Customer

  • As a customer, I want to see the service menu and prices in WhatsApp, so that I know what to order.
  • As a customer, I want a guided order format, so that I can submit my request correctly the first time.
  • As a customer, I want to track my order status via chat, so that I do not need to call the store repeatedly.

WhatsApp Order Intake Bot · High priority

  • Provide a WhatsApp-first entry point that explains services, prices, and the required order format, then captures structured order data automatically.
  • Show a menu with service list, prices, estimated turnaround time, and order instructions.
  • Accept structured order submissions and parse customer name, phone, service type, item count, pickup/drop-off method, and notes.
  • Reject or flag incomplete submissions and ask for the missing fields before creating a final ticket.
  • Assign each accepted order a unique order ID and timestamp.
  • Store the original inbound message for audit purposes.

Order Ticket and Database Management · High priority

  • Convert every valid order into an immutable operational ticket with searchable records for the owner and staff.
  • Create a ticket record immediately after order validation.
  • Allow limited edits only on operational fields such as status, notes, and payment state, with edit history retained.
  • Provide filtering by date, status, payment status, and customer name.
  • Support search by phone number, order ID, or WhatsApp thread identifier.
  • Prevent deletion of completed tickets except for admin users with an audit trail.

Status Tracking and Auto-Reply · High priority

  • Let customers ask for their order status in WhatsApp and receive an automated reply based on current database state.
  • Respond to track requests using order ID or phone number lookup.
  • Return concise statuses such as Received, Washing, Drying, Ready for Pickup, and Completed.
  • Handle no-match cases with a polite fallback message and instructions for how to find the order ID.
  • Throttle repeated tracking requests from the same number to prevent spam.
  • Log every tracking query and response.

Dashboard Operations and Click-to-Chat · Medium priority

  • Provide an internal dashboard for staff and owners to manage orders quickly and open WhatsApp chats directly from each ticket.
  • Show a list view of active tickets with status chips and payment indicators.
  • Provide a one-click WhatsApp deep link for each customer using wa.me or the WhatsApp Business API chat URL.
  • Include quick actions to update status and payment state from the list view.
  • Display the latest customer message and last update timestamp on each ticket.
  • Optimize for desktop and tablet use at the counter.

Daily Reporting and Reconciliation · High priority

  • Generate an operational report that summarizes daily volume, payment collection, and outstanding orders for the owner.
  • Produce a daily summary of total orders, completed orders, paid orders, unpaid orders, and revenue collected.
  • Allow export to CSV and PDF.
  • Support filtering by date range and service type.
  • Send an automatic end-of-day report to the owner via email or WhatsApp.
  • Highlight unpaid orders older than a configurable threshold, such as 24 hours.

WhatsApp-First Onboarding

  • Customer opens the WhatsApp number or scans a QR code.
  • Bot greets the customer, shows services, prices, and order rules.
  • Customer chooses place new order or track order within 10 seconds.
  • If placing an order, bot collects structured details in 3 to 5 messages.
  • System confirms the ticket ID and estimated turnaround time.
  • Owner can review the new order instantly in the dashboard within 5 seconds of submission.

1. Browse and Start

  • The customer sees a simple WhatsApp menu with pricing, service options, and the correct order format.
  • Use short menu options with quick reply buttons where available.
  • If the customer types free text, the bot asks guided follow-up questions.
  • If the WhatsApp API is temporarily unavailable, show a fallback message and queue the request.

2. Capture the Order

  • The bot collects the minimum required fields and creates a structured ticket only when validation passes.
  • Required fields: customer name, service type, item quantity, and order method.
  • Validate phone number format and service selection before ticket creation.
  • If a field is missing, keep the conversation state so the customer can resume without restarting.

3. Create and Store Ticket

  • A unique order is created in the database and made visible to staff immediately.
  • Generate an order ID like SM-2026-000123.
  • Store raw inbound message, parsed fields, and a normalized status history.
  • If duplicate submission is detected within a short window, prompt the customer and staff to confirm before creating a second ticket.

4. Track Progress

  • Customers can request status updates at any time and receive an automated answer from live data.
  • Lookup by order ID, phone number, or last active ticket.
  • Return status, last updated time, and pickup instruction if completed.
  • If multiple open orders exist for the same number, ask the customer to choose the correct one.

5. Manage and Report

  • Staff use the dashboard to update work progress, payment state, and daily summaries.
  • Support status transitions only in valid order, such as Received to Washing to Drying to Ready to Pickup.
  • Show unpaid flags prominently and allow payment state updates with one click.
  • Generate end-of-day report without requiring manual spreadsheet formatting.

Advanced Features and Edge Handling

  • Multi-order support for customers with more than one active ticket.
  • Broadcast-style status updates for specific groups of orders such as ready for pickup.
  • Suspicious activity detection for repeated edits or manual overrides by staff.
  • Configurable service catalog with prices, turnaround times, and promo tags.
  • Fallback manual entry mode for staff when the bot cannot parse a message.
  • Search and merge duplicate customer profiles based on phone number.

Interface Principles

  • Use a clean, high-contrast dashboard with large status chips and minimal clutter for counter use.
  • Make the mobile WhatsApp entry flow readable in one glance with short messages and quick replies.
  • Provide accessible color contrast for unpaid, overdue, in-progress, and completed states.
  • Keep critical actions like status update and chat launch above the fold on every ticket page.
  • Design for fast load times on average Indonesian mobile networks and lower-end office laptops.

Rina used to rely on WhatsApp chats and a separate cashier system, which meant some shoe cleaning jobs were handled by staff but never properly recorded. When customers asked for updates, her team had to search through chat history and manual notes, and daily reports were often incomplete.

After switching to SoleFlow, every WhatsApp order became a ticket with a unique ID the moment it was submitted. Staff could update statuses in one tap, customers could track progress themselves, and Rina could see unpaid orders and daily totals in a single dashboard.

Within a few weeks, she had fewer missing orders, faster customer responses, and a clearer view of revenue. The business became easier to control without adding more admin work at the counter.

User-Centric Metrics

  • At least 90% of customer orders are captured through the structured WhatsApp flow.
  • At least 95% of tracking requests receive an automated status response within 5 seconds.
  • Reduce customer follow-up calls about order status by 40% within 60 days.
  • Reduce manual order entry mistakes to below 2% of tickets.
  • Staff can update an order status in under 15 seconds on average.

Business Metrics

  • Reduce revenue leakage from unrecorded orders by at least 80% within 3 months.
  • Increase daily reconciliation completion rate to 100% on operating days.
  • Achieve 30% adoption of the dashboard by staff within the first month and 80% by month three.
  • Improve owner retention with weekly active use of the report dashboard on at least 5 days per week.
  • Enable at least 50% of repeat customers to use self-service tracking without staff intervention.

Technical Metrics

  • Achieve 99.5% monthly uptime for the dashboard and message processing services.
  • Keep dashboard page load time under 2 seconds for the main order list.
  • Keep WhatsApp webhook processing latency under 3 seconds for 95% of messages.
  • Maintain zero critical security incidents related to exposed customer data.

Tracking Plan

  • Track whatsapp_inbound_received for every inbound message.
  • Track order_parsed_success and order_parsed_failed with parse error reasons.
  • Track ticket_created with source, service type, and customer identifier.
  • Track track_status_requested and track_status_response_sent.
  • Track dashboard_status_updated and payment_status_updated.
  • Track daily_report_generated and daily_report_exported.
  • Track click_to_chat_opened from the dashboard.

Technical Needs

  • Frontend built with Next.js and TypeScript for fast dashboard rendering and maintainable UI components.
  • Backend API with Node.js and Express or Next.js API routes for ticket creation, status lookup, and reporting.
  • PostgreSQL as the primary relational database for orders, customers, messages, statuses, and audit logs.
  • Redis for webhook deduplication, short-lived conversation state, and rate limiting.
  • Background job processing using BullMQ or a similar queue for reports, notifications, and retry handling.
  • File export service for CSV and PDF report generation.
  • Role-based access control with owner and staff roles plus audit logging for admin actions.

Integration Points

  • WhatsApp Business Platform via Meta Cloud API or a provider such as Twilio WhatsApp.
  • Olsera POS export or manual reconciliation import if direct API access is unavailable.
  • Email delivery through SendGrid or Resend for daily report summaries.
  • Object storage such as AWS S3 or Cloudflare R2 for downloadable reports and attachments.
  • Google Sheets optional sync for the owner if they still want spreadsheet visibility during transition.

Data Storage & Privacy

  • Store only the minimum customer data needed: name, phone number, order details, payment state, and message history.
  • Encrypt sensitive data at rest and enforce HTTPS in transit.
  • Keep audit logs for changes to tickets, statuses, and payment fields for fraud detection.
  • Support deletion or anonymization requests for customer data if required by local privacy law or policy.
  • Restrict dashboard access with strong authentication and session timeouts, and avoid exposing personal data in public links.

Scalability & Performance

  • Design the message intake pipeline to handle spikes at store opening and closing time without dropping orders.
  • Use pagination and indexed search on phone number, order ID, and date for fast dashboard queries.
  • Cache common catalog and status responses to reduce database load.
  • Batch non-urgent operations such as daily reports and exports through background workers.

Potential Challenges

  • WhatsApp API delivery delays or outages could interrupt order intake; mitigate with queued retries and a manual fallback intake form.
  • Staff may bypass the system by taking orders informally; mitigate with QR entry points, training, and owner reports that highlight unrecorded manual activity.
  • Customers may send unstructured messages that are hard to parse; mitigate with guided quick replies and fallback clarification questions.
  • Duplicate tickets may be created when customers resend messages; mitigate with deduplication using phone number, time window, and message fingerprinting.
  • Integration with Olsera may be limited; mitigate with CSV import/export and a reconciliation workflow until direct integration is confirmed.

Team & resourcing - Small team - 2 engineers, 1 designer, part-time PM, with one QA reviewer during launch week.

Phase 1: MVP Order Intake · Weeks 1-3

  • WhatsApp bot flow for pricelist, instructions, new order capture, and track order lookup.
  • Basic order database with unique ticket IDs and status fields.
  • Simple admin dashboard showing today’s tickets and manual status updates.
  • Click-to-chat link from each ticket.

Phase 2: Reporting and Controls · Weeks 4-5

  • Daily report generation with paid and unpaid summaries.
  • Audit log for status and payment edits.
  • Search, filter, and pagination in the dashboard.
  • Email or WhatsApp delivery of end-of-day report.

Phase 3: Reliability and Automation · Weeks 6-7

  • Webhook deduplication and retry queue.
  • Automated status reply improvements and duplicate order detection.
  • Role-based access control for owner and staff.
  • CSV export and optional Google Sheets sync.

Phase 4: Hardening and Launch · Weeks 8-9

  • Production monitoring, alerting, and uptime checks.
  • Mobile responsiveness and performance optimization.
  • User acceptance testing with real store transactions.
  • Launch checklist, staff training guide, and rollback plan.

Paste this into Cursor, Bolt, Lovable, or v0 to start building.

Build a WhatsApp-first web dashboard for a shoe laundry business called SoleFlow.

Product summary:
Customers place orders via WhatsApp using a guided menu for services, pricing, and required order format. Every valid order becomes an immutable ticket in the dashboard. Customers can also track order status via WhatsApp. Staff and owners use the web app to view tickets, update statuses, manage payment state, open WhatsApp chats with customers via click-to-chat links, and generate daily reports showing paid and unpaid orders.

Core features:
1. WhatsApp intake bot flow with quick replies or guided message steps
2. Structured order capture and validation
3. Ticket list dashboard with search, filter, pagination, status chips, payment indicators
4. Ticket detail page with timeline, notes, status updates, payment updates, and click-to-chat button
5. Customer order tracking via WhatsApp by order ID or phone number
6. Daily report generation with CSV/PDF export and email delivery
7. Audit log of changes for fraud prevention

Primary screens:
1. Login screen with owner and staff roles
2. Dashboard home showing today’s orders, unpaid count, completed count, and revenue summary
3. Orders list with filters by date, status, payment state, and customer
4. Order detail page with raw WhatsApp message, parsed fields, status history, and actions
5. Reports page for daily summaries and exports
6. Settings page for service catalog, prices, turnaround times, and WhatsApp integration config

Data model:
User(id, name, role, email, passwordHash, lastLoginAt)
Customer(id, name, phone, createdAt)
Order(id, orderCode, customerId, source, serviceType, itemCount, notes, status, paymentStatus, estimatedReadyAt, createdAt, updatedAt)
OrderMessage(id, orderId, direction, rawText, parsedJson, sentAt)
OrderStatusHistory(id, orderId, fromStatus, toStatus, changedByUserId, changedAt)
AuditLog(id, actorUserId, entityType, entityId, action, metadataJson, createdAt)
ServiceCatalog(id, name, price, turnaroundHours, active)
DailyReport(id, reportDate, totalOrders, paidOrders, unpaidOrders, totalRevenue, fileUrl, createdAt)

Tech stack:
Use Next.js 14 with TypeScript, Tailwind CSS, shadcn/ui, PostgreSQL, Prisma, Redis, BullMQ, and NextAuth or Clerk for authentication. Use a Node.js webhook endpoint for WhatsApp events and background jobs for report generation. Use an object storage service like AWS S3 or Cloudflare R2 for exported files.

Implementation details:
- Make the app responsive for desktop and tablet counter use.
- Add role-based access control for owner and staff.
- Implement a webhook processor that deduplicates repeated WhatsApp messages.
- Support WhatsApp Business Platform via Meta Cloud API, with a placeholder adapter so Twilio can be added later.
- Include seed data for a sample shoe laundry workflow with statuses: Received, Washing, Drying, Ready for Pickup, Completed.
- Build clean, accessible UI with clear status colors and fast table interactions.
- Include mock data and sensible empty states.
- Use server actions or API routes for create/update actions.
- Add audit logging for every status or payment change.

Please scaffold the full app structure, components, database schema, API routes, webhook handlers, and dashboard UI with realistic sample data and comments where external API credentials are required.

Business Idea

saya mau bikin web dashboard untuk usaha laundry cuci sepatu saya RINGKASAN KEBUTUHAN SISTEM SOLEMATE 1. Latar Belakang & Akar Permasalahan (Bahan untuk Bab I.1 & I.2) ● Permasalahan Utama (Pain Point): Terdapat risiko tinggi terjadinya revenue leakage (kebocoran pendapatan) atau kecurangan operasional (fraud). Pemilik bisnis khawatir ada transaksi pencucian (sepatu/tas) yang dikerjakan oleh teknisi/staf, namun pembayarannya tidak masuk ke kasir karena tidak tercatat di dalam sistem resmi. ● Akar Masalah: Pintu masuk pemesanan pelanggan (biasanya via WhatsApp) belum terintegrasi dengan sistem pencatatan (database). Akibatnya, ada celah bagi staf untuk menerima barang tanpa menginputnya ke sistem. 2. Kondisi Sistem Saat Ini (As-Is Process) ● Saat ini Solemate sudah menggunakan sistem kasir Olsera POS. ● Namun, Olsera POS tampaknya hanya digunakan di hilir (saat pembayaran kasir), belum terintegrasi dengan proses di hulu (saat pelanggan pertama kali memesan via WhatsApp). 3. Kebutuhan Solusi dari Sisi Owner (Bahan untuk Bab I.4 Usulan Solusi) Pemilik menginginkan sistem di mana setiap chat pemesanan otomatis menjadi "tiket pesanan" yang tidak bisa diotak-atik staf. Fungsionalitas yang diharapkan: 1. Bot WhatsApp Interaktif (Pintu Masuk Utama): ○ Menampilkan menu informasi layanan & harga (pricelist). ○ Memberikan instruksi format pemesanan yang baku. ○ Menyediakan menu Track Progress agar pelanggan bisa mengecek status sepatunya secara mandiri. 2. Pencatatan Otomatis (Auto-Data Entry) ○ Ketika pelanggan mengirim chat sesuai format, data tersebut otomatis masuk ke dalam database (bayangan owner: masuk ke Spreadsheet). 3. Otomatisasi Status (Auto-Reply Tracking): ○ Saat pelanggan ingin melacak pesanan, sistem dapat secara otomatis menarik data dari database dan mengirimkan pesan balasan berisi status pengerjaan (misal: Sedang Dicuci atau Siap Diambil). 4. Akses Komunikasi Cepat (Click-to-Chat): ○ Di dalam database/dashboard, terdapat fitur atau link yang jika diklik oleh admin, akan langsung membuka ruang obrolan (room chat WhatsApp) dengan pelanggan tersebut tanpa harus menyimpan nomor secara manual. 5. Pelaporan Harian (Daily Report): ○ Sistem mampu men-generate laporan otomatis berisi total transaksi/layanan yang masuk pada hari itu, beserta status pembayarannya (sudah lunas vs. belum bayar).

Make My PRD

Design by The Resonance | Powered by GPC – The AI Transformation Company