[{"data":1,"prerenderedAt":467},["ShallowReactive",2],{"insights-list":3},[4,166,335],{"id":5,"title":6,"author":7,"body":8,"category":154,"date":155,"description":156,"excerpt":157,"extension":158,"meta":159,"navigation":160,"path":161,"readTime":162,"seo":163,"stem":164,"__hash__":165},"insights\u002Finsights\u002F1.engineered-by-hand.md","Engineered by Hand: Why Our Process Is a Sketchbook","Surf Founder",{"type":9,"value":10,"toc":145},"minimark",[11,20,23,28,31,34,40,48,52,55,83,86,90,93,118,125,129,132,139,142],[12,13,14,15,19],"p",{},"There's a moment in every project — usually around week two — where the team gets the urge to ",[16,17,18],"em",{},"just start coding",". The brief is clear enough. The stack is decided. Figma has a few screens. Why are we still talking about it?",[12,21,22],{},"We talk about it because the brief is never as clear as you think it is, and every minute spent sketching saves a week of building the wrong thing.",[24,25,27],"h2",{"id":26},"the-cost-of-skipping-the-sketch","The cost of skipping the sketch",[12,29,30],{},"We learned this the hard way on a project we won't name. A client came to us with a clear spec: build a customer-facing portal for tracking deliveries. Six screens. Three weeks. They had wireframes from a previous consultancy.",[12,32,33],{},"We started coding. We were efficient. We were proud.",[12,35,36,37],{},"Three weeks in, we demoed. The client looked at the working product and said: ",[16,38,39],{},"\"Oh, this isn't what we meant.\"",[12,41,42,43,47],{},"They didn't want a customer-facing portal. They wanted a customer-facing portal ",[44,45,46],"strong",{},"for internal staff to use on behalf of customers who couldn't access it themselves",". The spec was right. The wireframes were right. The mental model was completely wrong — and we'd missed it because we hadn't sketched alongside them.",[24,49,51],{"id":50},"what-sketching-forces","What sketching forces",[12,53,54],{},"When you draw a screen by hand — even badly — you have to make decisions a wireframe in Figma lets you avoid:",[56,57,58,65,71,77],"ul",{},[59,60,61,64],"li",{},[44,62,63],{},"Who is looking at this?"," A hand drawing forces you to imagine the person.",[59,66,67,70],{},[44,68,69],{},"What did they just come from?"," You have to draw the arrow.",[59,72,73,76],{},[44,74,75],{},"What happens when they get stuck?"," You have to draw the dead end.",[59,78,79,82],{},[44,80,81],{},"What's the simplest possible version?"," Pencils are uncomfortable. You ask less of them.",[12,84,85],{},"There's something about the friction of pen-on-paper that slows the team down at exactly the right moments. Tools that are too fast let you skip past the hard questions. A pencil makes you sit in them.",[24,87,89],{"id":88},"how-we-actually-do-it","How we actually do it",[12,91,92],{},"Our discovery phase has three sketchbook moments:",[94,95,96,106,112],"ol",{},[59,97,98,101,102,105],{},[44,99,100],{},"The Problem Sketch."," One page. Hand-drawn. ",[16,103,104],{},"Who has this problem, when does it bite, and what do they do today?"," We don't draw solutions. We draw the wound.",[59,107,108,111],{},[44,109,110],{},"The Day-in-the-Life Sketch."," A comic strip of the user's existing workflow. Eight panels, maximum. If we can't summarize their day in eight panels, we don't understand them yet.",[59,113,114,117],{},[44,115,116],{},"The Architecture Sketch."," Boxes and arrows. Not on a whiteboard tool — on actual paper, photographed and pasted into Notion. The act of writing service names by hand is slow enough that you only write the ones that matter.",[12,119,120,121,124],{},"Once those three sketches exist, ",[16,122,123],{},"and only then",", we open the laptops.",[24,126,128],{"id":127},"a-note-on-tools","A note on tools",[12,130,131],{},"We're not anti-Figma. We're not anti-Excalidraw. We use both. We use Linear and Notion and GitHub and Vercel. We are not romantic about paper.",[12,133,134,135,138],{},"What we are romantic about is ",[44,136,137],{},"slowness in the right place",". Build fast. Ship fast. Iterate fast. But sketch slow. The two hours you spend with a pencil at the start of a project pay for themselves a hundred times over by the time the thing is in production.",[12,140,141],{},"It's why our website looks the way it does. It's why our products feel the way they do. It's why our clients ship things that work.",[12,143,144],{},"We engineer by hand because hands force honesty. And honest software is the only kind worth building.",{"title":146,"searchDepth":147,"depth":147,"links":148},"",3,[149,151,152,153],{"id":26,"depth":150,"text":27},2,{"id":50,"depth":150,"text":51},{"id":88,"depth":150,"text":89},{"id":127,"depth":150,"text":128},"Process","2026-04-12","Every product Surf has ever shipped started on paper. Here's why we still draw before we code, and what it does to the quality of the final build.",null,"md",{},true,"\u002Finsights\u002Fengineered-by-hand","4 min read",{"title":6,"description":156},"insights\u002F1.engineered-by-hand","wB_IjH-M52OVmrUoxhdjPviG-9e4uMvtw50YipG9f0g",{"id":167,"title":168,"author":169,"body":170,"category":326,"date":327,"description":328,"excerpt":157,"extension":158,"meta":329,"navigation":160,"path":330,"readTime":331,"seo":332,"stem":333,"__hash__":334},"insights\u002Finsights\u002F2.building-qliina.md","Building Qliina: What a Laundry SaaS Taught Us About Africa","Surf Engineering",{"type":9,"value":171,"toc":319},[172,182,185,189,192,199,202,206,209,219,225,231,237,241,244,287,290,294,297,300,303,307,310,316],[12,173,174,175,178,179],{},"When we tell people we built a SaaS platform for laundries, we usually get one of two reactions. Engineers say ",[16,176,177],{},"\"how big can that market actually be?\""," Operators say ",[16,180,181],{},"\"how soon can I have it?\"",[12,183,184],{},"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.",[24,186,188],{"id":187},"the-worlds-most-underrated-industry","The world's most underrated industry",[12,190,191],{},"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.",[12,193,194,195,198],{},"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 ",[16,196,197],{},"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.",[12,200,201],{},"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.",[24,203,205],{"id":204},"the-unexpected-things-that-mattered","The unexpected things that mattered",[12,207,208],{},"A few examples of what we missed in our first sketch and only learned by watching:",[12,210,211,214,215,218],{},[44,212,213],{},"Tags, not orders."," Laundries don't think in orders. They think in ",[16,216,217],{},"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.",[12,220,221,224],{},[44,222,223],{},"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.",[12,226,227,230],{},[44,228,229],{},"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.",[12,232,233,236],{},[44,234,235],{},"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%.",[24,238,240],{"id":239},"the-tech-stack-briefly","The tech stack, briefly",[12,242,243],{},"For those curious — we built Qliina on:",[56,245,246,252,258,269,275,281],{},[59,247,248,251],{},[44,249,250],{},"Nuxt 3"," for the operator dashboard (now migrating to Nuxt 4)",[59,253,254,257],{},[44,255,256],{},"Vue Native + Capacitor"," for the customer mobile app",[59,259,260,263,264,268],{},[44,261,262],{},"PostgreSQL"," with ",[265,266,267],"code",{},"Prisma"," as the data layer",[59,270,271,274],{},[44,272,273],{},"Hono"," on Cloudflare Workers for the API",[59,276,277,280],{},[44,278,279],{},"Cloudflare R2"," for image storage (every tag gets a before\u002Fafter photo)",[59,282,283,286],{},[44,284,285],{},"Termii"," for SMS, with Twilio failover for international",[12,288,289],{},"The stack choices were boring on purpose. The interesting work was never in the framework.",[24,291,293],{"id":292},"what-we-got-wrong","What we got wrong",[12,295,296],{},"Plenty.",[12,298,299],{},"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.",[12,301,302],{},"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.",[24,304,306],{"id":305},"the-bigger-lesson","The bigger lesson",[12,308,309],{},"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.",[12,311,312,313],{},"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: ",[16,314,315],{},"what would help her?",[12,317,318],{},"The answer is rarely what's in the framework.",{"title":146,"searchDepth":147,"depth":147,"links":320},[321,322,323,324,325],{"id":187,"depth":150,"text":188},{"id":204,"depth":150,"text":205},{"id":239,"depth":150,"text":240},{"id":292,"depth":150,"text":293},{"id":305,"depth":150,"text":306},"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":168,"description":328},"insights\u002F2.building-qliina","pQPMe53fL0_kSwaRU2JD9gak7W2dHGkfOEjfd4JjBGQ",{"id":336,"title":337,"author":7,"body":338,"category":458,"date":459,"description":460,"excerpt":157,"extension":158,"meta":461,"navigation":160,"path":462,"readTime":463,"seo":464,"stem":465,"__hash__":466},"insights\u002Finsights\u002F3.nigerian-built-software.md","The Case for Nigerian-Built Software",{"type":9,"value":339,"toc":452},[340,343,346,349,353,356,362,368,374,380,383,387,390,396,402,408,414,418,421,427,433,439,443,446,449],[12,341,342],{},"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.",[12,344,345],{},"What you almost never hear is the name of a product built in Nigeria, for Nigeria.",[12,347,348],{},"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.",[24,350,352],{"id":351},"why-this-is-hard","Why this is hard",[12,354,355],{},"A few realities to put on the table:",[12,357,358,361],{},[44,359,360],{},"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.",[12,363,364,367],{},[44,365,366],{},"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.",[12,369,370,373],{},[44,371,372],{},"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.",[12,375,376,379],{},[44,377,378],{},"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.",[12,381,382],{},"None of this is news. Everyone building here knows it.",[24,384,386],{"id":385},"why-its-changing-anyway","Why it's changing anyway",[12,388,389],{},"What's shifting:",[12,391,392,395],{},[44,393,394],{},"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.",[12,397,398,401],{},[44,399,400],{},"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.",[12,403,404,407],{},[44,405,406],{},"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.",[12,409,410,413],{},[44,411,412],{},"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.",[24,415,417],{"id":416},"what-this-means-for-builders","What this means for builders",[12,419,420],{},"If you're building software here, three things I'd offer:",[12,422,423,426],{},[44,424,425],{},"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.",[12,428,429,432],{},[44,430,431],{},"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.",[12,434,435,438],{},[44,436,437],{},"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.",[24,440,442],{"id":441},"the-decade-ahead","The decade ahead",[12,444,445],{},"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.",[12,447,448],{},"We're trying to be one of those teams. We hope a lot more of you are too.",[12,450,451],{},"Build the thing only you can see.",{"title":146,"searchDepth":147,"depth":147,"links":453},[454,455,456,457],{"id":351,"depth":150,"text":352},{"id":385,"depth":150,"text":386},{"id":416,"depth":150,"text":417},{"id":441,"depth":150,"text":442},"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.",{},"\u002Finsights\u002Fnigerian-built-software","5 min read",{"title":337,"description":460},"insights\u002F3.nigerian-built-software","f31oXACQq-LMwJfgtTBf-_JZodw9-2zod7dIKsYlf5E",1780087208195]