Illustrative example
Replacing paper job sheets for a field-service company
A 120-person field-service company ran its daily work on paper job sheets that were rekeyed by hand each evening. We replaced that with a mobile-first workflow platform, cutting the rekeying entirely and getting invoices out days sooner.
- Sector
- Field services
- Service
- Idea to Software
- Timeframe
- 12 weeks to first release
- C# / .NET
- Blazor
- ASP.NET Core
- PostgreSQL
- Azure
This is an illustrative example
It represents the kind of engagement we take on and the shape of outcome we work toward — a composite drawn from common situations, not a specific client. The company is anonymised, and the figures are representative targets rather than measured results. Real, client-approved case studies will replace these as engagements complete.
The problem
Field engineers completed work and filled in a paper job sheet — parts used, hours, customer signature. Those sheets travelled back to the office in a van, where two administrators rekeyed them into an accounting package each evening. Invoicing lagged the work by a week, sheets went missing, and nobody could see the day’s status until it was already history.
The owner knew the process was costing money but could not describe the software that would fix it. That is the normal starting point, and it is exactly what a short discovery is for.
Constraints
- Engineers work in poor signal — the app had to work offline and sync later.
- The existing accounting package was staying; the new system had to feed it, not replace it.
- The administrators were sceptical of “another system”, having been burned before.
What we built
A mobile-first job-sheet application the engineers complete on a phone, plus a small office view for reconciliation. The smallest useful version served one primary user — the field engineer — properly, rather than serving everyone adequately. Parts, time and a captured signature go in on site; the record syncs when signal returns.
The office no longer rekeys anything. Completed jobs flow into a review queue, an administrator confirms them, and an approved job produces an invoice draft in the existing accounting package through its API.
Architecture
A modular monolith on ASP.NET Core with a PostgreSQL store, deployed to Azure. The mobile client is a Blazor application with an offline cache and a sync queue, chosen because the interaction is rich and the team is a Microsoft-stack shop. Integration with the accounting package sits behind a single adapter module, so a future change of package touches one boundary rather than the whole system.
We deliberately did not build scheduling, inventory, or a customer portal in release one. Those were written down as out of scope so that the first release could ship and be learned from while the cost of being wrong was still low.
How we delivered
Twelve weeks, in two-week iterations, with working software demonstrated every one. The administrators — the sceptical users — were in those demos from the second iteration, which is how a tool they expected to resent became one they helped shape.
Lessons
The binding constraint was never the engineers’ data entry; it was the evening rekeying and the week-long invoicing lag. Naming the real cost up front kept the first release small and focused on the thing that actually hurt, rather than on the longer feature list everyone could imagine.
Representative outcomes
~1 day/week
of rekeying removed per office administrator
3–4 days
faster from job completed to invoice sent
1 primary user
served properly in release one, by design
Figures are illustrative targets for an engagement of this shape, not measured results from a specific client.
More selected work
Making an ageing .NET system safe to change again
An eight-year-old .NET application still ran a professional-services firm, but a one-line change took three weeks and only two people dared touch it. We modernised it incrementally — deployment and tests first — until change was cheap again, with no rewrite and no feature freeze.
An AI document-extraction pilot that had to earn its place
A finance operations team drowning in supplier invoices wanted "AI". We ran a three-week sprint that defined the accuracy bar first, built a working extraction prototype on real documents, and evaluated it honestly against that bar — with a human in the loop and a clear fallback.