Home services · Budgeting platform · In use since 2023
Off spreadsheets, across nearly 60 locations.
TurnPoint Services is a PE-backed home services company that keeps buying great local HVAC, plumbing and electrical businesses. Every one of those locations has to build a budget. We built the platform the whole company plans in, and we've shipped a new version before every budget season since 2023.
- Client
- TurnPoint Services
- Industry
- Home services (HVAC, plumbing, electrical)
- Users
- Finance leaders and general managers
- Status
- In use since 2023, version 4 in 2026
By the numbers
- 59: Locations planning in one system
- 573: Departments with their own budget lines
- 223: People who sign in to build the budget
- 854: Monthly results reports filed, every month of the year
Source: platform data, August 2026.
Every acquisition added another spreadsheet.
Budget season used to mean a spreadsheet per location, emailed back and forth, then stitched together by finance. Revenue assumptions, headcount, salaries, overhead allocations, all of it lived in files that only a few people could safely edit.
Every new acquisition made it worse. More locations, more versions, more chances for a formula to break quietly and throw off the number the owners actually care about: EBITDA.
Finance needed one place where every general manager could build their own plan, and leadership could see the whole company roll up without anyone copying and pasting.
The planning system a multi-location company runs on.
- Revenue builds: Service, install, construction and booked-job revenue, built the way each location actually makes money.
- Headcount and payroll: Employee rosters pulled from UKG, salaries, taxes and staffing plans by department, so labor cost is built from real people, not a plug number.
- Expenses and allocations: Cost of goods, overhead, capital spending, and shared-cost allocations across subsidiaries, calculated the same way everywhere.
- Budget review down to EBITDA: A full P&L for every location, with variance math across every section, so leadership sees exactly where a plan moved and why.
- Monthly results, all year: General managers file a monthly flash report against budget, so the plan stays useful after it's approved.
- Sign-in, approvals and exports: Company Microsoft sign-in with roles, an approval workflow with a full audit log, and exports in the format Sage Intacct expects.
From a blank plan to a locked company budget.
- Load the foundation: Finance loads the chart of accounts, locations, departments and actuals. Every row is checked before anything is saved.
- Bring in the people: Employee data flows in from UKG, and staff sign in with their company Microsoft accounts.
- Build the plan: Each general manager builds revenue, headcount and expenses for their own locations.
- Roll it up: More than 50 calculators roll everything into a location P&L, all the way down to EBITDA.
- Review and lock: Leadership reviews, approves and locks, and the budget exports for the accounting system.
- Track it all year: Every month, managers report actuals against the plan they built.
The rules finance cares about, enforced in code.
No locking a budget outside the agreed band
When a location has an EBITDA target, its budget can't be submitted if it lands outside the agreed range, above or below. No override, not even for admins, and stale totals block submission too.
let deviation: Double = abs(Double(ebitda - target)) / abs(Double(target))
let status: EBITDAGateStatus
if deviation <= band {
status = .passing
} else if ebitda < target {
status = .below
} else {
status = .above
}
// A hard block: there is no override for approvers or super admins.
static func blockReason(for result: LocationEBITDAGateDTO) -> String? {
switch result.status {
case .passing, .noTarget: return nil
case .totalsStale:
return "budget review totals are out of date, run Update Totals before submitting"
case .below, .above:
return "budgeted EBITDA is outside the agreed target tolerance"
}
}
Built with: Swift server, PostgreSQL, React, TypeScript, Microsoft Entra ID sign-in, UKG, Sage Intacct exports
One budget, one version of the truth.
Version 4 got TurnPoint off spreadsheets for good. Each year's version adds what finance asked for after the last budget season.
- 223 people build one budget for 59 locations and 573 departments, in one system.
- 854 monthly results reports filed, so the plan gets used all year, not just in budget season.
- Every acquisition joins as new locations in the platform, not as another spreadsheet.
- Four versions shipped since 2023: about 96 screens and 390+ endpoints behind one login.
I would give you guys a 10 out of 10… being able to work with you and Craig and helping to kind of outlay what that step by step is going to look like has made things a lot easier for me.
Your budget lives in a pile of spreadsheets.
- You run more than one location and every one plans in its own file.
- Finance spends budget season copying, pasting and chasing versions.
- You keep acquiring, and every deal makes planning harder.
Book a call with Josh | Turn a spreadsheet into an app
Frequently asked questions
- What did Solid Giant build for TurnPoint Services?
- A budgeting and forecasting platform where 223 finance leaders and general managers build one budget for 59 locations and 573 departments: revenue builds, headcount and payroll, expenses and allocations, a full P&L down to EBITDA, and monthly results against budget.
- What does it connect to?
- Microsoft Entra ID for sign-in and roles, UKG for employee data, and Sage Intacct through validated imports of actuals and exports in Intacct's format.
- Can a custom app really replace budgeting spreadsheets?
- Yes, when the spreadsheets exist because no product fits how you plan. TurnPoint has planned every budget season in the platform since 2023, with a new version each year.
All work