Features

Everything the platform does

Thirteen modules, laid out in full. This is the complete list rather than the highlights: if something isn't here, it isn't in the product, and the things we deliberately don't do are published too.

Module 01

Customers & Locations

One record that holds everything you know about an account

Customers are more than a name and a phone number. A commercial account can span a dozen buildings, several contacts and its own pricing, and the record is built to hold all of it without duplicate entries.

Sub-accounts let a property manager own a dozen buildings while each one keeps its own work orders, invoices and history.

A property manager's twelve linked buildings
A property manager's twelve linked buildings
Customer list: A–Z index
A linked sub-account
Multiple service locations
Every customer can carry as many service addresses as they need, each with its own type, primary flag and map coordinates resolved automatically from the address.
Multiple contacts per account
Store the office manager, the site super and the after-hours number separately, each with a role and a primary flag, so the right person gets the right document.
Sub-accounts, not merges
Link a secondary customer to a primary one for navigation while it stays a fully independent record with its own number, jobs and invoices. Nothing is flattened together.
Account credit ledger
Credits are an append-only ledger on the customer record, and the balance can be spent directly against an invoice as a payment method, with the system refusing the payment if the balance is short.
Activity timeline and pinned notes
A plain-English feed of everything that has happened on the account (work orders, quotes, invoices, payments, parts installed, signatures captured), with important notes pinned above it.
Residential and commercial
Customer type, tags, lead source, credit limit and a do-not-contact flag, all filterable from the list view.
Automatic numbering
Customer numbers are generated from a prefix and counter you control, alongside seven other independent document-number sequences.
Bulk import and export
Bring an existing customer list in from CSV, and export any filtered, sorted view back out to CSV in one click.

Module 02

Customer Documents

Office-authored letters, branded and sent in two clicks

Not every customer communication is an invoice or a quote. Welcome letters, seasonal reminders, visit notices and renewal letters all go out on your letterhead, written once and reused forever.

An unrecognized token is left visibly in the text instead of silently blanked, so a typo in a template shows up in preview, not in a customer's inbox.

Settings: Documents
Settings: Documents
Token substitution
Write a template once with placeholders for the customer's name, greeting, and your company's phone, email, address and website: ten tokens, all resolved server-side so the editor's list can never drift from what actually works.
Live preview while editing
See the rendered PDF against a sample customer as you write, so a mistake shows up on screen instead of in a real customer's inbox.
Sent from the customer's own page
Pick a template from a customer's detail page and it arrives pre-filled with everything resolved for that specific customer, editable before it goes, with an inline preview: the same send experience as an invoice or quote.
Your letterhead, automatically
Every document is a PDF using the same logo, company name, address, phone and email as your invoices and quotes, so a branding change only has to happen in one place.
Ships ready to use
Welcome Letter, Seasonal Tune-Up Reminder, Scheduled Visit Notice and Service Agreement Renewal are there from day one, and your office can add its own the same way.
Edit the wording, keep the template
The starting templates can be edited or turned off, but not deleted, and a restart never overwrites wording your office has already changed.
Always a deliberate send
Nothing goes out automatically. Every document is a specific person clicking send to a specific customer, never a background job.

Module 03

Work Orders

The job record the whole system revolves around

A work order carries the schedule, the crew, the parts, the hours, the photos, the signature and the notes. By the time a tech marks it complete, everything needed to invoice it is already attached.

Status transitions are enforced by the server: a job can only reach Completed from In Progress, and nothing ever goes back to New.

