Clean-room Python case

Python-built monthly reporting pipeline for FP&A close work.

A public-safe rebuild of my monthly reporting automation pattern: merge monthly source files, enrich them with mapping logic, create KPI views, compare actuals to plan, and draft a management brief. The sample uses synthetic CSV data so the code can be reviewed without exposing company workbooks.

4

Python files

5

Pipeline steps

CSV

Lightweight sample inputs

0

Confidential values

Business problem

Monthly reporting creates repetitive merge, mapping, and variance checks before analysis can start.

The manual version of this workflow is easy to break: different source files, inconsistent service labels, repeated pivot tables, and last-minute actual-vs-plan checks. This sample shows how I move those recurring steps into Python while keeping finance review points visible.

What the code demonstrates

  • Ingestion: reads multiple period files from one configured source folder.
  • Validation: blocks missing columns, duplicates, and unmapped service labels.
  • Transformation: creates clean dimensions for office, service group, and area.
  • Output: writes summary tables, ratio packs, and a brief draft for review.

Workflow

Same finance logic, sanitized implementation.

Read process README
01Ingest

Read synthetic monthly files.

02Map

Apply service, office, and area dimensions.

03Summarize

Aggregate revenue, gross profit, volume, and jobs.

04Compare

Build actual vs plan and prior-period views.

05Brief

Generate an FP&A markdown insight draft.

Python files

Code shown as a recruiter-safe work sample.

Synthetic data only

Generated outputs

What the pipeline produces for finance review.

monthly_summary.csv

Clean summary by month, office, service group, and area with revenue, gross profit, jobs, and volume.

ratio_pack.csv

Actual-vs-plan comparisons with achievement rate and gap fields for quick review.

monthly_insight_brief.md

Draft narrative calling out top growth areas, weak spots, and items to review.

QA checkpoints

Stops bad inputs early through required-column, duplicate-row, and unmapped-value checks.

Validation

Controls built into the sample.

The public code validates required columns, rejects unmapped service lines, checks for duplicate source rows, and writes reconciliation totals before creating the final brief.