case study – project tracking & reporting

Case Study · Construction — Public Agency Projects

Centralized Project Tracking & Reporting for a Construction GC

Contacts, meetings, action items, and scope changes lived across email threads and standalone documents — with no consistent, protected system a project engineer could just pick up and run.

At a Glance

Client / Sector

A commercial general contractor serving public agency clients

Engagement Type

Excel-based project database template with auto-generated one-page reporting

Duration

12 weeks of development and testing, reaching 85% completion before the engagement concluded

My Role

Sole consultant — requirements, architecture, development, testing

Tools & Techniques

Excel, Power Query and structured Tables, VBA (macros, UDFs, event-driven), conditional formatting, data validation, protected/hidden admin sheets

Key Deliverables

Contact directory importer, milestone/meeting/action-item/scope trackers, auto-generated one- or multi-page project report

Structured

One protected workbook per project; Excel databases for key datasets (milestones, meetings, action items, scope/VE changes), each with a dedicated, user-friendly input sheet.

Automated

VBA macros ran the directory import, task completion, and one-click reporting. Event macros guided the user through the spreadsheet and facilitated database updates.

Tailored

Built around construction-specific workflows: DBE compliance tracking, owner/design-team meeting logs, CSI-coded scope and value-engineering trackers.

The Challenge

The client ran several public agency construction projects at once, each with its own design team, owner representatives, consultants, and a steady cadence of meetings, action items, and scope changes. That information lived across email threads and standalone documents per project, with no consistent, protected system a project engineer could pick up and run. Assembling a clean status report before an owner meeting meant manually compiling everything from scratch.

How It Was Built

What data is needed?

Primary data

Project overview and key contacts by role; meeting log entries (date, time, duration, type, location, topic, attendees); owner action items (description, owner, priority, due date, status, notes); scope and value-engineering tracker items (CSI code, discipline, dollar/time impact, acceptance, ball-in-court).

Metadata and rules

DBE compliance flags, meeting-type and CSI code lists, company/discipline categories feeding every dropdown.

Where does it come from?

A directory-import routine pulled contact lists into a protected per-project database; project staff entered and updated meetings, action items, and tracker data on dedicated input sheets, inside structured Tables with locked formula columns and validation.

VBA event macros kept every user interaction inside the guardrails, with admin and status sheets hidden from users entirely.

What do you need to do with it?

A one-click, one- or multi-page project report combining contacts, calendar, upcoming meetings, DBE action items, owner action items, and an issue tracker, filterable to all owners or a selected subset via slicer.

A companion contact-directory report rolling up every contact across every firm on the project into one exportable list.

Trackers filterable by type, due-date window, and completion status, with report controls that auto-hid themselves when a user navigated away from the report view.

What Was Built & Verified

Development and testing reached roughly 85% completion when the engagement concluded, before full production rollout, so there’s no adoption or time-saved data available. What’s below was built and confirmed working during testing.

A note on how this has evolved

This build is about three years old, and the architecture shows it — the database updates and one-click reporting were VBA-driven. The same core structure holds today (one protected database per project, one set of guardrails protecting the user), but most of the database and reporting work now happens with self-referencing queries and Lambda functions instead of VBA, less code to maintain, faster recalculation, a build that comes together quicker, without changing anything about what the user experiences.

A Note on Confidentiality

This project is not covered by an NDA. In the absence of a documented close-out with the client, this entry describes them by role rather than name. All names, addresses, and identifying numbers in the source file are placeholders; one project identifier and the meeting-attendee detail visible in the original screenshot have been redacted for consistency.

This is process automation, built on the framework.