Skip to content

Case study 02

Field Service CRM

Enquiry-to-invoice for a service business with technicians in the field, replacing a WhatsApp group and a shared spreadsheet.

Next.jsPostgreSQLReact NativeExpoAuth.js
At a glance
Sector
Home services
Year
2025
Service
CRM
Spine

Pipeline · dispatch · technician app

See this service
4 → 1
Lead sources unified
Escalating
Follow-up visibility
Offline-first
Field app
Same day
Job to invoice

The problem

Enquiries arrived across three phone numbers and a website form, were copied into a spreadsheet when someone remembered, and got assigned to technicians in a WhatsApp group. Nobody could say how many jobs were open, which technician was free, or why a customer from ten days ago had never been called back.

What we built

A single pipeline with stage-gated required fields and an owner on every record. Overdue follow-ups escalate to the manager's board rather than sitting silently on a rep's list. Technicians get a mobile view of their assigned jobs that works offline in basements and stairwells, with photo capture on completion feeding straight into the invoice.

Under the hood

Tables
  • leads
  • stages
  • assignments
  • jobs
  • job_photos
  • invoices
  • technicians
  • activity_log
Endpoints
  • POST /leads/intake
  • PATCH /leads/:id/stage
  • GET /jobs/mine
  • POST /jobs/:id/complete
Rules
  • stage_required_fields
  • auto_assign_by_area
  • overdue_escalation_24h
  • margin_floor_check