← All research

Source research

Construction SOP & Event Taxonomy

📥 Stream 3 deliverable (GPT-5.5 Pro/Extended). Prompt: PROMPT-packet-3-construction-sop · context: packet-0-shared-base-context · feeds → PROMPT-packet-4-live-demo-spec. Dashboard: Dashboard · findings: RESEARCH-FINDINGS-AND-DECISIONS.

I reviewed the attached context pack and used it as the product constraint set. The practical answer is this: do not build “AI site diaries.” Build a commercial-event capture system that happens to produce a good diary. The diary is the record container. The Commercial Event is the product object.


A. Executive summary

A useful construction field-capture SOP should work like this:

Voice note + photos + files

Transcript

Structured daily facts

Commercial event detection

Missing evidence prompts

PM / QS review

Diary, event card, evidence pack, email/RFI/variation draft

Export to Procore / PDF / Excel / SharePoint / email

The daily diary schema should cover normal site-record fields: project, date, weather, reporting person, labour, plant, visitors, inspections, deliveries, scheduled work, photos, delays, accidents/safety, productivity, quantities, plan revisions, and change history. Procore’s Daily Log structure is a useful market reference because it already separates weather, manpower, equipment, visitors, phone calls, inspections, deliveries, scheduled work, safety, accidents, quantities, productivity, photos, delays, and change history. It also records workers, hours, companies, cost codes, equipment usage, delivery contents, and daily photos. citeturn650330view0

For UK-style site diaries, the record should be chronological, time-stamped, factual, and commercially useful. Procore’s UK guidance frames the site diary as a real-time project record used for project management, communication, risk reduction, JCT/NEC evidence, labour/attendance, work activities, materials, equipment, inspections, safety, budget/resource impact, and next steps. citeturn650330view1

The strongest evidence design should follow the Society of Construction Law’s record-keeping logic: daily records should capture weather, manpower, key material deliveries, adverse conditions, working hours, major plant/equipment, work activities, obstruction data, inspection records, progress photos, procurement records, delivery records, labour/equipment allocation, material logs, and cost records. The SCL Protocol also says progress/resource/cost records should state facts, not opinions, and should be signed by authorised representatives where reasonably practicable. citeturn233353view2 citeturn233353view3

The product should not make contractual claims. It should say:

Possible commercial issue detected.
Evidence exists / missing evidence exists.
Human review required before RFI, notice, variation, claim, or formal correspondence.

That matters because variations and compensation events are contract-specific. A variation is broadly a change to originally contracted scope, and NEC compensation events are contractual mechanisms that may adjust price and/or completion dates, but whether a particular site event qualifies depends on the contract, facts, procedure, notices, and reviewer judgement. citeturn348762search2 citeturn382540search0

The core product rule should be:

No source → no claim.
Weak source → uncertain fact.
Conflicting source → human review.
Commercial implication → suggested action only.
Formal output → approval required.

B. Standard daily diary field schema

B1. Daily diary field schema

CategoryFields to captureMinimum for demoWhy it matters commercially
Project contextProject ID, project name, contract/package, client, contractor, site address, reporting date, timezone, shift, working hours.YesPrevents orphaned records. Every event must tie back to a project, date, and package.
ReporterName, role, company, contact, signature/approval status, source channel.YesShows who observed or reported the facts.
WeatherConditions, temperature, rain, wind, source, time range, weather impact flag.Yes, simple manual or auto-fillWeather only matters commercially if it affected planned work. “Rainy” is weak. “Rain stopped external works 09:10–11:45” is useful.
Location / zoneBuilding, level, gridline, room, zone, workface, drawing reference if known.Yes“Site delay” is useless. “Level 2 Zone B” is usable.
LabourCompany, trade, headcount, start/end time, total hours, cost code/package, idle/reassigned hours, reason.YesLabour impact is usually where money leaks. Capture trade, count, duration, and what they did instead.
Plant / equipmentItem, company, hours used, inactive hours, inspection status, downtime reason, cost code.Later for demo unless mentionedNeeded for disruption, plant standing, access failures, and productivity evidence.
Planned workActivity planned, programme activity ID if known, planned start/finish, planned location, planned resource.YesCommercial events need baseline: what should have happened?
Work completedActual work completed, quantities, percentage/progress, location, by whom, evidence.YesUseful for progress and valuation.
Incomplete workWhat was not done, why, affected location, next action, owner.YesThis is where commercial events often appear.
DeliveriesSupplier, material, quantity, expected time, actual time, delivery note, condition, storage location, photos.YesLate, missing, damaged, or undocumented deliveries are high-value evidence triggers.
MaterialsMaterial used, material available, shortage, damaged material, rejected material, batch/serial refs.Yes if relevantLinks procurement reality to programme and variation risk.
SubcontractorsSubcontractor company, package, work area, labour, blockers, instructions received/given.YesHelps identify party affected and party responsible, without claiming fault.
VisitorsName, company, role, arrival/departure, purpose, notes.OptionalConsultant/client visits may create instructions, inspections, or confirmations.
Inspections / testsInspection type, inspector, result, location, certificate/ref, defects/holds.OptionalPassed/failed inspections and hold points need evidence.
PermitsPermit type, permit number, status, area, expiry, blocker if not issued.LaterImportant on high-risk works but too much for first demo unless mentioned.
Quality issuesDefect, non-conformance, hold point, rework, responsible package, photo, NCR/ref.Yes if mentionedRework and quality holds often create cost/time exposure.
Safety incidentsIncident, near miss, unsafe condition, injured party, location, immediate action, escalation.Yes if mentionedSafety should be escalated separately from commercial workflow. HSE CDM guidance emphasises planning, coordination, information, and communication of risks; RIDDOR separately defines reportable incidents and record duties. citeturn259216search8 citeturn259216search3
InstructionsWho gave instruction, role/company, verbal/written, time, exact instruction, affected scope, written confirmation status.YesVerbal instruction without confirmation is a classic unrecovered variation risk.
RFIsExisting RFI ref, potential RFI, question, drawing/spec refs, required answer date, responsible party.Yes if detectedRFI fields should map cleanly to tools such as Procore: title/number, assignees, due date, location, drawing number, distribution list, and response responsibility. citeturn549052search0
Variations / changePotential variation, instruction ref, scope change, labour/material impact, QS review state.Yes if detectedMust be human-reviewed. Never auto-claim.
Delays / blockersBlocker type, start/end, location, planned activity affected, cause if known, party if known, evidence, mitigation.YesNeeds time, place, planned work, affected resource, and proof.
Photos / filesPhoto/file ID, timestamp, uploader, location, EXIF/GPS if available, description, linked event/fact.YesPhotos are supporting evidence only unless tied to a fact.
PM/QS follow-upAction required, owner, due date, severity, missing evidence, review state.YesConverts passive record into commercial workflow.
Audit trailCreated at, edited at, editor, source transcript, approved by, export history.Yes in dashboardTrust requires versioning and reviewability.

