Almost every generator service business starts on a spreadsheet. It's free, it's already on the computer, and when you're running a handful of units off one truck it does the job. There's nothing wrong with that. A spreadsheet is a reasonable tool when the business is small.
The trouble starts later — not because the spreadsheet got worse, but because the business got bigger. More generators. More techs touching the file. More PMs to track and more customers who expect a record. A spreadsheet doesn't scale with any of that, and the cracks show up as missed PMs, retyped data, and a service history nobody can fully reconstruct.
This guide covers where the spreadsheet breaks, what purpose-built software changes, and how to move over without losing the history you already have.
Where the spreadsheet breaks
Picture the common case: forty units and one truck. One tab for equipment, one for the PM schedule, a folder of job notes, and a separate file the office uses for invoicing. It holds together right up until it doesn't. Here's where it gives.
The history doesn't follow the unit
A generator has its own identity: make, model, serial number, kW rating, the ATS it's tied to, fuel type, install date. On a spreadsheet, that unit's service history is scattered — a row here, a tab there, a note in a file somewhere else. To answer "what has actually happened to this generator over the last three years," you go hunting across rows, tabs, and files. The history doesn't live with the unit; it lives wherever someone happened to type it.
You can't work from the field
Generators sit in basements, in vaults, on rooftops — the work and the readings happen away from a desk. A spreadsheet can't push a checklist to a phone or capture readings where the technician is standing. So the field notes get scribbled on paper or held in someone's head, then re-keyed back at the office. Every re-key is a chance to lose a reading or fat-finger a serial number.
The same data gets typed three times
Customer, site, equipment, and line-item details get entered onto the quote, then again onto the job, then again onto the invoice. Same facts, three keystrokes-worth of work, three chances to introduce a mismatch. When the invoice doesn't match the quote, that's usually where it came from.
PMs slip through
On a spreadsheet, the only signal that a PM is due is a date column someone has to remember to sort. Miss the sort, miss the PM. There's no system pushing the overdue work in front of you — the diligence is entirely manual, and manual diligence fails on a busy week.
Nothing is accountable
This is the one that matters most for compliance work. Any cell can be edited by anyone with the file open, and the change leaves no trace. There's no reliable record of who entered a value, who changed it, or when. A PM log can be backfilled after the fact and look identical to one filled in honestly on the day. That's fine until an auditor asks who performed a test and when — and you can't prove it.
The core problem
What purpose-built software changes
PowerOps is generator service software — a multi-tenant platform built for generator service companies rather than a grid you bend to fit. The difference isn't cosmetic. It changes how the data behaves.
The generator is a real record
Each unit is a first-class record that carries its own identity and full service history. The history follows the unit across visits, technicians, and years — every PM, transfer test, and load bank result attaches to that generator, so "what has happened to this unit" is one place, not a scavenger hunt.
Data is entered once and flows
Enter the facts once and they auto-flow through the workflow — Lead, Quote, Won, Scheduled, Dispatched, Completed, Invoiced, Paid — without re-entry. As a record advances, the things you used to retype carry forward on their own:
- Customer identity, contact info, and billing terms
- Site address and access notes
- The equipment list — make, model, serial, kW, ATS, fuel type, install date
- Line items and pricing
- Attached files — quote PDF, PO, permits, photos
- Prior-stage notes and the history of who did what before
The invoice matches the quote because it's built from the same record, not retyped from it.
The work happens in the field
Technicians work from a structured checklist on a phone or tablet and record readings, photos, and serials directly against the unit, where the work is. It works offline within a stage and syncs when connectivity returns — which matters when the generator is in a vault with no signal. The reading lands on the unit's record the first time, with no re-keying at the office.
Completed work becomes an immutable record
When a PM, transfer test, or load bank result is completed, it becomes an attributed, timestamped record written by a named, authenticated user — and it's append-only. It can't be silently edited later. Every workflow state change between stages is an explicit click by a named user that writes its own immutable, timestamped audit record. (Payment receipt is the one step that happens automatically.)
That's the answer to the auditor's question. Who performed this test, when, and what did they see? The record gives back a single human name, a server timestamp, and a snapshot of the data at the moment of the click — the kind of permanent record a generator service business is expected to be able to produce.
You can see what's due
Instead of a date column you have to remember to sort, you get a live view of what's due, coming due, and overdue — sortable by unit, site, customer, or technician. The overdue work comes to you.
On standards and cadences
People see only their part
Role-based permissions control who can see and do what, per section of the business. A technician's view isn't the office's view. On a shared spreadsheet, anyone with the file has the whole file.
The assistant helps, but never signs off
The built-in AI works within a stage — drafting follow-ups, flagging stale or overdue work, pre-filling line items from history. It never clicks a gate or changes a record's workflow state. The accountability stays with your named people. The software does the busywork; the human owns the decision.
How to migrate without losing history
Moving off a spreadsheet is less about the software and more about the order you do it in and the shape of the data going in. A practical sequence:
Clean the data first
Before anything imports, tidy what you have. Messy data in is messy data forever. Specifically:
- Remove duplicate units and duplicate customers
- Fill in missing serial numbers — the serial is how a unit stays identifiable
- Reconcile overdue PMs so the new schedule starts from the truth, not a backlog you can't see
- Standardize how kW ratings, fuel types, and site addresses are written, so they match cleanly
Import in dependency order
Bring the data over in the order things depend on each other:
- Equipment list first. The units are the spine everything else hangs on.
- Customers and sites next. Tie the equipment to where it lives and who owns it.
- Open service agreements and the PM schedule they drive. A service agreement drives the PM schedule, so it comes once the units and sites it references are in place.
A note on import mechanics: there's no one-click button that swallows an arbitrary messy spreadsheet whole. How the import runs depends on the shape of your sheets, and it's handled in onboarding — you bring your equipment list to start, and the exact mapping gets worked out against your actual columns.
Run in parallel, then cut over
Don't flip a switch and abandon the spreadsheet the same afternoon. Run the new system alongside it for a short window. Once the schedule and the records line up — once the new system is telling you the same things the spreadsheet did, and a few you couldn't see before — cut over and retire the file.
The point of the move