Skip to content
Demiton

Project performance record (v1)

Project performance record is one of Demiton's published registers for Australian civil construction. A project's performance summary for a period: margin, schedule and quality signals. Demiton keeps it current from the systems a contractor already runs and publishes the record's shape as a versioned JSON Schema, so the same question works whichever system produced the record.

Part of Projects in the register catalog.

Register ID
project_performance_recordUse this name to ask for the register. The API calls it a shelf ID.
Each record is
A stateThe current value of something, replaced when it changes.
Status
DeclaredDefined, and fills when a source produces its first record.
Data
OrganisationPrivate to each organisation's own workspace.
Version
v1 (1.0.1)Superseded by v2.

Standards

This register's contract was designed against these standards and laws. Holding these records does not by itself certify compliance.

  • A New Tax System (Goods and Services Tax) Act 1999 (Cth)GST tax invoice rules (ATO guidance)Australia · ATO guidance updated 25 Aug 2025 · public summary
  • AS 2124General Conditions of ContractAustralia · 1992 (superseded) · clause Annexure Part A · paywalled, from a secondary description
  • AS 4000General Conditions of ContractAustralia · 1997 (superseded edition, still in use) · clause cl 37.1/37.2 (per commentary) · paywalled, from a secondary description
  • AS 4000General Conditions of Contract (construct only)Australia · 2025 · clause cl 37.2 (per commentary) · paywalled, from a secondary description
  • AS 4902General Conditions of Contract for Design and ConstructAustralia · 2000 (R2005); status unverified · paywalled, from a secondary description
  • Security of paymentQld security of paymentAustralia · as amended · clause s 76 · public summary
  • Security of paymentACT security of paymentAustralia · as amended · clause s 19(2) · public summary
  • Security of paymentWA security of paymentAustralia · as amended · clause ss 23(7), 25 · verified against full text
  • Security of paymentNSW security of paymentAustralia · as amended · public summary
  • Security of paymentVic security of payment (2026 reforms)Australia · as amended · clause ss 14A-14D · public summary
  • Security of paymentSA security of paymentAustralia · as amended · clause s 17(2) · public summary
  • Security of paymentTas security of paymentAustralia · as amended · clause ss 17-19 · verified against full text
  • Construction Contracts Act 2002 (NZ)Construction Contracts Act 2002 (2002 No 46)New Zealand · as at 5 Oct 2023 · clause ss 18A-18I, 20-22, 24A · verified against full text
  • Housing Grants, Construction and Regeneration Act 1996 Part IIHGCRA 1996 Part II (Payment), as amended by LDEDCA 2009United Kingdom · as amended (2011) · clause ss 110-113 · verified against full text
  • SI 1998/649Scheme for Construction Contracts (England and Wales) Regulations 1998United Kingdom · as amended 2011 · clause paras 5, 8, 9, 10 · verified against full text
  • AIA G702/G703Application and Certificate for Payment / Continuation SheetUnited States · 1992 (current base editions) · public summary

Connectors

Connected today

Demiton keeps this register current from these systems now.

No system fills this register yet.

On the roadmap

Systems in the planned connector rollout that can fill this register. Partial means the system holds only some of its fields.

None planned yet.

Fields

61 fields: 29 required, 25 optional, 7 defined by each organisation.

Required

Every record carries these fields.

subjectWhole number

The project the record is about; the semantic fact's subject and supersede key.

Example: 8101

summaryText

One-line human summary for content search and list display.

Example: Emerald Street Rejuvenation is tracking slightly behind t…

claim_cycleGroup of fields

Monthly claimed-vs-cost curve and its derived margin.

margin_alertsGroup of fields

Evaluated alert rules and drafts; empty object valid.

outcome.budgetNumberUnit: AUD

BC total budget.

Example: 2850000

schema_versionText

Payload version marker ("1.0-phase1")

Example: 1.0

outcome.margin_pctNumberUnit: percent

Margin to date.

Example: 5.3

claim_cycle.curve[]List

Month-by-month points; empty array valid.

classification.nameText

