Guides

Permits and Inspections - Building a Workflow That Closes Jobs Instead of Parking Them (2026)

2026 guide to running permits and inspections as a tracked job stage. Where permits stall, who owns each step, and what open jobs cost in delayed cash.

September 4, 202615 min readBy Jarvis Editorial Team
Permits and Inspections - Building a Workflow That Closes Jobs Instead of Parking Them (2026)

The work is finished and the money is still not yours

There is a specific kind of job that quietly ruins a month. The crew was on site Tuesday, the installation went well, the customer is happy, and the technician marked the job complete before driving to the next call. Six weeks later that job is still open in the system, the final invoice has never gone out, and nobody in the office can say with confidence what is actually blocking it. Somewhere between the last day of work and today, a permit stopped moving and nobody noticed.

As of September 2026, this is still the single most common reason a finished job in a permitted trade sits unbilled. It is not a marketing problem, a pricing problem, or a labor problem. It is a workflow gap in the part of the job that happens after the truck leaves, and it is invisible on every dashboard that measures completed work by whether the technician tapped a button.

This guide is about closing that gap. It covers where permits actually stall and what each stall looks like from the office, why the permit deserves to be a tracked job stage with a named owner and a due date rather than a note in a text thread, how to handle a failed inspection so the correction has a person and a date attached to it, the customer communication load that inspections generate on your phones, what to keep once the permit closes, and the arithmetic of what open permitted jobs cost in delayed cash. The operational side of it runs on Run with Jarvis, where the job record, the calendar, the customer messaging, and the invoicing sit in one system instead of four.

One thing this guide cannot do for you

Permit and inspection requirements are strictly local. Which trades require a permit, which work is exempt, which inspections are required and in what order, how far in advance you must schedule, how long an issued permit stays valid, what happens when it expires, and what a licensed contractor may pull versus what an owner may pull are all set by the authority having jurisdiction over the specific address. Two towns twenty minutes apart routinely answer those questions differently, and a county can differ from the city inside it.

So nothing in this guide tells you what your jurisdiction requires, and you should be suspicious of any article that claims to. Confirm every requirement with your own building department or authority having jurisdiction, in writing where you can get it, for each jurisdiction you work in. If you cross municipal lines regularly, keep a short reference sheet per jurisdiction inside your own system - contact, portal, scheduling lead time, typical inspection window, permit validity period - and treat it as something to re-verify periodically rather than something you learned once.

What this guide does cover is the part that is genuinely the same everywhere: the internal workflow that decides whether the permit cycle takes ten days or forty in the same jurisdiction with the same inspector. That part is entirely yours.

The five places a permit actually stalls

Ask an owner where permits go wrong and you usually get a story about a slow inspector. Occasionally that is true. Far more often the delay is on your side of the line, and it lands in one of five predictable places.

Applied for but never paid. Somebody filled out the application, the fee sat in a portal cart or on a desk waiting for a card number, and the application never actually entered the queue. This one is brutal because every internal record says the permit is in progress. The clock you think started never started.

Issued but nobody scheduled the inspection. The permit is live and valid, the work is done, and the inspection request was never submitted because the person who does the scheduling did not know the work had finished. This is the most common stall in businesses where the field and the office communicate by text message. The information existed; it just never crossed the gap.

Scheduled but nobody was there to meet it. The inspection was booked for a window, dispatch put the technician on a different job that day, and the inspector arrived to a locked house or an unavailable contact. In many jurisdictions that is a wasted slot and a re-request, and the job loses a week for a calendar conflict that a shared calendar would have prevented.

Failed with no owner of the correction. The inspector wrote a correction notice, the technician read it, mentioned it in passing, and it entered nobody's queue. Weeks later somebody finds the notice. Nothing about the failure was hard to fix - it was just never assigned.

Passed but never closed out. The final inspection went fine, the technician knew that, and the office never received the result, so the job stayed open, the retained portion of the invoice never went out, and the customer's file never reached a terminal state. This one is the most infuriating because the entire job succeeded and the only thing missing is the record of it.

Notice what all five have in common. None of them are about competence, and only one is about the inspector. They are all handoff failures - information that existed in one head or one inbox and never reached the person who needed to act on it. Handoff failures are fixed structurally, not by asking people to be more careful.

Make the permit a job stage with an owner and a due date

