Internal ERP
An internal ERP for accounting and administration: bank reconciliation, the tax service's purchase and sales records, and cost centers.
- Role
- Sole engineer
- Client
- A large forestry exporter in Chile
- Year
- 2025
- Status
- In daily use
- Stack
- React, TypeScript, Vite, Tailwind CSS, shadcn/ui, Django 5.2, Django REST Framework, PostgreSQL, Celery, Redis, Polars, Pandera, RapidFuzz, CatBoost, scikit-learn, MinIO, Docker Compose, Caddy, Pytest, Playwright, GitHub Actions
The business
An ERP for the accounting and administration of a large forestry exporter in Chile, built in 2025 in place of Excel and paper.
In numbers
- 12 → 4 people doing the office's administrative work, before the ERP and after it
- 3 months for the team to go from twelve people to four
What it does
-
Reconcile the bank.
Statements are downloaded from the bank as CSV files and imported, and a matching engine written for the ERP reconciles them against the books by deterministic rules. The ERP was designed to take them from the bank's API instead, for a client who pays the bank for that access.
-
Check against the SII.
Every week the company's records in Chile's tax service (SII) purchase and sales register (RCV) are downloaded, by hand or with macros, and cross-checked against its purchase and sales books.
-
Assign cost centers.
Every expense gets a cost center. Fixed rules did it at first; once enough history had built up, a CatBoost model trained on it and run locally took over the classification.
AI in this project
Yes. Cost centers were assigned by fixed rules until there was enough history; then a CatBoost model, trained on that history and run locally, took over the classification of expenses.