Product Initiative · 2025

Construction Materials
Testing Suite

A fully native, in-app platform for running, calculating, and reporting construction materials tests — replacing Excel forever.

0
Excel files needed
100%
In-app data entry
Standards supported
Auto
PDF report generation

The current workflow is
holding the team back

Today's process relies on a complex chain of Excel, SharePoint, and a custom add-in just to record and report test results. It works — but barely.

Excel + SharePoint dependency

Every test report requires creating an Excel file in SharePoint, populating it via a custom add-in, then hoping the sync doesn't fail. One broken link stops work entirely.

Manual calculations = human error

Dry density ratios, moisture corrections, oversize adjustments — all calculated manually in spreadsheets with no validation. One formula error propagates to the client report.

No mobile or field access

Field technicians running density tests need a laptop and SharePoint access to enter results. There's no way to capture data on-site — it's all transcribed later, introducing delays and transcription errors.

Analytics are impossible

Test results locked inside Excel files can't feed dashboards or business intelligence tools. Management has no visibility into test volumes, turnaround times, or trends.

Native in-app data entry

Technicians enter measurements directly in theBOSSapp. No Excel, no SharePoint, no add-in. Works on any device, any browser, any location.

Automated, validated calculations

Every calculation — MDD, OMC, dry density ratio, moisture ratio — runs automatically in the system the moment data is entered. No formulas to break, no errors to miss.

Works anywhere, any device

Data entry lives in theBOSSapp — a web app that works on any browser, including mobile. Field technicians enter results on-site the moment the test is complete. No transcription, no delay.

Real-time Power BI analytics

All test data flows automatically into the data warehouse. Management gets live dashboards — test volumes, pass rates, turnaround times, trends by client and project.

Everything the lab needs,
built into the platform

The CMT Suite isn't a bolt-on. It's woven into the existing workflow — samples, jobs, projects, equipment, and deliverables all connected.

📋

Guided Data Entry

Step-by-step forms tailored to each test method. The system knows exactly what measurements to ask for and in what order — no training required.

Instant Calculations

Results are computed the moment data is entered. Dry density, moisture ratios, adjusted MDD — all calculated and validated in real time.

📄

In-App PDF Reports

Client-ready PDF reports generated directly from the data. Logo, accreditation details, and signatory included automatically from the organisation profile.

🔒

Version-Locked Standards

Every report permanently records which version of each Australian Standard was applied. Historical reports are always reproducible — exactly as they were signed.

🔧

Equipment Tracking

Select which balance, mould, and oven were used for each test. Equipment details and calibration status pulled directly from the existing equipment register.

✍️

Digital Signing & Approval

Authorised signatories approve and sign reports in-app. Signing triggers automatic deliverable creation and notifies the project team.

📊

Power BI Integration

All test results flow into the data warehouse automatically. No exports, no manual uploads — just live dashboards with the metrics that matter.

🧩

Multi-Method Reports

A single report combines multiple test standards — compaction, field density, moisture content — across multiple samples, exactly as per current practice.

🔗

Fully Connected

Samples, test requests, jobs, projects, clients — the CMT Suite is fully embedded in the existing platform. No duplicate data entry, no context switching.

From sample to signed report
in one place

The entire testing workflow lives inside theBOSSapp — from the moment a sample arrives to the moment the client receives their report.

1

Create Report

Select report type (e.g. Dry Density / Moisture Ratio). System sets up the required test methods and data fields automatically.

2

Add Samples

Attach the samples from the test request. Each sample gets its own data entry section per the report's required tests.

3

Enter Results

Technicians fill in measurements. Calculations run instantly. Equipment is logged. Pass/fail shown in real time.

4

Sign & Deliver

Authorised signatory approves the report. PDF auto-generates, deliverable is created, client is ready to receive.

Australian Standards,
built in from day one

We're starting with the most common tests in the lab and building a foundation that makes adding new standards straightforward.

Phase 1 — Initial Release
AS1289.5.1.1

Standard Compaction Test

Determination of MDD and OMC using standard compactive effort (2.5 kg rammer)

AS1289.5.2.1

Modified Compaction Test

Determination of MDD and OMC using modified compactive effort (4.9 kg rammer)

AS1289.5.8.1

Dry Density Ratio

Field determination of dry density ratio — the core field compliance test

AS1289.2.1.1

Moisture Content

Determination of moisture content — used across compaction and field density tests

AS1289.5.4.1

Oversize Correction

Correction for oversize particles — applied when fraction exceeds test limit

Phase 2 — Expansion
AS1289.5.7.1

Nuclear Density Gauge

Field dry density using a nuclear surface moisture-density gauge

Additional Standards

Expandable Framework

New standards can be added by developers without database migrations or downtime

Standards change.
Your records don't.

When the Australian Standards are updated, historical reports remain untouched. New tests use the new version. Old tests always display exactly as they were performed.

Old Reports (e.g. 2017)

AS1289.5.1.1 : 2017
Version locked at time of signing
Original calculations preserved
Formula logic never changes retroactively
PDF can be regenerated identically
Audit-safe, NATA compliant

New Reports (e.g. 2026)

