All names, phone numbers, ID numbers and amounts in this demo are fictional. No real taxpayer data is used.
Rasiti (Receipt) Lottery turns every purchase into a receipt and a prize-draw entry. Sellers get a free sales book that fills itself, and RSL sees where trade happens. All data here is mock. Anyone can try the phones; the RSL pages need an officer account.
Try it in 5 steps
- Open the phonesPhones: on the keypad phone type *999# and press the green key. On the smartphone, open WhatsApp and chat with Rasiti.
- Pay cash and claim the receiptCustomer phone: *999#, 1 (customer), 1 I paid cash, seller code 3307, an amount. Seller phone: *999#, 2, code 3307, PIN 2580, then 1 Confirm cash sales. Nothing counts until the seller says yes.
- Pay by mobile money or cardUse the payment panel on the Phones page. M-Pesa and EcoCash receipts arrive by themselves; a card buyer claims with the last 4 digits of the card (try seller 6018, card 4471).
- Run the guided casesEight one-click cases on the Phones page: ordinary sales, an exception, a case for human review, a new taxpayer and a catch-up payment.
- See the RSL sideSign in, then open the Dashboard, the Officer console and Reports.
Check a receipt: customer phone *999#, 1, 3, then … (genuine) or … (fake).
Test sellers
| Code | Seller | What to look for |
|---|---|---|
| 3307 | Ntate Thabo · snacks, Sefika rank | Registered. Has cash sales waiting for him to confirm. |
| 4821 | Mme Palesa · fruit and veg | Not registered yet. A buyer's payments were sent back: voided. |
| 5140 | Mme 'Mathabo · cooked food | Nil return, and rejects most cash claims: a visit, not a bill. |
| 2264 | Ntate Lebohang · shoe repair | Nil return that matches real inactivity. No action. |
| 6018 | Mme Lineo · hair salon | Card machine. One phone claiming many cards: held. |
| 7735 | Ntate Teboho · phone repairs | Bought from himself: blocked. Moved his shop to Kingsway. |
| 3902 | Mme Nthabiseng · clothes | Overdue tax, and 6 new phones paying exactly M100. |
PIN for every test seller: 2580. Sellers sign in with seller code and PIN. Each one has dummy M-Pesa, EcoCash and card machine codes. Admins make more test accounts on the Users page. All codes and numbers are fictional.
Questions for testers
- Would you use USSD or WhatsApp, and why?
- As a seller, is one tap to confirm a cash sale easy enough?
- Would double draw entries make you choose a registered seller?
- Was any screen confusing or too long for a basic phone?
The same service on USSD (any handset) and WhatsApp. Switch channel above each phone. Everything you do here is saved and shows on the RSL pages.
Guided cases
Customer pays with M-Pesa, EcoCash or card
The buyer pays as usual. The network or bank tells Rasiti, and the receipt follows by itself. For cash, use the customer phone: 1 I paid cash.
Latest receipt
Live activity
Click anything: a bar, a dot on the map, a figure or a line in "Needs attention" opens the details and what to do.
Receipted sales per day, and the forecast for the next 14 days
Sellers and leads on the map
Needs attention
Top sellers
Widening the tax net
Tip of the day
Free in the USSD and WhatsApp menus and on the Rasiti WhatsApp Channel.
Rasiti learns from its own data: the level, trend and weekly pattern of sales, each seller's pattern, and which sellers tend to file or pay late. The models re-train whenever new data arrives. Click any bar for the details.
Receipted sales: the last 45 days and the next 30 (forecast)
Forecast alerts
Weekly pattern the model learned
Tax expected this quarter, by seller
Sales so far plus the forecast for the rest of the quarter, at the demo rate. RSL sets the real rate.
Chance of a late return or payment
Learned from every past return. A reason to remind early, never a penalty.
How the models work
Sales forecast: Holt-Winters exponential smoothing with a weekly season; its settings are chosen by testing many combinations on the history. Accuracy is measured by hiding the last 14 days and forecasting them. Late-payment risk: logistic regression with three plain features, so every score can be explained. All in public/ml.js, no outside service.
Every receipt is scored against plain rules. 30 points or more holds its draw entries for an officer; 60 or more blocks them. The sale always stays in the seller's sales book: the Shield only decides who can win.
Rules
Fake and misused codes stopped
Receipt stream
Test on synthetic data
Generates two months of trading for 25 made-up sellers, plants known fraud patterns plus genuine bulk purchases that look suspicious, then measures what the Shield catches and what it wrongly holds. Real rates come from the pilot.
Customer ratings show where trade happens and which shops give receipts, including shops not on Rasiti. Click any dot, circle or bar for the details. No single customer's word triggers action.

