Skip to content

Mauricio Belmonte

I build backends for ERP, tax rules, integrations, and data migration.

Since
2020
Now
Data migration between ERPs
Also
BM Menu, with a partner
Based in
RS, Brazil,
Portrait of Mauricio Belmonte
Mauricio Belmonte Rio Grande do Sul, Brazil

About

I started by poking at game files.

I live in Rio Grande do Sul, Brazil. Programming started as a game, around 2014: I spent more time digging through the files of GTA San Andreas, Euro Truck Simulator, and Live for Speed than actually playing, making mods just to understand how things worked inside.

Then came custom Android ROMs, which made a cheap phone feel like a flagship, and later adapting kernel drivers to run postmarketOS on an ordinary phone. Almost always with little information, often in a language I barely understood. I learned by getting things wrong. Linux stayed with me from that path, and it's what runs on my personal computer today.

From tech support, I moved into development. My first real lines of code came the hard way, with forums, Google, and a lot of questions for the more experienced developers.

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

Featured project · Ledger, personal finance

Expenses come in from several places.

Card statements and bank statements by import, a message or a photo of a receipt through Telegram. Each one becomes a transaction, still without a category.

First, a fixed dictionary.

UBER becomes Transport, IFOOD becomes Food. The obvious cases are settled here, with no calls at all.

Then, what has already been learned.

Every decided category is stored. A merchant that has shown up once is never asked about again.

Only the leftovers go to the LLM.

The LLM only sees the descriptions the first two layers couldn't resolve, and its answer goes into the cache.

The result lives on an always-on screen.

A kiosk dashboard at home and a Telegram bot: typing “mercado 50” on the phone creates the transaction.

inputexample

card statementbank statementTelegramreceipt photo

02/09 UBER *TRIP 23,90

03/09 IFOOD *RESTAURANTE 45,50

05/09 PADARIA PAO QUENTE 12,40

08/09 NETFLIX.COM 39,90

11/09 DROGARIA SAO JOAO 32,17

1 · keywordsexample

UBER → Transport IFOOD → Food NETFLIX → Subscriptions

UBER *TRIP Transport

IFOOD *RESTAURANTE Food

PADARIA PAO QUENTE ?

NETFLIX.COM Subscriptions

DROGARIA SAO JOAO ?

2 · CategoriasAprendidasexample

PADARIA PAO QUENTE cache hitFood

DROGARIA SAO JOAO not found?

3 · LLMexample

DROGARIA SAO JOAO

FoodTransportGroceriesHealthLeisureSubscriptionsShoppingEducationServicesOther

↳ stored in CategoriasAprendidas

kiosk · 1280×720example

September

Food

Groceries

Transport

Health

Subscriptions

TelegramTelegram

mercado 50

✓ transaction created

Ecosystem · BM Menu

A system that runs a real pizzeria.

BM Menu started at a pizzeria where I worked as a delivery driver. Wrong orders, duplicate orders, and the same question all night: “where's that order?”, “has it left yet?”. Instead of replacing the system the pizzeria already used, the idea was to integrate with it and organize the flow from there. Today, built with a business partner, it's two .NET services in production, from the online order to the delivery route.

The path of an order

  1. 01 Online order
  2. 02 Central queue
  3. 03 Dough + crust
  4. 04 Toppings
  5. 05 Route
  6. 06 Delivered

Product

Operations

  • .NET
  • C#
  • Svelte
  • PostgreSQL
  • Docker
  • Receives orders from Cardápio Web via webhook, with polling as a safety net.
  • Sorts the queue by when assembly has to start, not just by the customer's deadline.
  • Runs assembly as a line of stages, one tablet per stage.
  • Groups deliveries into routes, with a map and a navigation QR code for the rider.
  • Prints tickets through an agent running on the computer wired to the thermal printer.

Provider

Platform

  • .NET
  • C#
  • React
  • PostgreSQL
  • Docker
  • Console for stores, licenses, plans, and provisioning new stores.
  • Built to license more than one product, not just the pizzeria.

Design decisions

One database per store
Each store has its own Postgres database, created by the console at signup. One pizzeria's data never mixes with another's.
Two tablets, one order
If someone changed the order first, the second tablet is warned instead of overwriting that change.
Orders only move along allowed paths
Every state change has to be in a list of allowed transitions. An order can't jump from “queued” to “delivered”.
A queue ordered by slack
Production order comes from how much time each order has left before assembly must start, with extra margin for far neighborhoods.

How I work · AI agents

I was writing code before agents. Now they're part of the process.

Keeping up with the tools is part of the job. I use AI agents on my projects, and what keeps the code in place is still what I set up around them.

  • Claude Claude Code
  • OpenCode OpenCode
  • OpenClaw OpenClaw
  • ChatGPT ChatGPT
  • Gemini Gemini
  • Velua Velua
Claude CLAUDE.md · BM Menu operations

## Five backend invariants

  1. 1. Every write goes through a single-consumer queue.
  2. 2. The server clock is the only truth.
  3. 3. Authorization fails closed.
  4. …
01 Instructions in every repository
Commands, architecture, and the rules that can't be broken, in a file the agent reads before touching the code.
02 Docs split by topic
Overview, domain, data model, operations, and a page just for known gaps.
03 Automatic guardrails
Builds treat warnings as errors, tests run in CI, and a pre-push hook runs locally. What the agent delivers goes through the same checks.
04 A contract tested on both sides
Between BM Menu's operations app and platform, the contract has twin tests in both repositories, over the same examples.

Timeline

Where I am and where I've been.

  1. 2020 — present

    Developer · SIGE Cloud

    ERP in C#, ASP.NET, Angular, and MongoDB.

  2. 2026 — present

    Data migration · SIGE Cloud

    Python, FastAPI, and LLMs to read documents.

  3. 2026 — present

    BM Menu · with a partner

    .NET, Svelte, React, and Postgres.

  4. In progress

    Systems Analysis and Development · Associate degree

Other projects

Contact

Let's talk?

About a project, a role, or a technical idea. Email is the best channel.