B2. Field-capture SOP

1. Site manager opens magic link.
2. App pre-fills project, date, reporter, weather if available.
3. Site manager records voice note.
4. Site manager uploads photos/files.
5. AI transcribes voice note.
6. AI extracts daily facts.
7. AI detects commercial events.
8. AI checks missing evidence.
9. AI asks 1–3 follow-ups only.
10. Site manager answers by voice/text/upload.
11. System creates:
    - diary draft
    - event cards
    - evidence checklist
    - PM/QS action queue
12. PM/QS reviews.
13. Approved outputs export to PDF/email/Excel/Procore/SharePoint.

Field prompt shown to site manager:

Tell us:
- What was planned today?
- What actually happened?
- Any delays, instructions, missing materials, rework, access issues, or labour standing?
- Upload photos or delivery notes if you have them.

Do not ask the site manager to fill a long form. That is how this dies.


C. Commercial event taxonomy table

Use CommercialEvent as the central object. The diary, dashboard, emails, RFIs, and evidence packs are views over events.

C1. Event taxonomy

Event typePlain-English definitionExample voice phraseRequired evidenceOptional evidenceExtracted fieldsFollow-up questionsReviewerOutput actionsNever auto-do
Late deliveryMaterial/equipment arrived after the planned or required time.“Partition track turned up at half one, dryliners were waiting from eight.”Expected time, actual time, material, supplier, affected activity, photo or delivery note.Purchase order, supplier email, programme extract, delivery tracker.Material, supplier, expected/actual arrival, location, affected labour, programme activity.“What time was it expected?” “Upload delivery note/photo.” “Who was affected and for how long?”Site manager, PM, QS.Diary note, delivery event card, QS review, draft confirmation email.Claim delay, blame supplier/client, calculate entitlement.
Missing materialRequired material did not arrive or was incomplete.“We only got half the studs, track missing.”Material description, ordered quantity, received quantity, supplier, affected work.Delivery note, order confirmation, supplier message, photos.Ordered vs received quantity, work blocked, location.“What quantity was short?” “Was any work able to continue?”Site manager, PM, QS, procurement.Procurement task, QS risk, evidence pack.Assert recoverability or cost impact.
Damaged materialDelivered or stored material is unusable or requires replacement.“Boards arrived wet and damaged on one edge.”Photos, delivery note, supplier, affected quantity, condition at receipt.Rejection note, supplier email, storage photo, batch refs.Material, quantity, damage type, delivery condition, acceptance/rejection.“Was damage noted on delivery note?” “What quantity is unusable?”Site manager, PM, procurement, QS.Supplier notification draft, diary note, replacement task.Accept/reject goods on behalf of contractor.
Access blockedPlanned work area was unavailable.“We couldn’t get into Level 2 Zone B because ceiling guys were still in there.”Location, planned activity, blocker, start/end time, affected trade.Area handover record, photos, programme extract, email.Area, responsible party if known, time blocked, activity affected.“Who/what blocked access?” “When was area released?”PM, site manager, QS.PM coordination task, delay event, evidence pack.Assign liability.
Design information missingWork cannot proceed because required design/specification information is absent.“We still don’t have the head detail for the glazed partition junction.”Description of missing info, affected location, drawing/spec ref if known.Email chase, RFI draft, markup photo, programme activity.Info needed, activity blocked, latest required date, source refs.“What drawing/spec/detail is missing?” “When is answer needed?”PM, design manager, QS.Draft RFI, design query, PM task.Decide design answer.
Drawing/spec conflictTwo documents contradict each other.“Drawing says FD60, spec says FD30.”Conflicting refs, screenshot/photo/markup, affected area.RFI history, consultant email, marked-up drawing.Drawing numbers, spec sections, conflict text, affected scope.“Which documents conflict?” “Which work is stopped or at risk?”Design manager, PM, QS.Draft RFI, risk card.Choose interpretation or price basis.
Verbal instructionSomeone instructed a change verbally.“Architect told us on site to move the partition line 200mm.”Who, role/company, time/date, exact instruction, affected work.Witness, follow-up email, marked-up drawing, photo.Instructor, instruction text, scope affected, written confirmation status.“Who gave it?” “Is it in writing?” “What changed?”PM, QS, commercial manager.Draft confirmation email, variation review.Treat as valid instruction or variation.
Client/consultant instructionFormal or informal instruction from client, architect, CA, PM, consultant.“Client asked us to swap finish to walnut.”Sender/instructor, instruction form, date/time, scope.Email, AI/PMI/SI ref, drawing markup, meeting minutes.Instruction ref, issuing party, contract role, affected works.“Was this formal or verbal?” “Upload instruction/email.”PM, QS, commercial manager.Instruction log, variation review.Interpret contract authority.
Change in scopeWork appears different from agreed/tendered scope.“This boxing wasn’t in our package.”Description of original scope basis and changed work.BoQ item, tender exclusion, drawing revision, instruction.Original basis, new requirement, location, affected trade.“What document shows original scope?” “Who requested the change?”QS, estimator, PM.Variation note skeleton, evidence pack.Declare entitlement.
Abortive labourLabour spent time on work that had to be abandoned or redone.“We set out the wall, then got told the layout changed.”Trade, headcount, hours, work done, reason abandoned.Timesheets, photos before/after, instruction, drawing revision.Labour hours, activity, abandoned output, cause.“How many people and hours?” “What work was abortive?”QS, PM.QS review, cost substantiation task.Price variation.
Idle labourLabour was present but unable to work productively.“Six dryliners were stood waiting for the track.”Trade, headcount, time period, reason, location.Timesheets, supervisor note, programme activity, photos.People, hours, activity blocked, mitigation/reassignment.“Were they idle, reassigned, or sent off site?”Site manager, QS, PM.Labour impact card, QS review.Assume cost loss without review.
Reassigned labourLabour moved to other work because planned work could not proceed.“We moved two lads to Level 1 snagging.”Trade, headcount, from/to activity, time, reason.Programme, timesheet split, supervisor note.Original activity, alternative activity, productivity impact.“Was alternative work planned/useful?”PM, QS.Diary note, mitigation record.Treat reassignment as full loss.
Out-of-sequence workWork done in a different sequence because planned sequence failed.“We had to jump to Zone C before Zone B was ready.”Original sequence, actual sequence, reason, location.Programme extract, lookahead plan, photos.Planned/actual sequence, blocker, affected dependencies.“What was planned next?” “Why changed?”PM, planner, QS.Programme risk, disruption evidence.Claim disruption.
ReworkCompleted work had to be corrected, removed, or redone.“We had to take down the board because the service route changed.”Original work, rework reason, labour/material affected, instruction/defect.Photos before/after, NCR, RFI, revised drawing.Area, trade, rework quantity, cause, source instruction.“Was rework due to defect, change, or coordination?”PM, QA, QS.NCR/task, variation review if change-driven.Allocate fault.
Quality holdWork stopped pending quality approval, defect closeout, or hold-point release.“Fire stopping hold point not signed, so ceiling closure stopped.”Hold point, location, inspector/approver, time held, affected activity.ITP, inspection request, photos, certificate.Inspection status, affected work, responsible reviewer.“Who needs to release the hold?”QA, PM, site manager.QA task, diary note, risk card.Override quality hold.
Hidden works evidenceWork will be covered up and needs proof before closure.“We’re closing the riser tomorrow; need photos of fire stopping.”Before-close photos, location, trade, description, date/time.Inspection sign-off, drawing ref, test certificate.Hidden element, close-up date, inspection status.“Upload photo before close-up.”Site manager, QA, PM.Evidence request, hold reminder.Certify compliance.
Inspection passed/failedFormal or informal inspection result affects work.“Building control passed the ceiling void inspection.”Inspector, inspection type, result, location, date/time.Certificate, inspection report, photos.Result, conditions, next actions.“Upload report/certificate.”PM, QA, site manager.Diary note, evidence pack, defect task.Declare regulatory compliance beyond evidence.
Weather delayWeather prevented or reduced work.“Rain stopped loading bay works from ten until lunch.”Weather condition, time range, affected work, location.Weather source, photos, programme extract.Weather type, source, affected activity, duration.“Which work stopped and for how long?”Site manager, PM, QS.Diary note, possible delay card.Treat as compensable delay.
Subcontractor delaySubcontractor did not perform as planned.“M&E weren’t ready, so drylining couldn’t close up.”Subcontractor, planned obligation, actual status, affected work.Lookahead, emails, photos, meeting minutes.Subcontractor, planned/actual, dependency affected.“What were they supposed to complete?”PM, package manager, QS.Coordination task, subcontractor notice draft for review.Blame or issue notice.
Supplier delaySupplier caused or may have caused late/missing/damaged delivery.“Supplier missed the morning slot.”Supplier, order, promised date/time, actual status, affected work.Supplier email, PO, delivery tracker.Supplier promise, actual delivery, affected material.“Upload supplier confirmation/PO.”Procurement, QS, PM.Supplier chase, evidence pack.Claim against supplier.
Programme slippageActual progress differs from planned programme/lookahead.“We’re half a day behind on Zone B partitions.”Planned activity, actual progress, reason, location.Programme extract, lookahead, photos, quantities.Activity ID, planned vs actual, variance, cause.“Which programme activity is affected?”PM, planner, QS.Programme risk, weekly digest.Assert critical path impact.
Potential RFIA question needs formal design/client answer.“Need confirmation before we board this.”Question, location, document refs, decision needed by.Suggested answer, photos, markup, drawing refs.Question, discipline, urgency, assignee candidate.“What exactly needs answering?”PM, design manager.Draft RFI.Submit RFI without approval.
Potential variationFacts suggest possible scope/time/cost change.“This wasn’t in our price.”Changed work, instruction/source, affected labour/material, original basis.BoQ/tender exclusion, drawings, emails, photos.Variation basis, source, impact, uncertainty.“What original document supports this?”QS, commercial manager, PM.Variation note skeleton, QS task.Send variation/price claim.
Potential notice / early warningMatter may require contract notice or early warning.“This could push handover if not sorted.”Event, date aware, affected activity, possible impact, contract/package.Programme, correspondence, risk register, photos.Awareness date, risk, possible time/cost impact.“When did you first become aware?”PM, QS, commercial manager.Human-review notice task.Issue notice automatically.
Missing evidenceEvent mentioned but proof is weak or absent.“Delivery was late but I don’t have the note.”Identified missing item, event link, reason needed.Alternative evidence, witness, email.Missing evidence type, owner, deadline.“Upload X or confirm unavailable.”Site manager first, then PM/QS.Evidence request.Hide uncertainty.
Claim-supporting evidenceRecord may support future claim but claim route is not yet known.“Take photos, this may come back later.”Fact, source, timestamp, location, affected work.Timeline, programme, costs, emails.Evidence value, linked event, uncertainty.“What fact does this evidence prove?”QS, commercial manager.Evidence pack only.Use claim language without review.