Map of shop ratings
Positions in the mock data are approximate places in Maseru. Live ratings shared from a phone use the customer's own location. The signal buttons also filter the shop table and the PDF.
Hotspots: purchases without a receipt
Each dot is one customer rating. Darker clusters mean more problems reported in one place.
Receipt rate by area
Ratings per day
What customers reported
Purchases without a receipt, by time of day
Share of ratings in each time slot where the customer got no receipt or reported a problem.
By area
Change compares the second half of the period with the first half, in percentage points.
By shop
Receipt rates show once 3 or more different people have rated a shop. Shops at 80% or more get the public "Gives receipts" badge.
Latest ratings
A short, ranked worklist. Click a seller's name or a dot on the map for the details and actions. A nil return or a refused cash claim is never treated as non-compliance on its own, and nothing becomes a penalty without an officer's decision.
Worklist
Review queue: held draw entries
Leads on the map
Complaints from customers
Action starts at 3 independent customers. Reporters are never shown to sellers.
Filing and payments
Registered sellers file from their sales book and pay by mobile money on USSD or WhatsApp, in full or in small parts before the due date. Tax uses a demo rate of 3% of declared sales; RSL sets the real SBT rate and schedule.
RSL e-services link Simulated
How Rasiti would talk to RSL's own systems. Each registration is checked against RSL's taxpayer register (TIN check), each return is sent to RSL and gets an acknowledgement number, and each payment gets an official RSL receipt number. RSL does not give outside teams access to live systems, so these answers are simulated. In a pilot they are replaced by RSL's real e-services connection. Demo rule: ID numbers ending in 00 are already on RSL's register.
1 entry per M10 paid by mobile money or card (up to 5 a receipt), and 1 entry for each cash sale the seller confirmed. Entries double at registered sellers. The draw runs once a month; prizes come from sponsors first, then from a capped share of the extra tax the draw brings in.
This month's draw
Smartphone winners
Airtime winners
Prize calendar
Every entry counts in its month, and again in the quarter, half-year and year draws. Every receipt is a payment that M-Pesa, EcoCash or a bank confirmed, so every receipt plays for every prize; a reversed payment, or money sent back to the buyer, gets no entries. Winners show their ID and the SIM registered to them before any payout. Prize amounts and sponsors are to be agreed with RSL.
Recent draws
Every report in one place, and the emails Rasiti sends by itself. Choose what you need with the filters, then click a download: every CSV and PDF below holds only the matching data. CSV files open in Excel; PDFs are ready to print or email. Phone numbers stay masked unless an admin shows contacts.
Dashboard
One-page overview: receipts, sellers, Fraud Shield, draw, filing and what needs attention.
Officer console
The worklist, held draw entries, customer complaints, filing and payments.
Sellers
Every seller with market, tax status, linked M-Pesa, EcoCash and card machine codes, and every shop move.
Cash claims
Every cash sale a buyer claimed, and what the seller did: confirmed, rejected, ignored or still waiting.
Fraud Shield
Every receipt with its score and reasons, and the fake or misused codes that were stopped.
Community watch
Customer ratings by shop and area, with Bohlale's latest analysis in the PDF.
Monthly draw
Every entry in the draw with masked numbers, so the result can be checked, and the winners.
Need one transaction, or a custom list? Use Search (results CSV and PDF). The full audit trail is in the System log.
Email reports and alerts
Alerts right now
What the alert emails would contain. Click one for the details.
Emails sent
Click one to read it.
Bohlale ("wisdom" in Sesotho) helps officers understand cases, draft messages and write reports from Rasiti's data. It only suggests; officers decide. Phone numbers stay masked and every question is written to the activity log.

Bohlale can make mistakes. Check the figures before you act.
Tasks
Rules Bohlale follows
- Uses only Rasiti's data and says which records it used.
- Never approves, rejects or penalises. Officers decide.
- Treats a nil return as a reason to ask, not as wrongdoing.
- Never sees full phone numbers.
- Every question is logged with the officer's name.
Mohlomi AI ("the wise one") is Rasiti's test agent. Tell it what to check, in plain words. It plans the steps, opens Rasiti's pages and demo phones, clicks through them while you watch, and reports what passed and what failed. Every run is written to the system log. Owners and admins only.

What should Mohlomi AI test?
Result
Rules Mohlomi AI follows
- Full access (the default) uses every page, the demo phones, every button, the report filters and the test accounts, so every test can run to the end. Its changes are real demo data: use Undo, or reset and load the demo data afterwards.
- Look only opens pages, reads them and checks downloads. It changes nothing.
- Only "Clear entire data", switching users off or deleting them, signing out and passwords stay blocked, because they would remove users or end Mohlomi's own session.
- Downloads are checked but not saved to your computer.
- Without the AI service, Mohlomi AI uses its built-in test plans.
Recent runs
Search every transaction Rasiti has ever recorded: receipts paid by M-Pesa, EcoCash or card (and older cash records), tax returns and tax payments. Type a receipt code, seller code or name, market, payment reference or the last digits of a phone, then narrow it down with the filters. Phone numbers stay masked unless an admin shows contacts.
Every action in Rasiti is recorded here: who did it, what they did, when, and the IP address it came from. RSL staff appear by email. Customers and sellers using the phones appear with a masked number or their seller code. Entries cannot be changed from the platform.
Add officers and choose what they can do. Owners manage everyone; admins manage officers and viewers. Every sign-in and decision is written to the system log.
Add a user
Users
Test accounts
For testing only. Type a seller code (each shop's unique identifier) and Rasiti gives that seller a new PIN and links dummy payment accounts to it: an M-Pesa merchant code, an EcoCash merchant code and a bank card machine (speed point). A code that is not on Rasiti yet becomes a new test shop. Switch this off for the live pilot with TEST_TOOLS=off.
My password
Demo data
Deletes all sellers, receipts, ratings, reviews and draws, so you can load a fresh dataset. Users and the activity log are kept.
Clear entire data
Deletes everything: sellers, receipts, ratings, reviews, draws, the activity log and every user except you. This cannot be undone.