The single change that fixes most of the above is unglamorous. Stop treating the permit as a piece of paperwork attached to a job and start treating it as a stage of the job, with the same three attributes every other stage has: a status, a named owner, and a date by which it should have moved.

In practice that means the job record carries the permit through its life. Permit required, application submitted, fee paid, permit issued, rough-in requested, rough-in scheduled, rough-in result, work complete, final requested, final scheduled, final result, permit closed. Your jurisdictions may name these differently and may have more or fewer steps, which is fine - the sequence is yours to define, and the point is that it exists somewhere other than in one person's memory.

Each stage needs an owner. In almost every small service business the right answer is that the office owns everything except the parts that require physical presence. Technicians cannot chase a scheduling line between calls, and asking them to try produces exactly the outcome you have now. Give one named person in the office the permit queue, give the technician the two jobs that genuinely require being on site - performing the work correctly and meeting the inspector - and stop splitting the rest.

Each stage also needs a due date, because a stage without a date cannot be late, and a stage that cannot be late will never generate an alert. The date does not have to be accurate. A rough default - three business days from work completion to inspection request, for example - is enough to make an overdue item visible, and you can tune it once you have a month of real data.

This is the same discipline that makes multi-technician dispatch work, and if your job stages currently live in a mix of a whiteboard, a text thread, and someone's head, the CRM and dispatch guide is the prerequisite reading. A permit stage is only trackable if the job record is the place everyone already looks.

Where each stage stalls and what tells you

The following table maps the stages to their characteristic failure and, more usefully, to the signal that reveals the stall. The signal column is the one to build alerts around, because a stalled permit almost never announces itself - you have to notice the absence of something.

Permit stageWho owns itTypical failure modeThe signal that it stalled
Application prepared and submittedOffice permit ownerSits half-completed waiting on a plan detail or a licence numberJob flagged permit required with no submission date after three days
Fee paid and permit issuedOffice permit ownerApplication submitted but the fee was never actually paidNo issued permit number on the job record a week after submission
Work completed on siteField technicianJob marked complete in the field with no note that the permit stage is nextJob status complete while permit stage still shows issued
Inspection requestedOffice permit ownerOffice never learned the work finished, so nothing was requestedWork completed date older than your request target with no request date
Inspection scheduled and attendedOffice schedules, technician attendsInspection window booked but the technician is dispatched elsewhereInspection appointment on the calendar with no assigned technician
Inspection result recordedField technician reports, office recordsResult known on site but never entered, so the job hangsScheduled inspection date passed with no pass or fail recorded
Correction after a failureNamed corrections ownerCorrection notice read by one person and assigned to nobodyFailed result recorded with no correction task and no re-inspection date
Permit closed and job billedOffice permit ownerFinal passed but the closeout and final invoice never went outPassing final recorded with the job still open and the balance uninvoiced

Read that signal column as a specification for a report you should be able to run in ten seconds. Every row is a query against data you already have, and none of them require anything more exotic than dates and statuses on the job record. If you cannot run those queries today, that is the gap - not the permits themselves.

The failed inspection needs a name attached to it

A failed inspection is not a crisis. It is a normal event in a permitted trade, and in many cases the correction is small. What turns it into a three-week delay is that a failure arrives as information rather than as work.

Treat a correction notice the way you would treat a callback. The moment a failure is recorded, three things get created together: a correction task with a named owner and a due date, an estimate of what the correction costs you in labor and parts, and a re-inspection request scheduled after the correction date. Creating all three at once is the whole trick. Creating only the first is how corrections drift, because a task with no downstream date does not compete for attention against jobs that have customers waiting.

The cost estimate matters more than it sounds. A re-inspection trip is not free. Take an illustrative loaded technician cost of 68 dollars an hour and a correction visit that takes an hour on site plus an hour and a half round trip, and you are at roughly 170 dollars of labor before parts, plus the billable capacity that technician did not spend on revenue work. Treat that as an illustration to replace with your own loaded rate. If you have never built that rate for your own crew, the job costing guide covers the arithmetic, and it is worth doing before you argue about whether failures are expensive.

Once the cost is visible, failure reasons become worth categorizing. If a quarter of your failures in one jurisdiction trace to the same detail, that is a training item or a checklist item, and it is cheaper to fix once than to keep paying for. Failures caused by a missing part on the truck are a different problem entirely and belong with truck stock and parts inventory, because a correction that waits three days for a part is a stocking decision wearing an inspection costume.