Work order detail
Work order detail
Enforced status flow
New, Scheduled, Parts on Hold, In Progress, On Hold, Completed and Cancelled, with invalid jumps rejected. Timestamps for actual start, completion and cancellation are stamped automatically as status changes.
Multi-technician crews
Assign as many technicians as a job needs and flag exactly one as lead. Assignment is what triggers the technician's notification and push alert.
Multiple time blocks
A job isn't always one visit. Add extra scheduled blocks for a return trip or an overrun and the board reflects every one of them.
Planned materials
Pull items from the price book onto the job before the truck rolls, then issue real tracked stock against it in the field.
Time tracking
Technicians clock in and out from the job itself. Office staff can add, edit or reassign entries manually. Those hours feed straight into job costing at each tech's real pay rate.
Photos and signatures
Capture site photos from the phone camera and a finger-drawn customer signature, both attached to the work order and visible to the office immediately.
Separate office and technician notes
Customer-visible notes, internal tech notes and completion notes are distinct fields, so internal commentary never lands on a customer document.
Archive instead of delete
Closing out old work hides it from the default view without destroying the record, and it can be restored at any time.
Safe concurrent editing
If two people open the same work order, the second save is rejected rather than silently overwriting the first.
Structured inspection forms
A full HVAC preventive-maintenance form with equipment identification, an 18-point checklist, operating readings, findings and dual signatures, autosaving as it is filled in, online or off.
Find any work order fast
An A–Z customer index, live status filters and CSV export, plus drag-and-drop column reordering that remembers how you like the list arranged.

Module 04

Dispatch & Scheduling

A real drag-and-drop board, live across every dispatcher

The board is a timeline of technicians against time, not a list you edit in a modal. Drag a job to a different tech or a different hour and it is rescheduled. Everyone else watching the board sees it move.

Day, week and month views on one board, with per-technician utilization bars that show who is overloaded before you assign the next call.

Dispatch board: week view
Dispatch board: week view
Drag to assign and reschedule
Technician rows against hourly columns. Drag a job card to change who's doing it, when, or both, snapped to 15-minute increments.
Day, week and month
Switch between an hour-by-hour day view with a live current-time line, a week grid of techs against days, and a month calendar.
Unassigned and undated backlogs
Two side panels hold work that needs a tech or needs a date. Drag out of them to schedule; drag back in to unschedule.
Utilization at a glance
Every technician row shows booked hours and a colour-coded utilization bar, plus a header band with scheduled, completed, unassigned and undated counts and booked revenue.
Time-off and unavailability blocks
Drop a block onto a technician's row to mark them out. Blocks are draggable, editable and removable, and dragging a job onto someone's blocked time is rejected with a clear conflict warning instead of quietly double-booking them.
Live for every dispatcher
The board updates in real time over a websocket connection, so two dispatchers working the same day never fight over a stale screen.
Map view
Every work order scheduled in the next 14 days plotted on a map, with turn-by-turn directions one tap away. Technicians see only their own route; the office sees everything.
Recurring work templates
Weekly through yearly templates that generate real work orders on schedule, with a manual generate-now action and a bulk run for anything due.

Module 05

Quotes & Customer Approval

Send it, they approve it online, it becomes an invoice

Quotes go out as a branded PDF with a secure link. The customer opens it in a browser with no account, no password and no app, approves or declines, and you know the moment they've looked at it.

Approval links are signed with a cryptographic token, unguessable, and impossible to reach another customer's quote by changing the URL.

Quote detail
Quote detail
Line-item builder
Pull from the price book or type free-form lines, set quantities and prices, apply a percentage or fixed discount, and attach your standard terms.
Preview and send in one dialog
A live PDF preview sits next to the recipient list. Tick known contacts or add an address, then edit the subject and the message body before it goes.
No-login customer approval
The customer sees the quote, the line items, the total and your terms on a clean page, then approves or declines with an optional reason.
Know when it's been read
A sent quote flips to Viewed the first time the customer opens the link, and the moment is logged to their timeline.
Convert to invoice
An approved quote becomes an invoice in one click, carrying its line items across and staying linked to the original.
Signature capture
Take an in-person signature on the quote in the field, stored against the record alongside the approval trail.
Pipeline reporting
Quote value by status, win rate on decided quotes, and total open pipeline: see the Reporting section.

Module 06

Invoicing & Payments

Invoices that know what the job actually cost you

Every invoice can carry a cost basis alongside the price. That turns the invoice into a job-costing record (materials, labour at real pay rates, profit and margin) without a second system or a spreadsheet.

Lines can be marked internal: they stay on the invoice for cost tracking but never appear on the customer's PDF or count toward their total.

