Thermal
ReferenceWork orders & jobs

Project record

What it's for

A project record is one multi-visit job in full: its phases, its billing milestones, the jobs underneath it, whether it is making money, and the requests for information raised along the way. It is the screen a project manager keeps open.

Reach it by opening any row on Customers → Projects. The route is /projects/<project>.

Tabs

  • Project details — phases and milestones, open by default. Billing and cost sit in side panels beside it.
  • Schedule — Project schedule, the jobs linked to this project's phases. It counts scheduled and unscheduled jobs. Each phase shows Next or Unscheduled, and that chip opens the phase on the dispatch board. With no linked jobs it says "No jobs are linked to this project's phases yet." Nothing here moves a job.
  • Crew — a read-only two-week timeline of visits on this project's jobs, grouped by technician, subcontractor, or Not yet assigned. Previous week and Next week move it. Empty: "No visits in this window".
  • Change orders — every change order raised against this project, with its status and total. Open one to edit its lines or move it to its next status; see Change order record.
  • Punch list — leftover work, with Add punch item. Open and ready-for-review items block closeout. Empty: "No punch list items yet."
  • RFIs — the questions raised on the project that need a written answer, with who owes it and when it's due. Collapsed until you open it; see RFIs below.
  • Warranty, Files, Submittals, Daily log, and Equipment — more collapsed sections further down the record; see below. Each also has a link in the Project sections jump bar, except Equipment.

Panels and controls

Fact strip

Project #, Customer, Milestones, and Contract value.

Phases

Add phase creates one. A phase takes a Name, a Budget, a Status, optional Notes, and — this is the useful part — a predecessor. A phase with a predecessor will not take work until that phase is complete, which is how a schedule stays in order without anyone policing it. Overriding the gate requires a written reason.

Milestones

Add milestone creates one, with a Milestone name, an Amount, and an optional Description. The table shows Milestone, Amount, and Status. Mark Complete closes a milestone, and a completed milestone is what an invoice is drafted from — so the customer is billed against agreed progress rather than elapsed time.

Side panels

  • Billing — Milestones complete and Contract value: what has been earned against what was agreed.
  • Job cost — Labor, Materials, Purchase orders, Field purchases, Subcontractor, Commission, Total cost, Budget, and Margin. Every line is built from what was actually recorded on the project's jobs, so the margin is the real one, not an estimate.

Schedule of values

When the project has a schedule of values, someone who can manage invoices can see Pay application rows after a progress bill that has not been voided or deleted. The columns are Pay application, Invoice, and Document. Download PDF in the Document column is the G702/G703-format file for that application.

A change order whose price total is below zero approves as a credit line on this schedule. Bill progress labels it Credit, applied against this bill's progress and does not ask for a percent. The credit reduces that bill's progress. It does not refund money, and the bill subtotal does not go below zero. A credit larger than one bill waits for the next one. See Change order record.

Closeout report

A Closeout report section generates (or regenerates) an immutable commissioning report. Ready to generate means every non-canceled phase is completed or canceled, the last phase is completed, every remaining job on those phases is completed or invoiced, and no punch item is still open or ready for review. Otherwise the control stays disabled and the blocking reason is shown.

Each generate stores a new versioned HTML document; prior versions are kept. The customer can download it from the portal — nothing is emailed automatically. Office View opens that version in a new tab.

RFIs

The RFIs section (collapsed until you open it) lists every request for information on the project — a question from the customer or general contractor that needs a written answer before the work can move. Each row shows its RFI number (RFI-001), Subject, Status, Due, Ball in court, and Impact. Filter chips count Open and Overdue, and the section is flagged while anything is overdue. A record with none yet says "No RFIs yet."

Add RFI opens the form: Subject and Question (both required), an optional Proposed solution, a Due date, Ball in court — who owes the answer, Unassigned until you pick someone — and the Cost impact and Schedule impact checkboxes. Create RFI saves it. Files from the project's register can be attached to it at the same time.

An RFI moves open → answered → closed. Row actions: View RFI shows the question, the proposed solution, and the answer ("Awaiting an answer" until there is one); Attach files adds project files; Answer (on an open RFI) records the answer and moves it to answered; Close (on an answered one) closes it; Reopen brings an answered or closed one back. An open RFI past its due date shows · Overdue on its due date — deadlines use the company's calendar, not the reader's.