The customer does not know what a rough-in inspection is

There is a communication load buried in every permitted job that most shops never account for. The homeowner has no idea what any of this means. They know the work looks finished, they know they have been asked to be home for something, and they know nobody has explained why their project is not over.

So they call. They call to ask what the inspection is for, whether they need to be present, what happens if they are not, what a correction notice means, whether they have to pay for a re-inspection, and whether the failure means the work was done badly. Each of those is a two-minute answer and a five-minute interruption, and in a shop running a dozen permitted jobs a month it is a steady drip of calls that arrive during the exact hours your office is trying to dispatch.

Two things reduce it. The first is telling the customer at the point of sale what the permit sequence looks like for their job, in plain language, including that a correction is a routine outcome and not a sign of a problem. Expectations set early prevent most of the anxious calls later, and the sentence to avoid is any promise about a date the building department controls. Tell them the sequence, tell them who will contact them and when, and do not tell them the inspector will be there Thursday unless the inspector has said so.

The second is making sure the calls that do come are answered without pulling somebody off dispatch. This is precisely the load an AI receptionist absorbs well: repetitive, factual, tied to a specific job, and answerable from the customer record. On Run with Jarvis the receptionist answers around the clock in English and Spanish, and because it is reading the same job record the office is looking at, it can tell the customer where their job actually sits rather than promising a callback. When the question genuinely needs a person, it routes. The calls it catches outside office hours are the ones that would otherwise become a voicemail nobody returns, and the pattern behind that is covered in missed call text-back.

Inspection appointments themselves deserve the same treatment as any other appointment. They go on the same calendar, the customer gets the same reminder, and if a homeowner needs to be present, they get told twice. An inspection window that nobody attends costs you a full cycle.

Keeping the record after the permit closes

When a permit closes, the temptation is to consider the job over. It is, operationally. It is not over as a record.

Keep the closed permit itself, the inspection results, any correction documentation, and photographs of the finished installation, and keep all of it attached to the customer file rather than a folder on a shared drive named after the month. Retention requirements are set locally and by your insurer, so confirm both rather than picking a duration that sounds sensible. General small business record-keeping guidance is available at sba.gov.

The practical test for whether your retention is good enough is simple. Three years from now, when a new owner of that property calls with a question, or an insurer asks, or you are quoting follow-on work, can somebody who was not there reconstruct what happened from the customer record alone? If the answer requires finding the technician who ran the job, the record is not doing its job. This is the same argument for keeping quotes, invoices, photographs, and call recordings on one customer timeline, and it is one of the underrated reasons to keep the whole operation in one system.

What open permitted jobs cost in delayed cash

Here is the arithmetic. Treat every figure as an illustration to replace with your own.

Take a shop running twelve permitted jobs a month at an average invoice of 3,800 dollars, with forty percent of each invoice - 1,520 dollars - held back until the permit closes and the final is passed. That is 18,240 dollars a month of retained revenue, accruing at roughly 608 dollars a day.

If your average permit closes ten days after work is complete, you are carrying about 6,080 dollars of that money at any moment. If it closes thirty days after, you are carrying about 18,240 dollars. The difference, roughly 12,160 dollars, is cash permanently parked in the gap between finishing work and closing permits. It is not lost, but it is not available either, and if you are funding payroll or parts on a line of credit at say twelve percent, that gap costs around 1,459 dollars a year in interest for the privilege of doing nothing.

Then add the chasing. Assume each stalled job generates three customer calls and two internal follow-ups at twelve minutes apiece - one hour of office time per job. Twelve jobs a month at a loaded office cost of 28 dollars an hour is 336 dollars a month, about 4,032 dollars a year, spent entirely on finding out where things are.

Neither of those is the biggest number. The biggest number is the job that never closes at all - the one where the final was never requested, the balance was never invoiced, and eighteen months later it is written off because nobody can reconstruct it and the customer has moved. One 1,520 dollar write-off a quarter is 6,080 dollars a year of pure loss, and shops that do not track permit stages have more of those than they think, precisely because an untracked failure is invisible by definition.

Add the three and the illustrative total lands somewhere north of eleven thousand dollars a year for a twelve-job-a-month shop, before counting the reputational cost of the customer who tells people you left their project hanging. Getting the invoice out the same day the final passes, rather than whenever someone notices, is the fastest lever, and the mechanics of that are in get paid faster with payment links.

