
PayStream
Enterprise payroll ETL
One platform covers the full payroll output cycle for two multinational clients: nine processing steps that turn vendor exports into bank payment files, variance reports, accruals, and GL output.
| Vendor | Amount | Date |
|---|---|---|
| acme CORP | $1,250.00 | 03/04/25 |
| globex llc | 890.5 usd | 2025-4-3 |
| Initech | USD 2,000 | 4/3/2025 |
Synthetic rows. No real client data is exposed.
Synthetic data only. Real client data is never exposed.
Built as AI Solutions Lead at BDO, serving multinational FMCG/pharma payroll teams. Source and real client datasets are private. Reach out for a walkthrough.
Request accessPayStream automates enterprise payroll for two multinational clients, an FMCG company and a pharma company. It covers a nine-step processing cycle (the second client runs a six-step subset): employee events, data dump and data extract transformations, bank payment file generation with date-of-birth validation, total and individual variance reports, accruals, and GL outputs with Lebanese Pound conversion at managed exchange rates. Deterministic pandas/openpyxl scripts do the transformation work, and a centralized naming-conventions service (CRUD, bulk Excel upload, duplicate cleanup) resolves employee names and wage-code mappings over REST, so finance owns the mappings rather than the code. The React + TypeScript frontend drives a FastAPI + SQLAlchemy backend with JWT/bcrypt auth, role-based access, IP rate limiting, activity logging, and strict upload validation, deployed on SQL Server behind nginx via Docker Compose. Built under client engagement: everything shown here runs on synthetic rows, and real client data is never exposed.
- React
- TypeScript
- Vite
- FastAPI
- Python
- pandas
- openpyxl
- SQLAlchemy
- JWT
- Docker
Architecture · vendor exports → bank files + finance reports
Ingest vendor exports
Vendor payroll export files enter the FastAPI backend.
Deterministic ETL
pandas / openpyxl pipelines clean, map, and currency-convert against a centralized naming-conventions module.
Generate outputs
Produces bank payment files, GL/finance reports, total + individual variance reports, and accruals.
Secure delivery
Served through a React config UI over JWT/bcrypt auth, RBAC, rate limiting, and audit logging.
- Outputs
- bank files · GL/variance · accruals
- Platform
- multi-currency · multi-DB
- Security
- JWT/bcrypt · RBAC · audit log
What I'd improve
Onboarding a third client still means code: the per-client step definitions live in a TypeScript constants file and each transformation is its own Python script. I would make steps and column mappings data-driven so a new client is configuration, not a deploy, and retire the legacy Flask app still mounted alongside FastAPI.