Job profitability software is not the only way to see whether a job made money. Most of the data you need, time logged against the job and the cost of materials that went into it, already sits in your CRM and your Airtable base. The question is not whether the data exists. It is whether you pay a vendor to join it up or build the join yourself.
What you actually need to see per job
Strip away the dashboards and job profitability software does one thing: revenue minus labor cost minus materials cost, shown per job, not per quarter. If a job billed at 4,200 EUR took 38 hours of labor at a blended cost of 45 EUR an hour and 900 EUR of materials, the margin is 1,590 EUR, or about 38 percent. That number is only useful if you see it the week the job closes, not two months later when the bookkeeper reconciles the quarter.
Job costing software earns its place only if it also tells you which line item ate the margin, labor or materials, before the next quote repeats the same bad assumption. The reports, the graphs, the client portals are decoration on top of that one number.
The two ways to get there
There are only two real paths to a working job margin tracker: buy one or build one. One is a licensed tool built for job costing, sold per seat, with its own database and its own login. The other is a margin tracker assembled from data you already generate in your CRM and Airtable, joined by a flow that runs on a schedule or a trigger.
The trade-off is simple. Buying gets you a finished interface faster, at a recurring per-seat cost, on someone else's schema. Building takes a bit longer up front and gives you a job margin tracker that lives inside the accounts you already control, at no license cost, shaped exactly around the job IDs and cost categories you already use.
What dedicated job costing software actually costs
The sticker price on job costing software is rarely the real price. Per-user fees typically run 30 to 80 EUR a month per seat, and a crew of ten field staff plus five office staff means fifteen logins, not one. Onboarding usually takes two to six weeks of someone's time mapping your job types, cost codes and labor rates into the vendor's structure before the first report means anything.
Then there is the crew's second login. Field staff already clock time somewhere, usually the CRM or a scheduling tool. Job costing software asks them to log it again in a separate system, which is where adoption quietly dies, because nobody wants to enter the same job number twice a day.
And if you cancel, the data usually does not leave cleanly. Most tools export a CSV of summary figures, not the underlying time entries and material line items, so a year of job history becomes a spreadsheet you cannot query the way the tool could.
The data you already have and where it already lives
Here is what most teams miss: the raw material for job profitability tracking is usually already being captured, just not joined. Time against a job is logged as an activity or a call note in the CRM every time someone updates a deal or a job record. Materials cost is usually already sitting in an Airtable base, or on a supplier invoice that gets keyed into Airtable when it arrives.
The gap is not data collection. The gap is that nothing joins the CRM time entry to the Airtable material line to a single job ID and does the subtraction. That join is a small, well-defined piece of work, not a big undertaking.
How the tracker actually gets built
A job margin tracker is built as a flow, not a product. In n8n, a scheduled trigger, or a webhook fired when a job status changes, pulls time entries from the CRM filtered by job ID, and pulls material line items from the matching Airtable record. The flow matches both to the same job ID, multiplies hours by labor rate, sums the materials, subtracts both from the invoiced revenue, and writes the margin back to a single record per job in Airtable.
That single record becomes the one place anyone checks. A sales lead can open the job record and see the margin the day the last invoice is logged, not at month end. If a job runs over on materials, the number moves the same day the supplier invoice is entered, because the flow re-runs on that trigger too.
This is not a large build. It is one flow with two data sources, a lookup, three subtractions and a write-back step. The complexity most vendors sell you is complexity you do not have.
What it costs to run once it exists
Once the flow exists, running it costs nothing in license fees. The occasional cost is a fix when the CRM changes a field name or a new job type needs a new cost code mapped in, typically an hour or two of work, not a new contract.
Compare that to the bought version, which keeps charging per seat every month whether anyone opens it or not. Ten licenses at 50 EUR a month is 6,000 EUR a year, indefinitely, for a calculation that does not get more complex the longer you run it. A build carries a twelve month warranty instead of an ongoing charge: if something breaks in that window because of how it was built, it gets fixed at no extra cost, and after that you are not paying rent on a tool you already own.
When buying job profitability software is the right call
Buying job costing software is the right call in a few specific cases, and it is worth being honest about them. If you run multiple legal entities with consolidated accounting requirements, a purpose-built tool with audited financial controls earns its keep. If time and materials do not carry a consistent job or deal ID anywhere today, that is a data cleanup problem to solve before any tracker, bought or built, will work.
And if there is genuinely no one on the team who can maintain even a simple flow, a vendor's support desk has value, because a broken join that nobody can fix costs more than any license fee. These are the real exceptions. Multi-entity accounting, no job ID discipline, or no maintainer. Outside of those three, the case for buying instead of building gets thin fast.
How to decide this week
Three checks settle this without a demo call. First, count your job types. Five recurring job types with a stable cost structure make a strong case for a build; fifty custom one-off project types with unique billing terms lean toward a configurable bought tool.
Second, check whether time and materials already carry the same job or deal ID in your CRM and Airtable. If they do, the join is mechanical and a build is fast. If they do not, fix that first regardless of which path you choose.
Third, size the build cost against the cost of another year of licenses. If a build costs less than eighteen months of per-seat fees and the ID discipline already exists, build it. You can also run the numbers on your own admin cost before deciding either way.
We build job profitability tracking the second way, built into the tools you already run, so time, materials and margin sit in one system for time, materials and margin instead of a fifth login. If you want to know what a build like this would cost for your job types before committing to anything, the Revenue Roadmap scores it against every other use case sitting in your backlog and puts a fixed price on the build.
Common questions
Is job costing software the same thing as job profitability software?
Job costing software tracks what a job cost to deliver. Profitability tracking adds revenue and margin on top, so the two terms usually describe the same buying decision.
Can Airtable alone replace job profitability software?
Airtable can hold the materials and margin data, but it needs a flow like n8n to pull in time logs from the CRM automatically. Otherwise someone is retyping numbers every week.
Does a built tracker update in real time like paid software claims to?
It updates as often as the flow runs, which can be every time a job status changes if the trigger is set that way, so it matches or beats most licensed tools on speed.
What happens to the margin tracker if we stop working with whoever built it?
Nothing stops, because it runs inside your own CRM and Airtable accounts, not inside a tool someone else can take away.
Most teams asking about profitability tracking are really asking whether the number can appear the week a job closes instead of the month it closes. That answer lives in whichever system already holds your job IDs, not in a new login for the crew to fight over.