Invoice list
Invoice list
Profitability per invoice
Material cost from line-level cost basis, labour cost from logged time entries priced at each technician's actual pay rate, then profit and margin percentage. Visible only to those with financial permission.
Internal-only lines
Track a cost on the invoice that the customer never sees. The line stays in your numbers and stays off their document.
Record payments
Cash, cheque, card or account credit, with a reference number, notes and a back-dated payment date. Balances and status recalculate automatically.
Pay from account credit
Draw against a customer's credit balance as a payment method, with the system verifying the balance covers it first and writing both sides of the ledger in one transaction.
Paid invoices stay editable
Correct a line item or discount after a payment's been recorded and the balance recalculates automatically. Only reassigning the invoice to a different customer is blocked, void and reissue instead. If a correction drops the total below what's already been paid, the difference is banked as account credit rather than vanishing.
Reversals that keep the audit trail
Reversing a payment unwinds the balance, recalculates the invoice status and returns any credit that funded it, while keeping the original payment on record rather than deleting it.
Void and revert to draft
Voiding is a separate permission from managing invoices, so you can let staff bill without letting them erase.
PDF and email
The same preview-and-send dialog as quotes, with editable recipients, subject and message.
Built for chasing money
Status tabs with live counts, search across customer, invoice number and work order number, an A–Z customer index, a running total and balance across whatever you've filtered to, and CSV export.
Payments ledger
A dedicated register of every payment taken (date, customer, invoice, method, reference and amount), sortable and exportable.

Module 07

Service Agreements

Maintenance contracts with the visits and the billing kept apart

Real maintenance contracts don't bill on the same rhythm they get serviced. An agreement carries two independent schedules (when you visit, and when you bill), so a quarterly-billed contract with two annual visits works exactly the way you sold it.

Bill a contract period before the visit happens, or automatically raise the invoice the moment the technician marks the maintenance job complete. Both paths are one click or zero.

Agreement: billing schedule
Agreement: billing schedule
Reusable plan templates
Define plans once with their discount percentage, standard labour rate, after-hours rate and diagnostic item, then apply them to any customer.
Maintenance schedule
Recurring visit rows with their own recurrence rules, expected duration, notes and an itemized parts list, including per-agreement price overrides on those parts.
Billing schedule
A separate set of recurring rows that drive invoices, each with its own line items and pricing, independent of the visit calendar.
Generate work orders from occurrences
Turn any upcoming maintenance occurrence into a real, dispatchable work order. The system refuses to generate the same occurrence twice.
Invoice on completion
When a technician completes an agreement job, the invoice can be drafted (or finalized outright) automatically from the job's materials, with a guard against double-billing.
Contract terms
Start and end dates, billing frequency, amount, auto-renew, payment terms, preferred contact method, plus a specific service location and contact.
Full history
Every work order and every invoice the agreement has produced, in one view, plus a PDF of the agreement itself you can send to the customer.
Recurring revenue in reporting
Active contract value is prorated daily into the revenue report as its own series, so you can see recurring separately from job work.

Module 08

Inventory & Costing

Perpetual weighted-average costing on an unbreakable ledger

This is accounting-grade inventory, not a stock counter. Every movement is a journal entry with before-and-after quantities, and unit cost is recalculated at the moment goods are received, so job costing uses what the part actually cost you, not last year's list price.

Stock is never edited behind the ledger's back. Mistakes are corrected by posting a linked reversing entry, exactly the way a general ledger works.

Item transaction history
Item transaction history
Warehouse and truck stock
Every stock location is either a warehouse or a truck tied to a specific vehicle and its assigned technician, with on-hand quantities tracked per item, per location.
Weighted-average cost, maintained automatically
Receiving at a new price recalculates the item's average cost immediately, and every change is journaled with the quantity, cost and vendor that caused it.
Complete movement history
Receipts, transfers, adjustments, counts and job issues, each with a running balance and a link to the document or work order behind it. Exportable to CSV and PDF.
Issue parts to a job
Technicians consume stock against the work order they're on: a deliberately narrow permission that lets them draw parts without seeing costs or touching anything else in inventory.
Transfers and adjustments
Move stock between the warehouse and any truck, or adjust a count up, down or to an exact figure, with the reason recorded.
Cycle counting
Count a location, enter what you actually found, and the system posts only the variance, stamping the count date even when everything matches.
Reorder control
Minimum, maximum, reorder point, reorder quantity and lead time per item, with a low-stock banner and vendor-grouped reorder suggestions.
Barcode scanning
Scan an item with the phone camera to look it up or adjust it, with manual entry always available as a fallback.

