Inspector Daily Report to Project Closeout

The complete inspector workflow from creating a daily report in the field through compiling the project closeout package. Same workflow whether you're working on a state DOT contract (IDOT, CDOT, future state DOTs) or a private contract — the system uses agency-pluggable renderers to give you the right format at every output without rewriting any data.

Skill level: First-day-on-the-platform inspector to seasoned RE. Time to read: ~10 minutes. Time to do (full closeout cycle): minutes per day, hours at project end.


What you'll build

```

  1. Project (your contract) ↓
  2. Schedule of Quantities (SOQ) (pay items + estimated quantities) ↓
  3. Daily Inspector Report (IDR) (each day's work) ↓ pay item entries with quantities ↓ (optional) calculation canvases backing the quantities ↓ submit + accept
  4. Q-Book entries auto-post (cumulative quantity ledger) ↓
  5. Closeout deliverables (one click each) ├─ Daily IDR PDF (BC 628 or Modern) ├─ IDR Book — date-range compilation (BC 628 grid or Modern) ├─ Q-Book / Quantity Book PDF (BC 625 IDOT or Modern) └─ Calc Appendix (bound after the Q-Book ledger) ```

Every output stays current automatically. Add a new IDR, accept it, re-export — the new entries appear immediately. No regeneration buttons, no caches.


Step 1 — Create a project

Where: `Dashboard → Projects → + New Project`

Required fields:

  • Project name (e.g., "I-57 Bridge Deck Replacement", "Route 47 Resurfacing")
  • Project code (your internal identifier)

Optional but useful:

  • Agency — pick IDOT, CDOT, or other state DOT to unlock agency- specific atlas content (specs, construction manual, Part C documentation requirements, approved vendors). Leave blank for private contracts.
  • Address, contract no., job no., district, route, section, county — populate the IDOT BC 623 cover when you export the Quantity Book.

Behind the scenes: the project gets a `created_by` user and a `project_members` row so it appears in your dashboard project list. Inspectors you add later through the Team tab can pick up `inspector_number`, `inspector_initials`, and `inspection_role` (Inspector / Inspector of Record / Senior Inspector) — those flow into BC 628 signature blocks and IDR Book inspector rosters.


Step 2 — Load the Schedule of Quantities (SOQ)

The SOQ is the contract's pay item list — every line item, with its description, unit, and estimated quantity. PFL ingests it from any of:

  • PDF / scanned bid tabulation — the SOQ ingestion pipeline (`POST /api/soq/ingest`) extracts pay items via Claude Vision + spatial parsing, with state DOT format auto-detection
  • Excel / CSV upload — direct mapping
  • Manual entry — for small projects or change orders

Where: `Project → SOQ → Upload` (or `+ Add Pay Item` for manual)

For state DOT projects, the system cross-references your pay items against the agency catalog (`agency_pay_item_catalog`) and the chain walk picks up parent agencies — so a Cook County (CDOT) project automatically inherits IDOT's specifications and construction manual content for shared sections.

At the end of this step: each pay item has a code, description, unit, and estimated quantity. The atlas modal (Compass icon next to any pay item) opens its full specification, construction manual procedures, documentation requirements, and approved vendors.


Step 3 — Create the Daily Inspector Report (IDR)

Where: `Project → Daily Reports → + New Daily Report` (or via the `+ Daily Report` shortcut on your installed PFL app — long-press the home-screen icon).

The Create Daily Report modal has tabs that vary by report type:

  • Standard IDR — full set: General, Work, Personnel, Equipment, DMT, Pay Items, Issues, Inspection, Drawings, Photos, Checksheets
  • Daily Report (BC 628 / agency-form mode) — General, DMT, Pay Items, Issues, Inspection, Drawings, Photos, Checksheets
  • Diary (RE narrative) — General, Activities, Personnel, Equipment, Issues, Drawings, Photos

The General tab (every mode)

  • Date + Time start/end + Break duration
  • Weather — high/low temp, conditions, wind, precipitation
  • GPS / location verification — captured automatically on mobile
  • Site Status at End of Shift — where you left the site (barricades, flaggers, closures). Tap the mic icon to dictate. The Web Speech API + Claude transcript cleanup runs in the browser; no data leaves your device until you save.
  • Daily Checklist — Y/N flags for Public Way Closure, Flagging Issues, MOT Issues, Safety, Quality, Materials Delivered, Testing/Inspection, Design Issues, Erosion Control, Utility Conflicts, Extra Work/T&M