Cost to complete

Under each phase's Budget, someone who can manage invoices sees a Cost to complete field with its own Save. Enter what you expect it still to cost to finish that phase. The hint reads "Not entered yet" until you do, then "Last updated" with the date. If someone else saved a newer figure first, the save is refused and the field shows a message. Once a phase has a figure, the Job cost panel adds <phase> · Forecast final cost and Forecast variance rows and an Estimated total cost. They stay blank while a phase has no budget and no cost to complete.

Warranty

Warranty lists warranty claims raised on this project's jobs: Claim, Filed, Equipment, Job, Phase, and Status. A row opens the claim. Empty: "No warranty claims on this project's jobs." This section is read-only; claims are opened from the warranty screens, not here.

Files

Files is the project's drawing and file register: Sheet, Title, Revision, Kind, Status, Uploaded, and a Download link. Drawings show Current or Superseded. Upload file opens a form with Kind (Drawing, Document, or Photo), Sheet, Title, Revision, and the File itself (PDF, JPEG, or PNG), then Upload. Empty: "No drawings or files yet." If file storage is not set up there is no Upload file button, and the section says "File storage isn't configured yet — ask an admin to set up Vercel Blob to enable uploads here."

Submittals

Submittals tracks documents sent to the engineer or customer for review. Columns: Submittal, Spec section, Status, Submitted, Returned. Statuses are Draft, Submitted, Approved, Approved as noted, Revise and resubmit, and Rejected. Filter chips count Awaiting review and Revise and resubmit.

Add submittal takes a Title, a Spec section (for example 23 74 13), a Due date, and optional project files; Create submittal saves it as a draft. Row actions: Record review (on a submitted one) takes the reviewer's response, Reviewer, and Returned on (blank means today), then Save review; Resubmit (on one marked revise and resubmit); and Attach files. Empty: "No submittals yet."

Daily log

Daily log keeps one entry per date, newest first: Date, Hours booked, and Work performed. Add daily log takes Date, Crew count, Weather, Work performed (required), Delays, Safety notes, and Photos chosen from the project's files. Hours booked is calculated from approved and submitted time clocked on that date, so it shows "Calculated after saving" on a new entry. Saving a date that already has a log updates it. Save with Save daily log. Empty: "No daily logs yet."

Equipment

Equipment lists the units tied to this project: Unit, Site, and Role. Link equipment picks a Unit at the customer's sites and a Role — In scope (the project works on it) or Affected (its service is disrupted) — and saves with Link equipment. Row actions switch the role (Mark affected or Mark in scope) or Remove from project. The button is disabled when the customer has no other units. Empty: "No equipment linked to this project yet."

Save project commits changes to the project itself; Save commits the phase or milestone you are editing.

What it accepts

FieldFormatRequiredRule
Project nameFree textYes
Phase nameFree textYes
Phase budgetDollarsNoFeeds the Budget and Margin lines on the cost panel
Phase statusPick a statusYes
Predecessor phasePick another phaseNoSets the gate
Milestone nameFree textYesShown on the invoice drafted from it
Milestone amountDollarsYesWhat the milestone bills for
Milestone descriptionFree textNo
NotesFree textNo
RFI subjectFree text, up to 200 charactersYes
RFI questionFree text, up to 10,000 charactersYes
RFI proposed solutionFree textNo
RFI due dateA dateNoAn open RFI past its due date is flagged Overdue
RFI ball in courtPick a personNoUnassigned until picked

Booking work into a gated phase is refused with "This phase is gated behind <phase>, which isn't complete yet." until the predecessor completes or someone records an override reason.

How to configure it

  • Job costing settings decide how each cost line is built and what counts as burden.
  • Invoicing settings decide what a milestone invoice contains and whether it needs approval.
  • Price book settings supply the rates the labor and material lines cost at.

Who can see it

This screen sits behind the Projects area.

Owners, office managers and dispatchers can open it. Technicians cannot — they work the project's individual jobs from the field app. The gate is checked on the server, not just hidden in the sidebar, so a direct link does not get around it. Anyone who can open Projects can add and answer RFIs, add and review submittals, write daily logs, and link equipment. Cost to complete needs invoice access.

The full role matrix is on Roles & permissions.

On this page