Project/contract display label at analysis time.

Example: Emerald Street Rejuvenation - Central Highlands Regional …

outcome.cost_actualNumberUnit: AUD

BC total cost.

Example: 1620000

divergence_attributionGroup of fields

Deterministic drift attribution; empty object valid.

data_quality.confidenceNumberUnit: ratio 0–1

Gate confidence stamped on the fact.

Example: 0.81

outcome.cost_growth_pctNumberUnit: percent

Cost ÷ budget − 1.

Example: 3.1

provenance.generated_atDate and timeISO 8601, with time zone

Generation timestamp.

Example: 2026-08-01T02:00:00Z

claim_cycle.curve[].monthText

The period covered by the point.

Example: 2026-06

claim_cycle.curve[].cum_costNumberUnit: AUD

Cumulative cost.

Example: 1305000

margin_alerts.active_alerts[]List

Alerts active in the latest month; empty valid.

data_quality.sources_missing[]List

Named gaps.

Example: KEYPAY

data_quality.sources_present[]List

Named sources that answered.

Example: D365_BUSINESS_CENTRAL

claim_cycle.curve[].cum_claimedNumberUnit: AUD

Cumulative claimed.

Example: 1425000

divergence_attribution.cycles[]List

Drifting periods; empty array valid.

data_quality.source_coverage_pctNumberUnit: ratio 0–1

Share of expected sources present.

Example: 0.88

margin_alerts.active_alerts[].ruleText

Rule id (tendered_deviation, cost_claim_ratio)

Example: cost_growth_threshold

margin_alerts.active_alerts[].levelText

alert or escalation

Example: warning

margin_alerts.active_alerts[].monthText

The month the alert fired.

Example: 2026-07

divergence_attribution.cycles[].monthText

The drifting period.

Example: 2026-07

claim_cycle.curve[].margin_to_date_pctNumberUnit: percent

Cumulative margin at that month.

Example: 8.4

divergence_attribution.cycles[].drift_ptsNumberUnit: margin points

Signed margin movement that cycle.

Example: -3.1

divergence_attribution.cycles[].causes[].causeText

Attributed cause, one of the code-defined values.

Example: wet weather standdown

Optional

Present when the source system records them.

cost_lines[]List

Raw BC cost categories; empty when no P&L.

outcome.marginNumberUnit: AUD

BC margin.

Example: 90630

outcome.statusText

BC status.

Example: on_track

schedule_delaysGroup of fields

Latest site-diary schedule signal (completion dates, days worked, delay-field presence)

financial_periodText

The three declared context coordinates.

Example: 2026-07

outcome.invoicedNumberUnit: AUD

BC total invoiced.

Example: 1710000

provenance.phaseText

Pipeline phase marker ("phase1-bc-assignar")

Example: delivering

claim_cycle.cyclesWhole numberUnit: count

Number of months carrying a claim.

Example: 6

proposal: tax_basisTextUnit: excl_gst\

n/a)

outcome.contract_valueNumberUnit: AUD

BC total contract value.

Example: 2850000

outcome.revenue_actualNumberUnit: AUD

BC total revenue.

Example: 1710000

outcome.revised_budgetNumberUnit: AUD / count / percent

Variation-adjusted budget/contract and the variation tally.

Example: 2900000

proposal: jurisdictionText

The regime the record is being read under.

claim_cycle.curve[].costNumberUnit: AUD

Cost in that month.

Example: 260000

cost_lines[].cost_budgetNumberUnit: AUD / percent

Per-category budget vs actual.

claim_cycle.claimed_to_dateNumberUnit: AUD / percent

Latest-point rollups.

Example: 1710000

claim_cycle.curve[].claimedNumberUnit: AUD

Claimed in that month.

Example: 285000

claim_cycle.drift_alarm_monthText

First month margin-to-date flips negative.

Example: 2026-07

labour_plant.allocation_countWhole numberUnit: count

Allocation rollup.

labour_plant.total_task_hoursNumberUnit: hours

Total allocated task hours.

claim_cycle.tendered_margin_pctNumberUnit: percent / points

