All projects
CupidFaces Live

NaijaBased

Nigerian business discovery and ordering platform, 2,200+ businesses, zero paid acquisition

2,200+
Businesses listed
1,200+
Monthly clicks (May 2026)
100+
Paid subscribers
26x
Click growth in 5 months
MarketplaceSEO GrowthFintechMulti-platformNigeria
NaijaBased homepage on desktop
Desktop
NaijaBased homepage on mobile
Mobile

The Problem

Nigerian businesses had no affordable, practical way to get found online without advertising. Existing directories either required paid listings upfront or lacked the local context that would make them useful: QR menus, Paystack ordering, neighbourhood-based search. There was a clear gap between what platforms offered and how businesses in Nigeria actually operated.

Overview

NaijaBased is a business discovery and ordering platform for the Nigerian market. Customers use it to find local businesses, browse digital menus via QR code, and place orders with Paystack checkout. Business owners list their businesses, manage menus, handle orders, and withdraw earnings. It covers all Nigerian states across 182 business categories and grew to 2,200+ listed businesses entirely through organic SEO, with no paid acquisition.

The platform has two sides: a consumer-facing discovery and ordering experience, and a vendor portal where business owners manage their operations. Both went through two major phases.

V1 was a PHP monolith that had grown into a full social and commerce platform. The feature set covered: business listings with category, city, and state SEO pages; a jobs board; events with Paystack ticketing and QR code download; a marketplace with buyer-seller messaging; community groups (each with their own gallery, store, and events); professional portfolio pages; a social feed with posts, hashtags, and sponsored content; a discover feed; direct inbox messaging; a wallet with transaction history and withdrawals; a referral and points system with a leaderboard; KYC verification; a platform ads system; saved items; notifications; profile view tracking; and an analytics module. The vendor side had three separate dashboard codebases by business type: restaurant, retail, and service. A bonus programme rewarded vendors for hitting monthly revenue milestones, with Bronze, Silver, and Gold tiers paying out up to 10,000 NGN. A separate HQ admin panel at hq.naijabased.fun handled platform-level moderation and operations.

V2 was a deliberate cut. With over fifteen modules running on one codebase, any change to shared infrastructure had to be tested across all of them. Feature velocity on the core product had slowed to a crawl. The decision was to strip the platform back to what was actually driving value: business discovery and ordering. Jobs, events, communities, marketplace, social feed, inbox, points, KYC, ads, and the bonus programme were all removed. The vendor portal moved to Next.js with a single unified dashboard replacing the three separate V1 codebases, covering order management, menus, customer tracking, analytics, wallet, and withdrawals for all business types.

A third surface was added alongside V2: shop.naijabased.fun, a standalone e-commerce platform for businesses that want a dedicated storefront. It shares authentication with the main platform via SSO, using a JWT token scoped to the .naijabased.fun domain so users move between the two without logging in again.

My Role

  • Designed the organic SEO growth strategy: every business profile is its own crawlable page with clean URLs, location-specific metadata, and Schema.org LocalBusiness structured data
  • Designed the freemium onboarding for business owners: minimum required fields, mobile-optimised form, no payment details required upfront to get listed
  • Designed the full monetisation model: free listing for discovery, featured monthly and annual placement, Menu Pro subscription for QR menus and ad-free ordering pages, and a platform ads system
  • Defined the V1 product scope across 18 surfaces: business listings, jobs, events with Paystack ticketing and QR tickets, marketplace with buyer-seller messaging, community groups (each with posts, gallery, store, and events), professional portfolio pages with testimonial workflows and contact tracking, social feed with hashtags and sponsored posts, direct inbox messaging, wallet, referral and points with leaderboard, KYC, ads, notifications, and analytics
  • Designed the vendor bonus programme in V1: Bronze, Silver, and Gold tiers rewarding vendors for monthly revenue milestones with NGN payouts
  • Specified and oversaw the HQ admin panel (hq.naijabased.fun): a separate operations platform covering business moderation, user and KYC management, marketplace moderation, withdrawal approvals, event management, a platform blog, and a moderators management system
  • Led the V2 scope decision: cut fifteen peripheral modules, retain business discovery and ordering, rebuild the consumer frontend in Next.js while keeping PHP as the backend API
  • Designed the V2 vendor portal as a single unified dashboard for all business types, replacing three separate V1 codebases
  • Specified the shop subdomain (shop.naijabased.fun) as a standalone storefront platform with SSO from the main platform, covering store, service, and food business types each with their own analytics, bookings, payments, and withdrawals
  • Defined the QR menu product: businesses generate a QR code linking to their branded digital menu with direct Paystack ordering