D. Missing evidence rules table

D1. Evidence priority levels

P0 = safety / statutory / immediate hidden-works risk
P1 = high commercial risk; evidence may disappear today
P2 = commercially useful but can wait 24–48h
P3 = nice-to-have context

The system should not ask every possible question. It should ask the highest-value missing fact first.

TriggerMissing conditionPriorityAskEvidence requestedEscalation
Late delivery mentionedNo actual arrival timeP1“What time did it arrive on site?”Time, photo timestamp, delivery note.Site manager same day.
Late delivery mentionedNo proof of deliveryP1“Can you upload the delivery note or a photo of the delivery?”Delivery note, pallet/material photo, gate log.PM/procurement if unavailable.
Late delivery mentionedNo planned/expected timeP1“What time was it expected or needed for the planned work?”Supplier email, programme/lookahead, PO.QS/PM review.
Idle labour mentionedNo headcount/tradeP1“Which trade and how many operatives were affected?”Labour allocation, timesheet.Site manager.
Idle labour mentionedNo time periodP1“From what time to what time were they idle or waiting?”Timesheet, diary note.QS.
Idle/reassigned labour mentionedNo mitigation statusP2“Were they idle, reassigned to useful work, or sent off site?”Reassignment note, alternate work photo.PM/QS.
Verbal instruction mentionedNo instructorP1“Who gave the instruction and what is their role/company?”Name, company, role.PM/QS.
Verbal instruction mentionedNo written confirmationP1“Is there an email, WhatsApp, RFI, AI, PMI, or meeting note confirming this?”Upload correspondence.Draft confirmation email.
Work blockedNo locationP1“Which exact area was blocked?”Floor/zone/grid/room.Site manager.
Work blockedNo affected activityP1“What planned activity could not proceed?”Programme/lookahead ref.PM/planner.
Work blockedNo blocker/causeP1“What physically prevented the work?”Photo, handover record, email.PM.
Hidden works mentionedNo pre-close photoP0“Upload a photo before this is covered up.”Photo/video, inspection sign-off.Immediate site alert.
Drawing/spec conflictNo document refsP1“Which drawing/spec references conflict?”Drawing numbers, spec sections, screenshots.Design manager.
Missing design infoNo required decision dateP1“When do you need the answer to avoid delay?”Lookahead/programme activity.PM/design manager.
Damaged materialNo photoP1“Upload a photo showing the damage and label the affected quantity.”Photo, delivery note annotation.Procurement/QS.
Damaged materialNo quantityP1“How much is damaged or unusable?”Count/length/m²/pack quantity.Procurement.
Inspection failedNo report or reasonP1“What failed and who inspected it?”Inspection report, defect list.QA/PM.
Weather delayNo affected workP2“Which activity stopped because of weather?”Weather record, photo, programme.PM/QS if commercial.
Potential variationNo original scope basisP1“What document shows this was outside the original scope?”BoQ, tender return, exclusion, drawing revision.QS/estimator.
Potential noticeNo awareness dateP1“When did you first become aware of this issue?”Diary/transcript/email.Commercial manager.
Programme slippageNo activity IDP2“Which programme or lookahead activity does this relate to?”Programme extract.Planner/PM.

