Product Requirements Document

StockSync

Intelligent inventory management for automotive spare parts — powered by AI-driven product recognition, real-time stock tracking, and automated bill matching.

Prepared For
Aman Motors, Raipur
Prepared By
Ekam Apps
Version
1.0
Date
03 March 2026
Status
Draft
Contents
  1. 01 Overview
  2. 02 Problem Statement
  3. 03 Users & Access Levels
  4. 04 Platforms & Tech Stack
  5. 05 Product Recognition
  6. 06 Purchase & Inward
  7. 07 Sale & Outward
  8. 08 Inventory Management
  9. 09 Reconciliation & Oversight
  10. 10 Admin Dashboard
  11. 11 Alerts & Notifications
  12. 12 Data Model
  13. 13 Core Workflows
  14. 14 Delivery Phases
01

Overview

StockSync is an inventory management system purpose-built for automotive spare parts dealers. It uses AI-powered image recognition to read product labels, barcodes, and QR codes — converting physical stock into digital inventory entries with minimal manual effort.

Scan to Stock

Photograph or scan any product label. AI extracts brand, product name, part number, MRP, and barcode data automatically.

Bill-First Workflow

Upload purchase invoices first. AI parses line items, then scan each product against the bill — every inventory movement linked to a financial document from the start.

WhatsApp Input

Warehouse staff can send product photos via WhatsApp. Images are processed and added to the inward queue.

Real-time Dashboard

Track purchased, sold, and balance inventory across vendors, brands, products, and time periods at a glance.

02

Problem Statement

Automotive parts dealers manage hundreds of SKUs from dozens of brands. Stock movements are tracked through bills and challans in Tally, but the physical inventory on the warehouse shelf is never independently verified against these records. Reconciliation is manual, infrequent, and error-prone — discrepancies between what the books say and what is actually in stock accumulate silently.

Current Pain Points
Challenges this system addresses
  • Physical stock on shelf is never verified against Tally records
  • Manual counting for reconciliation is slow, error-prone, and infrequent
  • Product identification at receipt is tedious — label formats vary across brands
  • Price changes between invoices go unnoticed
  • Matching received goods against invoice line items is entirely manual
  • Book stock vs actual stock discrepancies accumulate silently over time
03

Users & Access Levels

Role-based access control ensures each user sees only what they need. Permissions cascade from Admin down.

Admin

Business owner / manager

  • Full system access
  • Manage users and roles
  • View all reports and analytics
  • Approve price changes
  • Configure alerts and thresholds
  • Manage vendors and clients

Inventory Manager

Handles purchase and sale operations

  • Scan and add products
  • Upload invoices
  • Match bills with stock
  • Record sales and outward
  • View inventory reports
  • Cannot manage users

Warehouse Staff

On-floor scanning and verification

  • Scan products (camera/barcode)
  • Send images via WhatsApp
  • View assigned tasks
  • View product catalog
  • Cannot edit inventory
  • Cannot view financials
04

Platforms & Tech Stack

Three access surfaces — a mobile app for the warehouse floor, a web dashboard for the office, and WhatsApp for quick image capture.

Flutter Mobile App

iOS and Android. Camera scanning, barcode reader, product lookup, and inventory operations. Works offline with sync.

Web Application

Admin dashboard, detailed reports, invoice upload, bill matching, user management, and full inventory view.

WhatsApp Integration

Warehouse staff can send product photos to the business's WhatsApp Business API number. Images are queued, processed by AI, and staged for review.

Backend — Supabase

PostgreSQL database, authentication, file storage, real-time subscriptions, and edge functions for AI processing.

AI Engine: Claude Vision API processes product label images, extracts structured data (brand, product name, part number, MRP, barcode), and parses PDF invoices. Estimated cost per image: INR 1-2.

05

Product Recognition

The core intelligence of StockSync. Products are identified through multiple input methods, with a fallback flow for cases where AI recognition is uncertain.

Input Methods

  • Camera Scan — Point the mobile app camera at any product label. AI reads the text and extracts structured fields.
  • Barcode / QR Scan — Dedicated barcode scanner mode. Reads standard barcodes (EAN, UPC, Code128) and QR codes to look up products instantly.
  • WhatsApp Photo — Send product image to the business's WhatsApp Business API number. Image is queued for AI processing and staged for review.
  • Manual Upload — Upload image from gallery on the mobile app or web interface.

AI Extraction

