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



