Flagship case study

Turning fragmented ERP exports into an internal decision platform.

An AI-assisted BI and automation system built around the daily reality of a small distribution business.

ContextSME distribution
StatusProduction
InterfaceWeb + mobile
DeploymentLocal + Hawkhost
Data layerExcel, CSV, Sheets
BI output25 tables

Every reporting cycle started with files that disagreed.

Supplier sales lived in DMS. Accounting records came from MISA. Customer collection types were maintained in a mapping workbook. Bank and cash transactions arrived in separate exports. Inventory and sell-in data used different product codes and units.

The work was not simply “make a dashboard.” Before a number could be trusted, the business had to answer which source was authoritative, which customers represented owned sales, which were delivery-only, and how monthly collections related to previous-month receivables.

Every morning, multiple Excel and ERP exports had to be reconciled before receivables could be collected with confidence.
DMS.xlsm

Supplier sales, products, promotions, channels and orders.

Ban_hang.xlsx

MISA sales, payment status, invoices and receivables.

Customer mapping

Customer code, channel and collection/delivery classification.

Bank & cash

Collections, expenses, balances and reconciliation evidence.

Sell-in files

Purchases, supplier discounts, product and unit details.

Inventory reports

MISA and supplier stock snapshots for comparison.

The change was operational, not cosmetic.

No invented time-saving metric: the comparison focuses on observable workflow changes.

Before

  • Multiple exports reviewed separately
  • Repeated Excel filtering and pivot checks
  • Receivables mixed with delivery-only activity
  • Product and unit mappings held in memory
  • Reports recalculated from raw history
  • Different logic across operational reports

After

  • One exception-driven reporting workflow
  • Monthly overview with detail on demand
  • Owned receivables and delivery debt separated
  • Canonical customer and product mappings
  • Closed-month snapshots with fast refresh
  • Shared rules for web and Power BI outputs

The business rules were the product.

The key design decision was to model the way the business actually reviews operations: monthly first, document-level only when a total does not match.

  • Receivables are grouped by unique customer code, never customer name.
  • Delivery-only customers are visible but excluded from owned receivable assets.
  • Bank reconciliation prioritizes customer-month totals before individual invoices.
  • Inventory decreases only for owned-sale customers; samples still reduce stock.
  • Product pack and unit codes are normalized before quantity comparison.
  • Supplier price variance is tracked for settlement, not counted as operating profit.
  • Net profit combines standard margin, purchase discount, delivery fees, samples and operating costs.

The edge cases that shaped the platform

These were not UI problems. Each one changed the meaning of a business number.

Challenge 01

Customers with the same name

Name-based grouping produced collisions
Customer code became the unique identity
Challenge 02

Delivery-only customers

DMS activity looked like owned sales
Classified separately and excluded from owned stock/receivables
Challenge 03

Collections paid in another month

Daily invoice matching was too brittle
Customer-month matching first, document detail second
Challenge 04

Pack and unit product codes

Sell-in packs and DMS units did not compare
Canonical product mapping and unit conversion
Challenge 05

Full-dump files every day

Historical rows were parsed repeatedly
Closed-month snapshots plus active-period normalization
Challenge 06

Concurrent heavy reports

Parallel requests could expose empty cache values
Per-cache locks and publish-after-compute behavior

One platform, thirteen operational views

Each module answers a specific operating question and shares the same normalized data layer.

Financial overview
Assets, cash, receivables, inventory and monthly profit drivers.
Decision view
Receivables
Outstanding debt by customer code, channel and month with drill-down detail.
Daily operations
Expense & cashflow
Google Sheets transactions, MISA collections, bank/cash accounts and cost groups.
Finance
Inventory
Sell-in, sell-out, stock value, product mapping and monthly movements.
Operations
XNT MISA
Independent stock report from the accounting system for comparison.
Control
Customer CRM
Customer-level sales, debt and collection context.
Commercial
DMS vs MISA
Monthly value and document-count reconciliation by channel and collection type.
Reconciliation
Price audit
Actual selling price versus supplier standard price, including samples.
Supplier control
Purchase discount
Sell-in-based supplier discount and profitability components.
Supplier control
Delivery fees
Customer-group fee rules, special date windows and bread delivery rates.
Supplier control
Bank matching
Statement transactions suggested against outstanding monthly receivables.
Collections
MISA workflow
Daily operating checklist and documented supplier business logic.
Process
2025 reconstruction
Read-only historical P&L analysis from archived source files.
Historical BI

Designed for files today, extensible to APIs tomorrow.

The platform accepts the files the business already knows how to export. Python normalizes those files into stable CSV datasets, freezes closed months, calculates business metrics behind API endpoints and exports a separate semantic layer for Power BI.

SalesFlow architecture from operational sources through Python ETL, business rules, services, dashboard and Power BI
Current production flowFile adapters can later be replaced by vendor APIs

From first prototype to production platform

The feature set emerged from actual use, not a one-time specification.

First prototype

Four source files, filters, receivables and bank matching.

Operational reporting

Persistent uploads, monthly debt, CRM and DMS comparison.

Inventory & profit

Sell-in, product mapping, stock valuation and supplier rules.

Finance & deployment

Google Sheets sync, cashflow, mobile UI and Hawkhost.

BI & reliability

Snapshots, cache locking, 2025 analysis and Power BI model.

Human ownership, AI acceleration

My contribution

  • Mapped the real operating workflow
  • Defined source authority and business rules
  • Specified reports and exception handling
  • Validated numbers against real files
  • Prioritized features from daily usage
  • Deployed, tested and iterated the system

AI contribution

  • Generated implementation scaffolding
  • Accelerated Python and frontend delivery
  • Helped investigate data mismatches
  • Produced tests and deployment support
  • Refactored portability and caching
  • Acted as an always-available engineering partner

A repeatable reporting workflow instead of repeated spreadsheet archaeology.

The platform centralizes previously fragmented reporting, shortens the path from raw exports to exceptions, preserves monthly history and gives both operational and BI views the same business logic.

Persistent raw uploadsFast normalizationClosed-month snapshotsPortable pathsHawkhost deploymentPower BI export

The outcome is not a dashboard screenshot. It is a business process that can be repeated, checked and improved.

Need the shorter version for a recruiter or client?

Get in touch →