For each product image, the AI extracts the following fields:

Field Example Required
BrandAutoform, Uno Minda, GFI, TiebondYes
Product NameMax Arrow Seat Cover, Alloy Wheel with Hub CapYes
Part NumberGLLM-074, W1D205-000M00If available
Barcode / UID1108049828, 25102502385057If available
MRP4200, 7654, 10999If available
Vehicle CompatibilityExter 2023, Tata Safari 2021-2025, H-CrossIf available
Colour / VariantBlack, Silver/Black, Red/BlackIf available
HSN Code87089900If available
Manufacturing Date09/12/2025, 31-10-2025If available

Fallback: Manual Product Selection

When the AI cannot confidently identify a product — due to poor image quality, damage, or non-standard labels — the system provides a structured fallback:

Manual Selection Flow
Triggered when AI confidence is below threshold
  • User is shown a notification: "Could not identify product. Please select manually."
  • Searchable product catalog opens with filters — by brand, category, vehicle model
  • User can search by partial name, part number, or barcode
  • If product is not in catalog, user can create a new product entry with the captured image attached
  • The failed image is stored for future AI training and pattern improvement

Confidence Score: Every AI extraction includes a confidence score (0-100%). Extractions above 85% are auto-accepted. Between 60-85%, the user is shown the result for confirmation. Below 60%, manual selection is triggered.

Deduplication

Products can enter through multiple channels simultaneously. The system prevents double-counting through layered checks before anything is committed to inventory.

Deduplication Layers
Applied in sequence before committing to inventory
  • Image Fingerprinting — Perceptual hash on each image. Same or near-identical image from any channel is flagged and linked to the original entry.
  • Barcode / Part Number Match — Duplicate barcode or part number within the same session prompts: "Already scanned. Add to quantity instead?"
  • Cross-channel Merge — Same product from camera scan and WhatsApp is auto-detected and merged into one entry with user confirmation.
  • Staging Queue — Nothing commits directly. All entries land in a review queue where duplicates are grouped. Inventory is updated only after confirmation.
  • WhatsApp Flood Protection — Identical images sent within a 10-minute window are ignored with an auto-reply: "Already received."
06

Purchase & Inward

The purchase flow uses a bill-first approach: every inward inventory movement is tied to a financial document from the start. A secondary "Quick Inward" mode handles the edge case where goods arrive before the bill.

Mode A — Bill-First (Primary Flow)

The standard workflow. The purchase invoice drives the receipt process.

Upload Bill
AI Parses Items
Scan Against Bill
Confirm Qty
Stock Added (Linked)
Bill-First Receipt Flow
Invoice drives the receipt — every item is linked from the start
  • Upload purchase invoice PDF (or select an existing unparsed invoice)
  • AI parses the bill — expected line items displayed with quantities
  • User processes each line item: scan product to verify, confirm received quantity
  • If received qty < billed qty — item marked "Partial", remaining tracked as "Pending Delivery"
  • Each scanned product immediately linked to the invoice line item
  • Price change detection happens during parsing (compared against last purchase price)
  • Receipt summary: Fully Received / Partially Received / items still pending

Mode B — Quick Inward (Goods Before Bill)

For the edge case where goods arrive before the invoice is available.

Goods-First Receipt Flow
Receive first, link to bill later
  • User opens "Quick Inward" and selects the vendor
  • Scans arriving products one by one (same scan flow as Mode A)
  • Inventory updated, but entries tagged as "Pending Bill"
  • When bill arrives later, user uploads it and links to the pending receipt
  • System auto-matches pending items against bill line items
  • Discrepancies flagged: extra items received, missing from bill, qty mismatch

Partial Delivery Handling

  • Bill shows 10 items, only 6 arrive — user receives 6, marks remaining 4 as "Pending Delivery"
  • Invoice status = "Partially Received"
  • When remaining goods arrive, user re-opens the same invoice and receives outstanding items
  • Once all items received — status = "Fully Received"
