All posts

Two Years of an AI Agent in Production: What Actually Works for Small Businesses

Published Dec 12, 20254 min read
  • Product
  • Lueira
  • AI
Two Years of an AI Agent in Production: What Actually Works for Small Businesses

Key takeaways

  • Real production volume surfaced problems no test suite predicted, from mixed-language WhatsApp threads to customers negotiating exceptions the agent shouldn't grant.
  • Owner trust in the agent grew from watching it work reliably for months, not from any explanation of how it was built.
  • For a small business, 'AI that works' means someone else already built and maintains the guardrails, not that the owner learned prompt engineering.
  • Knowing when to hand a conversation off to a human is still an open design problem, not a solved one.

Two years ago we wrote about why we put an AI agent on WhatsApp instead of building another app for Lueira's mountain-sports customers. A few months later we went deeper into the mechanics of function-calling: how the agent actually checks availability, creates a booking, and sends a payment link without inventing a slot that doesn't exist. Both posts were written from the inside, while we were still building and testing. This one is written from the outside, after two years of the thing running in production for ski schools, dive centers, surf camps, and rental shops whose owners could not tell you what a function call is, and don't need to.

Two years is long enough for a system to stop being a project and start being infrastructure, something people forget is even 'AI' because it just answers the phone, so to speak, every day. It's also long enough to be honest about what surprised us, what we got wrong, and what 'AI for small business' actually turns out to mean once the demo is over.

1. What surprised us after real volume

The conversations the agent handles well are the ones we expected: 'is there a spot in tomorrow's group lesson', 'can I rent a wetsuit in a large', 'I paid but haven't got a confirmation'. Those are the bread and butter of a booking business, and after two years the agent handles the overwhelming majority of them without anyone noticing there's a model behind the WhatsApp number.

What we didn't fully anticipate was the sheer variety of phrasing real customers use once volume is high enough. People don't write like the test cases we wrote in June 2024. They write half a sentence, then a photo, then a voice note, then 'nvm found it'. In Val d'Aran specifically, conversations routinely mix Spanish, Catalan, French, and Aranese in the same thread, sometimes in the same message, because that's simply how people there talk to each other and to shops. The agent needed to get comfortable with that mixing rather than politely asking customers to pick one language, which is what an early, more rigid version of it used to do.

The other surprise was negotiation. We hadn't built for how often customers ask for something outside the rules: a discount because they're bringing five friends, a reschedule outside the cancellation window, a private slot squeezed into a fully booked afternoon. None of that is a bug in the agent; it's a bug in assuming customers only ever ask for things the system already allows. The right answer, most of the time, is not to let the agent decide. It's to recognize the request as one that needs a human, and hand it off cleanly instead of guessing.

2. Trust took longer to build than the code did

The function-calling engineering was largely done by month four. Owners trusting it enough to stop double-checking every booking took closer to a year, and for some, longer than that.

That's not a criticism of anyone. It's a completely reasonable reaction from someone whose business depends on a WhatsApp number they've personally answered for years. Early on, more than one owner asked us to keep them CC'd on every conversation, or checked the booking calendar every morning 'just in case'. That behavior didn't disappear because we explained the architecture better. It faded because, week after week, the bookings were correct, the payment links worked, and the edge cases that did slip through got caught and fixed quickly enough that nothing blew up in front of a customer.

3. What 'small businesses and AI' actually means in practice

None of the owners running this agent configured a prompt, tuned a model, or wrote a guardrail. They didn't need to, and that's the point. 'AI that works' for a business like this doesn't mean the owner becomes a part-time AI engineer on top of running lessons and rentals. It means someone else, in this case Maladeta Studio, already did the unglamorous work described in the function-calling post: deciding exactly what the agent is allowed to do, what it must never do on its own, and what happens when it's unsure.

That's the same argument we've made about Lueira's booking engine, multi-tenancy, e-invoicing compliance, and eIDAS signatures: a small operator shouldn't have to become an expert in any of those things to run a serious business.

4. Where a human still has to step in

We'd be lying if we said the agent handles everything now. It still doesn't, and it shouldn't. Genuine complaints, anything involving an accident or a safety concern, unusual requests that don't map cleanly to a booking, and any conversation where the right answer depends on judgment rather than a rule: those go to a person, and they should.

Knowing exactly when to hand off is still an open design problem, not a solved one. We've gotten better at detecting the signals: frustration, ambiguity, a request the agent doesn't have a function for, but 'better' isn't 'finished'.

Two years in, the honest summary is this: the agent is no longer the interesting part. What's interesting is how ordinary it's become to the people who depend on it, and how much invisible, boring maintenance it takes to keep something that ordinary.