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
Diagram of the ERP. On the left, what comes in: bank statements as CSV files downloaded by hand, with the bank's API planned; the SII's purchase and sales records, every week, by hand or with macros; and expenses without a cost center. Inside the ERP, three steps: reconcile the bank with a matching engine of deterministic rules, cross-check against the SII, and assign cost centers, first by fixed rules and then by a CatBoost model run locally. All three work on the books, and the model learns from their history.

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

  1. 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.

  2. 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.

  3. 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.

Contact

Have a project or a role in mind? Write to me.

Based in
Chile (UTC−3/−4)
Available for
Freelance projects, contracts, part-time and full-time roles
contact@llamil.com
Email · Opens your email app
Site
© 2026 Llamil
Build
Static HTML, prerendered at build time.
Type
Hubot Sans, Instrument Sans and Google Sans Code.
Language
English Español
Back to top