The Work tab (Standard / Diary modes)

  • Work Performed Summary — the day's narrative. Tap mic to dictate.
  • Key Accomplishments — milestones (one per line)
  • Next Day Plans — what tomorrow looks like

The Pay Items tab (Standard / Daily Report modes)

This is the heart of the report. Add pay item entries:

  1. Click + Add Pay Item Entry — auto-complete from the project's SOQ.
  2. Enter quantity placed today
  3. Location (e.g., "Sta 12+50 to 14+00, south half")
  4. Work description (free-text)
  5. Evidence of Material — agency form codes (BC 981, PRR, etc.)
  6. Fund Code — for federally-participating items
  7. Quantity classification — `estimated` (default) or `final` (locks the quantity at closeout)
  8. (Optional) Calculation canvas — link a canvas that derives the quantity from station survey data, cross-section areas, etc. The canvas content (variables, equations, derivation steps) is later bound into the Q-Book Calc Appendix as proof.

Open the Atlas from any pay item

Click the Compass icon next to any pay item to see:

  • Tier 1 — Project Specification (DS sections from your contract's special provisions)
  • Tier 2 — Organization Standard (your firm's reusable specs)
  • Tier 3 — Agency Standard (e.g., IDOT Standard Specifications for that pay item's section)
  • Documentation Requirements (what forms to file, evidence needed — IDOT's Part C / Documentation Guide)
  • Construction Manual procedures (inspection methods, measurement, acceptance criteria)
  • Approved Vendors (Qualified Products List entries scoped to the pay item's section)

The atlas walks the agency parent chain automatically — a CDOT project's atlas surfaces IDOT content where CDOT inherits.

Photos + Drawings

  • Photos auto-upload to S3 the moment you select them. No need to submit the form first — the system creates a draft to hold them.
  • Drawings tab pulls from the project's Plan Sets (`plan_pages` table) and lets you mark up specific pages with annotations tied to the report.

Sign + submit

  • Inspector signature (drawn or pre-saved)
  • Optional supervisor signature
  • Submit moves the report to "submitted" state — visible to the RE / supervisor for review

Finding a report later

The search box above the Daily Reports list reaches past the report name. Type two or more characters of a pay item code or description, a note about the work, a contractor, a piece of equipment, a material ticket number, a delivery or a truck tap session, and the reports that carry it come up — each one labelled with what matched (pay item, activity note, contractor …), so you can see why it is in the list. Status, date range and weather still narrow the list on top of the search.

Step 4 — Accept the IDR (the auto-post moment)

Who: RE, supervisor, or anyone with project_role ≥ inspector_of_record.

Where: Project → Daily Reports list → click the report → Accept

When you click Accept, the daily-report state machine flips `approval_status` to `accepted` and runs `autoPostFromReport`:

``` For each pay_item_entry on the report:

  1. Look up the most recent calc canvas linked to this pay item (via calculation_sheets.linked_pay_items @> [pay_item_id])
  2. INSERT into quantity_book_entries with:
    • source_pay_item_entry_id (canonical link back to the IDR)
    • source_calculation_canvas_id (if a calc was linked)
    • source_document_reference ("BC 628 #IDR-001, dated 2026-04-25")
    • quantity, location, classification (estimated/final)
  3. Update pay_item_entries.posted_to_qbook_at + posted_qbook_entry_id so the IDR knows the Q-Book accepted its quantities ```

Idempotent. Re-accepting (e.g., after a revision_requested → re-accept cycle) goes through `removeForReport` → fresh INSERT. State-machine retries that hit a half-completed auto-post fall through the `ON CONFLICT DO NOTHING` guard — never double-posts.

You should see: the Q-Book page (`Project → Quantity Book`) now shows your daily quantity rolled up onto each pay item's progress bar. The Recent Activity tab shows every entry with its source IDR reference.


Step 5 — The Quantity Book

Where: `Project → Quantity Book` (or long-press the PFL home- screen icon → "Quantity Book")

What's on the page:

  • KPIs — total pay items, posted vs estimated, % progress, items marked final
  • Pay Items table — one row per pay item with progress bar, total posted, classification badge (Estimated / In Progress / FINAL)
  • Recent Activity — flat ledger across the project, latest 50 entries, each with date / pay item / location / qty / source IDR
  • Atlas trigger — Compass icon on every pay-item row + clickable pay-item code in Recent Activity opens the same atlas modal

Per-pay-item ledger

Click any pay item row → opens the ledger dialog with every dated entry, cumulative "To Date" computed at read-time via window function (never stored — drift-immune).

Actions in the ledger:

  • + Add Entry — manual / authorization adjustment / force account / plan quantity entries (entries that didn't come from an IDR)
  • Open Atlas — same modal as the table-row Compass icon
  • Mark FINAL — locks the cumulative quantity, sets the badge
  • Delete entry — soft-delete, audit-logged

Re-export anytime

  • Modern PDF — clean PFL house style, agency-neutral. For private contracts or your own internal records.
  • BC 625 PDF — IDOT closeout format with BC 623 title page + BC 624 index of sheets + BC 625 per-pay-item dated ledger pages.

Both exports include the Calc Appendix at the end (opt out with `?appendix=false`):

  • A divider page ("CALCULATION APPENDIX — N Calculation Sheet(s)")
  • One page per linked calc canvas:
    • Pay item code(s) + description at top
    • Calc title + description
    • Variables (key/value pairs from the canvas)
    • Calculation content (equations, derivation steps, result)
    • "Used by" footer — every IDR # + date + qty + location that drew on this calc to post to the Q-Book

This is the bidirectional cross-reference loop: every Q-Book row points to its source IDR + calc page; every calc page lists every IDR that used it.


Step 6 — Project closeout deliverables

When the project ends, four documents come out — each with one click, each agency-format-aware:

Single Daily IDR

`GET /api/idr-drawings/daily-reports/:id/pdf?type=standard|custom|enhanced`

  • `type=standard` — Modern narrative layout (default for Diary mode)
  • `type=custom` — agency form mimic. For IDOT projects this is the BC 628 grid (per-item accountability with measured/calculated/ checked/inspected-by signature blocks).
  • `type=enhanced` — compliance-enhanced version with extra QA fields

Multi-Inspector Aggregated Daily Report (one date, N inspectors)

`GET /api/idr-drawings/projects/:projectId/daily-reports/:date/aggregated/pdf`

When multiple inspectors filed separate IDRs for the same date, this compiles them into one PDF: cover with consolidated weather + contractor rollup + Yes/No flags, then per-inspector sections, then optional consolidated summary.

IDR Book — date-range project compilation

`GET /api/idr-drawings/projects/:projectId/idr-book/pdf?from=&to=&style=modern|bc628`

The closeout book of every approved IDR for a project (or a date range subset). Two visual styles, same data:

  • Modern — cover with project + date range + inspector roster + stats; TOC indexed by date → page; per-day separator + IDR content
  • BC 628 (IDOT) — agency-style cover with BC 623-shaped project metadata grid; BC 624-style gridded TOC with continuation-page re-renders; minimal per-day separator with form BC 628 footer; per- day pages use the BC 628 grid layout

Soft-fails per-day errors so a single broken IDR doesn't kill the whole book.

Quantity Book

`GET /api/qbook/projects/:projectId/export/modern.pdf` `GET /api/qbook/projects/:projectId/export/bc625.pdf`

See Step 5. Both export endpoints accept `?appendix=false` to disable the Calc Appendix when you want a lean Q-Book.


Two demo paths to learn from

The platform ships with two staging demo projects covering both agency-aware and agency-neutral usage:

Demo IDOT Resurfacing — Route 47 (Lien Validation)

  • Project ID: `d1d0fde0-1d07-4ee0-a000-1d0700000001`
  • IDOT-linked, IDOT pay item codes (20200100 EARTH EXCAVATION, 35101100 AGGREGATE SUBGRADE, 70200100 TRAFFIC CONTROL, etc.)
  • 1 accepted IDR (IDR-001, 2026-04-25), 3 pay item entries, 1 calc canvas linked to Earth Excavation (Sta 12+50 to 14+00 cut volume), 3 Q-Book entries (one with calc canvas reference)
  • Use this to demo: BC 628 daily, BC 625 closeout with Calc Appendix, IDR Book BC 628, atlas with full IDOT chain walk

General / Private Contractor demo

Build your own. Skip the agency assignment on project creation. Use generic bid item codes (P-001, P-007, etc.). Same workflow steps — the system routes you into the canonical Modern renderer for every output.

Use this to demo: Modern daily IDR, Modern Q-Book + Calc Appendix, IDR Book Modern, atlas's "Pattern B" (no-agency) graceful empty state


Working with the AI Assistant

The PFL AI Assistant (Compass icon in the dashboard sidebar, or `POST /api/ai-assistant/chat`) is project-scoped. When you start a chat from a project page, the AI knows about that project's pay items, recent IDRs, Q-Book state, and uploaded provisions.

Useful prompts:

  • "What's the cumulative quantity placed on pay item 20200100?"
  • "Walk me through how to add a pay item entry to today's IDR."
  • "Pull up the IDOT spec for Section 440 hot-mix asphalt surface removal."
  • "What documentation do I need to file for QPL-required materials on this project?"

The assistant answers with citations to the underlying source — the spec section, construction manual procedure, or BC 628 line item it read from.


Voice input availability

Field Standard mode Daily Report (BC 628) Diary
General → Site Status at End of Shift ✅ ✅ ✅
Work → Work Performed Summary ✅ — (no Work tab) ✅
Work → Key Accomplishments ✅ — ✅
Work → Next Day Plans ✅ — ✅
Inspection → Inspector Notes ✅ ✅ —

Tap the mic icon next to any of those labels. Speak. Tap again to stop. The transcript appends to the textarea (multiple chunks add a space or newline as appropriate). Browser-based — works offline once the page is cached. Falls back gracefully on browsers without Web Speech API.


What happens if you change your mind

  • Revise an accepted IDR — click "Request Revision" on the report. State machine flips back to `revision_requested`, runs `removeForReport`, deletes that report's Q-Book entries, clears `posted_to_qbook_at` on its pay item entries. You correct the entries, resubmit, re-accept — fresh Q-Book rows post.
  • Manual Q-Book correction — edit a Q-Book row directly in the Quantity Book ledger. The auto-post `ON CONFLICT DO NOTHING` clause protects your manual edits from being overwritten on state-machine retries.
  • Delete a calc canvas — the calc's FK on `quantity_book_entries` is `ON DELETE SET NULL`. Your Q-Book history stays intact; the calc reference becomes NULL. The Calc Appendix renderer treats that row as "calc no longer available" without breaking.

Mobile / install on a device

  • iOS Safari — Share button → Add to Home Screen
  • Android Chrome — Install prompt appears in the URL bar; or menu → Install App
  • Desktop Chrome / Edge — Install icon in URL bar

Once installed, the app launches in standalone mode (no browser chrome, full screen). Long-pressing the icon surfaces three quick actions: New IDR, Quantity Book, Pay Item Atlas.


Reference

Surface URL pattern
Project list `/dashboard/projects`
Project page `/dashboard/projects/[id]`
Quantity Book `/dashboard/projects/[id]/quantity-book`
Pay Item Atlas (public) `/tools/idot-pay-items` and per-item: `/tools/idot-pay-items/[code]`
Daily IDR PDF `GET /api/idr-drawings/daily-reports/:id/pdf?type=…`
IDR Book PDF `GET /api/idr-drawings/projects/:projectId/idr-book/pdf?from=&to=&style=…`
Q-Book Modern PDF `GET /api/qbook/projects/:projectId/export/modern.pdf`
Q-Book BC 625 PDF `GET /api/qbook/projects/:projectId/export/bc625.pdf`
AI Assistant chat `POST /api/ai-assistant/chat`

Truck Tap — photographing the truck instead of a ticket

On a haul-away, the driver often has no paper ticket; the useful record is the truck itself. Tap the camera on the truck's row and photograph the cab door decal (company name, unit number, USDOT and MC numbers). The scan reads the decal and fills the row from it:

  • Truck # — the unit number painted on the cab (for example 301). You can type or correct it; the scan never overwrites a number you entered.
  • Notes — one line with the hauler, city, unit number, USDOT and MC numbers and any certification text printed on the door (for example "Hauler: Sonican Trucking Inc (Elmhurst, IL) · truck 301 · USDOT 862571 · MC 567193 · IL MC 124009 · MBE & DBE certified"). A second scan of the same truck does not add the line twice.
  • The photo is kept on the row and labelled Truck photo rather than Scanned, so a truck photo is never mistaken for a ticket and the Ticket # box stays empty until a real ticket is scanned or typed.

Departure is optional. The box sits beside Arrival, the same size; leave it blank if you did not record when the truck left.

Try asking the AI Assistant:

  • "Walk me through creating a daily report on this project"
  • "How do I add a calculation canvas to a pay item entry?"
  • "What's the difference between IDR Book Modern and BC 628?"
  • "How does the auto-post to Q-Book work?"
  • "How do I export the BC 625 Quantity Book at closeout?"
  • "How do I install ProjectFlowLive on my phone?"
Last updated 2026-05-01 · Audience: inspectors, resident-engineers, project-managers, ai-assistants, agents