Bill-First Receipt — Wireframe
+---------------------------------------------------------------+ | INWARD — Invoice #6875 (Janak Motors) | | Date: 24 Jan 2026 | Items: 5 | Status: In Progress | +---------------------------------------------------------------+ | | | INVOICE LINE ITEM EXPECTED | RECEIVED STATUS | | ───────────────────────────────────────────────────────── | | AF Mat Max Arrow | | | Black / Silver Sierra 5STR 1 | 1 Done | | | | | AF Max Arrow | | | Black / Black Sierra 5STR 9 | 9 Done | | | | | AF Mat Max Arrow | | | Black / Black Seltos 26 5 | 3 Partial | | | [2 Pending Delivery]| | | | | AF Mat Max Arrow | | | Black / Silver Seltos 26 3 | -- Pending | | | | | AF Mat Max Arrow C.Grey | | | Silver Seltos 26 5STR 2 | -- Pending | | | | ───────────────────────────────────────────────────────── | | Summary: 2 Done | 1 Partial | 2 Pending | | GRN Status: Partially Received | | | | [ Scan Next Item ] [ Complete Receipt ] | +---------------------------------------------------------------+

Price Tracking

The system automatically compares the current invoice price against the last purchase price for each product during bill parsing.

Price Change Detection
Flagged automatically during invoice parsing
  • Each line item is compared against the last purchase price from the same vendor
  • If the price differs, the item is flagged with the old price, new price, and percentage change
  • Admin receives a notification for approval before the new price is recorded
  • Full price history is maintained for each product-vendor combination
Price Change Alert — Wireframe
+---------------------------------------------------------------+ | PRICE CHANGE DETECTED | +---------------------------------------------------------------+ | | | Invoice: #6875 | Vendor: Janak Motors | 24 Jan 2026 | | | | +-----------------------------------------------------------+| | | Product | Last Price | New Price | Change || | +-----------------------------------------------------------+| | | AF Mat Max Arrow | 3,500.00 | 3,708.00 | +5.9% || | | Black / Silver | | | [!] || | +-----------------------------------------------------------+| | | | [ ] Accept new price for future orders | | | | [ Dismiss ] [ Approve ] | +---------------------------------------------------------------+
07

Sale & Outward

The outward flow mirrors the bill-first approach: every dispatch is tied to a sale bill or challan. A "Quick Sale" mode handles walk-in or counter sales.

Mode A — Bill-First (Primary Flow)

The standard workflow. A sale bill drives the dispatch process.

Create Sale Bill
Add Line Items
Scan for Dispatch
Stock Deducted
Dispatch (Linked)
Bill-First Dispatch Flow
Sale bill drives the dispatch — every item linked from the start
  • Create sale bill / challan — select client, add line items from catalog
  • For each item: scan to confirm dispatch, verify product, confirm quantity
  • Stock deducted and immediately linked to the sale bill line item
  • If not all items available — mark as "Pending Dispatch"
  • Dispatch summary: Fully Dispatched / Partially Dispatched

Mode B — Quick Sale (Walk-in / Counter Sales)

For walk-in customers or counter sales where no formal bill exists upfront.

Quick Sale Flow
Sell first, attach bill later
  • User opens "Quick Sale" — optionally selects or creates client
  • Scans products, confirms quantity and sale price
  • Stock deducted, sale entry tagged as "Bill Pending"
  • System auto-generates a sale receipt — formal bill can be attached later

Partial Dispatch Handling

  • Sale bill has 5 items, only 3 in stock — dispatch 3, remaining 2 = "Pending Dispatch"
  • When restocked, user re-opens the sale bill and dispatches remaining items
  • Once fully dispatched — status = "Fully Dispatched"
08

Inventory Management

A unified view of all stock across every dimension — what came in, what went out, and what remains.

IN
Purchase Inventory
OUT
Sold Inventory
BAL
Balance Inventory
LOW
Low Stock Alerts

Filters & Dimensions

All inventory views support the following filter combinations:

Filter Description Applies To
By Vendor / SupplierFilter stock purchased from a specific vendor (e.g. Janak Motors)Purchase, Balance
By Client / BuyerFilter stock sold to a specific clientSales
By BrandFilter by manufacturer brand (e.g. Autoform, Uno Minda, GFI)All views
By Product / CategoryFilter by product type (Seat Covers, Alloy Wheels, Mats, etc.)All views
By Vehicle ModelFilter by compatible vehicle (Exter, Safari, H-Cross, etc.)All views
By Date RangeFilter by purchase date, sale date, or invoice dateAll views
By Part NumberSearch by exact part number or barcodeAll views
By InvoiceView all items from a specific invoicePurchase, Sales

Inventory Views

Product Detail View
Complete lifecycle of any product in stock
  • Product info: brand, name, part number, MRP, image, vehicle compatibility
  • Current stock quantity and storage location
  • Purchase history: all inward entries with dates, vendors, and prices
  • Price trend: historical prices across invoices from all vendors
  • Sales history: all outward entries with dates, clients, and sale prices
  • Scanned images: all label photos captured during inward/outward