D2. Missing evidence behaviour

If evidence exists:
    ask for upload.
If evidence does not exist:
    ask user to mark unavailable and explain why.
If evidence is expected from someone else:
    create task for owner.
If evidence conflicts:
    flag conflict; do not resolve automatically.
If event is commercially significant and evidence remains missing:
    keep event open in QS/PM review queue.

E. Follow-up question decision tree

E1. Follow-up design principles

The follow-up system should behave like a sharp assistant, not a form.

Rules:

1. Ask max 1–3 questions per round.
2. Ask only questions that change commercial usefulness.
3. Prefer one combined question over three tiny ones.
4. Let the user answer by voice, text, photo, or file upload.
5. Do not ask for fields already present in source evidence.
6. Do not ask legal/entitlement questions to site managers.
7. Escalate PM/QS questions to PM/QS, not site.
8. Stop once the event is reviewable, not perfect.

E2. Decision tree

START

Parse voice/photos/files

Any P0 safety or hidden-works issue?
  ├── Yes → ask immediate evidence/escalation question
  │        "Upload photo before close-up" / "Record incident details"

  └── No

Detect commercial event?
  ├── No → create diary draft only

  └── Yes

Does event have minimum commercial facts?
       Minimum = what + where + when + affected activity + evidence

  Missing "what/where/when"?
  ├── Yes → ask factual clarification first

  └── No

  Missing volatile evidence?
  ├── Yes → ask upload question
  │        delivery note / photo / instruction / markup / pre-close photo

  └── No

  Missing impact data?
  ├── Yes → ask labour/programme/quantity question

  └── No

  Human review needed?
  ├── PM → coordination/programme/action
  ├── QS → cost/change/evidence
  ├── Commercial manager → notice/claim/high-risk
  └── Estimator → tender assumption/original scope basis

E3. Example follow-up bundles

Late delivery:

1. What time was the partition track expected or needed on site?
2. Were the dryliners idle, reassigned, or working on other tasks before it arrived?
3. Can you upload the delivery note, or confirm it is missing?

Verbal instruction:

1. Who gave the instruction, and what is their company/role?
2. What exactly changed from the current drawing/spec/scope?
3. Is there any written confirmation? Upload it if yes.

Drawing/spec conflict:

1. Which drawing and spec references conflict?
2. What work is blocked or at risk because of the conflict?
3. Upload a photo/markup showing the issue.

Hidden works:

1. Upload a photo before this is closed up.
2. Which location/room/grid does it show?
3. Has inspection/sign-off happened yet?

E4. Output structures

A. Daily diary draft

Header
Site conditions
Labour and plant
Planned work
Completed work
Incomplete work and reasons
Deliveries/materials
Instructions/RFIs/variations
Quality/safety/inspections
Commercial events detected
Missing evidence
PM/QS follow-up actions
Evidence attachments
Approval/export status

B. Commercial event card

Event title
Event type
Severity
Location
Date/time
Confirmed facts
Inferred facts
Missing facts
Conflicting facts
Evidence panel
Affected activity/package
Possible commercial relevance
Suggested actions
Review owner
Status

C. Missing evidence checklist

Missing item
Why it matters
Linked event
Owner
Priority
Due date
Accepted alternatives
Status

D. PM/QS review queue

Event ID
Project
Date
Type
Severity
Owner
Missing evidence count
Suggested action
Review state
Age
Export status

E. Evidence pack

Event summary
Timeline
Source transcript excerpts
Photo/file table
Delivery notes / emails / programme extracts
Missing evidence log
Review decisions
Exported PDF bundle

F. Draft confirmation email

To / CC
Subject
Factual summary only
Requested confirmation
Attachments
No entitlement language unless approved
Reviewer approval block

G. Draft RFI / variation note skeleton

Title
Location
Background facts
Question / change description
Relevant document references
Required response date
Programme/cost impact: TBC unless reviewed
Attachments
Prepared by
Requires PM/QS/commercial approval

H. Weekly commercial risk digest

Open commercial events by project/package
High-severity events
Missing evidence ageing
Potential RFIs
Potential variations
Potential notice review items
Overdue owner actions
Evidence captured this week
Events closed/exported

E5. Confidence and uncertainty rules

LabelMeaningDisplay behaviour
Confirmed factDirectly supported by transcript, photo metadata, uploaded file, delivery note, email, programme extract, or approved user answer.Show source link.
Inferred factCalculated or reasoned from confirmed facts. Example: “possible lost planned drylining time = 28.6 operative-hours.”Mark as inference and show formula.
Missing factRequired field absent.Add to missing evidence checklist.
Conflicting factSources disagree. Example: voice says 13:32, delivery note says 13:45.Flag conflict. Require human review.
Human review requiredAny RFI, notice, variation, claim, cost, entitlement, liability, or formal correspondence.Block export/send until approved.
Commercial significance uncertainEvent may matter commercially, but programme/cost/contract relevance is not proven.Show as “possible commercial issue,” not “claim.”
Low confidence extractionAI uncertain about transcript, document reference, quantity, person, or location.Ask clarification or mark uncertain.

F. Example end-to-end scenario output

F1. Project metadata

Project: Commercial office fit-out
Package: Drylining / partitions
Area: Level 2 Zone B
Date: 2026-06-16
Reporter: Tom Harris, Site Manager
Planned activity: DRY-L2-ZB-014 — install partition track, Level 2 Zone B
Planned start: 08:00
Material: Partition track
Expected delivery: not stated in first voice note
Actual delivery: 13:32, per site manager voice note
Labour: 6 dryliners on site
Reassignment: 2 operatives reassigned
Delivery note: missing
Photos: 6 uploaded

F2. Example voice note transcript

