An SME's knowledge lives in the owner's head
And when the owner isn't there, the business knows nothing.
In a restaurant, the cashier fumbles questions about allergens. In a pharmacy, the phone rings all day for stock questions. In a school, the secretary answers the same parent three times in one week. On a construction site, everything stops because nobody knows the concrete mix ratio without calling the foreman.
This isn't a staffing problem.
It's an information architecture problem.
The real problem: operational knowledge isn't stored anywhere
Every restaurant accumulates a knowledge base:
- The exact recipes, with proportions and ingredient cost
- Service rules: who does what, in what order
- Supplier contacts and their terms
- Opening hours by day
- Dishes with allergens, to answer customer questions
- Stock alert thresholds before running out
This knowledge exists.
It's just not written down. Or it's written in a notebook nobody can find. Or buried in a WhatsApp group under 800 messages.
The agent doesn't solve the problem of missing information. It solves the problem of inaccessible information.
The architecture: a directory, not a database
The principle is simple.
We structure the restaurant's knowledge into Markdown files organized in folders. The folder encodes the context. The agent reads these files, indexes them, and answers questions.
restaurant/
├── menu/
│ ├── plats/
│ │ ├── poulet-yassa.md # recipe + allergens + ingredient cost
│ │ └── riz-sauce-arachide.md
│ └── prix-actuels.json
├── ops/
│ ├── fournisseurs/
│ │ └── boulangerie-centrale.md
│ └── sop/
│ ├── ouverture.md
│ ├── fermeture.md
│ └── nettoyage-cuisine.md
├── finance/
│ ├── couts-recettes/
│ └── seuils-alerte.json
└── journal/
└── 2026-06-14.md
No database schema to design. No admin interface to learn.
The owner writes in a text file. The agent reads it.
What the file path does instead of a prompt
When the agent receives a chunk of text, it also receives its path.
menu/plats/poulet-yassa.md says three things without needing to be explained:
- It's a dish (not a supplier, not an SOP)
- It's on the menu (not in the archives)
- It's text to read, not a number to aggregate
The directory structures the intent.
A database does the same thing — but it requires understanding migrations, joins, roles. A file in a folder, anyone can create one.
The three modules we install first
Module 1 — WhatsApp menu agent
The customer sends a message.
"What are today's specials?" The agent reads menu/prix-actuels.json and replies with the structured menu. "Does the poulet yassa contain peanuts?" The agent reads menu/plats/poulet-yassa.md and answers about allergens.
Staff don't intervene. The manager no longer answers these questions.
Module 2 — Guided checklist for staff
Every morning, the floor manager opens WhatsApp. The agent reads ops/sop/ouverture.md and sends the steps one by one. It waits for confirmation before moving to the next one.
No one can "skip" a step without confirming it.
The owner sees the result in journal/ at the end of the day.
Module 3 — Food cost alert
The agent reads finance/couts-recettes/ and finance/seuils-alerte.json. It compares the theoretical cost to what was logged in the day's journal.
A gap above 15% → WhatsApp notification to the owner.
No explanation needed. No dashboard to open. One alert, one link, one decision.
The same model, five other sectors
The restaurant is the easiest example to follow. But the problem is identical across five other sectors — and the wasted time is even more measurable there.
Clinics and medical practices
The phone rings all day for three questions.
Is the doctor available today? How much is a consultation? What documents do I need to bring?
The assistant answers. Hangs up. Answers again. She spends 40% of her day on these three questions.
cabinet/
├── medecins/
│ └── planning-semaine.json # availability by day
├── tarifs/
│ └── consultations.md # price by type of visit
└── procedures/
└── documents-requis.md # what to bring depending on the consultation
The sales pitch here is different from the restaurant. It's not convenience — it's reliability. A tired assistant can get a required document wrong. The agent reads the file. It doesn't get it wrong.
"The agent cites, it doesn't invent" — that's exactly what a doctor wants to hear.
Pharmacies
The purest case of the model.
The customer calls: "do you have Doliprane 1000?" The pharmacist puts down whoever they're serving, goes to check, comes back. Three times an hour.
pharmacie/
├── stock/
│ └── medicaments.json # updated every evening after inventory
├── posologie/
│ └── notices-standard.md # usual dosages for frequent questions
└── tarifs/
└── prix-courants.json
The stock is updated manually every evening. The agent answers availability questions all day. The pharmacist stays available for questions that need their expertise.
The distinction is important to set with the customer: the agent answers on stock and prices. It doesn't prescribe. That boundary is written in a regles/limite-agent.md file — and the agent cites it if asked to cross the line.
Construction and job sites
Several sites running in parallel. Workers calling the boss for decisions that are already written down somewhere.
"We're pouring the slab tomorrow, what's the concrete mix?" The site foreman calls the boss. The boss is on another site. Everything stops.
chantier/
├── sop/
│ ├── coffrage-dalle.md
│ ├── carrelage-mural.md
│ └── enduit-facade.md
├── materiaux/
│ ├── fournisseurs.md # contacts + lead times + terms
│ └── dosages-reference.json # concrete, mortar, plaster by type of work
└── equipes/
└── attribution-chantiers.md # who's on which site this week
The agent answers the site foreman on WhatsApp. The boss is no longer the bottleneck for eight simultaneous job sites.
This sector has a quirk: SOPs are often locked inside the heads of senior tradesmen. The real value of the installation isn't the agent — it's the two-hour session spent extracting and writing down that knowledge before it walks out the door at retirement.
Schools and training centers
Parents call. All the time.
Curriculum, fees, schedules, results, documents required for enrollment. The secretary spends 60% of her time answering questions that are already in the brochure.
ecole/
├── inscription/
│ ├── documents-requis.md # depending on grade level and situation
│ ├── tarifs-scolarite.json
│ └── calendrier-paiements.md
├── programme/
│ └── emplois-du-temps/ # one file per class
└── reglement/
└── interieur.md
The back-to-school period concentrates 80% of the volume. The agent absorbs the spike without hiring an extra secretary for two months.
The principal updates a class schedule by editing a file. The agent answers with the new version as soon as it's re-indexed.
Hotels and guesthouses
Pre-booking customer questions are 90% predictable.
Availability for a given date, price for a given room, what's included in breakfast, how to get there from the airport, nearby restaurants.
hotel/
├── chambres/
│ ├── standard-simple.md # description + price + amenities
│ ├── suite-familiale.md
│ └── disponibilites.json # updated every morning
├── services/
│ └── inclus-exclus.md
└── local/
├── acces-aeroport.md
└── restaurants-proches.md
Local content — restaurants, transport, activities — stays stable for months. It's written once. The agent answers 24/7 while the receptionist sleeps.
The guesthouse that answers at 2am on WhatsApp with nobody awake converts better than the one that answers the next morning.
What the agent doesn't do
The agent only knows what's written down.
If a dish isn't in menu/plats/, the agent will say it doesn't know it. If a supplier has no file, the agent can't give out their number.
This is a constraint we present as a reliability guarantee.
The agent can't make things up. It cites. If the owner wrote that delivery costs 500 FCFA in a file, the agent will say 500 FCFA. Not approximately. Not "around."
This forces the rules to be written down. And writing down the rules is the part that's missing in almost every restaurant.
Updating it: zero technical skill
The owner wants to change the price of the poulet yassa.
They open the file menu/prix-actuels.json. They change 4500 to 5000. They save.
The agent re-indexes automatically. In under a minute, the new price is live in WhatsApp replies.
No ticket to open. No developer to call. No admin interface to hunt for.
Tech stack
Ingestion : recursive read + per-file chunking
Index : LanceDB (local, no cloud required)
LLM : Ollama (local) or Claude API (cloud)
Interface : WhatsApp via WhatsApp Cloud API
Trigger : cron every 5 minutes or webhook on file change
The system can run on a $5/month VPS or on a local Raspberry Pi.
No critical dependency on a third-party cloud service.
What it costs, what it's worth
Initial setup and structuring: 75,000 – 120,000 FCFA Includes setting up the directory, writing the first files with the owner, and installing the agent.
Additional module: 25,000 – 45,000 FCFA per module Every new directory ingested or new channel connected is billed separately.
Monthly maintenance: 15,000 – 25,000 FCFA Updates, monitoring, response tuning.
The relevant comparison isn't "how much does this cost" but "how much does the manager cost who answers the same questions all day long."
How to choose which sector to deploy in first
Three criteria. The sectors that check all three should be prioritized.
High volume of repetitive questions. The time lost must be visible and measurable. A secretary spending 60% of her day on school schedule questions — that's measurable. A pharmacist picking up the phone for "do you have paracetamol" twenty times a day — that's measurable.
Knowledge already partially written down. Prices, programs, catalogs, SOPs — something exists somewhere, even in a notebook or an old WhatsApp thread. The setup is about structuring it, not inventing it.
WhatsApp as the primary channel. The agent installs itself where the customer already is. Not in an app to download. Not on a website to find. On the WhatsApp number that already exists.
Clinics and pharmacies check all three. That's where the ROI is fastest to demonstrate and easiest to put a number on.
What building this teaches you
The real work isn't technical.
It's sitting the owner down for two hours and asking them to describe how their business actually runs. Rule by rule. Price by price. Procedure by procedure.
The agent doesn't create the knowledge. It makes it accessible.
The most important deliverable of this project is the file directory — not the code.
→ Stock and cash management for Beninese SMEs → WhatsApp prospecting in Africa → CRM for African SMEs