[{"data":1,"prerenderedAt":402},["ShallowReactive",2],{"insight-nigerian-built-software":3,"next-insights":146},{"id":4,"title":5,"author":6,"body":7,"category":134,"date":135,"description":136,"excerpt":137,"extension":138,"meta":139,"navigation":140,"path":141,"readTime":142,"seo":143,"stem":144,"__hash__":145},"insights\u002Finsights\u002F3.nigerian-built-software.md","The Case for Nigerian-Built Software","Surf Founder",{"type":8,"value":9,"toc":125},"minimark",[10,14,17,20,25,28,35,41,47,53,56,60,63,69,75,81,87,91,94,100,106,112,116,119,122],[11,12,13],"p",{},"Walk into any reasonably-sized Nigerian business today and ask what software they use. You'll hear the same names: Microsoft 365. QuickBooks. Sage. Maybe Salesforce if they're enterprise. Maybe Zoho if they're cost-conscious. Almost always: a tangle of Excel and WhatsApp filling the gaps the named software left behind.",[11,15,16],{},"What you almost never hear is the name of a product built in Nigeria, for Nigeria.",[11,18,19],{},"This is not because we can't build it. We very much can. It's because the economics of building business software here have, until recently, been brutal.",[21,22,24],"h2",{"id":23},"why-this-is-hard","Why this is hard",[11,26,27],{},"A few realities to put on the table:",[11,29,30,34],{},[31,32,33],"strong",{},"The market is fragmented."," A SaaS company in the US can build for one customer profile and serve a hundred thousand businesses that look basically alike. A SaaS company in Lagos has to serve the formal sector and the informal sector at the same time — and they buy software completely differently.",[11,36,37,40],{},[31,38,39],{},"Distribution is expensive."," You can't run Google Ads at $4 CAC and expect to acquire SMBs profitably here. Most acquisition is still relationship-based, which doesn't scale through code. It scales through people.",[11,42,43,46],{},[31,44,45],{},"The talent pipeline pays better elsewhere."," The same Senior Engineer who could be building the next Paystack is — entirely rationally — being offered three to five times the salary to work remote for a US startup. Building locally means competing with global comp from local revenue. The math is hard.",[11,48,49,52],{},[31,50,51],{},"Trust takes years."," Nobody is going to put their payroll data into a SaaS product from a company they've never heard of, run by people they can't find on LinkedIn. The first 50 customers cost more than the next 5,000. Most companies run out of money before they get there.",[11,54,55],{},"None of this is news. Everyone building here knows it.",[21,57,59],{"id":58},"why-its-changing-anyway","Why it's changing anyway",[11,61,62],{},"What's shifting:",[11,64,65,68],{},[31,66,67],{},"Product talent is coming home."," Engineers who shipped at Stripe and Shopify and Notion are starting companies in Lagos. They bring the playbook and the rolodex. The senior bench is the deepest it's ever been.",[11,70,71,74],{},[31,72,73],{},"Capital is patient enough."," Not all of it, but enough. There are now several funds that understand the time horizon of African B2B SaaS — five to seven years to break even, not eighteen months.",[11,76,77,80],{},[31,78,79],{},"Infrastructure has caught up."," Cloud is cheap. Internet is fast in the urban centers. Payment rails — thanks to a generation of fintech builders — actually work. The boring plumbing that the developed world takes for granted is finally here.",[11,82,83,86],{},[31,84,85],{},"Buyers know what good looks like."," Five years ago, you could ship a clunky product and Nigerian SMBs would still buy it because nothing else existed. Today they've used Notion. They've used Slack. They've used Linear. The bar is global, even if the revenue isn't.",[21,88,90],{"id":89},"what-this-means-for-builders","What this means for builders",[11,92,93],{},"If you're building software here, three things I'd offer:",[11,95,96,99],{},[31,97,98],{},"1. Solve a real problem in a real market."," Not \"Stripe for X\" or \"Notion for Y.\" Find an industry where the operators are using paper, WhatsApp, and Excel. Sit with them. Build the thing that replaces all three. Boring industries are wide open.",[11,101,102,105],{},[31,103,104],{},"2. Charge in local currency, price for local margins."," Pricing in dollars to look serious to investors is a trap. Your customer is a business in Onitsha, not a startup in San Francisco. Their willingness to pay is real, but it's calibrated to their own P&L.",[11,107,108,111],{},[31,109,110],{},"3. Own your distribution."," No partnership, no referral program, no influencer launch is going to substitute for the first hundred customers you sign by hand. Plan for that. Hire for it. Make peace with it.",[21,113,115],{"id":114},"the-decade-ahead","The decade ahead",[11,117,118],{},"The thing I'm most certain of: the most important African business software of the next ten years has not been built yet. It will be built by teams that look more like the businesses they serve than like the companies they're benchmarking against. It will be unglamorous, deeply useful, and locally owned.",[11,120,121],{},"We're trying to be one of those teams. We hope a lot more of you are too.",[11,123,124],{},"Build the thing only you can see.",{"title":126,"searchDepth":127,"depth":127,"links":128},"",3,[129,131,132,133],{"id":23,"depth":130,"text":24},2,{"id":58,"depth":130,"text":59},{"id":89,"depth":130,"text":90},{"id":114,"depth":130,"text":115},"Industry","2026-02-18","Why the next wave of products serving African businesses won't come from importing San Francisco's playbook — and what builders in Port Harcourt, Lagos, and Accra can do about it.",null,"md",{},true,"\u002Finsights\u002Fnigerian-built-software","5 min read",{"title":5,"description":136},"insights\u002F3.nigerian-built-software","f31oXACQq-LMwJfgtTBf-_JZodw9-2zod7dIKsYlf5E",[147,319],{"id":148,"title":149,"author":150,"body":151,"category":310,"date":311,"description":312,"excerpt":137,"extension":138,"meta":313,"navigation":140,"path":314,"readTime":315,"seo":316,"stem":317,"__hash__":318},"insights\u002Finsights\u002F2.building-qliina.md","Building Qliina: What a Laundry SaaS Taught Us About Africa","Surf Engineering",{"type":8,"value":152,"toc":303},[153,164,167,171,174,181,184,188,191,201,207,213,219,223,226,271,274,278,281,284,287,291,294,300],[11,154,155,156,160,161],{},"When we tell people we built a SaaS platform for laundries, we usually get one of two reactions. Engineers say ",[157,158,159],"em",{},"\"how big can that market actually be?\""," Operators say ",[157,162,163],{},"\"how soon can I have it?\"",[11,165,166],{},"That gap — between what the tech world assumes about an industry and what people actually working in it need — is where Qliina was born. And it's where we learned more about building software for Africa than any product we'd shipped before.",[21,168,170],{"id":169},"the-worlds-most-underrated-industry","The world's most underrated industry",[11,172,173],{},"In Port Harcourt alone, there are over four hundred laundry operations of various sizes. From the woman with two washers behind her flat to the eight-branch chain with corporate clients. Most of them are still tracking orders on paper. The successful ones have moved to WhatsApp. A handful use spreadsheets.",[11,175,176,177,180],{},"None of them have a system designed for them. The \"POS\" software they get sold is generic retail software with a laundry skin. It doesn't know what ",[157,178,179],{},"delicate cycle"," means. It doesn't understand that a single order can have 23 items from 4 customers being processed at 3 different stages simultaneously. It doesn't speak the language.",[11,182,183],{},"We spent six weeks before writing a line of code just shadowing operators. Watching what they did. Asking why. Most of what we ended up building wasn't on our original spec sheet.",[21,185,187],{"id":186},"the-unexpected-things-that-mattered","The unexpected things that mattered",[11,189,190],{},"A few examples of what we missed in our first sketch and only learned by watching:",[11,192,193,196,197,200],{},[31,194,195],{},"Tags, not orders."," Laundries don't think in orders. They think in ",[157,198,199],{},"tags",". A tag is a unique identifier physically pinned to a garment. It belongs to a customer, sure, but the tag is the unit of work. We rebuilt our data model around tags. Suddenly everything got simpler.",[11,202,203,206],{},[31,204,205],{},"Stage transitions are public."," When a customer walks in to drop off a shirt, three people are watching the transaction — the operator, the customer, and the next-in-line customer learning what to expect. The UI has to be readable across a counter. We tripled our font sizes. We added giant color-coded badges. We removed half the labels and made the icons louder.",[11,208,209,212],{},[31,210,211],{},"Receipt printers are the API."," Half the operators don't have smartphones at the counter. They have a thermal printer connected to a tablet. Our \"send notification\" function isn't an email — it's a print job. We learned ESC\u002FPOS so the platform could speak to printers as a first-class output.",[11,214,215,218],{},[31,216,217],{},"SMS still wins."," WhatsApp is universal but inconsistent. SMS gets through. For order-ready notifications, we default to SMS with a WhatsApp fallback. Our delivery rates went from 76% to 98%.",[21,220,222],{"id":221},"the-tech-stack-briefly","The tech stack, briefly",[11,224,225],{},"For those curious — we built Qliina on:",[227,228,229,236,242,253,259,265],"ul",{},[230,231,232,235],"li",{},[31,233,234],{},"Nuxt 3"," for the operator dashboard (now migrating to Nuxt 4)",[230,237,238,241],{},[31,239,240],{},"Vue Native + Capacitor"," for the customer mobile app",[230,243,244,247,248,252],{},[31,245,246],{},"PostgreSQL"," with ",[249,250,251],"code",{},"Prisma"," as the data layer",[230,254,255,258],{},[31,256,257],{},"Hono"," on Cloudflare Workers for the API",[230,260,261,264],{},[31,262,263],{},"Cloudflare R2"," for image storage (every tag gets a before\u002Fafter photo)",[230,266,267,270],{},[31,268,269],{},"Termii"," for SMS, with Twilio failover for international",[11,272,273],{},"The stack choices were boring on purpose. The interesting work was never in the framework.",[21,275,277],{"id":276},"what-we-got-wrong","What we got wrong",[11,279,280],{},"Plenty.",[11,282,283],{},"We launched with a beautiful customer-facing app and a half-built operator dashboard. We had it backwards. Customers don't need an app — they need their clothes back clean. Operators need the platform to run their business. The operator dashboard is now five times the size of the customer app and gets 95% of our engineering time.",[11,285,286],{},"We also priced wrong. We launched with per-order pricing, thinking we'd scale with our customers. Turns out laundry operators hate variable costs more than almost any other business owner. They want to know their monthly bill. We moved to flat tiered pricing in month three. Conversions doubled.",[21,288,290],{"id":289},"the-bigger-lesson","The bigger lesson",[11,292,293],{},"You can't build great African software from a textbook. The textbook assumes broadband, smartphones, predictable payment rails, low cash usage, and customers who'll wait six seconds for a page to load. Some of those are true here. Most are not.",[11,295,296,297],{},"What works is sitting in a laundry shop on a Wednesday morning, watching one woman handle a queue of seven people while folding a basket of shirts. Then asking: ",[157,298,299],{},"what would help her?",[11,301,302],{},"The answer is rarely what's in the framework.",{"title":126,"searchDepth":127,"depth":127,"links":304},[305,306,307,308,309],{"id":169,"depth":130,"text":170},{"id":186,"depth":130,"text":187},{"id":221,"depth":130,"text":222},{"id":276,"depth":130,"text":277},{"id":289,"depth":130,"text":290},"Product","2026-03-28","Lessons from building a SaaS platform for an industry that doesn't read SaaS playbooks — laundromats, dry cleaners, and the corner shop that does both.",{},"\u002Finsights\u002Fbuilding-qliina","7 min read",{"title":149,"description":312},"insights\u002F2.building-qliina","pQPMe53fL0_kSwaRU2JD9gak7W2dHGkfOEjfd4JjBGQ",{"id":4,"title":5,"author":6,"body":320,"category":134,"date":135,"description":136,"excerpt":137,"extension":138,"meta":400,"navigation":140,"path":141,"readTime":142,"seo":401,"stem":144,"__hash__":145},{"type":8,"value":321,"toc":394},[322,324,326,328,330,332,336,340,344,348,350,352,354,358,362,366,370,372,374,378,382,386,388,390,392],[11,323,13],{},[11,325,16],{},[11,327,19],{},[21,329,24],{"id":23},[11,331,27],{},[11,333,334,34],{},[31,335,33],{},[11,337,338,40],{},[31,339,39],{},[11,341,342,46],{},[31,343,45],{},[11,345,346,52],{},[31,347,51],{},[11,349,55],{},[21,351,59],{"id":58},[11,353,62],{},[11,355,356,68],{},[31,357,67],{},[11,359,360,74],{},[31,361,73],{},[11,363,364,80],{},[31,365,79],{},[11,367,368,86],{},[31,369,85],{},[21,371,90],{"id":89},[11,373,93],{},[11,375,376,99],{},[31,377,98],{},[11,379,380,105],{},[31,381,104],{},[11,383,384,111],{},[31,385,110],{},[21,387,115],{"id":114},[11,389,118],{},[11,391,121],{},[11,393,124],{},{"title":126,"searchDepth":127,"depth":127,"links":395},[396,397,398,399],{"id":23,"depth":130,"text":24},{"id":58,"depth":130,"text":59},{"id":89,"depth":130,"text":90},{"id":114,"depth":130,"text":115},{},{"title":5,"description":136},1780087208718]