Case study · 2026 · formerly CogniVault

Vardão Central

The system Vardão Máquinas, an authorized Husqvarna dealer in Limeira, Brazil, uses every day at the counter, in sales, finance and inventory. I started with a parts catalog for the counter, and today it is taking over the work of the store’s old ERP.

See the live system (login required) Contact me
Vardão Central counter: search for model 143RII with three parts in the quote alongside.

The problem

At the counter the customer is standing in front of the clerk. To answer "which part is it and how much", the clerk opened a PDF catalog, found the position in the drawing, checked the price in a spreadsheet, looked for the shelf and wrote the quote by hand. A wrong code becomes a return.

Away from the counter, sales, finance and customers lived in an old ERP, separate from everything else. Knowing how much the store sold this month or which customer had gone quiet meant gathering information from different places.

What I built

Counter

Search by code, part, model or PNC; the official exploded view with a clickable position; list price and shelf; quotes by PDF and WhatsApp. Keyboard first: the clerk works in a hurry.

Sales

A CRM with a deal board and quick filters, customer ranking, cross-selling, reactivation of quiet customers and the machine price table.

Finance

Sales, purchases and expenses, income statement, cash flow, working capital, ABC analysis and closing the till.

Inventory

Items to order, shortages, shelves and special orders for customers, with the deposit they already paid.

Home by role

Each person opens the system on the home screen for their role, with what matters for their day, and the main button changes with the role: "Lançar venda" (record a sale) or "Novo orçamento" (new quote).

The ERP migration, checked to the cent

The store could not lose a single number in the switch. The rule was simple: the same results as the old ERP, or better.

Rules the product never breaks

Never guess a code

A typed code returns only the exact code and the manufacturer’s official replacement. The AI only picks from a closed list of parts for the machine.

The customer never gets the code

PDFs, WhatsApp messages and printouts leave without the part code, so the customer cannot price it at another dealer with our number.

Data changes are explicit

Importing prices, inventory or sales shows a report before writing and keeps an undo.

Numbers are numbers

Installments in whole cents and dates in the store’s time zone, locked by tests.

Screens

Screenshots taken in a simulated store with demo data. No real store data appears here.

Decisions and what I learned

The green test that lied

A job that deletes quotes older than 1 year had a passing test. In production it never ran: the line that started it sat inside the queue’s retry block. I found it by looking at the database. Now there is a test just for that wiring, proven by undoing the fix and watching the test fail.

"Today" ended yesterday

The server runs in UTC and the store in UTC-3: the "until today" filter cut off before the store’s midnight and the owner could not see the day’s own quotes. Every day calculation now uses the store’s time zone, locked by a test.

Refusing beats being wrong

The PDF catalog reader prefers to refuse a doubtful file, saying why, rather than save a wrong code that would spoil the whole search.

The server next to the database

The database is in São Paulo and the API server was in the United States: every query went there and back, about 210 ms each time. I prepared the everyday screens to be served by a function in São Paulo, next to the database, and left only the heavy work, like PDFs and imports, on the main server. One variable switches it back.

Compare with the old system, not with my memory

In the migration I did not trust the rules I thought the ERP had. I ran the ERP itself as the reference, and that is what found what was hidden.

Quality in numbers

1,400+back-end tests
600+front-end tests
70end-to-end browser tests
1,107comparisons with the old ERP
91versioned database migrations
49data models

Counted in the project files on 2026-10-30.

Technologies