Tendered baseline and deviation.

Example: 9

margin_alerts.first_alert_monthText

Earliest alert month.

Example: 2026-07

divergence_attribution.attribution_coverage_pctNumberUnit: percent

Share of drifting cycles explained (cycle-count basis v1)

Example: 92

divergence_attribution.cycles[].causes[].evidenceText

The observed signal behind the cause.

Example: daily_log delay notes, w/c 2026-07-14

divergence_attribution.cycles[].observability_gaps[]List

Named missing data that left the cycle unattributable.

Defined by each organisation

Their contents come from the organisation's own forms or systems, so they differ between organisations.

variations[]ListUnit: AUD / date

The tenant's variation register at analysis time.

contract.sourceText

Provenance of the claim terms.

contract.claim_termsGroup of fieldsUnit: days

Claim cadence / payment terms / retention from the tenant's QF-164 template.

cost_lines[].work_type_rawText

The tenant's own BC category label.

labour_plant.hours_by_taskGroup of fieldsUnit: hours

Allocated hours per Assignar task.

proposal: claim_cycle.response_window_daysWhole numberUnit: working_day\

calendar_day)

Example record

A sample from Bridgeworks Group, Demiton's demonstration company. The values are illustrative; the shape is exactly what the contract describes.

project_performance_record.example.json
{
"claim_cycle": {
"claimed_to_date": 1710000,
"curve": [
{
"claimed": 285000,
"cost": 260000,
"cum_claimed": 1425000,
"cum_cost": 1305000,
"margin_to_date_pct": 8.4,
"month": "2026-06"
},
{
"claimed": 312000,
"cost": 300000,
"cum_claimed": 1710000,
"cum_cost": 1620000,
"margin_to_date_pct": 5.3,
"month": "2026-07"
}
],
"cycles": 6,
"drift_alarm_month": "2026-07",
"tendered_margin_pct": 9
},
"classification": {
"name": "Emerald Street Rejuvenation - Central Highlands Regional Council"
},
"data_quality": {
"confidence": 0.81,
"source_coverage_pct": 0.88,
"sources_missing": [
"KEYPAY"
],
"sources_present": [
"D365_BUSINESS_CENTRAL",
"ASSIGNAR"
]
},
"divergence_attribution": {
"attribution_coverage_pct": 92,
"cycles": [
{
"causes": [
{
"cause": "wet weather standdown",
"evidence": "daily_log delay notes, w/c 2026-07-14"
}
],
"drift_pts": -3.1,
"month": "2026-07",
"observability_gaps": []
}
]
},
"financial_period": "2026-07",
"margin_alerts": {
"active_alerts": [
{
"level": "warning",
"month": "2026-07",
"rule": "cost_growth_threshold"
}
],
"first_alert_month": "2026-07"
},
"outcome": {
"budget": 2850000,
"contract_value": 2850000,
"cost_actual": 1620000,
"cost_growth_pct": 3.1,
"invoiced": 1710000,
"margin": 90630,
"margin_pct": 5.3,
"revenue_actual": 1710000,
"revised_budget": 2900000,
"status": "on_track"
},
"provenance": {
"generated_at": "2026-08-01T02:00:00Z",
"phase": "delivering",
"resolved_links": []
},
"schema_version": "1.0",
"subject": 8101,
"summary": "Emerald Street Rejuvenation is tracking slightly behind tendered margin after a July cost-growth bump, with claims keeping pace with cost."
}

Version history

  • v2 (current)
  • v1

Use this contract

The contract is a standard JSON Schema (draft 2020-12) document, so any JSON Schema validator can check a record against it. Keywords starting with x-demiton- add Demiton's own meaning, such as units and requiredness, and validators ignore them.

Schema URL
https://docs.demiton.io/registers/project_performance_record/v1.json
Show the full JSON Schema

Loading the schema…

Talk to the team

Tell us what you run - your ERP, field, payroll and document systems - and we will show you the registers Demiton would fill from them, on your data, in a 30-minute call.

Book a 30-minute callStart free