“Quick update for Level 2 Zone B. Drylining was meant to start first thing at eight, but the partition track wasn’t here. We had six dryliners in. The track eventually turned up at 13:32. I moved two of the lads onto Level 1 snagging around quarter past eleven because they were just waiting around. The other four stayed on Level 2 doing what they could, but they couldn’t start the track install properly until the delivery came in. I’ve taken photos of the delivery and the Zone B area. I don’t have the delivery note — driver said it was with the office, but I haven’t got a copy. We need QS to know because this has knocked today’s drylining plan.”

F3. Structured extraction

FieldExtracted valueConfidenceSource
Project typeCommercial office fit-outConfirmedMetadata
Event typeLate delivery; idle/reassigned labour; missing delivery noteConfirmedTranscript
LocationLevel 2 Zone BConfirmedTranscript
Planned workDrylining / partition track installConfirmedTranscript
Planned start08:00ConfirmedTranscript
MaterialPartition trackConfirmedTranscript
Actual arrival13:32ConfirmedTranscript
Labour present6 drylinersConfirmedTranscript
Reassigned labour2 dryliners to Level 1 snagging at approx. 11:15ConfirmedTranscript
Remaining labour4 stayed Level 2, unable to start track install properlyConfirmedTranscript
Delivery noteMissing / not uploadedConfirmedTranscript
Photos6 uploadedConfirmed if files presentUpload metadata
Expected delivery timeMissingMissingNot stated
SupplierMissingMissingNot stated
Programme activity IDDRY-L2-ZB-014Confirmed if metadata/file presentMetadata
Commercial significancePossible labour/productivity/programme impactInferredDerived from planned vs actual

F4. Follow-up questions

Round 1 — ask only three:

1. What time was the partition track expected or required on site?
2. Who was the supplier, and can you upload the delivery note or confirm it is unavailable?
3. Were the remaining four dryliners idle, doing useful alternative work, or only partial prep before the track arrived?

Example site manager answers:

1. Needed by 08:00 for planned start. Supplier was told morning delivery, but I don’t have the supplier email.
2. Supplier was BuildLine Interiors. Delivery note is unavailable at the moment; I’ll ask the office.
3. The four on Level 2 did setting out and tidying, but no track install until after the delivery.

F5. Completed daily diary draft

DAILY DIARY — DRAFT

Project: Commercial office fit-out
Date: 2026-06-16
Reporter: Tom Harris, Site Manager
Area: Level 2 Zone B
Package: Drylining / partitions

Weather:
No weather impact reported.

Planned work:
Drylining team planned to start partition track installation in Level 2 Zone B at 08:00 under activity DRY-L2-ZB-014.

Labour:
6 dryliners on site for Level 2 Zone B.
At approx. 11:15, 2 dryliners were reassigned to Level 1 snagging.
4 dryliners remained on Level 2 and carried out setting out/tidying only. Track installation could not start properly until partition track arrived.

Deliveries:
Partition track delivery arrived at 13:32.
Supplier reported by site manager as BuildLine Interiors.
Delivery note not uploaded. Site manager to request copy from office/supplier.
Photos of delivery and Level 2 Zone B uploaded.

Work completed:
Limited setting out/tidying carried out before delivery.
Partition track installation started after delivery at 13:32. Quantity installed not confirmed.

Incomplete work / blockers:
Planned 08:00 drylining start in Level 2 Zone B was blocked by absence of partition track.
Expected/required delivery time recorded as 08:00 based on planned start. Supplier confirmation not uploaded.

Commercial events detected:
CE-001 Late delivery — partition track arrived 13:32.
CE-002 Reassigned / potentially idle labour — 6 dryliners affected; 2 reassigned at approx. 11:15; 4 remained on Level 2 on limited prep.
CE-003 Missing evidence — delivery note missing; supplier confirmation missing.

PM/QS follow-up:
QS to review possible labour/productivity impact.
PM to confirm whether activity DRY-L2-ZB-014 programme completion was affected.
Site manager/procurement to obtain delivery note and supplier delivery confirmation.

F6. Commercial event card

Commercial Event CE-001

Title:
Partition track late delivery affected Level 2 Zone B drylining start.

Type:
Late delivery + labour disruption + missing delivery note.

Severity:
Medium-high for demo.
Commercial significance: uncertain until QS/PM review.

Date/time:
2026-06-16.
Planned drylining start: 08:00.
Delivery arrival: 13:32.

Location:
Level 2 Zone B.

Confirmed facts:
- Drylining planned to start at 08:00.
- Six dryliners were on site.
- Partition track arrived at 13:32.
- Two dryliners were reassigned to Level 1 snagging at approx. 11:15.
- Four dryliners remained on Level 2 but could not start track installation properly before delivery.
- Delivery note is missing/not uploaded.
- Photos uploaded.

Inferred facts:
- Planned drylining start was delayed by 5h32m from 08:00 to 13:32.
- Potential affected planned drylining time:
  - 6 operatives from 08:00–11:15 = 19.5 operative-hours.
  - 4 operatives from 11:15–13:32 = 9.1 operative-hours.
  - Total potential affected planned drylining time = 28.6 operative-hours.
- This is not the same as recoverable cost. QS review required.

Missing facts:
- Supplier delivery note.
- Supplier promised/confirmed delivery window.
- Quantity delivered.
- Quantity installed after delivery.
- Whether programme activity DRY-L2-ZB-014 completion date moved.
- Cost code / subcontractor labour rate.

Suggested actions:
1. Site manager/procurement: obtain delivery note.
2. PM: confirm programme impact against lookahead/programme.
3. QS: review labour impact and whether any contractual/commercial action is required.
4. Draft confirmation email available for PM/QS approval.

Review state:
Needs QS review.
Needs PM programme review.
Evidence incomplete.

F7. Missing evidence checklist

Missing evidencePriorityWhy neededOwnerStatus
Delivery noteP1Confirms supplier, material, quantity, and delivery time.Site manager / procurementMissing
Supplier delivery confirmationP1Proves expected/promised delivery window.ProcurementMissing
Programme/lookahead extractP1Proves drylining was planned for 08:00 Level 2 Zone B.PM/plannerNeeded
Labour allocation/timesheetP1Supports affected labour hours.Site manager/QSNeeded
Photo labelsP2Link photos to delivery, material, and Level 2 Zone B.Site managerPartially complete
Quantity installed after 13:32P2Helps assess actual productivity impact.Site managerMissing
Cost code/packageP2Needed for QS review/export.QSMissing

F8. Suggested PM/QS actions

PM action:
Confirm whether activity DRY-L2-ZB-014 was delayed, resequenced, or recovered same day.
Attach relevant lookahead/programme extract.

QS action:
Review potential affected planned drylining hours.
Do not treat 28.6 operative-hours as a claim value. It is an inferred exposure requiring labour records, subcontract terms, mitigation review, and contract review.

Procurement action:
Request delivery note and supplier delivery confirmation from BuildLine Interiors.

