NV Operator
Access Control
| User Email | Role | Added Date | Actions |
|---|
Role Permissions Matrix
Quick reference for what each role can access and do across the system
| Role | Create Route | Edit Route | Bulk Upload | Force Complete | Approve Driver | Archive | Vendor Mgmt | Access Ctrl | Navigation |
|---|---|---|---|---|---|---|---|---|---|
|
Superuser
Full override, user mgmt |
✓ | ✓ All | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | All Views + System Setup |
|
Admin
Full access, no override |
✓ | ✓ All | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | All Views |
|
Ops Admin
Create & archive routes |
✓ | ✓ All | — | — | — | ✓ | — | — | Create · Monitor · BI · Shippers · Tickets |
|
Transport Admin
Legacy role — not assignable via UI |
— | ✓ All | — | — | ✓ | ✓ | ✓ | ✓ | Assign · Monitor · BI · Drivers · Shippers · Tickets · Vendors · Access |
|
Transport Operator
Assign & monitor active routes |
— | ✓ Active | — | — | ✓ | — | — | — | Assign · Monitor · Invoice · BI (view only, no export) · Drivers · Tickets |
|
Salesperson
Books orders, raises the route |
✓ | — | — | — | — | — | — | — | Order Booking (create & edit) · Create Route · BI (view only, no export) · Tickets |
|
Finance
Ticketing only |
— | — | — | — | — | — | — | — | Tickets (create & edit) |
✓ All = can edit active & completed/failed routes · ✓ Active = edit only while route is in-progress (not confirmed/completed/failed)
Email Templates
Configure the invite email templates sent to vendors and shippers. Changes are saved to Firestore and immediately applied to Firebase Auth.
Vendor Invite Email
Sent when inviting a new vendor (transport company) to the Vendor Portal.
Shipper Invite Email
Saved to Firestore and applied to Firebase Auth each time a shipper invite is sent.
Claims Email (Loss & Damage)
Sent to shipper(s) when a damage/loss ticket is resolved. Supports placeholders: {{ticket_id}} {{shipper_name}} {{route_id}} {{date}} {{description}} {{amount}} {{claim_type}}
Order Booking
Record shipper booking orders. Route Creation Status reflects whether a matching route (Reference + Shipper + Route Date) already exists.
Shipper Requests
Self-service route requests awaiting your action
Upload Issues
| Reference No | Shipper | Route Date | Delivery Date | Truck No | Revenue- Service Type | Truck Type | Helpers | Booking Status | Route Code | Remark | Route Creation | Actions |
|---|
Create Route
Deploy New Route
Configure shipper, driver, multiple waypoints with GPS coordinates, contact details and SLA times — all in one form before saving.
Duplicate copies an existing route's shipper, drops and settings onto a new Route ID and a Route Date you choose.
CSV Template Format
One row per drop. Rows sharing the same Route_ID are grouped into a single route. Drop order follows Drop_Sequence, or file row order when it is blank.
Columns:
Route_ID, Shipper_Global_ID, Route_Date, Revenue_Route_Type, Cost_Route_Type, Revenue_Service_Type, Cost_Service_Type, VAS_Cost_Actual_Helper, VAS_Revenue_Actual_Helper, Driver_ID, Vehicle_Type, Route_Code, Reference, Drop_ID, Drop_Sequence, Drop_Type, Drop_Address, Drop_LatLng, Drop_ContactName, Drop_ContactNumber, Drop_StartTime, Drop_EndTime, Drop_PlannedDeliveryDate, Drop_BranchCode, Drop_Instructions
• Route_ID: leave blank to auto-generate a running number (each blank row = a separate new single-drop route). For multi-drop new routes, use a consistent placeholder (e.g. "NEW-001") across all that route's rows — the placeholder is discarded and replaced with a generated ID once the route is created. For an existing route, enter its real ID to update it.
• Reference must be unique per Route Date + Shipper_Global_ID. A row is rejected if the same Reference is repeated in the file, or already exists on another route for that date & shipper. Leave blank to skip the check.
• Reference = a booking's Reference No binds new routes to that booking's reserved route ids: leave Route_ID blank and give each truck's rows the booking Reference — they take the booking's reserved ids in file order (one route per reserved truck). More route groups than the booking reserved is rejected. The per-date/shipper uniqueness rule above is waived for these booking-bound routes.
• Route-level fields (first row of each group is used; a differing later-row value is flagged): Shipper_Global_ID, Route_Date, Revenue_Route_Type, Cost_Route_Type, Revenue_Service_Type, Cost_Service_Type, VAS_Cost_Actual_Helper, VAS_Revenue_Actual_Helper, Driver_ID, Vehicle_Type, Route_Code, Reference.
• VAS_Revenue_Actual_Helper: helpers billed to the shipper (head count). Blank is not zero — a blank leaves the route's existing value alone and lets billing keep whatever was entered there. Enter 0 to bill zero helpers.
• Route_Date format: YYYY-MM-DD | LatLng format: "13.7563, 100.5018"
• StartTime / EndTime: HH:MM format — minutes must be 00 or 30 (e.g. 09:00, 14:30). Required — a blank window is rejected; enter a window (e.g. 09:00 & 18:00).
• Drop_Type: "pickup" or "delivery" — any drop can be either, multiple pickups per route allowed. Blank defaults to the first row in the group = pickup, all others = delivery.
• Drop_PlannedDeliveryDate: YYYY-MM-DD — delivery-type drops only, defaults to Route_Date if blank.
• Drop_BranchCode: the branch code from the Branches tab of the fulfillment portal (e.g. BHC-CHA) — delivery drops only. This is what links the drop to its OMS order: the order is matched by shipper + branch code + planned delivery date. Leave blank if the drop has no OMS order. Two delivery drops with the same branch code on the same date are rejected — neither would link.
• Drop_ID / Drop_Sequence: leave Drop_ID blank to add a new drop; use the value from a By-Drop export to target an existing drop. On an existing route a matching Drop_ID updates that drop in place, only while it is still PENDING (COMPLETED/FAILED drops are left untouched). Drop_Sequence (whole number) sets the drop order; blank falls back to file row order.
Drag & Drop CSV File
or click to browse from your computer
Upload Issues
Handover Manifest Template
One row per product line. Rows sharing the same Route_ID become that route's handover manifest — the checklist the driver ticks at the origin (depot) drop and signs off together with the warehouse staff.
Columns:
Order_Number, Product_Name, Qty, Qty_Unit, Shipper_ID, Route_ID
• Route_ID must be an existing route — the manifest is attached to it. Unknown route ids are rejected.
• Shipper_ID is the route's Global Shipper ID. It is a safety check: a row whose Shipper_ID does not match the route's own shipper is rejected, so a manifest can never land on another shipper's route.
• Qty must be a number greater than 0. Qty_Unit is free text (box, pcs, กล่อง…) and is shown to the driver exactly as typed.
• Re-uploading a route replaces its whole manifest. A route whose handover is already signed off is rejected — unsign it in the driver app flow or use a new route.
• Max 300 lines per route.
Drag & Drop Handover Manifest
or click to browse — .csv, .xlsx or .xls
Manifest Upload Issues
Route Planner Export (Auto-Convert)
Upload a raw stop-level export (.csv or .xlsx) — one row per stop. The converter groups stops by vehicle-id, flattens them into routes, then imports directly.
• Expected columns: vehicle-id, stop-number, stop-address, stop-latitude, stop-longitude, start-time-window, end-time-window, arrival-time, stop-name, type
• vehicle-id format: [Shipper Global ID]-[YYMMDD]-[Suffix] — used to derive Route_ID, Shipper_Global_ID, Route_Date
• stop-name format: [ContactNumber]_[ContactName] (split on first underscore)
• type (optional): "P" → Pickup, "D" → Delivery, any other value passed through as-is. Blank defaults to stop 0 = Pickup, all others = Delivery.
• Stops with type = "depot" (typically stop-number 0) are excluded entirely — no Drop column is created for them. Drop0 is always the first non-depot stop, numbered sequentially regardless of the raw stop-number.
• If arrival-time contains "1d", that drop's Planned Delivery Date is Route_Date + 1 day
• vehicle-name (optional): parsed for route type codes — Rev:S → Revenue Single Trip, Rev:R → Revenue Round Trip, Cost:S → Costing Single Trip, Cost:R → Costing Round Trip. Example: 4W2.5T_Rev:S_Recur_Cost:R_Recur. Omit to leave both types blank.
• Same create/update/skip rules as the standard template apply once converted
• Re-uploading overwrites: if a route already exists with the same vehicle-id (Reference) + Shipper ID + Route Date, that route is updated in place instead of creating a duplicate (a route whose first drop is already COMPLETED is skipped).
Drag & Drop Planner Export
CSV or Excel — converted and imported automatically
Conversion Issues
Import History
· this sessionVehicle Routing Problem (VRP) Optimizer
Assigns multiple shipments across a fleet of vehicles — respecting weight, volume, and delivery time windows — and returns the optimal visit sequence for each truck.
• Max 3 runs/day per unique shipment batch (tweak params freely within the limit)
• Max 1,000 locations/month across all VRP calls (free tier guard)
• Each run costs 2 locations per shipment (pickup + delivery)
• Upload a CSV/XLSX to bulk-load fleet + shipments at once
Bulk Load — Drops from File
One row per delivery stop. Configure fleet above. Pickup defaults to depot.
Drop .csv or .xlsx here or browse
Replaces current drop list — fleet cards are unchanged
Route Configuration
Depot — Start & End Point for All Vehicles
Fleet
No vehicles added — click Add Vehicle
Shipments
No shipments added — click Add Shipment
Confirm Route Creation
Review before pushing to live system
Pending Vendor Reassignment Requests
Route Monitoring
Today's Completion Rate
--%
Some rows had issues
Sorted by shipper late impact — worst shipper first, worst route within each. Click any column header to override.
| Route Date ⇕ | Route ID ⇕ | Shipper Name ⇕ | Driver | Progress ⇕ | Status ⇕ | Action |
|---|
Invoice Monitoring
Review delivery document photos for in-progress and completed routes with DOC Return, then mark each Valid or Invalid. Fixed scope: the last 7 days, 25 rows per page · pending totals split by admin below.
| Route Date ⇕ | Route ID ⇕ | Shipper Name ⇕ | Driver ⇕ | Admin ⇕ | Documents ⇕ | Checked Status ⇕ |
|---|
Driver Fleet & Approvals
Audit Logs
Track of all key actions performed by operators and admins.
Shipper Directory
Register New Enterprise Shipper
Add credentials, pickup location, geofence settings and LINE invite access
CSV Template Format
Global_ID, Shipper_Name, Pickup_Location, Pickup_LatLng, Liaison_Name, Phone_Number, Login_Email, Admin, Salesperson, Route_Treatment, Geofence_Enabled, Geofence_Radius_M
• Route_Treatment: Fixed Route / Dynamic Route (blank = not set) | Geofence_Enabled: true / false | Geofence_Radius_M: metres (e.g. 1000)
Drag & Drop Shippers CSV
or click to browse
Route Logic Auto-Fill Import (.xlsx / .csv)
One row per shipper + vehicle + effective period. Populates each shipper's trip_type_matrix so opening a route auto-fills its revenue/cost trip & service types.
effective_date, end_date, shipper_global_id, shipper_name, Revenue- Trip Type, Cost- Trip Type, vehicle_type, Revenue- Service Type, Costing Level
• Trip Type: Single Trip / Round Trip | Service Type & Costing Level: Recurring / Ad-hoc | dates accept Excel serials or YYYY-MM-DD. Rows replace the matrix for each shipper found in the file. Unknown shippers & overlapping periods are reported, not written.
Drag & Drop Route Logic file
or click to browse (.xlsx / .csv)
| Enterprise · by ID | Login / LINE | Pickup Details | Actions |
|---|
Driver Assignment
Assign approved drivers to routes. Search routes by ID, shipper, or date.
Pending Vendor Reassignment Requests
| Route | Shipper | Route Date | Drop 1 Address | Assigned Driver | Action |
|---|
Ticketing
Track driver penalties, shipper issues, and address complaints.
| Ticket ⇕ | Type ⇕ | Route / Shipper / Driver ⇕ | Status ⇕ | Lead Time ⇕ | Assigned To ⇕ | Created ⇕ | Actions |
|---|
Vendor Fleet Management
Create and manage transport company vendor accounts.
Ticket Admin
Manage issue types, sub-issue types, SLA targets and the ticket adjustment-item list.
SLA target = working days from ticket creation to a decision (Resolved or Not Do — a waiver stops the clock too). Working week is Mon–Sat; Sundays, Thai BOT holidays and the BI public-holiday calendar are excluded. A blank target inherits the type default, which inherits 2 working days. Compliance is reported in BI Analytics → Ticketing Performance.
Add New Issue Type
Adjustment Items
The Adjustment Item dropdown on a ticket. You can add, rename and remove standard items — each carries a plain Revenue Impact (THB) and Cost Impact (THB) applied to the billed amount. Set the sign of each side here: Add (+) increases it, Deduct (−) reduces it. Whoever raises the ticket always types a plain positive number — the sign comes from this screen, so nobody has to remember a minus. The specialised items below use dedicated fields (a fee that replaces the rate-card amount, distance, or headcount) and are fixed in code — they cannot be edited here, and a standard item may not be named after one.
Specialised — fixed in code
BI Analytics
Filters
The Route Breakdown export downloads per-drop detail for every route matching the filters above. Set a date range to export beyond the latest 500 routes.
Transport Performance
Tap any metric card to see its formula and the exact drops behind the number.
How each metric is calculated
Overall OTP
--%
pickup + delivery on-time · tap for detail
Pickup OTP
--%
pickup on-time (early ok) · tap for detail
Delivery OTP
--%
delivery on-time (early ok) · tap for detail
DOC Return OTP
--%
by next working day · tap for detail
Fail Rate
--%
failed ÷ all drops · lower is better
Avg Time at Drop
—
arrived → success/fail · tap for detail
Total Routes
0
0 routes matched
Trend Analysis
routes & pickup/delivery on-time performance over the selected period
Trip Summary — routes by service type
Pickup Performance — on-time vs not on-time
Delivery Performance — on-time vs not on-time
DOC Return OTP — returned on time vs late
Damage / Loss Claims — claim tickets raised
Tickets flagged Damage / Loss Claim, bucketed by ticket created date. Date range only — the shipper / route / driver / vendor filters above do not apply.
Distance & Drop Metrics — actual distance & drop counts by period
Drops use billing logic — Revenue = every delivery drop; Cost = unique delivery locations (same lat/lng = 1 stop).
| Period | Act Dist Avg | Act Dist Max | Rev Drops Avg | Rev Drops Max | Cost Drops Avg | Cost Drops Max |
|---|
Shipper Performance
7 transport metrics per shipper · click any header to sort
Vendor Performance
7 transport metrics per vendor fleet (driver's company) · click any header to sort
Driver Performance
7 transport metrics per driver · click any header to sort
Ticketing Performance
Working days: Mon–Sat · Sundays, Thai BOT holidays and the excluded · SLA target is set per sub-issue type in Ticket Admin (default 2 working days) · Resolved and Not Do both stop the clock
Active Tickets
0
open + working
Total Tickets
0
raised in date range
Resolved
—
resolved or not-do
Avg Lead Time
—
open → resolved (working hrs)
SLA Compliance
--%
% of closed tickets that met their sub-type SLA target
SLA by Issue Type & Sub-issue Type
target vs. avg working-day lead time · % of closed tickets that met target
By Assignee
total assigned · resolved · avg lead time
Live Today so far · —
Computed on-device from live routes · honours the shipper / route / status / driver / vendor filters above (date controls do not apply — always today) · excludes DOC Return OTP
Overall OTP
--%
pickup + delivery on-time
Pickup OTP
--%
pickup on-time (early ok)
Delivery OTP
--%
delivery on-time (early ok)
Fail Rate
--%
failed ÷ all drops
Avg Time at Drop
—
arrived → success/fail
Routes Today
0
0 routes today
DOC Return Checks · last 7 days
Completed routes with DOC Return · Pending is the backlog left to check · action them in
Pending Check
0
left to check · last 7d
Valid
--%
0 valid ÷ completed w/ DOC
Invalid
0
flagged for re-upload
Completed w/ DOC Return
0
denominator · last 7d
Today's Performance Roll-ups
Same 6 transport metrics per shipper / vendor / driver as the Historical tables · DOC Return OTP shows "—" (no same-day deadline) · click any header to sort
Shipper Performance · Today
per shipper · on-device from today's live routes
Vendor Performance · Today
per vendor fleet (driver's company) · on-device from today's live routes
Driver Performance · Today
per driver · on-device from today's live routes