Skip to content
HM
Back to Portfolio

Data Automation · Complete

Spreadsheet Cleanup & Reporting Automation Kit

Turn recurring messy exports into clean data and a clear review queue.

sample input rows
360
sample input rows
accepted rows
348
accepted rows
rows for review
12
rows for review

This is a Python command-line tool, not a hosted web app. The screenshots show its generated HTML report from a fixed synthetic sales example. Amounts are in synthetic units, with no client results claimed.

01

Overview

A reusable command-line tool for recurring CSV and Excel exports. Configured aliases and validation rules produce canonical clean rows, a review queue, a manifest, and a self-contained HTML report.

Sample report output

Generated spreadsheet report with synthetic row reconciliation and monthly chart
01Generated report: 360 source rows, 348 accepted, 12 for review, and monthly accepted amount.
Report breakdowns by category, subcategory, sales channel and region
02Breakdowns: accepted rows and amount by category, subcategory, sales channel, and region.
Top ten synthetic customers, rows per source file and review reason codes
03Traceability: top customers, rows per source file (180 + 180), and the review reasons.
Rows for review with source row, record ID, reason and action detail
04Review reasons and source rows make each rejected record actionable.
02

The Challenge

Column names, formats, missing values, and duplicates vary between files, making recurring reports fragile and slow.

03

The Solution

The Python pipeline reads both formats, maps headers to a configurable schema, normalizes dates and amounts, validates records, flags duplicates and other exceptions with source row references, and writes clean.csv, exceptions.csv, manifest.json, and report.html.

04

How to use the kit

  1. 01

    Point it at recurring exports

    Pass a CSV, an Excel workbook, or a folder of both. The included demo combines English and Portuguese headers with different date and number formats.

  2. 02

    Apply a documented data contract

    Configured aliases map source columns to canonical fields. Validation checks required values, dates, amounts, allowed categories, and duplicate IDs without guessing ambiguous inputs.

  3. 03

    Review exceptions at the source

    Accepted rows go to clean.csv. Rejected rows go to exceptions.csv with a reason and source file and row, so a person can correct the input and rerun.

  4. 04

    Share a reconciled result

    manifest.json confirms input = accepted + rejected. The self-contained report.html shows counts, monthly trends, category breakdowns, and review reasons.

05

Results & Impact

In the included synthetic demo, 360 input rows reconcile to 348 accepted and 12 for review, including one duplicate. Outputs are deterministic for unchanged inputs. These counts describe the demo, not a client result.

What the workflow gives you

Repeatable reporting

The same input bytes and configuration produce the same output artifacts.

No silent data loss

Every nonblank source row is accepted or sent to review; the demo balances 360 = 348 + 12.

Human control

The tool flags ambiguous dates and duplicates for a reviewer instead of inventing corrections.