Stakeholders

  • Business owners (vendors)
  • Consumer users
  • Professional portfolio users
  • Community group members
  • Platform moderators (HQ)
  • Backend PHP developer
  • Next.js frontend team
  • Paystack (payment partner)

Technical Context

V1 was a PHP monolith with session-based auth and MySQL on Namecheap shared hosting. Every module lived in the same codebase: shared config, shared includes, shared session handling. Paystack handled all payments, Brevo SMTP handled transactional email, Mocean handled SMS. Sitemap files were generated per content type (businesses, categories, cities, states, professionals, jobs, events, marketplace) and submitted for SEO indexing. Social login was handled via OAuth callbacks. The community module ran its own gallery, store, and event system per group. Professional portfolios tracked contact clicks and WhatsApp button taps for each listing.

The HQ admin panel (hq.naijabased.fun) was a completely separate PHP application. It gave platform staff visibility and control over every module: business approvals, claims, verification, user management, KYC review, marketplace moderation, withdrawal processing, event management, a blog editor, and a moderators system. It was not connected to the consumer codebase, it accessed the same database directly.

The shop platform (shop.naijabased.fun) was also a separate PHP application with three distinct vendor dashboards: store (retail products), service (appointments and schedule), and food/business (menu items and orders). Each dashboard type had analytics, payment settings, booking management, transactions, and withdrawals. Vendor settlement used Paystack subaccounts.

Consumer site V2 is Next.js 16 with React 19, TypeScript, and Tailwind CSS v4. The PHP codebase was retained as a REST API at api.naijabased.fun/api/v1. The Next.js app proxies all data calls to the PHP API. Auth uses a JWT token in an httpOnly cookie. ISR handles caching with 60-second revalidation on API calls and 300-second revalidation on business profile pages. Business profiles use Schema.org LocalBusiness structured data.

Key Decisions

Organic search as the only acquisition channel
There was no budget for paid ads, so the product had to earn its own traffic. Every business profile was structured as a standalone, crawlable page with a clean URL, unique title and description, OpenGraph tags, and Schema.org LocalBusiness markup. That structure is what drove 2,200+ businesses indexed and discoverable without any ad spend.
Cutting fifteen+ modules to one in V2
V1 had grown to eighteen surfaces on one codebase: consumer site, jobs, events, marketplace, community groups, professional portfolios, social feed, inbox, wallet, points, KYC, ads, notifications, analytics, three vendor dashboards, and the HQ admin panel. Any change to shared infrastructure required regression testing across all of them. The social, community, and marketplace modules had low engagement relative to their maintenance overhead. The V2 decision was to cut everything except business discovery and ordering, keep the PHP layer as an API rather than rebuilding it, and move the consumer frontend to Next.js.
Paystack subaccounts for per-vendor settlement
Rather than collecting all payments into a platform account and distributing to vendors manually, each vendor gets their own Paystack subaccount. Customer payments route through the subaccount and settle directly into the vendor's bank account, with the platform taking a commission split at the point of transaction.
One vendor dashboard for all business types in V2
V1 had three separate vendor dashboards based on business type. That meant three codebases, three UIs to maintain, and bugs fixed in one that needed to be replicated in the others. V2 replaced all three with one unified dashboard that adapts its terminology but shares a single codebase.