Low Stock Monitoring

Products approaching out-of-stock are surfaced proactively:

  • Configurable minimum stock threshold per product (default: 2 units)
  • Dashboard widget shows all products below threshold, sorted by urgency
  • Demand-based prediction: flag items selling faster than usual
  • Push notification to Admin and Inventory Manager when threshold is breached
  • Reorder suggestion with vendor and last purchase price pre-filled
09

Reconciliation & Oversight

Since the bill-first workflow handles matching at receipt and dispatch time, this section serves as the oversight dashboard — a single view of all invoice statuses, unlinked items, and discrepancies that need attention.

Overview Dashboard

  • All invoices listed with their fulfillment status: Fully Matched, Partially Received/Dispatched, Pending Bill, Not Started
  • Unlinked items view: items received via Quick Inward that don't yet have a bill
  • Overdue alerts: pending receipts older than configurable days without a linked bill
  • Discrepancy resolution: for cases where Quick Inward items don't match the bill when it arrives
  • Audit trail: who received/dispatched what, when, against which bill

Purchase Matching

  • Auto-matched (Bill-First): items received via the bill-first flow are already linked — shown as confirmed matches
  • Needs Manual Matching (Goods-First): items from Quick Inward that require linking when the bill arrives
  • System auto-matches by product name, part number, barcode, and quantity
  • Unresolved items flagged for manual review: extra items, missing from bill, qty mismatch

Sale Matching

  • Auto-matched (Bill-First): dispatches against sale bills are already linked — confirmed matches
  • Needs Manual Matching (Quick Sale): walk-in sales tagged "Bill Pending" that need a formal bill attached
Reconciliation Dashboard — Wireframe
+---------------------------------------------------------------+ | RECONCILIATION & OVERSIGHT | +---------------------------------------------------------------+ | | | PURCHASE INVOICES | | +-----------------------------------------------------------+| | | Status | Count | Action || | +-----------------------------------------------------------+| | | Fully Received | 12 | || | | Partially Recv. | 3 | [View Pending Items] || | | Pending Bill | 2 | [Link Bill] || | | Not Started | 1 | [Start Receipt] || | +-----------------------------------------------------------+| | | | SALE INVOICES | | +-----------------------------------------------------------+| | | Status | Count | Action || | +-----------------------------------------------------------+| | | Fully Dispatched | 8 | || | | Partially Disp. | 2 | [View Pending Items] || | | Bill Pending | 4 | [Attach Bill] || | +-----------------------------------------------------------+| | | | ALERTS | | +-----------------------------------------------------------+| | | [!] 2 Quick Inward receipts unlinked for >3 days || | | [!] 1 invoice partially received for >7 days || | | [!] 3 Quick Sales without formal bill for >5 days || | +-----------------------------------------------------------+| | | | [ Export Report ] [ View Audit Trail ] | +---------------------------------------------------------------+
10

Admin Dashboard

A single screen that gives the business owner complete visibility into operations, stock health, and financial reconciliation.

Dashboard Layout — Wireframe
+---------------------------------------------------------------+ | StockSync [Search] [Alerts] [Profile] | +---------------------------------------------------------------+ | | | | NAV | SUMMARY CARDS | | | +----------+ +----------+ +----------+ +--------+ | | Home | | Purchased| | Sold | | In Stock | | Low | | | Inward | | 1,247 | | 894 | | 353 | | 12 | | | Outward | +----------+ +----------+ +----------+ +--------+ | | Catalog | | | Invoices| RECENT ACTIVITY | | Match | +---------------------------------------------------+ | Reports | | Today | 14 items scanned | 3 invoices uploaded | | Alerts | | Flag | 2 price changes detected | | Users | | Alert | 5 products below reorder level | | Settings| +---------------------------------------------------+ | | | | | TOP BRANDS STOCK BY CATEGORY | | | +------------------+ +--------------------+ | | | | Autoform 45% | | Seat Covers 128 | | | | | Uno Minda 22% | | Alloy Wheels 45 | | | | | GFI 15% | | Mats 89 | | | | | Others 18% | | Accessories 91 | | | | +------------------+ +--------------------+ | | | | | | INVOICE STATUS | | | +---------------------------------------------------+ | | | Fully Received: 12 | Fully Dispatched: 8 | | | | Partially Received: 3 | Pending Dispatch: 2 | | | | Pending Bill: 2 | Bill Pending: 4 | | | +---------------------------------------------------+ +---------------------------------------------------------------+

