Skip to content
Demiton

Tendered budget

Tendered budget lines across all cost categories, from the winning estimate.

Part of Opportunities in the register catalog.

Register ID
tendered_budgetUse 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
AvailableFilled today from connected systems, uploads or public data.
Data
OrganisationPrivate to each organisation's own workspace.
Version
v1Current version.

Connectors

Connected today

Demiton keeps this register current from these systems now.

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

12 fields: 9 required, 3 optional.

Required

Every record carries these fields.

entity_idWhole number

The entity the price belongs to. Always an opportunity for this shelf: doc_entity_type='opportunity' (baseline_squash_02_seed.sql:274), resolved by resolve_anchor_entity preferring opportunity at tender stage, and the writer skips the write entirely when resolution returns None.

Example: 7001

financial_periodDateYYYY-MM-DD

The period the budget belongs to, so successive periods coexist instead of superseding one another.

Example: 2026-06-01

grand_total_audNumberUnit: AUD

The whole tendered sum: the sum of every section's total.

Example: 2650000

sectionsListUnit: AUD (per section)

The cost-category breakdown (Labour, Plant, Subcontract, Travel, Materials, Overhead on a full parse), one entry per category: category label, section total, line count, and the nested line list.

coverageTextUnit: labour_only \

empty)

Example: full

source_formatText

Which parser format produced the record, so a consumer can tell a Pronamics workbook from a future parser's output.

Example: pronamics_workbook

categoryText

The cost category a section total belongs to.

Example: Labour

total_audNumberUnit: AUD

The section subtotal; grand_total_aud must equal their sum.

Example: 480000

line_countWhole numberUnit: count

How many nested lines the section carries, so a truncated parse is detectable.

Example: 22

Optional

Present when the source system records them.

labour_total_valueNumberUnit: AUD

The Labour section's subtotal, kept for labour-only consumers.

Example: 480000

budget_hoursNumberUnit: hours

Total labour hours behind the labour portion, for rate-per-hour and productivity checks.

Example: 8200

lines[]ListUnit: mixed (each line carries its own unit)

The priced line detail: what was priced, how much, in what unit, at what rate, for what total, and the work-activity / cost-type coding where the workbook carries it.

Example record

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

tendered_budget.example.json
{
"budget_hours": 8200,
"category": "Labour",
"coverage": "full",
"entity_id": 7001,
"financial_period": "2026-06-01",
"grand_total_aud": 2650000,
"labour_total_value": 480000,
"line_count": 22,
"sections": [
{
"category": "Labour",
"line_count": 22,
"total_aud": 480000
},
{
"category": "Plant",
"line_count": 14,
"total_aud": 610000
},
{
"category": "Subcontract",
"line_count": 9,
"total_aud": 950000
},
{
"category": "Materials",
"line_count": 18,
"total_aud": 410000
},
{
"category": "Overhead",
"line_count": 3,
"total_aud": 200000
}
],
"source_format": "pronamics_workbook",
"total_aud": 480000
}

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/tendered_budget/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 keep current from them, on your data, in a 30-minute call.

Book a 30-minute callStart free