Module 09

Purchasing & Vendors

Partial receiving, serial capture and reversible receipts

Purchase orders handle the messy reality of supply: split deliveries, price changes between order and receipt, serial numbers on arrival, and the occasional receipt posted in error.

Receive against a line as many times as the vendor splits the shipment. Over-receipt is blocked, and any receipt can be reversed, backing out the stock and voiding the serials it created.

Purchase order detail
Purchase order detail
Partial receiving
Post multiple receipts against a single PO line, each with its own quantity, destination location, packing-slip number and notes. Line and PO status roll forward on their own.
Receive at the real price
Override the unit cost at receipt when the vendor's invoice doesn't match the order, and the item's weighted-average cost updates accordingly.
Serial capture on arrival
Scan serial numbers as the boxes come off the truck in continuous scanning mode with a running count. Each one becomes a tracked serialized unit automatically.
Reversible receipts
Reverse a receipt to back the stock out, void the serialized units it minted and roll the line and PO status back down.
Job and customer costing
Link a PO to a work order and a customer for special orders, so the cost lands where it belongs.
Vendor-grouped reorder suggestions
Everything at or below its reorder point, grouped by the vendor you'd actually buy it from, with a suggested quantity.
Vendor register
Contacts, payment terms, tax ID and addresses, plus counts of linked items and purchase orders. Deactivating a vendor keeps the history intact.
Per-vendor catalog pricing
Hold each vendor's SKU, unit cost, lead time and minimum order quantity for an item, with one flagged as primary.

Module 10

Price Book & Pricing Tiers

One catalog, different prices for different customers

The catalog holds what you sell and what it costs you. Pricing tiers sit on top, so a commercial account on a preferred agreement sees its own price without you maintaining a second catalog.

Overrides work three ways: a percentage off, an amount off, or a flat replacement price, resolved per item, per tier.

Items: Inventory, Non-Inventory and Discounts
Items: Inventory, Non-Inventory and Discounts
Items: Discounts
Hierarchical categories
Nest categories as deep as your catalog needs, with a browsable sidebar on the item list.
Inventory, Non-Inventory and Discounts menus
A separate axis from what the item is: which of the three books it's carried in for accounting, with a live count on each tab and a move-selected-items action to reclassify in bulk.
Fast item search everywhere you pick one
Pricing tier overrides and the QuickBooks item mapping search the catalog as you type instead of loading every item up front, so a big catalog stays fast.
Full item records
SKU, description, type, unit cost, unit price, unit of measure, warranty months, vendor part number and an image.
Named pricing tiers
Create tiers such as Commercial Preferred with a blanket discount, then override individual items where the blanket rate doesn't apply.
Automatic price resolution
When you're building a document for a customer on a tier, the catalog shows that customer's effective price alongside the list price.
Safe deactivation
Retiring a tier leaves existing customers on their assigned pricing rather than silently repricing their agreements.
CSV import
Load a full catalog from a supplier price list using a downloadable column template.
Barcode lookup
Scan a SKU to find an item anywhere in the catalog.

Module 11

Equipment & Serialized Units

Know what's installed, who installed it, and when it's out of warranty

Two connected registers: the customer's equipment as an asset record, and your serialized stock as individually tracked units. Installing a unit ties the two together and creates the warranty clock.

Three separate warranty dates per asset: your labour warranty, the manufacturer's parts warranty and a recommended replace-by date, because they genuinely expire at different times.

