Build Flows
Production implementationReporting · Version of August 2026

Phase 1 of the monthly report build: Excel to Power BI

Phase 1 (August 2026) of the monthly progress reporting build: an 11-tab Excel workbook with roughly 700 hand-keyed input cells, rebuilt as a Microsoft Fabric pipeline and a 12-page Power BI report. Reading every formula along the way exposed two scorecard errors that cancelled each other out. Figures as of August 2026; the current build runs ~200 rules across 13 + 9 pages.

  • Procore
  • Sage 100 Contractor
  • Outbuild
  • SharePoint
  • Microsoft Fabric
  • Power BI

By the numbers

manual input cells replaced by semantic-model measures
~700 → 99
Power BI report pages
12
data-quality checks on every load
63
of the scorecard weighting found disconnected from real performance
~42%
Screenshot from the live report with client names, amounts, and record details blurred.

Before: a workbook filled in by hand

The monthly report was an 11-tab Excel workbook with roughly 700 manually maintained input cells, 17 tables and one chart. Every input cell was a number someone had to find in Procore or the accounting system and key in by hand. The data was a copy of a copy, the workbook accepted wrong values without complaint, and the scoring logic lived in cell formulas nobody could test.

What we found: two errors that cancelled out

Rebuilding the scoring logic meant reading every formula in the workbook. Two were wrong. Schedule Performance compared values against an incompatible scale, so it fell through to an incorrect default score. Completion Variance did not match any defined scoring band, so it returned zero. On the sample project the two errors offset each other, so the total looked right, which is why nobody had caught it. Roughly 42% of the scorecard weighting was disconnected from actual project performance.

What we built: Procore to Fabric to Power BI

One Fabric notebook authenticates against the Procore API and extracts every endpoint the report needs, from budgets, commitments and billings to submittals, RFIs, punch items, incidents, vendors and insurance. Raw payloads land in bronze with audit columns. Silver types and validates the data and logs rejected rows with a reason instead of dropping them; Sage 100 Contractor AR and AP join through read-only SQL. Gold maps every Procore, Sage and Outbuild record to one project with normalized dates, and 63 data-quality expectations gate the data before Power BI reads it through Direct Lake. Fields no system holds, like project update notes, are captured through a validated SharePoint page or a CSV template. The semantic model is a star schema with 99 measures behind 12 report pages.

What changed

The report now comes from the source systems with checks on every run, instead of being rekeyed each month. Scoring logic is explicit and testable rather than hidden in cells. A source coverage page shows which records are present, missing, delayed or unmatched, so a project missing from accounting no longer passes for one with $0 of activity, and the scorecard states its own data coverage: 59% in the walkthrough, with Procore and Sage connected. Adding a source means adding an endpoint to the extraction notebook, not starting over.

Scope

One monthly report: an 11-tab Excel workbook rebuilt as a bronze, silver and gold lakehouse pipeline, a 99-measure semantic model and a 12-page Power BI report, with a data-quality gate on every load.

About this example

This page covers the first phase of that same client build; the current version is described under construction reporting. Figures here come from the recorded walkthrough and its write-up. The client is not named, and we do not quote hours saved.

Watch the walkthrough

Video unavailable? Watch on YouTube or read the written breakdown.

Chapters and transcript

How the information reaches the report

The general architecture behind our reporting builds. Each implementation uses the sources and checks agreed in its scope.

Source to report: data from Procore, accounting, scheduling and SharePoint lists is landed raw, cleaned and validated, modeled, checked by a data-quality gate and snapshotted, then published as Power BI reports with refresh status plus an exceptions worklist to fix in the source system.

Sources

  • Procore

    Projects, budgets, pay apps, quality

  • Accounting (Sage / QuickBooks)

    AR, AP, job cost

  • Scheduling (Outbuild / P6)

    Milestones

  • SharePoint lists

    Team inputs

Pipeline

  1. 1.Land raw (bronze)

    Copy source data as it arrives

  2. 2.Clean & validate (silver)

    Standardize IDs, types and dates

  3. 3.Model (gold)

    Defined measures, one version of each number

  4. 4.Data-quality gate

    Checks run before anything publishes

  5. 5.Snapshot

    Keep month-end figures as they were reported

Outputs

  • Power BI reports

    With refresh status shown on every page

  • Exceptions worklist

    Fix it in the source system

Next step

Which report or workflow would you like to improve?

Tell us what your team does today, which systems are involved, and what you want to change. We'll discuss whether there is a practical fit.

Prefer email? charley@buildflows.ai