MATIALroad-signage workshopBuenos Aires
2nd contractsigned by the same client 72 days after the first one
Every van, at its stage.
How it was before
I met Javier delivering an order to his workshop: back then I drove a van and dropped off goods. We got talking and I left him a card. MATIAL is in Buenos Aires: it fits out highway service vans with light arrows, roof bars and vinyl wraps, and sells road signage.
They worked off Excel spreadsheets, WhatsApp, a notebook and paper delivery notes, and a quote could take them several hours to put together. The state of each van lived in Javier’s head, so finding out where one stood meant asking someone. Labor hours were added up by hand.
What I built
Eleven sections on the workshop’s own database: numbered quotes with VAT and a PDF on letterhead; delivery notes, the slip that goes out with the goods, checked against the quote; work orders split into stages with a checklist and photos; and stock deducted when a job is delivered. It holds 1,000 suppliers, 136 quotes and 113 delivery notes, and a parser pulled 540 labor hours out of 89 handwritten job sheets. Fifteen days in they were already working with the first part, one section a week after that. The bot he mentioned the first day is the third contract, which is not written yet.
Plain HTML, CSS and JavaScript in one file, no framework and no build step · multi-tenant Firestore with security rules · Vercel · CSP, HSTS and an append-only audit log
The interface is in Spanish today. Which language it ships in is set per build.

The decisions, and why
Before writing a line of code, I put fifty-odd questions in front of them.
I wanted to understand how they already worked before deciding anything. A custom system has to fit what the workshop already does. If the person using it has to learn everything from scratch, they open it for a week and go back to the notebook.
The “Copy van” button shipped the day Javier asked for it.
One Monday a van came in configured like another one and he asked whether he could copy it. That is how a custom system stays useful: the person using it asks, and the change goes out.
Sending the order to the supplier stays manual, on purpose.
The supplier contract requires it. Automating it would have looked better in a demo and broken a signed agreement.
Every data import writes a report first and touches the database second.
The supplier codes came from the client’s own spreadsheet, 1,002 rows of it. Because the report comes first, 75 codes reached production without overwriting one, and a 93% cost difference on a part turned up.

Before and after
| Before | After |
|---|---|
| A quote, several hours of work | Minutes |
| Quotes on loose paper | Numbered, with VAT and a PDF |
| Van status in one head | Stages with a checklist and photos |
| Stock by eye | Deducted on delivery |
| Labor hours added up by hand | 540 hours read from the job sheets |

No quote from Javier yet, so this is me telling it, paraphrased: he could not believe it existed when he saw it running, and what each client owes him is in there now. He signed the second contract himself.
The system, running
Where it is
Email me about a system like this, or about a role
I quote a custom system within 24 hours. If you are hiring, my resume is one page.
WhatsApp: +54 9 11 2469-3394