Customer equipment register
Customer equipment register
Customer asset register
Make, model, serial number, install date, condition and specification, tied to the customer, the specific location and the work order it was documented on.
Warranty filtering
Filter the register to active, expired, or expiring within 90 days: a replacement-sales list you can work straight off the screen.
Documented in the field
Technicians can add and update equipment on site without special permission, so the register gets built as work happens rather than in a data-entry session later.
Unit-level serial tracking
Every serialized unit carries its serial number, status, current stock location, the receipt that brought it in, its purchase cost and its warranty expiry.
Install and uninstall
Installing takes a unit out of stock and records the customer, location, job, install date and warranty expiry. Uninstalling returns it to stock without destroying the history.
Field-safe permissions
A technician installing a unit must attach it to a job they're actually assigned to.
Bulk operations
CSV import for equipment, and multi-select bulk export and delete for serialized units.

Module 12

Reporting

Nine reports covering money, work and stock

Reports are split by permission, so an owner or bookkeeper can be given the financial picture without being given the run of the system. Every chart has the underlying table beneath it, and it exports.

The revenue report separates what you invoiced from what you actually collected, and prorates active contract value across the period as a third line.

Reports: revenue
Reports: revenue
Revenue
Invoiced, collected and recurring-contract value as three independent series, over any date range, bucketed by day, week or month, with a breakdown table and CSV export.
Technician time
A weekly sheet of actual clocked time against work orders, not scheduled hours, per technician with a daily breakdown and a bar chart, and anyone still clocked in flagged as open.
Accounts receivable aging
Current, 1–30, 31–60, 61–90 and 90-plus days, with counts and amounts per bucket and the full itemized list of open invoices behind them.
Work orders
Counts by status, by type and by business unit, plus completion rate and average job duration calculated from actual start and end times.
Technician performance
Jobs completed and revenue attributed per technician.
Customers
Revenue and job count per customer, top customers by revenue, returning-customer flags, new customers this month and average revenue per customer.
Sales by lead source
Invoice count, amount invoiced and amount collected, attributed to the source that brought the customer in.
Quote pipeline
Value and count by status, win rate on decided quotes, and total open pipeline value.
Inventory
Total stock value, low-stock count, value received in the last 30 days, value by location, top items by value, recent cost changes and purchase orders by status.

Module 13

Administration, Roles & Audit

Granular permissions and a complete record of who did what

Access is controlled by 32 individual permissions you edit yourself from a matrix in the settings screen, not by fixed roles chosen for you. Sensitive figures are stripped on the server, so a technician's device never receives a cost it isn't allowed to see.

Deactivate a user and it takes effect on their very next request. There's no waiting for a session to expire.

Settings: permission matrix
Settings: permission matrix
Permission matrix you control
32 permissions across 21 groups, editable per role at runtime and applied immediately on save. Reporting, voiding invoices, seeing pay rates and issuing parts are all separate keys.
Every list arranges itself your way
Drag a column header to reorder any table in the system, and it's remembered next time you open that screen. CSV exports follow whatever order you've set.
Costs hidden at the source
Wholesale cost, purchase cost, margins and pay rates are removed from the response before it leaves the server for a user without financial permission, not just hidden in the interface.
Complete audit log
Every successful create, update and delete across the entire system is recorded with the user, the action, the record, the time and the originating IP address. Passwords, secrets and tokens are stripped before anything is stored.
Filterable activity history
Search the audit log by entity, action or user, from the Activity Log tab in settings.
Configurable statuses and colours
Statuses, priorities, payment methods, unit types and dozens of other dropdowns are configuration, not code, including the colour each status badge displays.
Company and document settings
Company details, currency, default invoice and quote terms, and eight independent document-number prefixes and counters.
User management
Invite users, reset passwords with a one-time credential shown once, and deactivate accounts. Technician profiles are created automatically.
Global search and command palette
One search box across customers, work orders, invoices, quotes, technicians, equipment and catalog items, reachable from anywhere with a keyboard shortcut.
Built-in help
A written guide for every screen, shown the first time someone lands there and always available from the header, plus a searchable help centre.

Want to see any of this for real?

Every feature on this page is in the working product. Pick the three that matter most to your shop and we'll start the demo there.