▶ Hackathon project
§ Project file

Zawadi

The permanent record for this hackathon project: write-up, links, team, tags, and prizes.
Submitted Bitcoin++ Open Source Edition
Zawadi turns any event into a tipping culture. Organizers add their speakers in minutes; the whole room tips anyone in one tap — sats straight to their wallet.
The write-up

Zawadi — make a tip, not a wallet

Tip anyone in Bitcoin. They cash out in M-Pesa, by phone number. No wallet, no seed phrase, no crypto to learn.

Zawadi is Swahili for gift — because a tip isn't a transaction, it's a way of saying asante.

💡 The spark

We were sitting at Bitcoin++ in Nairobi, watching brilliant talk after brilliant talk, and noticing the same thing every time a speaker stepped off stage: the room wanted to say thank you, and there was no good way to actually do it. Clap, maybe tweet, move on. All that goodwill, nowhere to go.

The deeper itch is one we've felt for years building in Kenya. "Bitcoin adoption" keeps stalling — not because people don't want the money, but because every product asks them to first care about Bitcoin: download a wallet, guard a seed phrase, learn what a sat is. The 50 million Kenyans who live on M-Pesa don't want a crypto lecture. They want shillings.

So we flipped the question. What if the best Bitcoin app is the one where the person getting paid never knows it was Bitcoin?

⚡ What we built

Zawadi is a tipping app where the sender pays over Bitcoin Lightning and the receiver gets spendable value — either sats straight to their own wallet, or KES in M-Pesa, settled from nothing but a phone number. Borderless money in, local money out, in seconds.

The receiver gets:

receivedKES=amountKES (1−f),f≈1%\text{received}{KES} = \text{amount}{KES}\,(1 - f), \qquad f \approx 1\%receivedKES​=amountKES​(1−f),f≈1% No app to install on their side. No bank. Just "someone sent me M-Pesa."

But a tip app that only moves money is a feature, not a company. Our real bet is bigger.

🎯 The edge: tipping is a culture, not a transfer

The thing we actually want to build is a tipping culture — and the surface that creates it is the community page.

An organizer spins up a community for an event (like this one), adds each speaker with their Lightning address, and gets one shareable page. The whole room opens it and tips anyone in a single tap. And because everyone can see the tips landing, tipping becomes the norm in the room. That social-proof loop is the product.

This is also why we're not really competing with Bitnob or Tando. They're horizontal rails — they move money, brilliantly. We own the moment: the context where a thank-you happens. It's the same reason Buy-Me-a-Coffee beat "just use Stripe." The rail is plumbing; the culture is the product.

And here's the unlock that makes us live, with real sats, today, in this room: the community page is non-custodial. Speakers bring their own Lightning addresses, attendees pay them directly, and Zawadi never touches the funds — we're the directory and the experience, not the bank. No custody, no off-ramp, no regulatory gate to demo it right now. The M-Pesa rail is the expansion play for the millions who'd rather hold shillings than crypto.

🛠️ How we built it

Frontend — React + TypeScript with a custom "Tip Ticket" design system: a perforated receipt-and-tear-off-stub motif where the sats sit on the ticket and the M-Pesa payout sits on the stub. Warm paper, not dark-mode neon — deliberately built so it reads as money people understand, not a crypto dashboard. Backend — Node + TypeScript, integrated with Bitnob for the Lightning→M-Pesa off-ramp. Lightning invoice in → webhook confirms → M-Pesa payout out, with HMAC-verified webhooks and idempotency so a tip never double-pays. It ships with a mock mode that runs the entire flow offline and flips to the live Bitnob sandbox behind a single env var. Rail-agnostic by design — the off-ramp lives behind one interface, so Zawadi can route a tip over Bitnob, Tando, or Kotani — whichever is cheapest and healthiest at that moment. They're suppliers, not competitors. We sit above all of them.

📚 What we learned

Make Bitcoin invisible. The winning move in emerging-market crypto isn't a better wallet — it's deleting the wallet from the user's experience entirely. The hard part isn't the tech. Lightning→M-Pesa already exists. The hard, unsolved problem is behavior and distribution — getting the first organizer to set it up and the first few people to tip so the loop catches. That reframed our whole project from "payments" to "culture." Constraints sharpen products. Kenya's VASP Act is now in force, and the moment you custody funds you trigger licensing. Rather than fight that, we leaned into a non-custodial architecture — which both shrank our legal footprint and became our fastest path to a real, live demo.

🧗 Challenges we faced

Standing out from the rails we stand on. Our sharpest moment was realizing we shouldn't out-bank Bitnob or out-wallet Tando — we should own a vertical (tipping) and a surface (community pages + tip jars) neither of them is chasing. The custody wall. Our first cut briefly held funds between the Lightning payment and the M-Pesa payout. We refactored to non-custodial, which lowered the compliance burden and unlocked tipping that works today. Designing money UI that feels human. Avoiding the generic crypto aesthetic took real restraint and a design system built from scratch. Late-night engineering grit — single-file bundling, webhook plumbing, and getting an end-to-end flow to actually settle.

🚀 What's next

Embeddable tip jars for counters, bodas, and market stalls; organizer dashboards and leaderboards to fuel the loop; the M-Pesa off-ramp to production once compliance clears; and multi-rail routing for the best price every time.

Try it out