Dashboard Widgets

Stock Summary

Total purchased, sold, and balance inventory. Filterable by date range, brand, vendor.

Low Stock Alerts

Products below reorder threshold. Sorted by urgency with reorder suggestions.

Price Change Log

Recent price changes detected across invoices. Pending approvals highlighted.

Invoice Status

All invoices by fulfillment status: fully received, partial, pending bill, pending dispatch.

Recent Activity

Timeline of scans, uploads, and system events across all users.

Brand & Category Mix

Distribution of inventory by brand and product category.

Reports & Exports

  • Inventory Report — Current stock with purchase price, MRP, vendor, and age
  • Purchase Report — All purchases by date range, vendor, or brand
  • Sales Report — All sales by date range, client, or product
  • Matching Report — Invoice reconciliation status across all invoices
  • Price History Report — Price trends for any product across vendors and time
  • All reports exportable as PDF and CSV
11

Alerts & Notifications

Proactive alerts ensure nothing slips through. Delivered via in-app notifications and push notifications on mobile.

Alert Trigger Recipients Channel
Low Stock Product quantity falls below threshold Admin, Inventory Manager Push, In-app
Price Change Invoice price differs from last purchase Admin Push, In-app
Bill Mismatch Scanned stock does not match invoice Admin, Inventory Manager Push, In-app
New Invoice Parsed PDF upload processed successfully Uploader In-app
OCR Failure Product could not be identified by AI Scanner (staff) In-app
WhatsApp Image Queued New image received via WhatsApp Inventory Manager In-app
Dead Stock Product unsold for configurable period (default 90 days) Admin Weekly digest
Unlinked Receipt Goods received via Quick Inward without bill for >3 days Admin, Inventory Manager Push, In-app
Pending Delivery Invoice partially received for >7 days Admin Push, In-app
Pending Dispatch Sale bill partially dispatched for >3 days Admin, Inventory Manager Push, In-app
Bill Pending (Sale) Quick Sale without formal bill for >5 days Admin Push, In-app
12

Data Model

Core entities and their relationships in the Supabase PostgreSQL database.

Entity Relationship — Simplified
vendors ──────┐ │ ├──< invoices ──< invoice_items ──────────────┐ │ │ │ │ │ │ ├── received_qty │ │ │ ├── dispatched_qty │ │ │ └── item_status │ │ │ │ │ └── fulfillment_status │ │ │ products ─────┤ (link) │ │ │ │ ├──< inventory_entries ────────────────────────────────────┘ │ │ │ ├── grn_id (FK → goods_receipt_notes) │ ├── dispatch_note_id (FK → dispatch_notes) │ ├── invoice_item_id (FK → invoice_items) │ └── linkage_status: 'linked' | 'unlinked' │ ├──< price_history │ └── vendor, price, invoice_id, date │ └──< product_images └── original image, AI extraction JSON goods_receipt_notes (GRN) ├── vendor_id, invoice_id (nullable) ├── mode: 'bill_first' | 'goods_first' └── status: 'in_progress' | 'partially_received' | 'fully_received' | 'pending_bill' | 'closed' dispatch_notes ├── client_id, invoice_id (nullable) ├── mode: 'bill_first' | 'quick_sale' └── status: 'in_progress' | 'partially_dispatched' | 'fully_dispatched' | 'bill_pending' | 'closed' clients ──< sale_records ──< sale_items users ── role: 'admin' | 'manager' | 'staff'

Key Tables

Table Purpose Key Fields
productsMaster product catalogbrand, name, part_no, barcode, hsn, category, vehicle_model, mrp, min_stock
vendorsSupplier directoryname, gstin, address, contact, email
clientsCustomer directoryname, gstin, address, contact
invoicesUploaded invoices (purchase & sale)type, vendor/client_id, invoice_no, date, total, pdf_url, status, fulfillment_status
invoice_itemsParsed line items from invoicesinvoice_id, description, hsn, qty, rate, gst, amount, received_qty, dispatched_qty, item_status
goods_receipt_notesGoods Receipt Notes (GRN)vendor_id, invoice_id, mode, status, notes, created_by, created_at
dispatch_notesDispatch trackingclient_id, invoice_id, mode, status, notes, created_by, created_at
inventory_entriesEvery inward/outward eventproduct_id, direction, qty, price, source, image_url, user_id, grn_id, dispatch_note_id, invoice_item_id, linkage_status
price_historyPrice tracking per product-vendorproduct_id, vendor_id, price, invoice_id, date
match_resultsBill matching outcomesinvoice_item_id, inventory_entry_id, status, notes
usersSystem usersname, email, role, phone, active
13

