TotalApp Docs

Permits & Zoning Compliance

Country-aware permit applications, zoning & land-use rules, and legal contracts & liens for every jobsite.

Overview

Permits & Zoning Compliance is Construction's legal paperwork group — three screens that track everything a jobsite needs on file with a regulator, a municipality, or a subcontractor's insurer, all sharing the same jurisdiction-aware form engine so no screen hand-codes a country's paperwork rules.

Permit Applications

Building, environmental, and scaffolding permits per jobsite — issuing authority, submission/expiry dates, status, and which permits are critical enough to gate site work.

Zoning & Land Use Rules

Each parcel's legal building envelope — floor area ratio, lot coverage, height and setbacks, seismic classification — compared against what's actually being designed.

Legal Contracts & Liens

Master contracts, insurance policies, mechanic's liens, and lien waivers held against subcontractors and suppliers, plus the financial exposure they carry.

Jurisdiction-Aware

Every form is generated by the Compliance Engine from the jobsite's own country — a Turkish site sees Ada/Parsel/SGK fields, a US site sees parcel/OSHA/contractor-license fields.

Quick Start

  1. Open any of the three screens from the Permits & Zoning Compliance sidebar group.
  2. In the toolbar, confirm or override the jurisdiction — it's pre-filled from the active jobsite's country, but can be changed with the Globe/ChevronDown dropdown.
  3. Click New Record and pick the jobsite the record belongs to.
  4. Inside the modal, click Generate Form to pull the jurisdiction-specific field set from the Compliance Engine, or fill in the standard fields directly.
  5. Save the record — it appears immediately in the screen's ledger with a monospace ID (PRM-, PAR-, or CTR- prefixed).
  6. Watch the health/risk gauge at the top of each screen — it flags expiring permits, overbuilt parcels, or unresolved legal exposure at a glance.

Different Countries, Different Regulations

Construction jobsites operate under different legal regimes depending on where they are — Turkish sites file Ada/Parsel/SGK paperwork, US sites file parcel/OSHA/contractor-license paperwork. Rather than hand-coding a separate form per country per screen, all three screens in this group ask the Compliance Engine for a schema built from the jobsite's own jurisdiction, and render whatever comes back through a shared dynamic form renderer. Permit Applications tracks the permits themselves and their expiry dates; Zoning & Land Use Rules tracks each parcel's legal building limits against what's actually being designed; Legal Contracts & Liens tracks the paperwork trail with subcontractors and suppliers and the financial exposure it carries.

Permit Applications
Zoning & Land Use Rules
Legal Contracts & Liens

Permit Applications, Zoning & Land Use Rules, and Legal Contracts & Liens share a common data model and a shared set of cross-screen behaviors for expiry checking, zoning-variance calculation, syncing to Real Estate, risk exposure totals, subcontractor compliance checks, and deriving the subcontractor registry. All three screens share the same jurisdiction-picker pattern: a toolbar-level searchable dropdown styled with a Globe icon and a ChevronDown (so it reads as a dropdown filter rather than a search box), pre-filled from the selected jobsite's country/region and overridable per-record inside the Add/Edit modal.

1. Permit Applications

Purpose: The register of building, environmental, and scaffolding permits for every jobsite — issuing authority, submission and expiry dates, status, and whether the permit is critical enough to gate site work.

Key features

  • Monospace permit IDs — auto-numbered as PRM-2026-0001 and up, scoped per calendar year.
  • Three permit categoriesbuilding / environmental / scaffolding, each mapped to a dynamic permitType value ({category}_permit) that's sent to the Compliance Engine when generating the form.
  • Four-state statuspending / approved_active / expired / revoked.
  • Critical flag — a permit can be marked critical, meaning its expiry or revocation should block site work; the compliance health gauge in the toolbar shows the number of days to the nearest critical permit's expiry across every critical permit.
  • Country-aware "Generate Form" button — inside the Add/Edit modal, this pulls the jurisdiction-specific field set from the Compliance Engine and renders it in place — a Turkish jobsite gets Ada/Parsel/Pafta/SGK/TAKS/KAKS fields, a US jobsite gets Parcel ID/Contractor License/OSHA fields, anything else gets the generic fallback form.

