← Back to blog

Building a crowdfunding platform Sri Lankans can actually trust

Why Sahaya shows its fund ledger on every campaign page instead of hiding it in a dashboard — and what that decision actually costs to build.

Video version coming soon.

Every crowdfunding platform has the same problem, and most of them don't solve it: a donor has no real way to know whether their money reached the person it was for. You see a nice photo, a heartfelt story, a progress bar. You don't see what happened after you paid.

That's the problem Sahaya is built around. Not "how do we make donating easy" — every platform does that — but "how do we make it possible for a stranger to trust this campaign without having to trust us."

The ledger is the product

On most platforms, the financial breakdown — platform fees, payment processing costs, what's actually been released to the campaigner — lives in a dashboard only the campaign owner can see, if it exists at all. On Sahaya, it's on the public campaign page, updated live, for every visitor to see:

That last one matters most. Funds aren't released the moment a campaign hits its goal — they're released in stages, against proof of spend, after the campaign has been verified. A campaign for a hospital deposit shows the actual tranche paid to the hospital, not just a total sitting in an account somewhere.

Why this is harder to build than it sounds

A public ledger sounds like "just display some numbers," but it means every donation, fee calculation, and release has to be a real, auditable transaction from day one — not a number that gets edited in an admin panel later. There's no shortcut version of this feature; either the money-tracking is real underneath, or the ledger is decorative and the trust it's supposed to build is fake. We built it real from the start, which meant the data model came before the UI, not after.

Language wasn't an afterthought

Sahaya works in Sinhala, Tamil, and English, because the people who need to trust a campaign — and the people running one — aren't all comfortable reading English. Bolting on translations after the fact almost always shows: strings that don't fit, layouts that break, a language switcher that feels like an afterthought because it was one. This was designed trilingual from the first screen.

What's still not done

Payment gateway integration is the one piece standing between Sahaya and a public launch. Everything else — verification flow, staged release, the ledger, the trilingual interface — is built and working. I'd rather say that plainly than dress it up as "coming soon" with no specifics.

The actual lesson

If you're building something that asks people to trust you with money, the trust-building feature usually can't be a UI layer on top of a normal app — it has to be a constraint on how the whole system is built. That's slower. It's also the only version of "trust" that's worth anything.