The two numbers worth tracking

You do not need a permit dashboard. You need two numbers.

Days from work complete to permit closed is the cycle time, and it is the number that converts directly into the cash arithmetic above. Track the average and, more importantly, the tail, because a median of nine days hiding three jobs at sixty days is a different business from a consistent fourteen. The tail is where the write-offs live.

Open permits past their target stage age is the leading indicator, and it is the one to look at weekly. It answers the only question that matters on a Monday morning: which permits stopped moving, and who owns them. If that list is short and every item has a name against it, the system is working. If it is long, or if items on it have no owner, that is the failure showing itself before it becomes a write-off.

Both belong next to your other operating numbers rather than in a separate spreadsheet, and where they fit is covered in the KPI dashboard guide. Reviewed monthly, cycle time tells you whether the process is improving. Reviewed weekly, the aging list tells you what to do today.

Put it together

The permit cycle is not slow because building departments are slow. It is slow because in most service businesses the permit is the only part of a job with no owner, no due date, and no place on a screen anyone looks at. Give it those three things and most of the delay disappears without anyone working harder.

Define the stages for the jurisdictions you actually work in, confirming the requirements with each authority having jurisdiction rather than assuming. Put every stage on the job record with a named owner and a target date. Build the eight signals from the table into a weekly aging list. Treat a failed inspection as work with a person and a re-inspection date attached, not as information. Tell customers the sequence up front and let the receptionist handle the questions that follow. Keep the closed record on the customer file. Then invoice the day the final passes, because that is the whole point.

Compare current plans on the pricing page, and if you want help mapping your permit stages onto job records and aging reports for your own jurisdictions, get in touch.

Related reading

Frequently Asked Questions

Why do permitted jobs stay open so long after the work is finished?
Because the permit has no owner once the technician drives away. The crew finishes, the job feels done to everyone who touched it, and the remaining steps - scheduling the inspection, meeting the inspector, correcting a failure, closing the final - belong to nobody in particular. Work that belongs to nobody in particular does not happen on a schedule. The fix is structural rather than motivational, which means giving each permit stage a named owner and a due date the same way you would for any other job stage.
What is the difference between a rough-in inspection and a final inspection?
A rough-in inspection generally happens while the work is still open and visible, before walls, trenches, or covers go back on, so an inspector can see what would otherwise be buried. A final inspection generally happens after the work is complete and confirms the finished installation. The exact names, sequence, and requirements are set by your local authority having jurisdiction and vary substantially from one city or county to the next, so confirm the specifics with your own building department rather than assuming they match a neighboring jurisdiction.
Who should own permit tracking in a small service business?
One named person in the office, not the technician who ran the job. Technicians are dispatched all day and cannot reliably chase a scheduling line or a portal queue between calls, and a shared responsibility spread across a crew is the same as no responsibility at all. Assign every permit to a single office owner with visibility into the job record, and keep the technician responsible only for the parts that require being physically present, such as meeting the inspector.
How much does an open permitted job actually cost?
It costs the delay on the money you cannot invoice yet plus the administrative time spent chasing it. In the illustrative arithmetic in this guide, a shop running twelve permitted jobs a month with forty percent of each invoice held until final closeout carries roughly twelve thousand dollars of extra parked cash and around four thousand dollars a year of office chasing time, purely from a slow permit cycle. Replace those figures with your own job mix, because the shape of the cost matters more than the specific numbers.
What should we keep once a permit closes?
Keep the closed permit record itself, the signed or stamped inspection results, the corrected-work documentation from any failed inspection, and photographs of the finished installation, all attached to the customer file rather than a shared drive folder nobody can find. Retention periods and required document types are set locally and by your own insurer, so confirm both. The practical test is whether someone who was not there can reconstruct what happened three years later from the customer record alone.
Can Run with Jarvis track permit stages and inspection dates?
Permit stages live on the job record in the CRM included from Core at 500 dollars a month, so a permit becomes a stage with an owner and a date rather than a note in a text thread. Inspection appointments book onto the same calendar as any other job, customers get the same automatic reminders and arrival texts, and the AI receptionist answers the where-is-my-inspection calls that otherwise interrupt the office. Current plan details are on the pricing page.

Keep reading

Stop losing calls. Start booking jobs.

Jarvis answers every call, books the job, and follows up — 24/7, in English and Spanish.