Site manager action:
Label uploaded photos:
- delivery arrival
- partition track
- Level 2 Zone B workface
- drylining area before start

F9. Draft confirmation email

Subject: Project record — partition track delivery to Level 2 Zone B on 16 June

To: [PM / Supplier / Procurement — to be selected]
CC: [QS], [Site Manager]
Status: Draft — PM/QS approval required before sending

Hi [Name],

For the project record, please confirm the following regarding the partition track delivery for Level 2 Zone B on 16 June:

- Drylining / partition track installation was planned to start in Level 2 Zone B at 08:00.
- Six dryliners were on site for the planned works.
- The partition track delivery arrived on site at 13:32.
- Two dryliners were reassigned to Level 1 snagging at approximately 11:15.
- The delivery note has not yet been received/uploaded.

Please confirm:
1. the delivery note number and a copy of the delivery note;
2. the supplier’s planned/confirmed delivery window;
3. the quantity of partition track delivered.

Photos from site are attached for reference.

Regards,  
[Sender]

Attachments:
- Photo P001 — Level 2 Zone B workface
- Photo P002 — partition track delivery
- Photo P003 — material label/pallet

No entitlement language. No “claim.” No “you caused delay.” Just facts and confirmation.

F10. Evidence pack table

Evidence IDTypeDescriptionTimestampSupportsStatus
EV-001Voice transcriptSite manager report of late partition track delivery and affected labour.16 Jun 16:05Planned start, actual arrival, labour affected, missing note.Captured
EV-002PhotoPartition track pallet/material on site.16 Jun 13:39Material arrival evidence.Captured; needs label
EV-003PhotoLevel 2 Zone B workface before install.16 Jun 08:12Work area status before material arrival.Captured
EV-004PhotoDrylining materials/storage area.16 Jun 13:41Delivery context.Captured
EV-005Programme extractDRY-L2-ZB-014 planned 08:00 start.UnknownPlanned baseline.Needed
EV-006Delivery noteSupplier delivery note.UnknownSupplier/time/quantity proof.Missing
EV-007Labour allocationSix dryliners, time split, reassignment.UnknownLabour impact.Needed
EV-008Supplier email/POExpected delivery window.UnknownPlanned delivery proof.Missing

F11. Bad output examples and factual rewrites

Bad AI outputWhy users distrust itBetter construction record
“The team made good progress despite some delivery challenges.”Vague. No time, trade, location, material, or consequence.“Level 2 Zone B drylining did not start at planned 08:00 because partition track was not on site. Partition track arrived at 13:32. Six dryliners were present; two reassigned at approx. 11:15. Delivery note missing.”
“This caused a delay and should be claimed as a variation.”Overreaches. Entitlement and claim status are not proven.“Possible commercial event. QS to review whether late delivery and affected labour create recoverable cost/time under the relevant contract/subcontract. Evidence incomplete: delivery note and supplier confirmation missing.”
“Client verbally instructed a change.”Too thin. No who/what/when/source.“Site manager reports verbal instruction at approx. 10:20 from [name unknown] to move partition line. Instructor, role, drawing reference, and written confirmation missing. Follow-up required before any variation/RFI action.”
“Weather was bad and delayed the works.”Not measurable.“Rain reported 09:10–11:45. External loading activity stopped during that period. Weather source and affected programme activity not attached. PM/QS review required if commercial relevance is asserted.”
“Materials arrived damaged.”No proof or quantity.“Three plasterboard packs reported damaged on delivery. Photo uploaded EV-014. Delivery note not annotated/uploaded. Quantity accepted/rejected not confirmed. Procurement to confirm supplier position.”

G. JSON-style schemas

These are intentionally product schemas, not legal schemas.

