Skip to content

Story No. 04Construction & Infrastructure

Primavera P6 project-controls reporting, without the spreadsheet rebuild

For Hallward, we designed and built a reporting platform that gives construction PMO teams on roads, rail and pipeline programmes their Critical Path, Earned Value, Milestone Tracker and Time Chainage views straight from Primavera P6 exports. Schedule files are parsed in the background, and AI-assisted categorisation sorts activities for linear projects. Reporting that used to be rebuilt in spreadsheets each period now comes out of repeatable dashboards.

Client
Hallward
Sector
Construction & Infrastructure
Our role
Designed and built end to end
Context
Construction PMO · Australia
Hallward: product screenshot

The challenge

Project-controls teams plan in Primavera P6, but they report somewhere else. To produce Earned Value figures, a Critical Path view or a milestone forecast, someone exports the schedule as XER or XML and works it through spreadsheets, period after period.

That process was fragile in predictable ways. A change to the schedule’s structure breaks the formulas. Big files are slow to work with, and in a web tool they could lock up the browser or hit a gateway timeout. Linear infrastructure adds another dimension: roads, rail and pipelines are tracked by chainage along the route as well as by date, which is awkward to show in a spreadsheet.

  • Import Primavera XER and XML files with no manual reshaping
  • CPI, SPI and variance figures for Earned Value, plus planned against actual
  • Critical Path analysis and forecasts for milestones
  • Time Chainage views that show progress by location
  • Side-by-side comparison of several baselines
  • Large schedules handled without browser freezes or gateway timeouts

Our approach

We treated the schedule parser as the heart of the product. It reads P6 XER and XML exports and produces structured activity data that every dashboard draws from. The backend is Django REST Framework on PostgreSQL, the front end is React 18 with Tailwind CSS, and AWS Cognito manages sign-in.

The most important architectural call was to move parsing out of the web request entirely. Uploads are handed to Celery workers, with Redis behind them, and the files are processed in chunks. The user gets an immediate response, the heavy work happens in the background, and the dashboards fill in when it is done. That design choice is what removed the browser freezes and gateway timeouts.

The dashboards follow the way PMO teams already report: Critical Path, the Milestone Tracker and its forecasts, Earned Value (CPI, SPI and variances), planned against actual, Time Chainage, activity analysis and baseline-to-baseline comparison. Time Chainage earns its place on linear projects, where knowing where along the route work stands is as important as knowing when.

AI has a specific, limited role. Real schedules name activities inconsistently, so AI-assisted categorisation groups them for linear infrastructure work, and AI-assisted insight points to critical activities. Both are sorting and highlighting tasks that are slow to do by hand, which makes them a sensible place for AI. For identity we used AWS Cognito, so access to project data relies on an established service rather than code we would have to maintain ourselves.

Our advice to controls teams considering a similar tool: start from the reports you already produce and the files you already export. A product that reads existing P6 output and reproduces familiar measures is easier to adopt than one that asks planners to change how they work.

Architecture & stack

Front end
React 18, Tailwind CSS
Backend
Python, Django REST Framework, PostgreSQL
Background processing
Celery, Redis, Chunk-wise file processing
Identity
AWS Cognito
Project controls
Primavera P6 (XER/XML), Earned Value (CPI/SPI), Critical Path, Time Chainage, Milestone Tracker
AI
AI-assisted activity categorisation, Critical-activity insight

The outcome

Hallward’s users upload a schedule export and get their reporting back from the platform. Parsing, Earned Value calculations and Critical Path analysis run the same way each period, and because the work happens in chunked background jobs, large files no longer stall the browser or the gateway.

That shifts the controls team’s time from assembling numbers to reading them: which activities drive the critical path, which milestones are slipping, and where the project stands against each baseline.

Every view is built from the same parsed schedule using the same calculations, so figures agree across dashboards, across colleagues and from one period to the next. The PMO can work from the dashboards without first reconciling them.

  • Repeatable Critical Path, Earned Value, milestone and Time Chainage reporting
  • Big Primavera files parsed in background jobs
  • Spreadsheet rebuilds replaced by consistent dashboards
  • AI-assisted grouping of activities on linear infrastructure schedules

Last updated

Tell us what you’re building.

Book a free one-hour call, or send a short brief and we’ll reply within two working days.