Contact
EspañolEnglishCatalà

Technical services

We polished Cerrajería Carlos Rodríguez's quotes with AI inside their management software

An AI button inside Cerrajería Carlos Rodríguez's management software polishes the wording of quotes and invoices. It started with a model on their own server and moved to Mistral, a European provider, in August 2026.

We polished Cerrajería Carlos Rodríguez's quotes with AI inside their management software

When quotes give away they were written in a hurry

In a technical-services company, the quote and the invoice are the written face of the brand. The end customer might not notice the lock that was installed, but they do read the text they receive. And the moment that text gets written by different people at different times, it stops sounding like the same company.

At Cerrajería Carlos Rodríguez, quotes sometimes went out in a hurry, sometimes with detail, almost never with consistency. It wasn’t a lack of judgement on the team’s part: it was the invisible cost of having to write a professional paragraph at the end of a day spent handling lockouts, vandalism repairs and emergencies. The customer received uneven descriptions, came back with questions, and the company’s image kept landing below the actual quality of the work being done on the street.

The first decision: where the data goes

The natural answer was to embed an AI assistant inside their management software, connected to one of the big cloud AI providers. It works, plenty of companies do it, and it’s probably what anyone else would have proposed to them.

But before starting I explained what that decision means when the data isn’t yours but your customers’. Every time someone presses the button, the text of that quote line (which may include an address, what was done at a front door at 3 a.m. and how much was charged) goes out to a provider, with its own terms, subprocessors and data-use policy.

Alejandro hadn’t thought about it. Few customers do: it’s not their job. With that information he preferred not to send the texts to an outside provider, so the first version, in May 2026, ran on their own server, with a small model (Qwen 2.5 3B) served with Ollama.

What the assistant actually does

Next to the item and description fields of every quote, invoice or pro forma, inside the management software they already used every day, an AI button appeared. That button is the whole visible change.

  • The user types the description however they can, whenever they have time, without fighting the prose.
  • They press the button.
  • They see the original and the proposal side by side: the same idea, with spelling fixed, measurements and prices in a consistent format (1380e becomes 1.380 €) and a tone consistent with the rest of the company’s quotes.
  • They accept, reject or ask for another version. Nothing is saved until a person approves it.

The assistant is designed to rewrite only what’s already written, without adding units, measurements or amounts; and when a model breaks that rule, human review catches it (more on that below). No training, no new tabs, no change to the workflow. The AI shows up exactly where the friction was.

Why we changed it in August

The local model worked, but it had a cost that didn’t show up on any invoice:

  • Resources. The model container permanently reserved 4 GB of RAM and 3.5 CPUs, on a server that had already had disk-full incidents.
  • Waiting. Each proposal took several seconds (in the order of 5 to 15), because it was computed on CPU.
  • Quality. A 3-billion-parameter model sometimes made things up and had to be watched closely.

In August 2026 I moved it to Mistral Small 4 through the API of Mistral AI, a French company. By default, Mistral hosts API data in the European Union (although, depending on the feature, its list of subprocessors allows for occasional transfers outside it). Our account has the use of this data to train or improve their models switched off. The model is considerably more capable than the previous one and the cost is minimal: in the worst case the application allows (4,000 characters of input), each call costs around six hundredths of a US cent, so a thousand calls a month cost less than one dollar. In return, the server got back all the memory and CPU it had reserved. Alejandro has been informed of the change.

How it’s built today

The integration. The button calls the management software’s backend, which is what talks to Mistral. The browser never sees the API key or the provider, and if it ever makes sense to change model, it changes in one place, without touching the screen.

What gets sent. Only the text of the field being improved, up to 4,000 characters. The whole quote and the customer record never travel.

The model, pinned. The application requests a specific model version, not “the latest”. That way a silent update by the provider can’t change overnight how quotes are worded.

The instructions, calibrated. The assistant’s instructions were tuned on real quotes. With the new model they needed adjusting, for the reason I explain in the second point below.

Three things we learned

1. The right decision in May didn’t have to be the right one in August. Keeping the model on their own server was the right answer to the initial question. Once we measured what it really cost (memory, CPU, waiting and quality) against less than a dollar per thousand calls with a European provider, the numbers changed. Revisiting a decision with data isn’t contradicting yourself.

2. The user has the last word, and that’s not a detail. In testing after the change, a description with no price at all came back with an invented one: €186. It wasn’t a random number: it was the format example I had put in the instructions myself, and the model copied it as if it were data. It was fixed in the instructions, but the real safeguard is the design: the assistant proposes and a person reviews before saving. An AI that decides on its own is an AI you stop using; one that lets you review is one that stays.

3. The question isn’t “cloud or not”, but “who, and where”. For third-party data, choosing a European provider that hosts data in the EU and sending only the text that’s strictly needed reduces the exposure, though it doesn’t remove it: the text still leaves the server and is subject to the provider’s terms. It’s a trade-off you have to explain to the customer, not a box you tick.

What’s next

The assistant is in production and keeps iterating. On the roadmap:

  • Extending the assistant to other texts in the management software: customer emails, descriptions of closed jobs, internal communications.
  • Templates per job type (locks, security doors, vandalism, 24-hour emergencies) to fine-tune the tone to the context.

“Our quotes now have the same tone, whoever writes them, and nothing is saved until we've reviewed it. And when the AI had to change, they explained clearly what data was sent and where.”

— Alejandro Rodríguez, Manager, Cerrajería Carlos Rodríguez