{
  "DailyDiary": {
    "type": "object",
    "required": ["diary_id", "project_id", "date", "reporter", "review_state"],
    "properties": {
      "diary_id": "string",
      "project_id": "string",
      "project_name": "string",
      "contract_or_package": "string",
      "date": "YYYY-MM-DD",
      "timezone": "string",
      "reporter": {
        "user_id": "string",
        "name": "string",
        "role": "string",
        "company": "string"
      },
      "working_hours": {
        "planned_start": "HH:mm",
        "planned_finish": "HH:mm",
        "actual_start": "HH:mm",
        "actual_finish": "HH:mm"
      },
      "weather": {
        "source": "manual|api|unknown",
        "conditions": "string",
        "temperature_c": "number|null",
        "rainfall_mm": "number|null",
        "wind_speed_mph": "number|null",
        "impact_reported": "boolean",
        "impact_notes": "string|null"
      },
      "locations": [
        {
          "building": "string",
          "level": "string",
          "zone": "string",
          "room": "string|null",
          "gridline": "string|null"
        }
      ],
      "labour": [
        {
          "company": "string",
          "trade": "string",
          "headcount": "integer",
          "start_time": "HH:mm|null",
          "end_time": "HH:mm|null",
          "hours": "number|null",
          "status": "working|idle|reassigned|stood_down|unknown",
          "activity": "string|null",
          "cost_code": "string|null",
          "notes": "string|null"
        }
      ],
      "plant_equipment": [
        {
          "item": "string",
          "company": "string|null",
          "hours_used": "number|null",
          "inactive_hours": "number|null",
          "downtime_reason": "string|null",
          "inspection_status": "passed|failed|not_applicable|unknown"
        }
      ],
      "planned_work": [
        {
          "activity_id": "string|null",
          "description": "string",
          "location": "string",
          "planned_start": "HH:mm|null",
          "planned_finish": "HH:mm|null",
          "planned_resource": "string|null"
        }
      ],
      "completed_work": [
        {
          "description": "string",
          "location": "string",
          "quantity": "number|null",
          "unit": "string|null",
          "evidence_ids": ["string"]
        }
      ],
      "incomplete_work": [
        {
          "description": "string",
          "location": "string",
          "reason": "string",
          "linked_event_id": "string|null"
        }
      ],
      "deliveries": [
        {
          "supplier": "string|null",
          "material": "string",
          "expected_time": "HH:mm|null",
          "actual_time": "HH:mm|null",
          "quantity": "number|null",
          "unit": "string|null",
          "delivery_note_id": "string|null",
          "condition": "ok|damaged|incomplete|unknown",
          "evidence_ids": ["string"]
        }
      ],
      "instructions": [
        {
          "instruction_type": "verbal|email|formal_instruction|meeting|unknown",
          "given_by": "string|null",
          "company": "string|null",
          "role": "string|null",
          "time": "HH:mm|null",
          "description": "string",
          "written_confirmation_status": "attached|missing|not_required|unknown",
          "linked_event_id": "string|null"
        }
      ],
      "rfis": [
        {
          "rfi_id": "string|null",
          "status": "potential|draft|submitted|answered|closed|unknown",
          "question": "string",
          "drawing_refs": ["string"],
          "spec_refs": ["string"],
          "due_date": "YYYY-MM-DD|null",
          "linked_event_id": "string|null"
        }
      ],
      "quality_safety": [
        {
          "type": "inspection|defect|hold_point|incident|near_miss|permit",
          "description": "string",
          "location": "string|null",
          "severity": "low|medium|high|critical|unknown",
          "evidence_ids": ["string"],
          "escalation_required": "boolean"
        }
      ],
      "commercial_event_ids": ["string"],
      "evidence_item_ids": ["string"],
      "missing_evidence_request_ids": ["string"],
      "suggested_action_ids": ["string"],
      "review_state": "ReviewState",
      "exports": [
        {
          "export_type": "pdf|email|excel|procore|sharepoint",
          "exported_at": "datetime",
          "exported_by": "string",
          "destination": "string"
        }
      ],
      "audit_log": [
        {
          "timestamp": "datetime",
          "actor": "string",
          "action": "created|edited|approved|rejected|exported",
          "details": "string"
        }
      ]
    }
  },

  "CommercialEvent": {
    "type": "object",
    "required": ["event_id", "project_id", "event_type", "title", "date", "review_state"],
    "properties": {
      "event_id": "string",
      "project_id": "string",
      "diary_id": "string",
      "event_type": "late_delivery|missing_material|damaged_material|access_blocked|design_info_missing|drawing_spec_conflict|verbal_instruction|client_consultant_instruction|scope_change|abortive_labour|idle_labour|reassigned_labour|out_of_sequence|rework|quality_hold|hidden_works|inspection_result|weather_delay|subcontractor_delay|supplier_delay|programme_slippage|potential_rfi|potential_variation|potential_notice|missing_evidence|claim_supporting_evidence",
      "title": "string",
      "date": "YYYY-MM-DD",
      "time_start": "HH:mm|null",
      "time_end": "HH:mm|null",
      "location": {
        "building": "string|null",
        "level": "string|null",
        "zone": "string|null",
        "room": "string|null",
        "gridline": "string|null"
      },
      "source_summary": "string",
      "confirmed_facts": [
        {
          "fact": "string",
          "source_evidence_ids": ["string"],
          "confidence": "high|medium|low"
        }
      ],
      "inferred_facts": [
        {
          "inference": "string",
          "basis_evidence_ids": ["string"],
          "formula_or_reasoning": "string|null",
          "confidence": "high|medium|low"
        }
      ],
      "missing_facts": [
        {
          "field": "string",
          "why_needed": "string",
          "priority": "P0|P1|P2|P3"
        }
      ],
      "conflicting_facts": [
        {
          "field": "string",
          "source_a": "string",
          "source_b": "string",
          "resolution_status": "unresolved|resolved_by_reviewer"
        }
      ],
      "affected_activity": {
        "programme_activity_id": "string|null",
        "description": "string|null",
        "planned_start": "datetime|null",
        "planned_finish": "datetime|null",
        "programme_impact_status": "none|possible|confirmed|unknown"
      },
      "resource_impact": {
        "labour_headcount": "integer|null",
        "trade": "string|null",
        "affected_hours_estimate": "number|null",
        "plant_impact": "string|null",
        "material_impact": "string|null"
      },
      "commercial_significance": "none|low|medium|high|unknown",
      "severity": "low|medium|high|critical",
      "human_review_required": "boolean",
      "review_roles": ["site_manager", "pm", "qs", "commercial_manager", "estimator", "design_manager", "qa"],
      "suggested_action_ids": ["string"],
      "evidence_item_ids": ["string"],
      "missing_evidence_request_ids": ["string"],
      "review_state": "ReviewState"
    }
  },

  "EvidenceItem": {
    "type": "object",
    "required": ["evidence_id", "type", "captured_at", "source_channel"],
    "properties": {
      "evidence_id": "string",
      "type": "voice_transcript|photo|video|delivery_note|email|whatsapp|programme_extract|drawing|specification|rfi_log|variation_log|timesheet|inspection_report|permit|other",
      "file_name": "string|null",
      "source_channel": "pwa|email|whatsapp|procore|sharepoint|manual_upload|api",
      "captured_at": "datetime|null",
      "uploaded_at": "datetime",
      "uploaded_by": "string",
      "created_by_original": "string|null",
      "hash": "string|null",
      "metadata": {
        "mime_type": "string|null",
        "exif_timestamp": "datetime|null",
        "gps_lat": "number|null",
        "gps_lng": "number|null",
        "page_number": "integer|null",
        "document_ref": "string|null"
      },
      "description": "string",
      "linked_project_id": "string",
      "linked_diary_id": "string|null",
      "linked_event_ids": ["string"],
      "supports_facts": ["string"],
      "evidence_status": "raw|processed|labelled|verified|rejected|missing|superseded",
      "access_control": {
        "visibility": "internal|project_team|restricted",
        "restricted_reason": "string|null"
      }
    }
  },

  "MissingEvidenceRequest": {
    "type": "object",
    "required": ["request_id", "event_id", "priority", "requested_item", "status"],
    "properties": {
      "request_id": "string",
      "event_id": "string",
      "trigger_rule_id": "string",
      "priority": "P0|P1|P2|P3",
      "requested_item": "delivery_note|photo|programme_extract|drawing_ref|spec_ref|timesheet|supplier_confirmation|written_instruction|inspection_report|quantity|time|person|location|other",
      "question_text": "string",
      "why_needed": "string",
      "acceptable_alternatives": ["string"],
      "owner_role": "site_manager|pm|qs|commercial_manager|procurement|design_manager|qa",
      "owner_user_id": "string|null",
      "due_by": "datetime|null",
      "status": "open|answered|uploaded|unavailable|waived_by_reviewer|overdue|closed",
      "response": {
        "answer_text": "string|null",
        "evidence_item_ids": ["string"],
        "responded_by": "string|null",
        "responded_at": "datetime|null"
      }
    }
  },

  "FollowUpQuestion": {
    "type": "object",
    "required": ["question_id", "prompt", "priority", "expected_answer_type"],
    "properties": {
      "question_id": "string",
      "event_id": "string|null",
      "prompt": "string",
      "reason": "string",
      "priority": "P0|P1|P2|P3",
      "expected_answer_type": "short_text|long_text|time|date|number|single_choice|multi_choice|photo_upload|file_upload|voice",
      "choices": ["string"],
      "max_questions_in_round": "integer",
      "destination_fields": ["string"],
      "linked_missing_evidence_request_id": "string|null",
      "asked_at": "datetime|null",
      "answered_at": "datetime|null",
      "status": "queued|asked|answered|skipped|expired"
    }
  },

  "SuggestedAction": {
    "type": "object",
    "required": ["action_id", "action_type", "title", "human_approval_required", "status"],
    "properties": {
      "action_id": "string",
      "event_id": "string",
      "action_type": "diary_note|pm_task|qs_review|procurement_task|draft_email|draft_rfi|draft_variation_note|draft_notice_review|evidence_pack|programme_review|qa_task|safety_escalation",
      "title": "string",
      "rationale": "string",
      "owner_role": "site_manager|pm|qs|commercial_manager|procurement|design_manager|qa|estimator",
      "owner_user_id": "string|null",
      "due_by": "datetime|null",
      "draft_text": "string|null",
      "source_evidence_ids": ["string"],
      "human_approval_required": "boolean",
      "approval_role_required": ["pm", "qs", "commercial_manager"],
      "status": "suggested|assigned|in_review|approved|rejected|sent|exported|closed",
      "review_notes": "string|null"
    }
  },

  "ReviewState": {
    "type": "object",
    "required": ["status", "version"],
    "properties": {
      "status": "new|extracted|needs_site_followup|awaiting_evidence|ready_for_pm_review|pm_reviewed|ready_for_qs_review|qs_reviewed|commercial_review_required|approved|rejected|exported|closed",
      "version": "integer",
      "current_owner_role": "site_manager|pm|qs|commercial_manager|procurement|design_manager|qa|system",
      "current_owner_user_id": "string|null",
      "reviewers": [
        {
          "user_id": "string",
          "role": "string",
          "decision": "pending|approved|rejected|needs_more_info",
          "decision_at": "datetime|null",
          "notes": "string|null"
        }
      ],
      "approval_required_before": ["email_send", "rfi_submit", "variation_submit", "notice_submit", "claim_pack_export"],
      "last_updated_at": "datetime",
      "closed_at": "datetime|null"
    }
  }
}

