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 · replyledger.com
In developmentReplyLedger presents
Across Africa, millions of shops don't have a website. The shop is a WhatsApp number — and the owner answers every single message herself, 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 shop like this closes at seven. The 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
Sample messages written for this page. The replies are generated in your browser from the price list in Part Three — nothing here is a recording of a real conversation.
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 bot 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 one is real and it is running in your browser. Edit the shop's price list in Set One, then message it in Set Two the way a customer would.
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.
Token figures below are round estimates for a shop of this size, printed so you can check the shape of the thing rather than trust it.
| 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.
Read this first
The table beside this is an illustrative scenario, not measured traffic. No shop is running on ReplyLedger yet, so there is nothing to measure. Every input is printed so you can substitute your own.
9,000,000
Model calls in a month · 1,000 busy vendors · one call per inbound message
The working
| Scenario | 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 |
Assumptions: 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.