Case study

Three locations, one margin view.

A multi-location auto repair group ran its entire operation on Tekmetric. The data was complete. The reporting wasn't.

The platform

Tekmetric shop management — work orders, invoicing, parts, technician time. Solid at running the day.

The gap

No consolidated multi-location view, no line-item margin, no custom period bucketing. Canned reports only.

The build

Scheduled API pipeline into SQL Server, a modeling layer, and a Vue 3 dashboard. Architected and built solo.

The problem

Revenue was visible. Profit wasn't.

The owner could pull revenue for any location and any month. What he couldn't do was answer the question that actually drives decisions: which work is worth taking?

Shop management platforms store parts cost, labor hours, technician assignment and job type at the line-item level — all of it. But the reporting surface exposes summaries. You get a total. You don't get the composition of that total, and you can't slice it by the categories your business actually uses.

With three locations, the problem compounded. Each shop had its own numbers. Comparing them meant exporting three times, aligning the columns by hand, and rebuilding the same spreadsheet every month.

What was actually needed

  • Gross profit by job type, not just revenue by job type
  • All three locations consolidated, with the ability to drill back down
  • Labor versus parts contribution, separated and comparable
  • Technician productivity measured consistently across shops
  • Date ranges the owner defines — not the vendor's fixed periods
The build

Extract, model, then display. In that order.

The temptation on a project like this is to point a BI tool at the API and start making charts. That produces something demo-able in a week and untrustworthy in a month, because the hard part isn't the chart — it's deciding what a "job" is, and making that definition hold across three shops that don't enter data identically.

Extraction

A scheduled integration against the Tekmetric API pulls invoices, line items, parts, labor and technician records into SQL Server. It runs nightly, handles pagination and rate limits, and is idempotent — a failed run can simply be re-run without duplicating records.

Modeling

This is where most of the actual work lives. Raw line items get normalized and bucketed into the categories the business thinks in, with cost attached at the line level so margin is computed rather than estimated. Location, period and job-type dimensions are modeled once, in the database, so every number on every screen derives from the same definition.

Interface

A Vue 3 front end built for the person who runs the business, not for an analyst. Custom date bucketing, location rollup and drill-down, and margin views that put revenue and cost side by side. No training required, because it uses the same vocabulary the shop already uses.

The result

Questions that used to take a day now take a click.

The monthly hand-built spreadsheet is gone. Margin by job type is visible across the group and per shop, on any date range, without an export step. When the owner wants to know whether a category of work is carrying its weight, the answer is on screen.

The platform still runs the business. It just stopped being the ceiling on what the owner can see.

Running into the same wall?

The platform is different in every industry. The gap is remarkably consistent.