H. First-demo checklist

Build the demo around one event. Do not overbuild.

Include in first demo

Field PWA
- Magic-link access
- Project/date/reporter prefill
- One-button voice record
- Photo/file upload
- Manual weather field or simple auto-fill
- 1–3 follow-up questions

AI pipeline
- Speech-to-text transcript
- Structured daily extraction
- Commercial event classification
- Missing evidence detection
- Confidence labels
- Suggested actions

Outputs
- Raw transcript
- Daily diary draft
- Commercial event card
- Missing evidence checklist
- PM/QS review queue
- Draft confirmation email
- Evidence pack table
- Admin dashboard

Admin dashboard
- Event ID
- Project
- Date
- Event type
- Severity
- Missing evidence
- Owner
- Review state
- Suggested action
- Export button mocked or real PDF/email

Do not include in first demo

- Full Procore write-back
- WhatsApp integration unless already trivial
- Contract-specific notice automation
- BIM/drawing measurement
- Automated programme delay analysis
- Cost valuation
- Final account intelligence
- Reality capture / OpenCV progress verification
- Multi-project analytics
- Complex permissions

The demo should make one point: a messy voice note becomes a reviewable commercial evidence workflow.


I. Later-product checklist

Build later only after the first workflow proves adoption.

1. Procore / Autodesk / SharePoint integrations.
2. WhatsApp/email ingestion for messy real-world records.
3. Contract-specific rule packs: JCT, NEC, subcontract variants.
4. RFI and variation tracker sync.
5. Programme import and activity matching.
6. Labour allocation/timesheet integration.
7. Procurement/delivery note integration.
8. Commercial manager approval workflows.
9. Evidence pack PDF with audit trail.
10. Weekly commercial risk digest across projects.
11. Historical event search.
12. Historical cost memory:
    - similar event lookup
    - labour/resource impacts
    - recovered/unrecovered values
    - tender assumption feedback
13. Estimator feedback loop:
    - “This package usually suffers from late materials/access/design ambiguity.”
14. Advanced photo handling:
    - EXIF validation
    - location tagging
    - duplicate detection
    - manual annotation
15. Long-term cost intelligence:
    - final account movement
    - variation outcomes
    - package-level productivity history

J. Risks and domain questions to validate with the construction partner

Product risks

RiskWhy it mattersValidation question
Site managers will not use it daily.Field adoption is the hardest operational risk.“Would your site manager spend 2 minutes doing this at 4pm if it saved QS chasing later?”
Output looks like generic diary software.Low willingness to pay.“Which of these event cards would have changed money or dispute outcome?”
AI invents or overstates claims.Trust dies immediately.“Do these uncertainty labels feel safe enough for QS/PM review?”
Missing evidence prompts become annoying.Users will ignore the system.“Which three missing facts do you actually chase today?”
PM/QS review becomes another inbox.Workflow stalls.“Who owns commercial-event triage daily or weekly?”
Contract rules vary by job.Notice/RFI/variation logic cannot be universal.“Which contracts and amended forms are used most often?”
Source data is scattered.Evidence packs need connectors or simple uploads.“Where do photos, WhatsApps, delivery notes, RFIs, and diaries live today?”
Programme linkage is weak.Delay significance is hard without planned baseline.“Do site managers know activity IDs, or only zones/tasks?”
Labour records are not granular.Idle/reassigned labour impact may remain unprovable.“Do you record labour by trade, area, activity, and hours?”
Commercial team distrusts field descriptions.Review workflow must expose sources.“What would make a QS trust or reject this event card?”

Domain questions for partner meeting

1. What contract forms do you normally use: JCT, NEC, bespoke, subcontract variants?
2. Who can issue valid instructions on your projects?
3. How are verbal instructions handled today?
4. What is your current site diary template?
5. Who writes it, when, and who reviews it?
6. What fields are usually missing?
7. Which events have cost you money in the last 12 months?
8. How do site teams currently send photos?
9. Are photos labelled by project/location/date, or just dumped in folders/WhatsApp?
10. Where do delivery notes live?
11. Do you have a delivery tracker?
12. How do QSs find evidence for variations today?
13. What is the current RFI workflow?
14. What is the current variation/change workflow?
15. How are programme activities communicated to site?
16. Do site managers use lookaheads, full programmes, or verbal plans?
17. How do you record labour allocation and idle time?
18. Who signs off daily records?
19. What would count as a commercially useful event card?
20. What output format would your PM/QS actually use: PDF, Excel, email, Procore item, SharePoint folder?
21. What should never be sent without commercial manager approval?
22. Can you give us one painful real event and the messy records around it?

The hard ask after the demo should be:

Give us one real commercially painful event.
Give us the messy evidence.
Let us reconstruct:
- what happened
- what evidence existed
- what evidence was missing
- what should have been flagged
- what action should have happened
- what money/entitlement may have been exposed
- how the workflow would catch it next time

That is the real test. A polished demo proves build capability. A cold reconstruction proves whether this product matters.