Fixam
Nigeria's artisan and professional marketplace

- Client
- A Lagos-based founder
- Role
- Sole engineer — architecture, design, build, deployment
- Year
- 2026
- Status
- Live
The problem
A two-sided marketplace connecting Nigerian customers with vetted plumbers, electricians, carpenters — and, later, lawyers, architects and developers. Built end to end over ten weeks against a ₦1,000,000 Stage One proposal, from taxonomy and data model through to admin tooling and local SEO.
Finding a tradesperson in Nigeria runs on word of mouth, and word of mouth breaks the moment you move to a new area. Artisans go quiet, arrive late, or vanish mid-job with no accountability, and without competing quotes customers routinely overpay. On the other side, skilled artisans are invisible to anyone outside their existing network: almost all have a smartphone and WhatsApp, almost none have any digital presence or a way to accumulate a reputation. Every existing platform puts friction at first contact — an app download, a callback fee, a managed onboarding call — which is exactly the moment you cannot afford friction.




How I built it
The gate is the contact, not the profile
Profiles, ratings and reviews are wide open to browse. That openness is what pulls customers in, builds trust, and feeds local SEO — gating it would have killed all three. The single controlled moment is the contact itself: a customer tapping through to WhatsApp *is* a lead, and every one of those taps is silently logged from day one even though contact is free. It means Stage Two monetisation is a switch rather than a rebuild — the meter turns on at a gate that already exists, with months of real lead volume behind it.
A taxonomy that could grow without orphaning URLs
The directory launched with 82 manual trades across 15 groups and later opened up to professionals — lawyers, accountants, architects, developers — reaching 99 leaves across 17 groups. People hire an accountant through the same motion as a plumber: find someone nearby, check who has used them, call. Adding them also stops Fixam being a one-visit site. The expansion renamed 'Structural Engineer' to 'Civil & Structural Engineer' but deliberately left its slug untouched, because renaming it would have orphaned every existing profile and every indexed URL pointing at it.
An admin page that rendered 228 images at once
Once the directory held real data, the admin list rendered 50 profiles with up to six work photos each — 228 images on a single page, every one optimised on demand. It loaded as a wall of grey boxes and looked broken. Work photos now appear only while a decision is actually outstanding: they're essential for judging a submission and pure weight afterwards, so the browsing tabs get an avatar and a link instead. That took the approved tab from 228 images to 22, and pagination went in at the same time.
A font bug that made the whole site look like a book
The site read like a document rather than a marketplace, and one line explained most of it: the scaffold shipped `--font-sans: var(--font-sans)` in globals.css. Self-referential, so it resolved to nothing and every page fell back to the browser's default serif. Replaced with Archivo across weights 400–900 — a grotesque drawn for signage, which is the physical object this brand comes from: the hand-painted signboards outside every workshop in Lagos. One family rather than a display/body pair, because two similar-but-not-identical sans-serifs read as an accident.
Letting a customer become an artisan
'List your services free' pointed at the signup page, which bounced anyone already signed in straight back — so for logged-in users the button appeared to do nothing. The real gap was larger: there was no path at all for an existing customer to become an artisan without creating a second account under a second email. Absurd for somebody who signed up to hire a plumber and happens to be an electrician. A single `/become-an-artisan` entry point now sits behind all 13 calls to action and handles four states — signed out, already an artisan, signed in but unverified, and signed-in customer.
Built with
- Next.js 16
- TypeScript
- Tailwind CSS 4
- MongoDB
- Mongoose
- NextAuth v5
- Cloudinary
- React Email
- Radix UI
- Zod
Outcome
- Delivered and paid across three milestones against a ₦1,000,000 Stage One scope
- 99 trade and profession categories across 17 groups, with location-aware local SEO pages and a generated sitemap
- Customer, artisan and admin roles with an email-allowlisted admin console and a moderation queue
- Lead logging live from launch, so Stage Two pay-per-lead can be switched on against real data