IvánDíazLab

Hilos y Encanto. A whole haberdashery, built from the inside.

My own haberdashery: five sales channels, one inventory and six applications I built to run it.

Real project capture: Hilos y Encanto.
Hilos y EncantoReal project capture

Node + TypeScript · React + Vite · Offline PWA · PostgreSQL · Docker · Mercado Libre API · Amazon SP-API · Mercado Pago · Local AI

Built. And verified.

5
sales channels reading the same stock
6
in-house applications, in production
1
central inventory; no channel keeps its own count
796
Mercado Libre listings audited and reconciled

Every piece has its own case.

How it was built.Decisions, evidence and details

Project facts

Business
Hilos y Encanto, my haberdashery in San Cristóbal de las Casas, Chiapas: yarn, thread, kits and tools for knitting, embroidery and crafts.
Channels
Shop counter, Mercado Libre, Amazon Mexico, hilosyencanto.com and WhatsApp
Status
In production. The team uses it for every sale, every shipment and every stock count.
Role
Owner, operator and builder: I designed it, coded it, deployed it on my own server and run it.
Pieces
Point of sale, offline warehouse app, central inventory, web store, WhatsApp agent with CRM, and attendance tracking with single sign-on

Context

Hilos y Encanto is my haberdashery. It sells over the counter in San Cristóbal de las Casas and online across Mexico: Mercado Libre, Amazon, its own web store and WhatsApp. A small team runs it, ringing up sales, packing, restocking and answering messages all day.

Before writing a single line of code, I ran it. I counted boxes, packed shipments, cancelled sales of items that were already gone and reconciled by hand what no system could. Everything I built here came from that counter, not from a requirements document.

The problem

Five places to sell. Five versions of how much was left.

Every channel kept its own count. The counter did not know what went out through Mercado Libre, the web store did not deduct stock when someone paid, and the warehouse was a count on paper. Selling an item that no longer exists is not a rare mistake: it is what happens when nobody has the right number.

And a haberdashery is the worst case: thousands of small SKUs, nearly identical colours, boxes filled with labels from different listings. No off-the-shelf software understands that operation.

Key decisions

Four rules I learned running the business, which the software follows without exception.

A person deducts warehouse stock

The system never deducts physical stock on its own. The team deducts the box when packing and when building a shipment; the software records, warns and compares.

An automatic deduction plus a human one is a double deduction. I would rather the system ask than believe it knows what is in a box it has never seen.

The SKU is not enough

One SKU can cover several listings, each with its own physical pile. Channel and warehouse are matched by the listing code, and only by that.

I learned it by breaking production: matching by SKU switched off listings that did have stock. Since then a self-test watches for it.

Zero is not always zero

«Zero in the warehouse» can mean it does not exist, it is not boxed yet or it has no label. Sellable stock is boxes plus loose pieces.

Ignoring loose pieces produced false oversells. Telling the three zeros apart avoids restocking what is already on the shelf.

One account for the whole team

The point of sale and the warehouse app check identity against the attendance app: the same person signs in everywhere with their phone or business email.

Each application still owns its permissions. A promotion in one system does not open another system's till.

How a skein of yarn moves

The central inventory is the single source of truth. Channels read from it, the warehouse confirms it and the data tells what happened.

  1. It sells anywhere

    At the counter, on Mercado Libre, on Amazon, in the web store or over WhatsApp.

  2. One inventory records it

    Every sale lands in a ledger that is never edited: corrections are added.

  3. Every channel finds out

    Stock is written back, and every write is read again to verify it.

  4. A person confirms it

    The warehouse scans, packs and deducts from a phone, even with no signal.

  5. The story gets told

    Three years of reconstructed sales show what moves and what does not.

The solution

Six applications that talk to each other. A point of sale for the counter. A warehouse app that scans, counts by location and works offline. A central inventory connecting Mercado Libre, Amazon, the web store and the bot. The hilosyencanto.com store, which no longer keeps stock of its own. A WhatsApp agent with a CRM that answers using local AI. And attendance tracking, which is also the front door for the whole team.

On top sits the data layer: three years of sales rebuilt into an analytical model, and twenty-eight months of spreadsheets migrated into a ledger traceable to sheet and row.

Everything runs on my own server, in containers, behind a tunnel and with no ports open to the internet. Each piece has its own published case with its decisions and its numbers.

Results

  • One inventory for five channels: 796 Mercado Libre listings audited and a ledger with 1,742 movements.
  • The warehouse works offline, and a replay of 3,536 real events verified the fix for a shipment that did not add up.
  • 56,739 transactions over three years rebuilt to learn what really sells.
  • Twenty-eight months of spreadsheets brought into a single ledger, without duplicates.
  • The WhatsApp agent answers catalogue and order questions with AI running on my own server: conversations never leave the business.

Figures are published in units and movements. The business's monetary amounts are not published, by the project's own rule.

What I learned

That building for your own business is unforgiving: if the system lies, I find out at the counter that same afternoon. That pressure is what made every piece admit its limits instead of inventing a comfortable number.

And that operating experience is the advantage. The most valuable rules —a person deducts, zero has three meanings, the SKU is not enough— were in no manual. I learned them behind the counter, and they are the same ones I bring to my clients' systems.

Does your business sell in several places and nothing adds up? I already solved it in mine.

Let's talk

Your operation can take the next step.

Let’s talkMore projects