Core Workflows

End-to-end flows for the three primary operations.

Workflow 1 — Purchase Inward (Bill-First)

  • Step 1: Goods arrive. User opens "Inward" and uploads the purchase invoice PDF.
  • Step 2: AI parses invoice. Line items displayed with expected quantities.
  • Step 3: User selects a line item and scans the corresponding product.
  • Step 4: AI identifies the product. User confirms match and received quantity.
  • Step 5: If received qty < billed qty, item marked as "Partial — Pending Delivery."
  • Step 6: Repeat for each line item. Skip items not yet delivered.
  • Step 7: Inventory updated for all received items. Each entry linked to invoice line item.
  • Step 8: Price changes flagged vs last invoice. Admin approves or rejects.
  • Step 9: GRN created with status: Fully Received or Partially Received.

Workflow 1B — Purchase Inward (Goods Before Bill)

  • Step 1: Goods arrive without a bill. User opens "Quick Inward" and selects vendor.
  • Step 2: User scans each product. AI identifies and user confirms.
  • Step 3: Inventory updated. Entries tagged as "Pending Bill."
  • Step 4: Dashboard shows alert: "X unlinked receipts awaiting bill."
  • Step 5: When bill arrives, user uploads PDF and links to the pending receipt.
  • Step 6: System auto-matches. Discrepancies flagged for resolution.

Workflow 2 — Sale Outward (Bill-First)

  • Step 1: User creates a sale bill. Selects client and adds line items from catalog.
  • Step 2: For each item, user scans the product to confirm dispatch.
  • Step 3: System verifies product identity and available stock.
  • Step 4: Stock deducted. Outward entry linked to sale bill line item.
  • Step 5: If item is out of stock, marked as "Pending Dispatch."
  • Step 6: Low-stock alert triggered if stock reaches reorder level.
  • Step 7: Dispatch note created: Fully Dispatched or Partially Dispatched.

Workflow 2B — Quick Sale (Walk-in)

  • Step 1: Customer walks in. User opens "Quick Sale."
  • Step 2: Scans product, confirms quantity and price. Stock deducted.
  • Step 3: Sale record created, tagged "Bill Pending."
  • Step 4: Formal bill can be attached later.

Workflow 3 — Inventory Audit

  • Step 1: Admin initiates a stock audit from the dashboard.
  • Step 2: Staff walks through warehouse, scanning every product on shelf.
  • Step 3: System compares physical count (scanned) against digital records.
  • Step 4: Discrepancy report generated: items in system but not found, items found but not in system.
  • Step 5: Admin resolves discrepancies — adjust stock, mark as damaged, or investigate.
14

Delivery Phases

A phased delivery approach to get core value into production quickly, then layer on advanced features.

Phase 1 — Foundation

Supabase setup, authentication, product catalog, basic CRUD. Flutter app with camera scanning and barcode reader. Claude Vision API integration for label OCR. Manual product selection fallback. Basic inventory list view.

Phase 2 — Purchase Flow (Bill-First)

Vendor management. Bill-first purchase inward flow: upload invoice, AI parsing, scan against bill line items, partial delivery tracking. Quick Inward mode for goods-before-bill edge case. GRN creation. Price change detection and alerts. Reconciliation dashboard with invoice status tracking. Web dashboard — inventory views with filters.

Phase 3 — Sale Flow (Bill-First)

Client management. Bill-first sale outward flow: create sale bill, scan for dispatch, partial dispatch tracking. Quick Sale mode for walk-in customers. Dispatch note creation. Low stock alerts and reorder suggestions. Balance inventory views. Sale reconciliation.

Phase 4 — Dashboard & Reports

Admin dashboard with all widgets. Reports engine with PDF/CSV export. Role-based access control. Activity log and audit trail. Push notifications.

Phase 5 — WhatsApp & Advanced

WhatsApp Business API integration for image intake. Stock audit workflow. Dead stock detection. Demand-based reorder predictions. Performance optimization and hardening.