Integration triggers

ActionWhat it does
Mark a critical permit expired/revokedThe jobsite is flagged as having an invalid critical permit — the check exists and is correct, but as of this session it is not yet actually consulted by Daily Site Logs or Subcontractor Tasks in Site Execution, so nothing in those two screens currently reacts to a blocked jobsite. This is a real, acknowledged gap, not a hidden one.
Change the jurisdiction pickerRe-generating the form schema for the newly selected country replaces the dynamic field set shown in the modal — the stored form data from a previous jurisdiction is not automatically migrated.

2. Zoning & Land Use Rules

Purpose: Each parcel's legal building envelope — zoning district, floor area ratio, lot coverage, height and setback limits, seismic classification — compared against what's actually being designed for that parcel.

Key features

  • Monospace parcel IDs — auto-numbered as PAR-2026-0001 and up.
  • Legal maximums vs. designed valuesmaxFloorAreaRatio/maxLotCoverageRatio/maxHeightMeters/three setback fields hold the legal limits; designedFloorAreaRatio/designedLotCoverageRatio hold what the architect is actually proposing.
  • Overbuild variance meter — the screen takes the larger of the FAR ratio and lot-coverage ratio (designed ÷ legal max) and flags an overbuild whenever that ratio exceeds 1.
  • Seismic classification — reuses the same seismic classification categories Real Estate already defines, rather than inventing a parallel set.
  • Fixed permit type — every zoning record's Compliance Engine request uses the same fixed permit type internally.
  • "Sync with Property Valuation" action — pushes this parcel's zoning district, FAR, lot coverage, height, and seismic classification onto a matching Real Estate property's zoning constraints, and records which property the parcel was synced to.

Integration triggers

ActionWhat it does
Sync with Property ValuationWrites the zoning constraints onto the matched property in Real Estate. As of this session, Real Estate's Property Valuation screen does not yet read this field back into its appraisal math — the sync only writes today; feeding it into valuation is known future work, already surfaced to the user earlier this session, not something this doc should imply is finished.
Design exceeds a legal maximumThe variance calculation returns a ratio above 1, which the screen renders as an overbuild warning next to the record.

3. Legal Contracts & Liens

Purpose: The paper trail of master contracts, insurance policies, mechanic's liens, and lien waivers held against subcontractors and suppliers — and the financial exposure that trail represents.

Key features

  • Monospace contract IDs — auto-numbered as CTR-2026-0001 and up.
  • Two entity typessubcontractor or supplier; a subcontractor's name is a free-text name, since Construction deliberately has no dedicated Subcontractor Root Entity — the subcontractor list is instead derived as a unique, sorted name list from existing Subcontractor Task records, the same "derive from usage" pattern already used for vendors seen only in material deliveries. This is a deliberate architectural choice made this session, not an oversight.
  • Four document typesmaster_contract / insurance_policy / mechanics_lien / lien_waiver.
  • Four-state statusactive / disputed / settled / breach_notice.
  • Risk exposure gauge — sums the value at risk across every disputed/breach_notice contract, plus any insurance_policy document that isn't currently active.
  • Fixed permit type — every legal record's Compliance Engine request uses the same fixed permit type internally.
  • Subcontractor compliance check — returns true only when the subcontractor has an active master contract, valid (active or settled) insurance, and no unresolved lien — or when no legal record exists yet at all.

Integration triggers

ActionWhat it does
Subcontractor fails complianceThe compliance check returns false. As of this session, Equipment Allocation and Daily Site Logs do not yet consult this check before allowing a subcontractor or crew to be assigned — the check is real and correct, but the cross-screen enforcement wiring in those two screens hasn't been built yet. This is a real gap, stated plainly rather than implied as finished.
Log a disputed contract or breach noticeIts value at risk is immediately counted on the next render of the toolbar gauge.

