NUMMA

Mexico’s tax system lets you create an invoice that looks valid and isn’t.

Problem
Mexico lets you create a tax invoice that’s invalid, and nobody tells you until months later.
Bet
The rules are public. A system can enforce them before the document exists.
My work
Lead product designer. I owned acquisition end to end and defined how the agent behaves.
Demand testing
We tested demand with demos while the product was still being built.

The rules are public. Nobody was building for them.

Getting an invoice here means emailing a supplier and waiting on their accountant. What comes back is a document you can’t check. Nobody tells you when it’s wrong. The bill lands months later, when the invoice bounces in a filing or an audit. Meanwhile the accountants and their assistants are buried in requests, and their clients read that as bad service.

Everyone in the category patched the government’s process. We went after the rules. They’re published, and they change on notice. They also differ by taxpayer type: a dentist can’t invoice for entertainment services, and can’t deduct them either. A system can know that, which means it can block an invalid document before it exists.

  1. One sentence on WhatsApp

  2. NUMMA reads it as written.

  3. Checks every field

  4. Sent to the stamping provider.

  5. The invoice comes back, PDF and XML.

We entered through the accountant, not around him.

Our commercial lead and our engineer wanted to sell straight to people who don’t use an accountant, since the agent does that work anyway. I pushed back. That’s a large behavior change to ask for cold, and accountants were the multiplier: each one brings a book of clients and lends us their credibility.

We ran both audiences, built two landing pages, one per audience, routed by whichever campaign brought the visitor. I named the second audience entrepreneurs.

Two landing pages, one per audience, routed by whichever campaign brought the visitor.

Nobody was designing how the agent would behave.

The team assumed the model was smart enough to work out when and how to answer. I read the published guidance instead, Google’s conversation design guide and Microsoft’s HAX guidelines, and wrote the rules our developer implemented.

Three did most of the work. The agent never stalls: if the receiver’s tax ID is missing, it keeps building the invoice and says what it can’t finish until that ID shows up. It asks for one thing at a time, and groups onboarding documents by type rather than dumping a checklist. And when a requested concept doesn’t exist word for word in the tax catalog, it proposes the code that does and asks the user to confirm. It translates instead of rejecting.

Chat with the agent. It reasons: a Mexican tax ID has 13 characters, this one has 10, the amount and the name are good, no reason to stop. It keeps building the invoice. Chat with the agent. It reasons: no CSD yet, that certificate needs a government appointment, so it asks for that one first and the rest later. Chat with the agent. It reasons: Blueprints is not in the government catalog but code 81101505 is, so it proposes that code instead of rejecting the word.

It never stalls.

One thing at a time.

It translates instead of rejecting.

The market doesn’t buy half an accountant.

We spent around MX$8,000 on campaigns. Leads came in and demos happened. Accountants were the ones who showed willingness to pay, and they told us why: issuing invoices for clients eats their week and caps how many clients they can take.

Those same conversations killed the wedge. Nobody wanted to pay for two services, ours for invoicing and their accountant for filings. It isn’t the same work, but a wallet doesn’t make that distinction. It reads as paying twice. Invoicing alone wasn’t a product. It was a feature of a job someone else already owned.

MX$26

Per lead through a WhatsApp conversation. The same lead through a landing page form cost MX$73.

We put MX$8,914 into Meta Ads across two ad accounts and 30 ads, and got 134 leads: 62 through WhatsApp conversation for MX$1,707, and 72 through the landing page form for MX$5,279. By audience, a conversation lead cost MX$26 for accountants and MX$30 for entrepreneurs. None of those leads ever paid.

I built NUMMA on lean validation, which rests on one assumption: building is expensive. That assumption is gone. Now I build the most complete version I can in the least time, and I decide up front what the launch has to show me.