Field service dispatch app
Assigns jobs to technicians, shows the route and keeps the customer informed. For: Repair, installation and delivery teams.
The problem
Jobs are assigned by phone, technicians lose time on routes, customers keep calling for an arrival time, and proof of work is a photo in someone's gallery.
How it works
Built from: gmaps, whatsapp, firebase, gsheets.
- gmaps: Routes, distance and arrival times
- whatsapp: Customer updates and proof of work
- firebase: Live job status and technician sign-in
- gsheets: Daily summary for the owner
flowchart LR
C(["Your customer"]) <-->|"asks, pays, gets updates"| APP["Your app<br/>Technician app: jobs, route, checklist, photos, signature"]
APP --> L{{"Your logic<br/>the rules that are yours"}}
subgraph EX["Apps that already exist: APIs and MCP servers"]
A0["Google Maps<br/>Routes, distance and arrival times"]
A1["WhatsApp<br/>Customer updates and proof of work"]
A2["Firebase<br/>Live job status and technician sign-in"]
A3["Google Sheets<br/>Daily summary for the owner"]
end
L --> A0
L --> A1
L --> A2
L --> A3
L --> DB[("What it keeps<br/>Jobs and customers, Technicians and skills, Routes and arrival times")]
L --> OWN["Admin dashboard<br/>Dispatch board with live technician positions"]
classDef yours fill:#1691D6,stroke:#0a5f95,color:#fff
classDef ext fill:#E6F3FB,stroke:#1691D6,color:#12112E
class APP,L,DB,OWN yours
class A0,A1,A2,A3,A4 extThe logic
- When new job arrives: Assign the nearest free technician with the right skill
- When technician starts the route: Send the customer a live arrival time
- When job finished: Require photos and a checklist, then collect a signature
- When job closed: Send the invoice and a payment link
- When technician delayed: Tell the customer and offer a new window
flowchart LR
subgraph R0["Rule 1"]
direction TB
W0{{"When: New job arrives"}} --> T0["Then: Assign the nearest free technician with the right skill"]
end
subgraph R1["Rule 2"]
direction TB
W1{{"When: Technician starts the route"}} --> T1["Then: Send the customer a live arrival time"]
end
subgraph R2["Rule 3"]
direction TB
W2{{"When: Job finished"}} --> T2["Then: Require photos and a checklist, then collect a signature"]
end
subgraph R3["Rule 4"]
direction TB
W3{{"When: Job closed"}} --> T3["Then: Send the invoice and a payment link"]
end
subgraph R4["Rule 5"]
direction TB
W4{{"When: Technician delayed"}} --> T4["Then: Tell the customer and offer a new window"]
end
S(["Start"]) --> R0 --> R1 --> R2 --> R3 --> R4 --> E(["Done and logged"])
classDef when fill:#E6F3FB,stroke:#1691D6,color:#12112E
classDef then fill:#1691D6,stroke:#0a5f95,color:#fff
classDef end1 fill:#12112E,stroke:#12112E,color:#fff
class W0,W1,W2,W3,W4 when
class T0,T1,T2,T3,T4 then
class S,E end1What can be developed
- Mobile app: Technician app: jobs, route, checklist, photos, signature
- Website: Customer tracking link and booking page
- Admin dashboard: Dispatch board with live technician positions; Job templates and pricing
- AI and automation: Suggests the best technician for each job; Summarises the day for the owner
The money (illustrative example)
The customer pays ₹5999 per business, per month. API and hosting costs: Maps and routing ₹600, WhatsApp updates ₹700, Live data ₹300, Hosting ₹200, together ₹1800. Net profit ₹4199.
sankey-beta Customer pays,Maps and routing,600 Customer pays,WhatsApp updates,700 Customer pays,Live data,300 Customer pays,Hosting,200 Customer pays,Net profit,4199
Watch out for
- Location tracking of staff needs their clear consent and working hours only.
- The app must work on poor mobile networks.