Challenges

Getting business owners to complete their listings
Many business owners in the Nigerian market are not tech-forward, and a long registration form loses them quickly. The minimum required fields to go live were kept as short as possible, the form was optimised for mobile, and payment details were not collected upfront.
V1 had grown too wide to evolve the core product
With fifteen+ modules on one PHP codebase, any change to shared config, session handling, or database structure had to be tested across all of them. Feature work on the business directory was consistently blocked by cross-module regression risk.
Maintaining three vendor dashboards in V1
The restaurant, retail, and service dashboards in V1 were separate PHP directories with shared includes but distinct page logic. Fixing a bug in one meant tracking down the equivalent code in the other two.

Discovery

The platform did not start as NaijaBased. The client lived in Akure and was frustrated by the same problem every day: he could not find reliable information about local businesses online, their menus, their opening hours, who to contact. He built AkureBased, a simple directory for his city. Then businesses from Ibadan started asking for the same thing, so he built IbadanBased. Demand from other states followed without any outreach. The expansion to a national platform under the NaijaBased name was a response to real, unsolicited demand, not a top-down product decision.

Stakeholder Friction

There was no disagreement about paid acquisition versus organic. There was not enough budget for ads, and the client was not willing to seek external financing. The real friction was operational: getting businesses to complete their listings at all. Most early outreach happened through social media accounts with little to no following, which meant every onboarding was a manual effort.

Outcomes

26x click growth in 5 months with zero paid spend
Search Console clicks grew from 45 in January 2026 to 1,201 in May 2026, a 26x increase in 5 months. Monthly impressions grew from 2,400 to over 107,000 over the same period. Every bit of that traffic came from the SEO architecture built into each business profile at launch: clean URLs, Schema.org LocalBusiness markup, and unique page-level metadata per listing.
100+ paid subscribers converted from organic traction
Over 100 businesses converted to paid tiers (Menu Pro or featured placement) without any outreach or sales motion. Conversion happened because business owners could see real discovery traffic coming from the platform before being asked to pay.
V2 scope cut unlocked core product velocity
Removing fifteen+ peripheral modules freed the discovery and ordering product from cross-module regression risk. Feature work on the core business directory could move independently after the V2 rewrite.

Technology Decisions

PHP (V1 monolith)Next.js 16 (V2 consumer)PHP REST API (V2 backend)MySQLPaystack + SubaccountsBrevo SMTPMocean SMSOAuth Social LoginISR CachingSchema.org LocalBusiness SEOQR Code GenerationSSO via shared JWT cookie

What I'd Change

Invest in marketing earlier. The organic SEO strategy worked, but the 26x click growth in 5 months shows what was possible once the right foundation was in place. Growing to 2,200 businesses on zero budget proved the product's value. Scaling that with actual marketing investment was always the next step, and deferring it indefinitely slowed the platform's reach more than any product limitation did.

From the blog

All posts
The Real Skills You Need as a Technical Product Manager
There’s a lot of confusion about what a Technical Product Manager actually does.
22 May 2026
JobHunt: What I Was Actually Trying to Fix
Most of the products I build start with a small, persistent frustration. Something I've experienced myself or watched someone close to me struggle with and couldn't stop thinking about.
17 May 2026
ProductManagement
Building JobHunt: A TPM's Notes on Shipping an AI Job Application Assistant
I'm a Technical Product Manager. I think in user journeys, prioritisation frameworks, and edge cases. What I don't usually do is write the code. JobHunt changed that, not because I suddenly became a software engineer, but because AI-assisted development has made the distance between an idea and a working product smaller than I've ever seen it. This is a record of what I built, why I built it that way, and what the decisions looked like in practice.
17 May 2026
← PrevSOS MarketplaceVisibility LogicNext →GymProHubCupidFaces