DEV Community

Robert Mendola
Robert Mendola

Posted on

What Permit Files Can Teach Us About Reliable Workflow Software

Paperwork-heavy workflows rarely fail because a database cannot store another PDF. They fail because the system loses the relationship between the document, the real-world object, the decision it supports, and the stage of work it represents.

Permits provide a useful example. A complete project record is not one uploaded form. It is an evidence chain that changes over time.

A recent Local Service Ledger guide to Pasco County septic-repair records organizes the file into eight stages: property, existing system, site, pump-out, water and sewer, application, permit, and closeout. The guide's most important software lesson is that a receipt or contractor proposal alone does not establish the complete chain from reported problem to final recorded status.

That distinction generalizes well beyond permits.

1. Give every workflow a stable subject

Every document should attach to a stable entity: a property, customer, asset, case, project, or account.

Do not rely on a filename or free-form address as the only identifier. Normalize enough data to prevent obvious duplication, preserve the source value, and retain a stable internal ID.

For a property workflow, several records may contain slightly different owner names or address formatting. The system should help a reviewer determine whether they refer to the same site without silently overwriting those differences.

2. Separate observations, proposals, and decisions

These are different kinds of facts:

  • an owner reports a symptom;
  • a contractor proposes a scope;
  • an authority authorizes specific work;
  • an inspector records a result;
  • a final status closes the file.

Collapsing them into one “project description” field destroys provenance.

Model the actor, date, source, and status of each statement. The interface can display the current operational summary while preserving the earlier language that explains how the record evolved.

3. Make state transitions explicit

A reliable workflow should not infer completion because a document exists.

“Application uploaded” is not “application accepted.” “Permit issued” is not “inspection passed.” “Invoice paid” is not necessarily “project closed.”

Define the allowed stages and the evidence required to move between them. Store the transition event, responsible actor, timestamp, and supporting record. If an administrator overrides a rule, record that too.

A useful workflow might expose states such as:

  1. evidence gathering;
  2. ready for submission;
  3. submitted;
  4. correction requested;
  5. approved;
  6. work in progress;
  7. inspection pending;
  8. closed.

The exact labels depend on the process. The important part is that each state has a documented meaning.

4. Preserve revisions instead of replacing history

Project scopes change. Forms are corrected. Plans receive conditions. Dates move.

The Local Service Ledger guide recommends keeping reported condition, proposed work, and authorized work distinct when they differ. Software should make that easy.

Use versions or append-only events for consequential records. Let users see which version was current when a decision occurred. A “replace file” button that erases the earlier submission may produce a clean interface and an unreliable audit trail.

5. Treat source freshness as data

The Pasco guide also identifies a conflict between a current public program page and an undated application packet. Rather than declaring every field current, it tells readers to verify fee, contact, and submission details.

A workflow system should support the same discipline.

For important reference data, store:

  • source URL or issuing system;
  • publication or effective date when known;
  • retrieval date;
  • reviewer;
  • superseded status;
  • notes about conflicts.

When two sources disagree, show the conflict. Do not silently choose the most convenient value.

6. Design closeout as a real stage

Teams often build excellent intake screens and weak endings.

A complete closeout may require inspection results, correction evidence, final approval, customer delivery, asset handoff, or retention rules. Define the terminal record before the project begins. Then the system can show exactly what remains missing.

A green “Complete” badge should mean something a reviewer can explain.

7. Build for reviewers, not only data entry

The best workflow interface answers:

  • What is this case about?
  • Which stage is it in?
  • What evidence supports that stage?
  • What is missing?
  • Which records conflict?
  • Who owns the next action?
  • What will establish closeout?

Dashboards should prioritize exceptions and next actions rather than counting uploaded files.

The broader engineering principle

A reliable workflow system models claims, evidence, actors, time, and transitions — not just forms.

This applies to permitting, insurance, construction, customer onboarding, compliance, field service, and internal approvals. It is also the approach behind the auditable operations features I explore in Mendola.Tech software projects and custom workflow work.

The lesson from a local permit file is surprisingly technical: document storage is the easy part. Preserving the chain of meaning is the product.

Top comments (0)