DEV Community

Scott Steinmetz
Scott Steinmetz

Posted on Originally published at scottsteinmetz.biz

FieldOS, Part 2: Nine Add-Ons You Only Pay for If You Need Them

The core of FieldOS — jobs, parts, dispatch, billing — runs the daily grind for any field service business. But "runs the daily grind" and "runs the whole business" are different problems, and every business's gap between the two looks different.

An HVAC company lives and dies by scheduled maintenance visits. A body shop cares about tracking which insurance estimate got approved. A five-location parts operation needs someone besides the owner able to see the whole company at a glance. None of those needs are universal, so none of them belong bolted onto the core system by default. I built each one as a separate piece a business can turn on only if they need it — the same idea as buying one lamp instead of a whole store's worth of lighting you'll never plug in.

Nine of these add-ons exist today, each one solving a real gap I could point to in an actual field service business.

How the Add-Ons Work

  • Automatic Recurring Care: A maintenance schedule — replace this filter every 90 days, service this unit twice a year — opens its own job automatically when it comes due, and reschedules itself the moment the work is marked complete. No one has to remember.
  • Real Time Sheets: Technicians clock in and out per job, or per shift, and that time feeds straight into the automatic invoice from Part 1 — real labor charges instead of a guess written down after the fact.
  • Tracking What You Own: A registry for everything a business owns and everywhere it can be. Fixed equipment stays put — an HVAC unit, a lift, a compressor. Movable assets get tracked as they move — a company truck or trailer, always showing where it actually is right now versus where it's normally kept.
  • Quotes Before the Work Starts: A formal price gets built, sent, and either approved or declined before a single hour goes on the clock — and an approved quote turns into a real job automatically, no re-entering anything.
  • A Front Door for Customers, No Password Required: A public form lets anyone report an issue without creating an account first — the same instinct behind a "report a pothole" page a city might run. Customers who do have an account get their own private view of their open jobs and quotes, nothing more.
  • Staying in Sync with the Customer List You Already Use: Rather than force a business to keep two separate customer databases, this piece quietly updates the contact system a business is already running the moment a job comes in or a quote gets approved.
  • Bills That Send Themselves: For customers on a standing service agreement — a monthly cleaning contract, a quarterly inspection — an invoice generates itself on schedule, no one has to remember to send it.
  • A Filing Cabinet That Never Loses Anything: Manuals, warranties, insurance certificates, compliance paperwork — stored centrally, tagged to a location or a specific job, with an automatic reminder before anything expires.
  • One Dashboard for Everything: A single view pulling live numbers from every other piece a business has turned on — nothing to export, nothing to reconcile by hand.

Overcoming the Friction

Buy It or Build It

The recurring-billing piece could have leaned on an existing paid add-on rather than being built from scratch. I checked, and using it would have meant an extra ongoing licensing cost for every single business that turns this feature on — forever, whether they use it heavily or barely at all. I built a lightweight version instead, with no added cost that compounds across every future client.

The Bill That Quietly Crept Later

Testing the recurring-billing piece caught a subtle but real problem: if the automatic billing check ever ran a little late — a server hiccup, a missed window — the next bill's due date would silently push back by that same delay, and the one after that, compounding every time it happened. A customer on a monthly plan could slowly drift toward being billed less often than agreed, with nobody noticing until months later. I fixed the math to always count forward from the correct scheduled date, immune to how late the check itself happens to run.

The First Public Door Needed a Lock

Every other piece of FieldOS lives behind a login. The public "report an issue" form doesn't — it's the platform's first door open to literally anyone on the internet, which meant it needed real protection before it could go live: a hidden trap field that only automated spam-bots fill in, and a limit on how many submissions one visitor can send in an hour. Security wasn't an afterthought bolted on after the form worked — it shipped as part of "working" in the first place.

The Business Win

About two and a half hours, tracked the same way as Part 1 — that's what it took to design, build, and verify all nine of these pieces, each one tested live against real data before moving to the next. All nine are independently switchable — a business turns on exactly what applies to how they work and ignores the rest. Between the core system and these nine add-ons, FieldOS now covers the entire life of a job: before it starts, while it's happening, and long after it's closed and filed away.

Next in this series: the actual app the people using all of this — technicians, dispatchers, customers — open every day, and what tracking every hour of this build revealed about what a system like this should really cost.

Top comments (0)