Building a Custom OS
for Field Services
A specialty construction company running on spreadsheets needed a single source of truth. I embedded on-site as the sole developer and product owner to build their entire operational stack.
The Problem
A growing multi-office field services company with dozens of technicians and hundreds of active work orders — held together by fragile spreadsheets and tribal knowledge.
Work orders in one system, scheduling in another, timesheets on paper. No visibility between them. Dispatchers double-booked. Invoices took weeks.
My Approach
I didn't build from a spec document. I went on-site, sat with dispatchers, and watched technicians working in the field. Every feature came from a real conversation.
- ✓Direct ObservationWatched real users interact with existing tools
- ✓Daily ShippingDecision at 10am, shipped by 3pm
- ✓Zero FilterNo PMs or Jira between me and the users
Fragmented Tools
Work orders, scheduling, timesheets, and invoicing all siloed with zero connection between them.
Scheduling Conflicts
Dispatchers had no real-time visibility into tech availability. Double-bookings were common.
Delayed Invoicing
Weeks between job completion and invoice prep due to missing information and back-and-forth.
Multiple User Types
Admins, dispatchers, field techs, and clients each with entirely different needs and zero unified system.
What I Built
A complete operations platform covering the full job lifecycle — from work order creation to invoicing — with strict role-specific experiences for every user type.

Work Order Lifecycle
9-status pipeline from creation to invoicing. Status-based UI locking controls what each role can do at each stage.
Calendar & Dispatch
Week/month/day views with drag-and-drop. Tech load boards with overload warnings. Print-ready dispatch sheets.
Timesheets & Approvals
Per-job time logging, two-tier approval workflow, automated daily email reports for missing entries.
Billing & Invoicing
Billing classification, invoice file management, PO tracking, and charge types — bridging field work to accounting.
RBAC & Permissions
Granular role-based access mapped to the actual org hierarchy. Job status transition gates. Per-resource limits.
Client Portal
External-facing portal for project managers. File access and status visibility scoped to their assigned jobs only.
Two Products, One Codebase
The office team needs a dense desktop ops platform. Field technicians need a phone-first tool they can use on a ladder in direct sunlight. Same data, completely different experience.


The Tech Dashboard
A mobile-first product built specifically for non-technical field workers. Designed from direct on-site observation — watching technicians with gloves on, in sunlight, between tasks.
- →Large tap targets, minimal text input
- →Quick-select time logging (0.5, 1, 2h)
- →Task completion with photo uploads
- →Material tracking & reimbursement requests
Realtime Sync
When dispatch updates a work order, reassigns a tech, or adds a task — the field tech sees it instantly without refreshing. No polling, no manual refresh.
Implemented via Supabase realtime subscriptions across tasks, assignments, comments, and day notes — keeping the office and field in perfect sync.
AI-Powered Features
Two custom AI engines designed to save hours of manual work — with human-in-the-loop safety so the AI assists but never acts alone.
Natural Language Reports
Ask a question in plain English — "Show me all active jobs with more than 20 logged hours" — and receive a fully composed dashboard with charts and data tables. No SQL knowledge required.
- ◆The Engine: Gemini reads a pruned schema → generates secure SQL + UI layout JSON → user confirms before execution
- ◆5 Widget Types: Metric cards, bar/line/pie charts, and data tables composed dynamically per query
- ◆Safety Layers: Prompt guardrails → regex validation → Postgres function gating → read-only execution


Multimodal WO Creator
Paste an email, upload a PDF, or record audio — the AI extracts structured field data, fuzzy-matches clients and staff against the live database, then generates the complete work order in a single confirmed transaction.
- ◆Multimodal Input: Text paste, file upload, or voice recording — all analyzed together
- ◆Smart Matching: Fuzzy-matches extracted names against live database records
- ◆Full Injection: Creates WO + tasks + checklists + tags + assignments + PDF in one transaction
Impact & Outcomes
Status-Based UI Locking
A ternary permission chain that controls what's editable at each WO status. Different statuses unlock/lock different UI surfaces for different roles.
Multi-Office Filtering
A single global selector that filters every module (WOs, calendar, billing, timesheets, people) without acting as a hard permission boundary.
Realtime Collaboration
Supabase realtime subscriptions across tasks, assignments, comments, and day notes. Office updates appear on field tech phones instantly.
Designing for the Field
Building for non-technical users — field techs on their phones in the sun, office staff in spreadsheets, clients who just need their files.
Tech Stack
Need an architect for
your next platform?
Whether you need a full enterprise platform from scratch or AI features integrated into an existing stack — let's talk.