What JobSite actually does
Estimates, budgets, invoices, holdbacks, logs, documents and messages all hang off the same project record. Below is each area, described as the mechanism it is — with its scope and its gaps in the same block.
One project row, and everything hanging off it
The reason the areas below can agree with each other is that they are not separate systems.
- Estimates, budgets, cost records, tasks, milestones, daily logs, documents, messages, permits, inspections, compliance items, invoices and holdbacks all reference the same project row.
- Document versions are content-addressed by a SHA-256 content hash, so re-uploading identical bytes is the same version rather than a second copy.
- Decision and audit ledgers are append-only and hash-chained in the database, so history is added to rather than rewritten.
The model owns the words; code owns the arithmetic
JobSite's estimating engine is built around a split of responsibility rather than a prompt that is asked to be careful with numbers.
- The language model owns scope, quantities and line descriptions. Contingency, margin and Ontario HST at 13% are computed deterministically in code.
- Each line's confidence is derived from the estimate's own flags — a rules output, not a model's opinion of itself.
- An AI run is enqueued as a governed job with a named purpose, required scopes, a prompt key and an output schema, against authorized project records only. Free-text and image payloads are refused at the API boundary.
This describes JobSite’s estimating engine and its data model. The estimates workspace calls a platform estimating service that has not been verified end to end, and no AI provider key is present in this environment — so whether a model answers a run today is unverified.
Permits, inspections and compliance items, tracked per project
Ontario’s Building Code sets maximum permit review windows by building class, running from a complete application. The tracking is built around that shape.
- Permit applications, inspections and compliance items are tracked per project against Ontario and Ottawa references.
- Seeded zone rules cite City of Ottawa Zoning By-law 2008-250 by section.
- Deadline kinds include the lien-holdback and substantial-performance clocks, so a statutory date is a date the system knows about rather than a note.
Ottawa is the seeded municipality. Expansion is planned, not present. There is no automated zoning analysis and no code-compliance engine — obligations are tracked, outcomes are never promised.
Tenders from the CanadaBuys feed, filtered to where you work
Public-sector opportunity discovery, without a claim about drafting the bid for you.
- Opportunities are ingested from the public CanadaBuys open-tender feed on a daily schedule.
- They are filtered to Ontario and the National Capital Region.
The AI bid drafter returned 410 by design and its copy has been removed: a drafter that cannot cite its sources should not write a tender response.
A portal scoped to one client’s own project
The homeowner’s anxiety is budget and schedule. The portal exists so the answer is in one place instead of a phone call.
- Each client can be invited to a portal scoped to their own project.
- One sign-in page serves the whole platform: client accounts land in their project portal, staff land in the builder workspace.
- On a builder’s own domain the sign-in card carries the builder’s identity and a "Powered by JobSite" line, not JobSite’s brand.
Client linkage is invite-gated and has not been verified end to end. This is what the software provides; it is not a description of anyone’s clients using it.
Holdback-aware invoicing
Built around Ontario’s statutory holdback.
- The holdback is a modelled obligation with a statutory or contractual type, a percentage, an amount, a release trigger and a trigger date.
- JobSite's own financial API defaults the holdback to 10% and computes the amount in code from the contract value or the invoice total.
- Release triggers are substantial performance, total completion, expiry of the lien period, or manual — each recorded with its trigger date.
- Holds and releases post as double-entry movements against a segregated holdback account, and a database CHECK constraint refuses a negative ledger balance.
- Amounts default to Canadian dollars.
These are statements about the data model and JobSite’s own financial API. The finance workspace calls a platform project-finance service that has not been verified, so nothing here describes what a specific screen shows today.
A daily log that cannot double-post
The trade on the slab has bad signal. The schema assumes it.
- A daily log carries a client-supplied source key with a uniqueness constraint, plus its own capture time and optional GPS.
- The same log syncing twice therefore cannot become two entries.
This is a property the database enforces about duplicate writes. No end-to-end offline behaviour has been verified, so JobSite does not claim to work offline.