Adejare Akolawole
Let's talk →
All posts
ProductEngineeringNigeria

Building Nigeria's First Escrow Freelance Platform

January 2025·6 min read

I started building Tasker4U because I was frustrated. Not in a dramatic way — just the quiet frustration of watching talented Nigerian developers, designers, and writers get ripped off on WhatsApp, or blocked from global platforms because of where they were born.

Global freelance platforms like Fiverr and Upwork exist, but they don't work for Nigeria. Dollar-only payouts. High withdrawal fees. Payment processors that decline Nigerian cards. The talent is here. The infrastructure isn't.

The idea

Tasker4U's premise is simple: a Nigerian freelance marketplace where money moves in Naira, payments are protected by escrow, and both sides can trust the process. The execution, as always, was the hard part.

I spent two weeks just mapping the payment flow before writing any code. What happens when a client funds a job? What if the tasker ghosts them? What if the work is bad? What if the client refuses to release funds unfairly? Every edge case needed an answer before the first migration ran.

Building escrow from scratch

There's no escrow-as-a-service in Nigeria. I had to build it. The core flow: client deposits funds → funds sit in a platform wallet → tasker completes work → client approves → funds release to tasker's wallet → tasker withdraws.

The hard part isn't the happy path. It's disputes. Partial completions. Expired jobs. Refund requests. I built a state machine for job status — pending, funded, in_progress, review, complete, disputed, cancelled — and wrote explicit transition rules for each state change. No shortcuts.

Payments are where products die. Spend 3× as long on payment flows as you think you need to.

Trust is a product feature

In any marketplace, trust is everything. Without it, no transaction happens. I built a three-layer verification system: phone number verification (basic bar), BVN validation (links to a real identity), and portfolio review (human judgment). Taskers with all three get a verified badge.

Did this slow down onboarding? Yes. Did it cut fake accounts? Dramatically. I'd rather have 500 verified taskers than 5,000 unverified ones.

Choosing FastAPI over Node

The backend is Python + FastAPI, not Node.js. I get asked about this a lot. The answer is simple: financial logic needs to be explicit and testable. Python's type system with Pydantic made every payment model self-documenting. The async performance was a bonus.

FastAPI's automatic OpenAPI docs also made it easy to test payment webhooks from Kora (my payment processor) during development. I could simulate every webhook event without touching Postman.

What I'd do differently

  • Launch with fewer features. I spent months on admin tools that I barely use. The marketplace itself was what needed validation.
  • Talk to taskers earlier. I assumed I knew what they needed. Turns out their biggest pain point wasn't payment protection — it was finding clients. Discovery matters.
  • Don't underestimate mobile. Most of my users are on Android, mid-range devices, 4G that drops to 3G. Every screen needs to work at 300ms interaction time on a Tecno Spark.

What's next

Tasker4U is live and processing real transactions. The next phase is growth — tasker acquisition, client referral loops, and category expansion beyond tech into design, writing, and skilled trades.

Building a marketplace solo is one of the hardest things I've done. But every time I see a tasker withdraw their first payment, it's worth it.

All postsLet's talk →