GDOT PM3 Reporting Tool
2020 · Transportation Analytics · Civic Tech · Data Engineering · Python
GDOT PM3 Reporting Tool
I designed and built the GDOT PM3 Reporting Tool, a Python-based analytics pipeline for the Georgia Department of Transportation that turns large transportation datasets into usable performance estimates. The goal was not primarily to support the formal reporting cycle, but to give GDOT a practical internal system for generating updated estimates between reporting intervals so teams could track whether planning and operations work was improving outcomes.
The tool combines NPMRDS travel time data, TMC roadway metadata, GDOT speed-limit inputs, American Community Survey tables, and CMAQ emissions records into a reproducible workflow that can run from either a command-line interface or a lightweight desktop GUI.

Overview
The core engineering challenge was processing year-scale transportation data on commodity hardware while still producing outputs that were repeatable and traceable.
To support that, I implemented:
- Config-driven execution
- Cache-aware preprocessing
- Chunked CSV joins
- Intermediate-file processing pipelines
- Timestamped output packages for reruns and review
The system computes the core PM3 measures, including:
- Level of Travel Time Reliability (LOTTR) for Interstate and non-Interstate NHS facilities
- Truck Travel Time Reliability (TTTR)
- Peak Hour Excessive Delay (PHED) for the applicable urbanized area
- Percent non-single-occupancy-vehicle travel
- CMAQ-related emissions summaries
It then exports both a consolidated report and supporting intermediate datasets for auditability.
Standards Context
The tool operates in the context of PM3 system performance reporting under 23 CFR Part 490, but the important practical value is that it lets GDOT rerun the same analysis as new source data becomes available instead of waiting for the next formal reporting deadline.
The implementation was guided by FHWA’s published PM3 methodology rather than ad hoc local rules, including:
- 23 CFR Part 490
- FHWA-HIF-18-024, FHWA Computation Procedure for Travel Time Based and Percent Non-Single Occupancy Vehicle (non-SOV) Travel Performance Measures
- FHWA-HIF-18-040, National Performance Measures for Congestion, Reliability, and Freight, and CMAQ Traffic Congestion: General Guidance and Step-by-Step Metric Calculation Procedures
Those references shaped the handling of LOTTR and TTTR calculations, PHED thresholding and hourly volume estimation, applicable facility and urbanized-area filters, and the ACS-based non-SOV methodology.
My Contributions
I wrote the application logic, configuration system, GUI launcher, processing monitor, data-loading utilities, and reporting outputs.
From a software engineering standpoint, the project reflects a pragmatic approach to civic-data tooling:
- Build for messy inputs
- Handle long-running jobs reliably
- Preserve repeatability and traceability
- Produce outputs that are useful both operationally and for audit/review
Highlights
- Built a full Python 3 data-processing application for public-sector transportation reporting
- Designed the workflow to handle large annual NPMRDS datasets with disk-backed sorting, merging, and caching
- Implemented both a CLI and a Tkinter-based GUI for configuration and execution
- Encoded PM3 measure logic for PHED, TTTR, LOTTR, non-SOV travel, and CMAQ emissions based on FHWA guidance
- Produced outputs intended for both final reporting and traceable intermediate review
Tech
Python, pandas, NumPy, Tkinter, psutil, JSON-based configuration, large CSV batch processing