End-to-end data flow

Source screenActionTarget screen / record
Permit ApplicationsCritical permit marked expired or revokedJobsite flagged as having an invalid critical permit — not yet consumed by Daily Site Logs or Subcontractor Tasks in Site Execution (known gap)
Zoning & Land Use Rules"Sync with Property Valuation" actionWrites the zoning constraints onto the matched property in Real Estate — not yet read back by Property Valuation (known gap); see Real Estate
Legal Contracts & LiensSubcontractor fails the compliance checkNot yet consumed by Equipment Allocation or Daily Site Logs (known gap)
Permit Applications / Zoning / Legal Contracts"Generate Form" in the Add/Edit modalCompliance Engine builds a jurisdiction-specific field schema, rendered in place

AI Assistant on every screen in this group

Permit Applications, Zoning & Land Use Rules, and Legal Contracts & Liens each carry an embedded AI Assistant — the same right-edge panel used across TotalApp, opened from the vertical AI Assistant tab. Every panel reads the live rows on screen (or your current selection), can summarize permit and contract status, flag critical permits nearing expiry or zoning-ratio violations, and answer natural-language questions in Markdown (Turkish or English), and ships with Save as Report and Add Knowledge.

Frequently Asked Questions

Do all three screens in this group have an AI Assistant?
Yes — Permit Applications, Zoning & Land Use Rules, and Legal Contracts & Liens each ship with an embedded AI Assistant (selection-aware on Permit Applications and Zoning & Land Use Rules; view-scoped on Legal Contracts & Liens, with Save as Report and Add Knowledge on all three). Open it from the right-edge AI Assistant tab on any of the three screens.
Does the permit form's field set change based on the permit category (building vs. environmental vs. scaffolding)?
No. The permit category is passed to the Compliance Engine as a free-form value, but today the engine's form logic only branches on country, not on permit category. A Turkish jobsite always gets the same Ada/Parsel/SGK/TAKS/KAKS field set regardless of whether the permit is a building permit or an environmental permit. This is an honest architectural note, not a bug — a natural next step, not something fixed in this release.
What happens if a jobsite's country isn't Turkey or the US?
The Compliance Engine's default strategy returns a generic fallback form (permit type, site address, notes) and never fails. Germany, the UK, and the UAE are all selectable in the jurisdiction picker today, specifically so a holding company's multi-country jobsites can be represented even before a dedicated strategy exists for those countries.
If I change a jobsite's jurisdiction after a permit already has form data saved, does the old data get migrated?
No. Re-generating the schema for a new country replaces the field set shown in the modal; the previously saved form data for the old jurisdiction's fields is not automatically mapped onto the new ones.
Is a jobsite actually blocked from further work when a critical permit expires?
The permit-validity check correctly computes the flag, but as of this session no screen actually enforces a stop-work block based on it — Daily Site Logs and Subcontractor Tasks in Site Execution don't consult it yet. The check is ready; the enforcement wiring is a known gap.
Does Real Estate's Property Valuation screen use the synced zoning constraints?
Not yet. "Sync with Property Valuation" writes the zoning constraints onto the matched property, but the Property Valuation screen does not currently read that field back into its appraisal calculation. The sync is a one-way write today.
Why is there no dedicated Subcontractor entity to pick from a dropdown?
This was a deliberate design decision this session, not an oversight. Construction has no Subcontractor Root Entity yet, so the subcontractor list is derived as a unique, sorted name list directly from existing Subcontractor Task records — the same pattern already used to list vendors seen only in material deliveries.
Where does the jurisdiction shown in each screen's picker come from by default?
It's resolved from the selected jobsite's own country/region fields. If no jobsite is selected, it defaults to the first jobsite alphabetically — documented as "the honest default," since a jobsite has no last-active timestamp to prefer instead.