AS1289.5.1.1 : 2026
New version applied automatically to new tests
Updated calculations & fields
Developers deploy new version — zero downtime
New PDF template if required
Report layout updates with the standard

Ready to retire the spreadsheets?

The foundation is designed. Phase 1 starts with the most common tests, done right — then expands from there.

Read the Technical Plan
Technical Architecture — For the engineering team

How it's built

Code-driven, version-safe, BI-ready. Designed to grow to dozens of test standards without architectural changes.

Data Model

CmtReport
test_request_id type standard_version status signed_by signed_at report_number
Top-level report record. type maps to a PHP class that defines required tests, calculations, and PDF layout. standard_version locks the version at creation — never changes after signing.
CmtReportSample
cmt_report_id sample_register_id
Joins a sample to a report. One row per sample on the report. The pivot through which all test results for that sample are accessed.
CmtTestResult
cmt_report_sample_id test_method standard_version data (JSON) equipment (JSON)
One record per test method per sample. data is a JSON blob whose schema is defined and validated by the test method's PHP DTO class — strongly typed in application code, flexible in storage. equipment snapshots the selected equipment and its values at the time of data entry so the record remains stable.
CmtTestResultRow
cmt_test_result_id order data (JSON)
Optional child rows for tests with multiple measurement points — e.g. compaction points on a 5.1.1 test. Single-result tests (moisture content, field density) have no rows; all data lives on the parent. Rows can be added, edited, or deleted individually via the API.

Report Type Class PHP

Each report type is a PHP class that declares which test methods it needs, how to assemble calculations across all samples, and how to render the PDF.

class DryDensityMoistureRatioReport implements CmtReportContract { public function testMethods(): array { return [ 'AS1289_5_1_1', // Standard compaction (lab) 'AS1289_5_8_1', // Field density ratio 'AS1289_2_1_1', // Moisture content 'AS1289_5_4_1', // Oversize correction ]; } public function calculate(CmtReport $report): array { return $report->samples->map( fn($s) => $this->calculateSample($s) )->toArray(); } }

Test Method DTO PHP

Each test method version has a typed DTO that defines its data shape. Old records always deserialize to their original DTO — never broken by future changes.

class AS1289_5_1_1_2017_Data { public function __construct( public readonly float $mdd, public readonly float $omc, public readonly ?float $adj_mdd, public readonly ?float $adj_omc, ) {} public static function fromArray(array $data): static { return new static( mdd: $data['mdd'], omc: $data['omc'], adj_mdd: $data['adj_mdd'] ?? null, adj_omc: $data['adj_omc'] ?? null, ); } }

Test Method Version Class PHP

Each version of each standard is an independent class. The version in the database determines which class is resolved — automatically, every time.

class AS1289_5_1_1_2017 implements CmtTestMethodContract { public function requiredEquipment(): array { return [ ['type' => 'Mould', 'fields' => ['Volume']], ['type' => 'Balance', 'fields' => ['Capacity']], ['type' => 'Oven', 'fields' => []], ]; } public function calculate(array $points, array $equipment): array { $volume = $equipment['mould']['Volume']; return $this->fitCompactionCurve($points, $volume); } }

BI / Data Warehouse dbt + Redshift

The JSON data column is transformed per test method in dbt. Each test type gets its own clean model in Redshift — structured, typed, Power BI ready.

-- dbt model: stg_compaction_tests.sql select id, cmt_report_sample_id, JSON_EXTRACT_PATH_TEXT( data, 'mdd' )::decimal(10,3) as mdd, JSON_EXTRACT_PATH_TEXT( data, 'omc' )::decimal(10,3) as omc, JSON_EXTRACT_PATH_TEXT( data, 'dry_density_ratio' )::decimal(10,3) as dry_density_ratio from {{ source('boss', 'cmt_test_results') }} where test_method = 'AS1289_5_1_1'

Design Principles Engineering

  • Code-driven, not config-driven. Every test method, calculation, and report template is defined in PHP. No database-driven form builders. Adding a new standard means adding a new class — predictable, reviewable, version-controlled.
  • Version-locked forever. A CmtTestResult stores its standard_version at the row level. The application resolves the exact DTO and calculation class for that version every time it reads the record. No migrations needed when standards update.
  • Equipment snapshotted at entry. When a technician selects equipment, the equipment ID and its relevant field values (e.g. mould volume) are saved in the equipment JSON column. If the equipment is later modified or recalibrated, historical test records are unaffected.
  • Convention-based equipment resolution. Report types declare which equipment type names and custom field names they need (e.g. type "Mould" with field "Volume"). A validation screen per organisation confirms all required equipment is correctly named and configured before any tests are run.
  • One JSON blob, clean BI. Raw test data lives in a single flexible JSON column in MySQL. dbt models in Redshift transform each test method's JSON into clean typed columns. This keeps the application schema simple while giving analytics full normalized access.
  • Zero impact on existing workflows. The existing TestRequestWorksheet / Excel / SharePoint pipeline is completely untouched. The CMT Suite runs alongside it for new test types. Teams migrate at their own pace.

Analytics Pipeline

theBOSSapp
Data entry
MySQL (RDS)
cmt_test_results
AWS DMS
Replication
Redshift
Raw data
dbt
JSON → columns
Power BI
Live dashboards