The customer
Sees a wrapper on a status update at 11pm and types one line, half in Pidgin, no punctuation. If nobody answers tonight, she buys from the next shop.
ReplyLedger presents
Across Africa, millions of small businesses don't have a website. The shop is a WhatsApp number — and the owner does her own customer service, every message by hand, in Pidgin, in English, at midnight. ReplyLedger answers them for her, from her own price list, and writes down every order it takes.
One message · one answer
Every inbound message is one call to a model. Not one a day, not one a session — one per message, hundreds a day for a busy shop.
Sees a wrapper on a status update at 11pm and types one line, half in Pidgin, no punctuation. If nobody answers tonight, she buys from the next shop.
Sells fabric out of one phone number. Has already typed the price of that wrapper forty times this week, and will type it forty more.
Price, availability, delivery, haggling, ordering, payment, or 'where is my order' — seven questions, asked all day, in whichever language comes out.
And introducing
Reads the shop's own list. Answers in the register it was asked in. Holds the haggle at a floor the vendor set herself. Writes the order down as a record instead of letting it scroll away.
A fabric shop in Lagos closes at seven. The WhatsApp messages don't. By midnight there are eight people waiting, and six of them are asking something the owner has already answered dozens of times: how much, do you still have it, what about delivery, what's your last price.
None of it is hard. All of it is manual. It is the single largest thing standing between a small shop and more trade — and it happens at the exact hour nobody is awake to do it.
Two of those eight will buy somewhere else before morning. She will never know which two.
One vendor · Wednesday 23:47 · eight still waiting
Good evening ma, the ankara wey you post, how much?
abeg you still get gele? i need am for saturday
Hello, delivery to Lekki how much
madam last price for the lace nau
I want 2 yards of the adire one
wetin be the price of hair bundle 14 inch
Ma good evening. Is the aso oke still available?
my order since tuesday, wetin happen to am
Every reply above is written against the price list in Part Three. Change the list and these change with it.
This is the part that makes the idea worth building. One customer writes abeg you still get am. The next writes do you still have this in stock. A third switches language halfway through the sentence, because that is how people actually speak.
A menu-driven chatbot fails all three. A translator answers the wrong question politely. What has to happen is that the same question gets recognised in either register, checked against this shop's actual stock, and answered back in the register it arrived in — not corrected, not translated, not made to sound like a company.
abeg · you get · am → availability
do you have · in stock → availability
last price · e too cost → haggle, floor read from her own list
best you can do → haggle, same floor
This is the live agent. Edit the shop's price list in Set One, then message it in Set Two the way a customer would — every reply comes back grounded in the list you just typed.
Set one · the shop's list
One item a line, name then price. Add (4 left) for stock and | last 28,000 for the lowest you'd take. Change it and the answers change with it.
Read back — 7 items
| Item | Price | Floor | Stock |
|---|---|---|---|
| Ankara wrapper (6 yards) | ₦18,000 | ₦16,550 | 4 |
| Lace material, plain white | ₦32,000 | ₦28,000 | — |
| Gele headtie, stiff | ₦6,500 | ₦6,000 | 9 |
| Adire kampala 2 yards | ₦9,000 | ₦8,300 | — |
| Human hair bundle 14in | ₦45,000 | ₦41,400 | 2 |
| Aso oke set, gold | ₦85,000 | ₦78,000 | — |
| Sewing thread pack | ₦1,200 | ₦1,100 | — |
Set two · a customer
Write the way your customers write. Pidgin, English, or both in one line.
Orders it wrote down — 0
Ask it to buy something. The record appears here.
What one message costs to answer
Every inbound message is its own call. It carries the shop's list so the answer is grounded in real stock and real prices, and the last few turns so the haggle is remembered. Nothing can be batched, because on the other end a person is watching two ticks and deciding whether to wait.
The figures beside this are the token budget one message actually carries, for a shop of this size.
| Per inbound message | Rough size |
|---|---|
| Inbound message no batching — a customer is waiting | 1 call |
| Her price list sent as context on every call | ~450 tokens |
| Last 6 turns so it remembers the haggle | ~380 tokens |
| The message customers write short | ~40 tokens |
| The reply plus a structured order record | ~120 tokens |
This is the unusual shape of the idea. Most software bills by the person; this one is exercised by the customer. A shop that has a good week doesn't add users — it takes more messages, and every one of them is another call.
So the work scales with a shop's trade rather than its headcount, and it concentrates in exactly the hours nobody is on shift.
How it is worked out
Every input in the table beside this is printed, so the arithmetic can be checked line by line and run again on your own message counts.
9,000,000
Model calls in a month · 1,000 busy vendors · one call per inbound message
The working
| Tier | Assumed | Calls |
|---|---|---|
| One quiet vendor | 40 messages a day | 40 calls/day |
| One busy vendor | 300 messages a day | 300 calls/day |
| One busy vendor, a month | 300 × 30 | 9,000 calls |
| 1,000 busy vendors, a month | 9,000 × 1,000 | 9,000,000 calls |
Inputs: 300 inbound messages a day for a busy vendor, 30 trading days a month, one call per message, no batching, no caching of repeated questions. Halve the message count and you halve the table.
Stops re-typing the same six answers forty times a day, and stops losing the customers who message after closing. Every order arrives already written down.
Gets an answer in the language she wrote in, at the hour she wrote it, instead of scrolling to the next shop.
A workload measured in inbound messages rather than in seats — usage that grows with a shop's trade, not with its headcount.
ReplyLedger is a customer-support assistant for shops that sell inside WhatsApp. It reads the price list you already paste to customers, answers the messages that arrive about it — price, availability, delivery, haggling, order status — and records every order it takes as a written line rather than a chat that scrolls away.
Yes. It answers in the register the customer wrote in. A message in Nigerian Pidgin gets a Pidgin reply; a message in English gets an English one; a message that switches halfway through is still understood. Nothing is translated or corrected back at the customer.
No. The list you already send to customers is the input — a plain text list of item, price, and sometimes how many are left. Paste it in and the answers come from it.
It reads them off your list. A line like "Lace material, plain white - 32,000 | last 28,000" tells it the asking price and the floor you set yourself, and it holds the haggle at that floor instead of inventing a discount.
It becomes a ledger row — item, quantity, price, delivery area, total, and who ordered it. That written record is the point of the product; a WhatsApp thread you have to scroll back through is what a vendor already has.
Yes. Part Three is the live agent on the same path that answers a WhatsApp message. Edit the price list, message it the way a customer would, and the reply comes back grounded in the list you just typed. Paste your own list over the one it loads with and it answers from yours.
Small businesses that sell through a WhatsApp number rather than a storefront — clothing, fabric, food, hair, electronics, household goods — in Lagos, Accra, Nairobi and anywhere trade happens in a chat thread.
Write to hello@replyledger.com with your price list and the questions your customers ask most, and we set it up against your number. You can try the agent on this page against your own list first — paste it into Part Three and message it.