[{"data":1,"prerenderedAt":4588},["ShallowReactive",2],{"blog-build-vs-buy-software":3,"related-topic-build-vs-buy-software":784,"related-recent-build-vs-buy-software":2047,"content-query-Kmpm8gl570":4024},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"topic":10,"author":11,"authorProfile":12,"coverImg":13,"coverImgAlt":14,"published":15,"toc":15,"readingTime":16,"createdAt":17,"updatedAt":17,"keywords":18,"body":28,"_type":778,"_id":779,"_source":780,"_file":781,"_stem":782,"_extension":783},"/blog/build-vs-buy-software","blog",false,"","Build vs Buy: A Founder's Framework for Deciding What to Build","We build software for a living — and we'll still tell you to buy the tool when buying is right. Here's the build-vs-buy framework we'd actually use.","Product Engineering","Tarun Bhukya","https://www.linkedin.com/in/tarun-kumar-bhukya-40168b85/","/images/blog/build-vs-buy-software.webp","Build vs buy software — a founder's framework for deciding what to build, buy, or partner for",true,"11 min read","2026-06-13",[19,20,21,22,23,24,25,26,27],"build vs buy software decision framework","build vs buy software","when to build vs buy software","custom software vs off the shelf","should I build custom software or buy","build vs buy decision criteria","build buy or partner software","build vs buy total cost of ownership","build vs buy software for startups",{"type":29,"children":30,"toc":765},"root",[31,47,52,57,62,82,87,99,104,113,118,124,136,157,169,174,179,185,197,202,214,219,284,296,302,307,319,355,382,387,393,398,410,420,443,453,495,507,534,540,545,629,634,640,645,655,680,686,691,696,709,729,735,740,745,749],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36,39,45],{"type":37,"value":38},"text","Most build-vs-buy decisions get decided wrong — and not because founders aren't smart. They get decided ",{"type":32,"tag":40,"props":41,"children":42},"em",{},[43],{"type":37,"value":44},"emotionally",{"type":37,"value":46},".",{"type":32,"tag":33,"props":48,"children":49},{},[50],{"type":37,"value":51},"Founders who love building default to build. Founders burned by a bad vendor default to buy. The decision gets made by temperament before the math ever shows up. And the cost of getting it wrong isn't measured in license fees — it's measured in runway, in months your team spent rebuilding something they could have rented, or in a fragile dependency that breaks at the worst possible time.",{"type":32,"tag":33,"props":53,"children":54},{},[55],{"type":37,"value":56},"So here's what this post is: a framework you can actually run, capability by capability. And here's the promise that comes with it — we build software for a living, and you're going to read us tell you, more than once, to just buy the tool. When that's the right answer, it's the answer. An honest read today is worth more to us than a project we talked you into.",{"type":32,"tag":33,"props":58,"children":59},{},[60],{"type":37,"value":61},"Let's get into it.",{"type":32,"tag":63,"props":64,"children":66},"h2",{"id":65},"the-question-is-never-build-or-buy-its-build-what-buy-what",[67,69,74,76,80],{"type":37,"value":68},"The question is never \"build or buy\" — it's \"build ",{"type":32,"tag":40,"props":70,"children":71},{},[72],{"type":37,"value":73},"what",{"type":37,"value":75},", buy ",{"type":32,"tag":40,"props":77,"children":78},{},[79],{"type":37,"value":73},{"type":37,"value":81},"\"",{"type":32,"tag":33,"props":83,"children":84},{},[85],{"type":37,"value":86},"Step one is to throw out the framing.",{"type":32,"tag":33,"props":88,"children":89},{},[90,92,97],{"type":37,"value":91},"No real product is 100% built or 100% bought. The app in your head is going to be a mix — some parts you write from scratch, some parts you pay someone else to handle, and (often) some parts you build with help. The skill isn't picking a side. It's deciding ",{"type":32,"tag":40,"props":93,"children":94},{},[95],{"type":37,"value":96},"per capability",{"type":37,"value":98},": for each piece of your product, which path is right?",{"type":32,"tag":33,"props":100,"children":101},{},[102],{"type":37,"value":103},"That reframe alone solves most of the confusion. You're not making one giant decision. You're making a series of small, clear ones, and there's a spine that runs through all of them:",{"type":32,"tag":33,"props":105,"children":106},{},[107],{"type":32,"tag":108,"props":109,"children":110},"strong",{},[111],{"type":37,"value":112},"Build your differentiator. Buy the utility. Partner for the rest.",{"type":32,"tag":33,"props":114,"children":115},{},[116],{"type":37,"value":117},"The whole rest of this post is just those three principles, made concrete.",{"type":32,"tag":63,"props":119,"children":121},{"id":120},"build-the-differentiator",[122],{"type":37,"value":123},"Build the differentiator",{"type":32,"tag":33,"props":125,"children":126},{},[127,129,134],{"type":37,"value":128},"Build the thing that ",{"type":32,"tag":40,"props":130,"children":131},{},[132],{"type":37,"value":133},"is",{"type":37,"value":135}," your product — the part customers choose you for, the part that would genuinely hurt if a competitor copied it.",{"type":32,"tag":33,"props":137,"children":138},{},[139,141,146,148,155],{"type":37,"value":140},"This is your core idea, your secret sauce, the experience that makes you ",{"type":32,"tag":40,"props":142,"children":143},{},[144],{"type":37,"value":145},"you",{"type":37,"value":147},". If it's your real intellectual property or the thing that sets you apart, owning the code matters deeply. It's your moat, and a moat you rent isn't a moat. (This is why we care so much that your code stays ",{"type":32,"tag":149,"props":150,"children":152},"a",{"href":151},"/blog/avoiding-vendor-lock-in/",[153],{"type":37,"value":154},"yours, with no lock-in",{"type":37,"value":156}," — your differentiator should never live inside someone else's system.)",{"type":32,"tag":33,"props":158,"children":159},{},[160,162,167],{"type":37,"value":161},"Now the honest caveat, because founders consistently get this wrong: ",{"type":32,"tag":108,"props":163,"children":164},{},[165],{"type":37,"value":166},"your differentiator is narrower than you think.",{"type":37,"value":168}," Much narrower.",{"type":32,"tag":33,"props":170,"children":171},{},[172],{"type":37,"value":173},"Your login system is not your differentiator. Your billing logic is not your differentiator. The charting library on your dashboard is not your differentiator. None of these are why customers choose you, and none of them would hurt you if a competitor had the exact same thing. Founders fall in love with building all of it, and that's how you end up spending your best engineering months on plumbing instead of the actual product.",{"type":32,"tag":33,"props":175,"children":176},{},[177],{"type":37,"value":178},"Build the part that's truly, uniquely yours. Be ruthless about how small that part actually is.",{"type":32,"tag":63,"props":180,"children":182},{"id":181},"buy-the-utility-and-yes-this-means-buying-instead-of-building",[183],{"type":37,"value":184},"Buy the utility (and yes, this means buying instead of building)",{"type":32,"tag":33,"props":186,"children":187},{},[188,190,195],{"type":37,"value":189},"Authentication. Payments. Email. Analytics. Error tracking. CRM. Support desk. These are ",{"type":32,"tag":40,"props":191,"children":192},{},[193],{"type":37,"value":194},"solved problems",{"type":37,"value":196}," — mature, cheap, battle-tested products exist for every one of them, built by companies whose entire focus is that one thing.",{"type":32,"tag":33,"props":198,"children":199},{},[200],{"type":37,"value":201},"Building these yourself is how founders quietly burn three months reinventing Stripe. And then you don't just pay the build cost once — you pay to maintain it forever, including the security patches, the edge cases, and the compliance headaches that the dedicated vendor handles for you while you sleep.",{"type":32,"tag":33,"props":203,"children":204},{},[205,207,212],{"type":37,"value":206},"So let's state it as plainly as we can: ",{"type":32,"tag":108,"props":208,"children":209},{},[210],{"type":37,"value":211},"if a tool that costs a few dollars a month does the job, buy the tool.",{"type":37,"value":213}," Yes, even though we build software for a living, and yes, even though this paragraph is actively sending some of you away from hiring anyone at all. That's the point. We'd rather you spend your money where it counts than have us build you an auth system you could have rented.",{"type":32,"tag":33,"props":215,"children":216},{},[217],{"type":37,"value":218},"Here's where to just buy it, with rough monthly costs so the advice is actionable:",{"type":32,"tag":220,"props":221,"children":222},"ul",{},[223,234,244,254,264,274],{"type":32,"tag":224,"props":225,"children":226},"li",{},[227,232],{"type":32,"tag":108,"props":228,"children":229},{},[230],{"type":37,"value":231},"Authentication and user management",{"type":37,"value":233}," — services like Auth0 or Clerk, from free tiers up to a few hundred a month at scale. Do not build your own auth.",{"type":32,"tag":224,"props":235,"children":236},{},[237,242],{"type":32,"tag":108,"props":238,"children":239},{},[240],{"type":37,"value":241},"Payments",{"type":37,"value":243}," — Stripe, Paddle, and the like take a small percentage per transaction. They've solved fraud, compliance, and global tax. You will not do it better.",{"type":32,"tag":224,"props":245,"children":246},{},[247,252],{"type":32,"tag":108,"props":248,"children":249},{},[250],{"type":37,"value":251},"Transactional and marketing email",{"type":37,"value":253}," — tools in the range of tens of dollars a month. Deliverability is a dark art; let specialists handle it.",{"type":32,"tag":224,"props":255,"children":256},{},[257,262],{"type":32,"tag":108,"props":258,"children":259},{},[260],{"type":37,"value":261},"Analytics and product metrics",{"type":37,"value":263}," — generous free tiers, paid plans in the tens to low hundreds. No reason to build this.",{"type":32,"tag":224,"props":265,"children":266},{},[267,272],{"type":32,"tag":108,"props":268,"children":269},{},[270],{"type":37,"value":271},"Error tracking and monitoring",{"type":37,"value":273}," — often free to start, cheap to scale. Essential, and trivial to buy.",{"type":32,"tag":224,"props":275,"children":276},{},[277,282],{"type":32,"tag":108,"props":278,"children":279},{},[280],{"type":37,"value":281},"CRM and support desk",{"type":37,"value":283}," — pick one off the shelf. Building your own customer database to save a subscription is a classic runway leak.",{"type":32,"tag":33,"props":285,"children":286},{},[287,289,294],{"type":37,"value":288},"Every dollar and every engineering hour you ",{"type":32,"tag":40,"props":290,"children":291},{},[292],{"type":37,"value":293},"don't",{"type":37,"value":295}," spend reinventing these is one you can spend on the part of your product that's actually yours.",{"type":32,"tag":63,"props":297,"children":299},{"id":298},"partner-for-the-rest-the-option-the-framework-usually-skips",[300],{"type":37,"value":301},"Partner for the rest — the option the framework usually skips",{"type":32,"tag":33,"props":303,"children":304},{},[305],{"type":37,"value":306},"Here's the third path almost no build-vs-buy article mentions, because it doesn't fit neatly in a two-column table.",{"type":32,"tag":33,"props":308,"children":309},{},[310,312,317],{"type":37,"value":311},"Sometimes a capability is squarely your differentiator — so you can't buy it off the shelf — but you don't have the team to build it. Maybe it's a three-month build and hiring full-time engineers for a three-month build makes no sense. Maybe you need senior muscle now and can't wait out a hiring cycle. That's the gap the \"partner\" path fills: someone builds ",{"type":32,"tag":40,"props":313,"children":314},{},[315],{"type":37,"value":316},"with",{"type":37,"value":318}," you, building the part you'd build yourself if you had the team — without the permanent headcount.",{"type":32,"tag":33,"props":320,"children":321},{},[322,324,330,332,338,340,346,348,353],{"type":37,"value":323},"We'll be transparent: this is what we do — ",{"type":32,"tag":149,"props":325,"children":327},{"href":326},"/services/resource-augmentation/",[328],{"type":37,"value":329},"resource augmentation",{"type":37,"value":331},", ",{"type":32,"tag":149,"props":333,"children":335},{"href":334},"/services/mvp-development/",[336],{"type":37,"value":337},"MVP development",{"type":37,"value":339},", and ",{"type":32,"tag":149,"props":341,"children":343},{"href":342},"/services/full-project-delivery/",[344],{"type":37,"value":345},"full project delivery",{"type":37,"value":347},". But we're putting it here as one honest option among three, not as a pitch, which means being just as clear about when it's ",{"type":32,"tag":40,"props":349,"children":350},{},[351],{"type":37,"value":352},"not",{"type":37,"value":354}," the right call:",{"type":32,"tag":220,"props":356,"children":357},{},[358,370],{"type":32,"tag":224,"props":359,"children":360},{},[361,363,368],{"type":37,"value":362},"If the capability is small enough that a tool does it, ",{"type":32,"tag":108,"props":364,"children":365},{},[366],{"type":37,"value":367},"buy the tool",{"type":37,"value":369}," — don't partner.",{"type":32,"tag":224,"props":371,"children":372},{},[373,375,380],{"type":37,"value":374},"If it's so core and permanent that software is your entire company, and you can hire, ",{"type":32,"tag":108,"props":376,"children":377},{},[378],{"type":37,"value":379},"build the in-house team",{"type":37,"value":381}," — partnering is a bridge, not a destination.",{"type":32,"tag":33,"props":383,"children":384},{},[385],{"type":37,"value":386},"The partner path is for the middle: differentiating enough that you must own it, not permanent enough (yet) to justify a full hire. When it fits, it's the fastest honest way to get the thing built without distorting your headcount.",{"type":32,"tag":63,"props":388,"children":390},{"id":389},"the-honest-24-month-total-cost-of-ownership",[391],{"type":37,"value":392},"The honest 24-month total cost of ownership",{"type":32,"tag":33,"props":394,"children":395},{},[396],{"type":37,"value":397},"Here's the math founders skip — and it's the math that flips a lot of \"obvious\" decisions.",{"type":32,"tag":33,"props":399,"children":400},{},[401,403,408],{"type":37,"value":402},"\"Buy\" looks cheaper on day one. \"Build\" looks like a one-time cost. ",{"type":32,"tag":40,"props":404,"children":405},{},[406],{"type":37,"value":407},"Both of those are illusions.",{"type":37,"value":409}," The real comparison is total cost of ownership over a meaningful horizon — say 24 months.",{"type":32,"tag":33,"props":411,"children":412},{},[413,418],{"type":32,"tag":108,"props":414,"children":415},{},[416],{"type":37,"value":417},"The true cost of buying",{"type":37,"value":419}," isn't just the sticker price. It's:",{"type":32,"tag":220,"props":421,"children":422},{},[423,428,433,438],{"type":32,"tag":224,"props":424,"children":425},{},[426],{"type":37,"value":427},"Subscription × seats × 24 months (and seats usually grow)",{"type":32,"tag":224,"props":429,"children":430},{},[431],{"type":37,"value":432},"Integration time to wire it into your product",{"type":32,"tag":224,"props":434,"children":435},{},[436],{"type":37,"value":437},"Per-seat or per-usage scaling as you grow",{"type":32,"tag":224,"props":439,"children":440},{},[441],{"type":37,"value":442},"The switching cost if you outgrow it and have to migrate off",{"type":32,"tag":33,"props":444,"children":445},{},[446,451],{"type":32,"tag":108,"props":447,"children":448},{},[449],{"type":37,"value":450},"The true cost of building",{"type":37,"value":452}," isn't just the build. It's:",{"type":32,"tag":220,"props":454,"children":455},{},[456,461,478,483],{"type":32,"tag":224,"props":457,"children":458},{},[459],{"type":37,"value":460},"The build cost itself",{"type":32,"tag":224,"props":462,"children":463},{},[464,469,471,476],{"type":32,"tag":108,"props":465,"children":466},{},[467],{"type":37,"value":468},"Ongoing maintenance — the line everyone forgets.",{"type":37,"value":470}," As a rough industry rule of thumb, expect to spend somewhere around 15–25% of the original build cost ",{"type":32,"tag":40,"props":472,"children":473},{},[474],{"type":37,"value":475},"every year",{"type":37,"value":477}," keeping it alive: bug fixes, security patches, dependency updates, the lot.",{"type":32,"tag":224,"props":479,"children":480},{},[481],{"type":37,"value":482},"The opportunity cost of your team's time — every hour on this is an hour not on your actual product",{"type":32,"tag":224,"props":484,"children":485},{},[486,488,493],{"type":37,"value":487},"The cost of ",{"type":32,"tag":40,"props":489,"children":490},{},[491],{"type":37,"value":492},"not shipping your differentiator",{"type":37,"value":494}," while you build a utility",{"type":32,"tag":33,"props":496,"children":497},{},[498,500,505],{"type":37,"value":499},"Here's an illustrative example — and please read \"illustrative,\" because ",{"type":32,"tag":108,"props":501,"children":502},{},[503],{"type":37,"value":504},"these are made-up round numbers to show the shape of the math, not our pricing.",{"type":37,"value":506}," Imagine a tool that costs $200/month. Over 24 months that's $4,800, plus a little integration time. Now imagine building the same capability for $40,000. It feels like a wash over a couple of years — until you add maintenance: at ~20% a year, that's roughly $8,000 annually, so $16,000 across the two years, on top of the $40,000. The \"build\" path is now well over $50,000 versus under $6,000 to buy — for a capability that isn't even your differentiator.",{"type":32,"tag":33,"props":508,"children":509},{},[510,512,517,519,524,526,532],{"type":37,"value":511},"The takeaway: ",{"type":32,"tag":108,"props":513,"children":514},{},[515],{"type":37,"value":516},"cheap-to-buy things are usually cheaper to keep buying.",{"type":37,"value":518}," And when you do decide to build, the cost you must respect isn't the build — it's the ",{"type":32,"tag":40,"props":520,"children":521},{},[522],{"type":37,"value":523},"maintenance forever",{"type":37,"value":525}," that follows it. (If you want real cost ranges for building a product itself, rather than this illustrative math, we've laid those out in ",{"type":32,"tag":149,"props":527,"children":529},{"href":528},"/blog/mvp-development-cost/",[530],{"type":37,"value":531},"what an MVP actually costs",{"type":37,"value":533},".)",{"type":32,"tag":63,"props":535,"children":537},{"id":536},"a-decision-framework-you-can-actually-run",[538],{"type":37,"value":539},"A decision framework you can actually run",{"type":32,"tag":33,"props":541,"children":542},{},[543],{"type":37,"value":544},"Here's the whole thing as a short, repeatable test. Run it for each capability in your product.",{"type":32,"tag":546,"props":547,"children":548},"ol",{},[549,573,589,619],{"type":32,"tag":224,"props":550,"children":551},{},[552,564,566,571],{"type":32,"tag":108,"props":553,"children":554},{},[555,557,562],{"type":37,"value":556},"Is this the thing customers choose us ",{"type":32,"tag":40,"props":558,"children":559},{},[560],{"type":37,"value":561},"for",{"type":37,"value":563},"?",{"type":37,"value":565}," → If yes, lean ",{"type":32,"tag":108,"props":567,"children":568},{},[569],{"type":37,"value":570},"build",{"type":37,"value":572}," (or partner to build it). If no, it's probably a utility.",{"type":32,"tag":224,"props":574,"children":575},{},[576,581,582,587],{"type":32,"tag":108,"props":577,"children":578},{},[579],{"type":37,"value":580},"Is this a solved problem with a mature product out there?",{"type":37,"value":565},{"type":32,"tag":108,"props":583,"children":584},{},[585],{"type":37,"value":586},"buy",{"type":37,"value":588},". Don't reinvent it.",{"type":32,"tag":224,"props":590,"children":591},{},[592,604,606,611,613,617],{"type":32,"tag":108,"props":593,"children":594},{},[595,597,602],{"type":37,"value":596},"Do we have — or should we hire — the team to build ",{"type":32,"tag":40,"props":598,"children":599},{},[600],{"type":37,"value":601},"and maintain",{"type":37,"value":603}," this?",{"type":37,"value":605}," → If no, ",{"type":32,"tag":108,"props":607,"children":608},{},[609],{"type":37,"value":610},"partner",{"type":37,"value":612}," or ",{"type":32,"tag":108,"props":614,"children":615},{},[616],{"type":37,"value":586},{"type":37,"value":618},". Maintenance is the deciding word; building something you can't keep alive is worse than not building it.",{"type":32,"tag":224,"props":620,"children":621},{},[622,627],{"type":32,"tag":108,"props":623,"children":624},{},[625],{"type":37,"value":626},"What does this cost over 24 months, all in — maintenance and switching included?",{"type":37,"value":628}," → Run the TCO. Let the real number, not the day-one number, decide.",{"type":32,"tag":33,"props":630,"children":631},{},[632],{"type":37,"value":633},"Differentiator that you can own and maintain? Build. Solved problem with a good product? Buy. Core to you but no team to build it? Partner. That's the entire framework.",{"type":32,"tag":63,"props":635,"children":637},{"id":636},"when-buying-quietly-becomes-a-build-and-vice-versa",[638],{"type":37,"value":639},"When buying quietly becomes a build (and vice versa)",{"type":32,"tag":33,"props":641,"children":642},{},[643],{"type":37,"value":644},"Two honest edge cases worth naming.",{"type":32,"tag":33,"props":646,"children":647},{},[648,653],{"type":32,"tag":108,"props":649,"children":650},{},[651],{"type":37,"value":652},"Buying that becomes building.",{"type":37,"value":654}," You buy a SaaS, then customize it heavily — a workaround here, a custom integration there — until you're maintaining a fragile layer of glue holding the whole thing together. Congratulations: you've built something, badly, while paying someone else's subscription for the privilege. When you find yourself fighting a tool to make it do what it wasn't meant to, that's a signal it might be time to actually build.",{"type":32,"tag":33,"props":656,"children":657},{},[658,663,665,670,672,678],{"type":32,"tag":108,"props":659,"children":660},{},[661],{"type":37,"value":662},"The platform mirror image.",{"type":37,"value":664}," Buying an entire ",{"type":32,"tag":40,"props":666,"children":667},{},[668],{"type":37,"value":669},"platform",{"type":37,"value":671}," to build on — a no-code tool, for instance — and then outgrowing it is its own specific version of this decision. If that's where you are, it's worth its own treatment, and we've written it: ",{"type":32,"tag":149,"props":673,"children":675},{"href":674},"/blog/no-code-vs-custom-development/",[676],{"type":37,"value":677},"when your no-code app hits the ceiling",{"type":37,"value":679}," is the sharp, narrow case of this broad framework. Same logic, very specific situation.",{"type":32,"tag":63,"props":681,"children":683},{"id":682},"how-wed-actually-advise-you-even-when-the-answer-isnt-us",[684],{"type":37,"value":685},"How we'd actually advise you (even when the answer isn't us)",{"type":32,"tag":33,"props":687,"children":688},{},[689],{"type":37,"value":690},"We'll close on the relationship, not the sale, because that's genuinely how we think about this.",{"type":32,"tag":33,"props":692,"children":693},{},[694],{"type":37,"value":695},"We build software for a living, and we will still tell you to buy the tool, keep the SaaS, or hold off entirely — because an honest read today is how partnerships start, big or small. A founder we steered toward Stripe instead of a custom billing build is a founder who remembers we told them the truth. That's worth more to us than a billed month of work.",{"type":32,"tag":33,"props":697,"children":698},{},[699,701,707],{"type":37,"value":700},"It's not charity, either. It's why more than 80% of our clients stay with us. We tell people the truth before we sell them anything, and the trust that builds is the whole business. We've made these exact build/buy/partner calls building ",{"type":32,"tag":149,"props":702,"children":704},{"href":703},"/blog/why-we-built-formester/",[705],{"type":37,"value":706},"Formester",{"type":37,"value":708},", our own SaaS product — which means when we advise you, it's from the founder's seat, not just the vendor's. We know what it feels like to want to build everything and to learn, the hard way, what's actually worth building.",{"type":32,"tag":33,"props":710,"children":711},{},[712,714,719,721,727],{"type":37,"value":713},"One more thing before you build ",{"type":32,"tag":40,"props":715,"children":716},{},[717],{"type":37,"value":718},"anything",{"type":37,"value":720},": once you've decided a capability is yours to build, ",{"type":32,"tag":149,"props":722,"children":724},{"href":723},"/blog/scope-software-project/",[725],{"type":37,"value":726},"scope it down ruthlessly first",{"type":37,"value":728},". The cheapest build is the one you were disciplined enough to keep small.",{"type":32,"tag":63,"props":730,"children":732},{"id":731},"the-takeaway",[733],{"type":37,"value":734},"The takeaway",{"type":32,"tag":33,"props":736,"children":737},{},[738],{"type":37,"value":739},"Stop asking \"build or buy.\" Ask, for each capability: is this our differentiator, a solved utility, or something core we don't yet have the team for? Build the differentiator. Buy the utility — really, buy it. Partner for the genuine middle. And always run the 24-month math, because the cost that decides it is the maintenance you'll carry forever, not the price you pay on day one.",{"type":32,"tag":33,"props":741,"children":742},{},[743],{"type":37,"value":744},"Get this right and your runway goes where it should: into the part of your product that's actually yours.",{"type":32,"tag":746,"props":747,"children":748},"hr",{},[],{"type":32,"tag":33,"props":750,"children":751},{},[752,757,759],{"type":32,"tag":108,"props":753,"children":754},{},[755],{"type":37,"value":756},"Staring at a build-vs-buy call and want a second honest opinion — even if the answer is \"just buy it\"?",{"type":37,"value":758}," Let's talk it through. No pitch, just a straight read. ",{"type":32,"tag":149,"props":760,"children":762},{"href":761},"/contact/",[763],{"type":37,"value":764},"Get in touch.",{"title":7,"searchDepth":766,"depth":766,"links":767},2,[768,770,771,772,773,774,775,776,777],{"id":65,"depth":766,"text":769},"The question is never \"build or buy\" — it's \"build what, buy what\"",{"id":120,"depth":766,"text":123},{"id":181,"depth":766,"text":184},{"id":298,"depth":766,"text":301},{"id":389,"depth":766,"text":392},{"id":536,"depth":766,"text":539},{"id":636,"depth":766,"text":639},{"id":682,"depth":766,"text":685},{"id":731,"depth":766,"text":734},"markdown","content:blog:build-vs-buy-software.md","content","blog/build-vs-buy-software.md","blog/build-vs-buy-software","md",[785,1415],{"_path":786,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":787,"description":788,"topic":10,"author":789,"authorProfile":790,"coverImg":791,"coverImgAlt":792,"published":15,"createdAt":793,"keywords":794,"body":801,"_type":778,"_id":1412,"_source":780,"_file":1413,"_stem":1414,"_extension":783},"/blog/code-shop-vs-product-engineering-team","Code Shop vs. Product Engineering Team: What's the Difference?","Not every dev team thinks about your product the same way. Here's how to tell a code shop from a product engineering team -- and why it matters.","Ankit Singhaniya","https://in.linkedin.com/in/ankitsinghaniyaz","/images/blog/code-shop-vs-product-engineering.webp","Code Shop vs Product Engineering Team — understanding the difference and why it matters","2026-04-11",[795,796,797,798,799,800],"code shop vs product engineering team","product engineering company","dev shop vs product agency","what is a product engineering team","hire product engineering team","how to evaluate software development company",{"type":29,"children":802,"toc":1393},[803,808,813,818,824,829,834,842,870,878,883,889,894,899,906,934,940,945,952,962,972,977,983,988,997,1006,1011,1017,1026,1035,1040,1046,1055,1072,1077,1083,1092,1101,1106,1112,1117,1127,1137,1147,1157,1167,1177,1187,1193,1226,1232,1265,1271,1276,1287,1292,1297,1302,1308,1313,1321,1349,1354,1360,1365,1370,1383,1388],{"type":32,"tag":33,"props":804,"children":805},{},[806],{"type":37,"value":807},"You've shortlisted three vendors. They all have decent portfolios. They all say the right things. And yet, six months from now, one of those vendors will have built you a product you can grow with -- and another will have delivered a codebase you're already planning to rewrite.",{"type":32,"tag":33,"props":809,"children":810},{},[811],{"type":37,"value":812},"The difference usually isn't skill. It's mindset. And that mindset gap is what separates a code shop from a product engineering team.",{"type":32,"tag":33,"props":814,"children":815},{},[816],{"type":37,"value":817},"This isn't a takedown of code shops. They serve a real purpose. But if you're building a core product -- something your business runs on -- understanding this difference will save you months of frustration and thousands of dollars.",{"type":32,"tag":63,"props":819,"children":821},{"id":820},"what-is-a-code-shop",[822],{"type":37,"value":823},"What Is a \"Code Shop\"?",{"type":32,"tag":33,"props":825,"children":826},{},[827],{"type":37,"value":828},"A code shop is a team that takes your specification and turns it into working software. You define what you want. They build it. You pay. Done.",{"type":32,"tag":33,"props":830,"children":831},{},[832],{"type":37,"value":833},"That's not a criticism. It's a description of a legitimate business model that works well for certain kinds of projects.",{"type":32,"tag":33,"props":835,"children":836},{},[837],{"type":32,"tag":108,"props":838,"children":839},{},[840],{"type":37,"value":841},"How you'll recognize one:",{"type":32,"tag":220,"props":843,"children":844},{},[845,850,855,860,865],{"type":32,"tag":224,"props":846,"children":847},{},[848],{"type":37,"value":849},"They lead with \"How many screens?\" and \"What features do you need?\"",{"type":32,"tag":224,"props":851,"children":852},{},[853],{"type":37,"value":854},"Pricing is based on scope -- you get a quote tied to a feature list",{"type":32,"tag":224,"props":856,"children":857},{},[858],{"type":37,"value":859},"The team is assembled for your project, then moves on to the next one",{"type":32,"tag":224,"props":861,"children":862},{},[863],{"type":37,"value":864},"Communication follows a request-response pattern: you ask, they build",{"type":32,"tag":224,"props":866,"children":867},{},[868],{"type":37,"value":869},"The engagement has a clear end date tied to delivery",{"type":32,"tag":33,"props":871,"children":872},{},[873],{"type":32,"tag":108,"props":874,"children":875},{},[876],{"type":37,"value":877},"When this model works:",{"type":32,"tag":33,"props":879,"children":880},{},[881],{"type":37,"value":882},"If you have a detailed spec, a product manager in-house, and a well-defined deliverable with a fixed budget, a code shop can be a cost-effective choice. You know exactly what you want, and you need someone to build it efficiently.",{"type":32,"tag":63,"props":884,"children":886},{"id":885},"what-is-a-product-engineering-team",[887],{"type":37,"value":888},"What Is a Product Engineering Team?",{"type":32,"tag":33,"props":890,"children":891},{},[892],{"type":37,"value":893},"A product engineering team thinks about your product, not just your code. They don't start by asking how many screens you need. They start by asking who your users are and what problem you're solving.",{"type":32,"tag":33,"props":895,"children":896},{},[897],{"type":37,"value":898},"The difference isn't just process. It's ownership. A product engineering team builds your product like it's theirs -- because that's the only way they know how to work.",{"type":32,"tag":33,"props":900,"children":901},{},[902],{"type":32,"tag":108,"props":903,"children":904},{},[905],{"type":37,"value":841},{"type":32,"tag":220,"props":907,"children":908},{},[909,914,919,924,929],{"type":32,"tag":224,"props":910,"children":911},{},[912],{"type":37,"value":913},"They push back on your feature list. Not to be difficult, but because they've seen what happens when you build everything at once.",{"type":32,"tag":224,"props":915,"children":916},{},[917],{"type":37,"value":918},"They ask about your users, your market, your business model -- not just your tech requirements.",{"type":32,"tag":224,"props":920,"children":921},{},[922],{"type":37,"value":923},"They suggest scope changes based on what they're learning during development.",{"type":32,"tag":224,"props":925,"children":926},{},[927],{"type":37,"value":928},"The engineers working on your product stay on your product. They know your codebase, your users, your goals.",{"type":32,"tag":224,"props":930,"children":931},{},[932],{"type":37,"value":933},"The relationship doesn't end at delivery.",{"type":32,"tag":63,"props":935,"children":937},{"id":936},"_5-practical-differences-that-matter",[938],{"type":37,"value":939},"5 Practical Differences That Matter",{"type":32,"tag":33,"props":941,"children":942},{},[943],{"type":37,"value":944},"Theory is nice, but you're probably evaluating vendors right now. Here are five concrete differences you can observe during sales calls, kickoff meetings, and the first few weeks of working together.",{"type":32,"tag":946,"props":947,"children":949},"h3",{"id":948},"_1-how-they-respond-to-your-brief",[950],{"type":37,"value":951},"1. How They Respond to Your Brief",{"type":32,"tag":33,"props":953,"children":954},{},[955,960],{"type":32,"tag":108,"props":956,"children":957},{},[958],{"type":37,"value":959},"Code shop approach:",{"type":37,"value":961}," You send a brief. They send back a quote with a line-item breakdown of features, estimated hours, and a total cost. The conversation is about scope and price.",{"type":32,"tag":33,"props":963,"children":964},{},[965,970],{"type":32,"tag":108,"props":966,"children":967},{},[968],{"type":37,"value":969},"Product engineering approach:",{"type":37,"value":971}," You send a brief. They come back with questions. \"Why does this feature matter to your users?\" \"Have you validated this flow with real people?\" \"What if we built a simpler version first and tested it?\" The conversation is about outcomes.",{"type":32,"tag":33,"props":973,"children":974},{},[975],{"type":37,"value":976},"This doesn't mean product teams don't talk about cost. They do. But cost comes after understanding, not before it.",{"type":32,"tag":946,"props":978,"children":980},{"id":979},"_2-what-happens-when-something-isnt-working",[981],{"type":37,"value":982},"2. What Happens When Something Isn't Working",{"type":32,"tag":33,"props":984,"children":985},{},[986],{"type":37,"value":987},"Every product has moments during development where a feature doesn't work the way anyone expected. The user flow is confusing. The API integration is more complex than scoped. The data model needs rethinking.",{"type":32,"tag":33,"props":989,"children":990},{},[991,995],{"type":32,"tag":108,"props":992,"children":993},{},[994],{"type":37,"value":959},{"type":37,"value":996}," \"That's a change request. Here's the revised estimate.\"",{"type":32,"tag":33,"props":998,"children":999},{},[1000,1004],{"type":32,"tag":108,"props":1001,"children":1002},{},[1003],{"type":37,"value":969},{"type":37,"value":1005}," \"We noticed this flow isn't working the way we expected. Here are three options, each with different trade-offs on timeline and user experience. Here's what we'd recommend and why.\"",{"type":32,"tag":33,"props":1007,"children":1008},{},[1009],{"type":37,"value":1010},"Neither response is wrong. But one treats the problem as a billing event, and the other treats it as a product decision.",{"type":32,"tag":946,"props":1012,"children":1014},{"id":1013},"_3-who-works-on-your-project",[1015],{"type":37,"value":1016},"3. Who Works on Your Project",{"type":32,"tag":33,"props":1018,"children":1019},{},[1020,1024],{"type":32,"tag":108,"props":1021,"children":1022},{},[1023],{"type":37,"value":959},{"type":37,"value":1025}," A team gets assigned when your project starts. If someone's unavailable, they get swapped. You might not know the names of everyone writing your code.",{"type":32,"tag":33,"props":1027,"children":1028},{},[1029,1033],{"type":32,"tag":108,"props":1030,"children":1031},{},[1032],{"type":37,"value":969},{"type":37,"value":1034}," You know the engineers by name. They know your codebase. They know your business context. If a team member changes, there's a deliberate knowledge transfer -- not a silent swap.",{"type":32,"tag":33,"props":1036,"children":1037},{},[1038],{"type":37,"value":1039},"We have 20+ engineers. That's small enough that our clients know the people building their product. When PerformLine started with us, they worked with one engineer. That engineer is still on the team two years later -- along with seven more. That continuity isn't an accident. It's how trust gets built.",{"type":32,"tag":946,"props":1041,"children":1043},{"id":1042},"_4-what-you-get-at-the-end",[1044],{"type":37,"value":1045},"4. What You Get at the End",{"type":32,"tag":33,"props":1047,"children":1048},{},[1049,1053],{"type":32,"tag":108,"props":1050,"children":1051},{},[1052],{"type":37,"value":959},{"type":37,"value":1054}," Delivered code, a final invoice, and a handoff document. The project is complete.",{"type":32,"tag":33,"props":1056,"children":1057},{},[1058,1062,1064,1070],{"type":32,"tag":108,"props":1059,"children":1060},{},[1061],{"type":37,"value":969},{"type":37,"value":1063}," A production-ready product with documented architecture, clean deployment pipelines, and a team that's ready to keep building with you. ",{"type":32,"tag":149,"props":1065,"children":1067},{"href":1066},"/blog/hire-developers-startup/",[1068],{"type":37,"value":1069},"The code is yours, fully handoff-ready",{"type":37,"value":1071},", and you're never locked in.",{"type":32,"tag":33,"props":1073,"children":1074},{},[1075],{"type":37,"value":1076},"The difference shows up six months later. Code from a product engineering team is built to grow with the product. Code from a code shop is built to match the spec.",{"type":32,"tag":946,"props":1078,"children":1080},{"id":1079},"_5-what-happens-after-launch",[1081],{"type":37,"value":1082},"5. What Happens After Launch",{"type":32,"tag":33,"props":1084,"children":1085},{},[1086,1090],{"type":32,"tag":108,"props":1087,"children":1088},{},[1089],{"type":37,"value":959},{"type":37,"value":1091}," If you bought a support contract, you get bug fixes. Otherwise, the engagement is over.",{"type":32,"tag":33,"props":1093,"children":1094},{},[1095,1099],{"type":32,"tag":108,"props":1096,"children":1097},{},[1098],{"type":37,"value":969},{"type":37,"value":1100}," The team sticks around. They help you interpret user feedback. They iterate on what's working. They cut what isn't. The launch isn't the end of the project -- it's the beginning of the product.",{"type":32,"tag":33,"props":1102,"children":1103},{},[1104],{"type":37,"value":1105},"We shipped an MVP for Eitoss in 3 months. They used it to raise funding. That was over two years ago. We're still building together. The product today looks nothing like the MVP we launched -- and that's exactly the point.",{"type":32,"tag":63,"props":1107,"children":1109},{"id":1108},"how-to-tell-which-one-youre-talking-to",[1110],{"type":37,"value":1111},"How to Tell Which One You're Talking To",{"type":32,"tag":33,"props":1113,"children":1114},{},[1115],{"type":37,"value":1116},"During your evaluation process, here are questions that reveal mindset:",{"type":32,"tag":33,"props":1118,"children":1119},{},[1120,1125],{"type":32,"tag":108,"props":1121,"children":1122},{},[1123],{"type":37,"value":1124},"Ask: \"What would you change about our brief?\"",{"type":37,"value":1126},"\nA code shop will say \"nothing, it looks clear.\" A product team will have opinions.",{"type":32,"tag":33,"props":1128,"children":1129},{},[1130,1135],{"type":32,"tag":108,"props":1131,"children":1132},{},[1133],{"type":37,"value":1134},"Ask: \"Can I meet the engineers who will work on my project?\"",{"type":37,"value":1136},"\nIf the answer is vague or conditional, that tells you something about how the team is structured.",{"type":32,"tag":33,"props":1138,"children":1139},{},[1140,1145],{"type":32,"tag":108,"props":1141,"children":1142},{},[1143],{"type":37,"value":1144},"Ask: \"What happens when scope changes mid-project?\"",{"type":37,"value":1146},"\nListen for whether they frame it as a billing conversation or a product conversation.",{"type":32,"tag":33,"props":1148,"children":1149},{},[1150,1155],{"type":32,"tag":108,"props":1151,"children":1152},{},[1153],{"type":37,"value":1154},"Ask: \"Tell me about a project where you pushed back on the client's requirements.\"",{"type":37,"value":1156},"\nProduct teams will have specific stories. Code shops rarely push back -- that's not their role.",{"type":32,"tag":33,"props":1158,"children":1159},{},[1160,1165],{"type":32,"tag":108,"props":1161,"children":1162},{},[1163],{"type":37,"value":1164},"Ask: \"What happens after delivery?\"",{"type":37,"value":1166},"\nIf the answer centers on support contracts and SLAs, you're talking to a code shop. If the answer centers on iteration and growth, you're talking to a product team.",{"type":32,"tag":33,"props":1168,"children":1169},{},[1170,1175],{"type":32,"tag":108,"props":1171,"children":1172},{},[1173],{"type":37,"value":1174},"Ask: \"How do you handle features that don't work as expected during development?\"",{"type":37,"value":1176},"\nThis one reveals everything. You want to hear about proactive problem-solving, not change request processes.",{"type":32,"tag":33,"props":1178,"children":1179},{},[1180,1185],{"type":32,"tag":108,"props":1181,"children":1182},{},[1183],{"type":37,"value":1184},"Ask: \"Do you have your own product?\"",{"type":37,"value":1186},"\nA team that has built and maintained its own product understands ownership in a way that's hard to learn from client work alone.",{"type":32,"tag":946,"props":1188,"children":1190},{"id":1189},"red-flags-that-signal-code-shop-even-when-they-claim-product-thinking",[1191],{"type":37,"value":1192},"Red Flags That Signal \"Code Shop\" Even When They Claim Product Thinking",{"type":32,"tag":220,"props":1194,"children":1195},{},[1196,1201,1206,1211,1216,1221],{"type":32,"tag":224,"props":1197,"children":1198},{},[1199],{"type":37,"value":1200},"They can't name the engineers who will work on your project",{"type":32,"tag":224,"props":1202,"children":1203},{},[1204],{"type":37,"value":1205},"The proposal is pure scope-and-cost with no questions about your users or business",{"type":32,"tag":224,"props":1207,"children":1208},{},[1209],{"type":37,"value":1210},"They agree to everything in your brief without a single pushback",{"type":32,"tag":224,"props":1212,"children":1213},{},[1214],{"type":37,"value":1215},"No mention of post-launch plans, iteration, or long-term partnership",{"type":32,"tag":224,"props":1217,"children":1218},{},[1219],{"type":37,"value":1220},"They list technologies before understanding your problem",{"type":32,"tag":224,"props":1222,"children":1223},{},[1224],{"type":37,"value":1225},"The sales process feels transactional: brief in, quote out, sign here",{"type":32,"tag":946,"props":1227,"children":1229},{"id":1228},"green-flags-that-signal-genuine-product-thinking",[1230],{"type":37,"value":1231},"Green Flags That Signal Genuine Product Thinking",{"type":32,"tag":220,"props":1233,"children":1234},{},[1235,1240,1245,1250,1255,1260],{"type":32,"tag":224,"props":1236,"children":1237},{},[1238],{"type":37,"value":1239},"They ask more questions than they answer in the first meeting",{"type":32,"tag":224,"props":1241,"children":1242},{},[1243],{"type":37,"value":1244},"They recommend cutting scope (even though it means less revenue for them)",{"type":32,"tag":224,"props":1246,"children":1247},{},[1248],{"type":37,"value":1249},"They can introduce you to the specific people who will build your product",{"type":32,"tag":224,"props":1251,"children":1252},{},[1253],{"type":37,"value":1254},"They share stories about long-term client relationships, not just project completions",{"type":32,"tag":224,"props":1256,"children":1257},{},[1258],{"type":37,"value":1259},"They have opinions about your product decisions -- and they're comfortable sharing them",{"type":32,"tag":224,"props":1261,"children":1262},{},[1263],{"type":37,"value":1264},"They've built something of their own",{"type":32,"tag":63,"props":1266,"children":1268},{"id":1267},"why-we-built-acornglobus-as-a-product-engineering-team",[1269],{"type":37,"value":1270},"Why We Built AcornGlobus as a Product Engineering Team",{"type":32,"tag":33,"props":1272,"children":1273},{},[1274],{"type":37,"value":1275},"This isn't a sales pitch. It's context for why we think about this distinction the way we do.",{"type":32,"tag":33,"props":1277,"children":1278},{},[1279,1281,1285],{"type":37,"value":1280},"We built ",{"type":32,"tag":149,"props":1282,"children":1283},{"href":703},[1284],{"type":37,"value":706},{"type":37,"value":1286}," -- our own SaaS product, from scratch. Live, growing, real users. Building your own product teaches you something that client work alone can't: what it feels like when the codebase is yours. When the users are yours. When the technical debt is yours to live with.",{"type":32,"tag":33,"props":1288,"children":1289},{},[1290],{"type":37,"value":1291},"That experience changed how we work with clients. We stopped thinking in terms of deliverables and started thinking in terms of outcomes. We stopped saying \"that's a change request\" and started saying \"let's figure out the right solution.\"",{"type":32,"tag":33,"props":1293,"children":1294},{},[1295],{"type":37,"value":1296},"PerformLine started with a single engineer from our team. Two years later, we have 8+ engineers embedded across their product. They didn't plan to scale that way. The partnership grew because the work was good and the relationship was real. That's what product engineering looks like over time.",{"type":32,"tag":33,"props":1298,"children":1299},{},[1300],{"type":37,"value":1301},"We're not positioning against code shops. We respect the model. But it's not who we are. We build products like they're ours -- because that's the standard we set with Formester, and it's the standard we hold ourselves to with every client.",{"type":32,"tag":63,"props":1303,"children":1305},{"id":1304},"when-a-code-shop-is-actually-the-right-choice",[1306],{"type":37,"value":1307},"When a Code Shop Is Actually the Right Choice",{"type":32,"tag":33,"props":1309,"children":1310},{},[1311],{"type":37,"value":1312},"Honesty means admitting that product engineering isn't always what you need.",{"type":32,"tag":33,"props":1314,"children":1315},{},[1316],{"type":32,"tag":108,"props":1317,"children":1318},{},[1319],{"type":37,"value":1320},"A code shop might be right if:",{"type":32,"tag":220,"props":1322,"children":1323},{},[1324,1329,1334,1339,1344],{"type":32,"tag":224,"props":1325,"children":1326},{},[1327],{"type":37,"value":1328},"You have a detailed technical specification and an in-house product manager to own decisions",{"type":32,"tag":224,"props":1330,"children":1331},{},[1332],{"type":37,"value":1333},"You're building a defined feature or module, not a core product",{"type":32,"tag":224,"props":1335,"children":1336},{},[1337],{"type":37,"value":1338},"You have a fixed budget for a fixed scope and don't need ongoing iteration",{"type":32,"tag":224,"props":1340,"children":1341},{},[1342],{"type":37,"value":1343},"The project is a commodity build (marketing site, internal tool with standard requirements)",{"type":32,"tag":224,"props":1345,"children":1346},{},[1347],{"type":37,"value":1348},"You have strong internal technical leadership to manage the relationship",{"type":32,"tag":33,"props":1350,"children":1351},{},[1352],{"type":37,"value":1353},"Not every project needs a product engineering team. A well-run code shop can deliver excellent work for the right kind of engagement. The point isn't that one model is better -- it's that the right model depends on what you're building and how you work.",{"type":32,"tag":63,"props":1355,"children":1357},{"id":1356},"making-the-right-choice-for-your-project",[1358],{"type":37,"value":1359},"Making the Right Choice for Your Project",{"type":32,"tag":33,"props":1361,"children":1362},{},[1363],{"type":37,"value":1364},"The real question isn't \"code shop or product team?\" It's: what does your project need?",{"type":32,"tag":33,"props":1366,"children":1367},{},[1368],{"type":37,"value":1369},"If you're building something that needs to grow, evolve, and respond to users -- something your business will run on -- you want a team that thinks about your product, not just your code.",{"type":32,"tag":33,"props":1371,"children":1372},{},[1373,1375,1381],{"type":37,"value":1374},"If you have a ",{"type":32,"tag":149,"props":1376,"children":1378},{"href":1377},"/blog/staff-augmentation-vs-outsourcing/",[1379],{"type":37,"value":1380},"clearly defined project",{"type":37,"value":1382}," with internal oversight and a specific deliverable, a code shop might be the efficient choice.",{"type":32,"tag":33,"props":1384,"children":1385},{},[1386],{"type":37,"value":1387},"The expensive mistake isn't choosing the wrong model. It's not knowing which model you're choosing. Now you know what to look for.",{"type":32,"tag":33,"props":1389,"children":1390},{},[1391],{"type":37,"value":1392},"Not sure which model fits your project? We're happy to talk it through -- we'll give you an honest recommendation, even if that means pointing you somewhere else.",{"title":7,"searchDepth":766,"depth":766,"links":1394},[1395,1396,1397,1405,1409,1410,1411],{"id":820,"depth":766,"text":823},{"id":885,"depth":766,"text":888},{"id":936,"depth":766,"text":939,"children":1398},[1399,1401,1402,1403,1404],{"id":948,"depth":1400,"text":951},3,{"id":979,"depth":1400,"text":982},{"id":1013,"depth":1400,"text":1016},{"id":1042,"depth":1400,"text":1045},{"id":1079,"depth":1400,"text":1082},{"id":1108,"depth":766,"text":1111,"children":1406},[1407,1408],{"id":1189,"depth":1400,"text":1192},{"id":1228,"depth":1400,"text":1231},{"id":1267,"depth":766,"text":1270},{"id":1304,"depth":766,"text":1307},{"id":1356,"depth":766,"text":1359},"content:blog:code-shop-vs-product-engineering-team.md","blog/code-shop-vs-product-engineering-team.md","blog/code-shop-vs-product-engineering-team",{"_path":1416,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1417,"description":1418,"topic":10,"author":11,"authorProfile":12,"coverImg":1419,"coverImgAlt":1420,"published":15,"toc":15,"readingTime":16,"createdAt":1421,"updatedAt":1421,"keywords":1422,"body":1431,"_type":778,"_id":2044,"_source":780,"_file":2045,"_stem":2046,"_extension":783},"/blog/how-to-choose-a-tech-stack","How to Choose a Tech Stack for Your Startup (Without the Hype)","The honest, stack-agnostic way to choose a tech stack for your startup — where your hiring pool matters more than the framework.","/images/blog/how-to-choose-a-tech-stack.webp","How to choose a tech stack for your startup — the honest, stack-agnostic guide","2026-06-16",[1423,1424,1425,1426,1427,1428,1429,1430],"how to choose a tech stack for a startup","best tech stack for a startup","how to pick a tech stack for an MVP","tech stack for SaaS startup","react vs vue vs angular for startup","how to choose backend for startup","what tech stack should I use for my startup","choosing a tech stack based on team and hiring",{"type":29,"children":1432,"toc":2027},[1433,1438,1443,1448,1460,1466,1471,1481,1486,1492,1497,1503,1508,1513,1518,1524,1529,1539,1544,1549,1555,1560,1603,1608,1614,1619,1624,1630,1635,1641,1646,1656,1666,1671,1677,1682,1700,1718,1736,1763,1768,1774,1779,1854,1880,1886,1891,1901,1919,1924,1930,1935,1952,1964,1970,1975,1980,1991,1996,2000,2005,2010,2013],{"type":32,"tag":33,"props":1434,"children":1435},{},[1436],{"type":37,"value":1437},"Here's the honest truth most founders need to hear first: at the MVP stage, your tech stack matters far less than you fear it does.",{"type":32,"tag":33,"props":1439,"children":1440},{},[1441],{"type":37,"value":1442},"We know that's not what you've been told. Spend an afternoon reading \"best startup tech stack\" articles and you'll come away convinced this is the decision that makes or breaks you. It isn't. The products that fail rarely fail because they picked Vue over React. They fail because they built the wrong thing, ran out of runway, or couldn't ship fast enough to learn.",{"type":32,"tag":33,"props":1444,"children":1445},{},[1446],{"type":37,"value":1447},"So before we get into frameworks and databases, take a breath. The trap isn't choosing the \"wrong\" stack. The trap is choosing on hype instead of fit — picking what's trending on Hacker News instead of what your team can actually ship with.",{"type":32,"tag":33,"props":1449,"children":1450},{},[1451,1453,1458],{"type":37,"value":1452},"Let's walk through how to choose for ",{"type":32,"tag":40,"props":1454,"children":1455},{},[1456],{"type":37,"value":1457},"yourself",{"type":37,"value":1459},", honestly.",{"type":32,"tag":63,"props":1461,"children":1463},{"id":1462},"the-one-thing-most-best-stack-articles-wont-tell-you",[1464],{"type":37,"value":1465},"The one thing most \"best stack\" articles won't tell you",{"type":32,"tag":33,"props":1467,"children":1468},{},[1469],{"type":37,"value":1470},"Read enough of these guides and you'll notice something: they almost always recommend the stack the author happens to use. The agency that lives in Rails tells you to build on Rails. The shop full of React engineers tells you React is the only sane choice. It's not malice — it's just human. People recommend what they know.",{"type":32,"tag":33,"props":1472,"children":1473},{},[1474,1476,1480],{"type":37,"value":1475},"We can't honestly do that, because we don't have one hammer to sell. We work across React, Vue, Angular, React Native, and Flutter on the frontend; Node.js, Python, Java, .NET, and Go on the backend; Postgres, MongoDB, Redis, and MySQL for data. That range isn't a brag. It's the reason we can give you a straight answer: we genuinely don't care which one you pick, so we can help you pick the one that fits ",{"type":32,"tag":40,"props":1477,"children":1478},{},[1479],{"type":37,"value":145},{"type":37,"value":46},{"type":32,"tag":33,"props":1482,"children":1483},{},[1484],{"type":37,"value":1485},"That's what \"stack-agnostic\" means to us. We choose the right tool for the problem in front of us — not the one we're trying to keep our team busy with.",{"type":32,"tag":63,"props":1487,"children":1489},{"id":1488},"the-5-factors-that-actually-decide-your-stack",[1490],{"type":37,"value":1491},"The 5 factors that actually decide your stack",{"type":32,"tag":33,"props":1493,"children":1494},{},[1495],{"type":37,"value":1496},"Forget benchmarks for a moment. Here are the five things that actually determine whether a stack choice serves you or sinks you.",{"type":32,"tag":946,"props":1498,"children":1500},{"id":1499},"_1-your-teams-existing-skills",[1501],{"type":37,"value":1502},"1. Your team's existing skills",{"type":32,"tag":33,"props":1504,"children":1505},{},[1506],{"type":37,"value":1507},"At MVP stage, ship with what you and your team already know. Full stop.",{"type":32,"tag":33,"props":1509,"children":1510},{},[1511],{"type":37,"value":1512},"If your one technical founder has shipped three products in Node and React, building your MVP in Go and Vue \"because they're better\" is a mistake. You'll spend your first month relearning instead of shipping. Speed-to-learning is everything early on, and nothing kills it faster than fighting an unfamiliar stack.",{"type":32,"tag":33,"props":1514,"children":1515},{},[1516],{"type":37,"value":1517},"The \"better\" technology you can't move quickly in is worse than the \"okay\" technology you're fluent in.",{"type":32,"tag":946,"props":1519,"children":1521},{"id":1520},"_2-the-hiring-and-replacement-pool",[1522],{"type":37,"value":1523},"2. The hiring and replacement pool",{"type":32,"tag":33,"props":1525,"children":1526},{},[1527],{"type":37,"value":1528},"This is the factor almost nobody leads with, and it's the one that quietly hurts most.",{"type":32,"tag":33,"props":1530,"children":1531},{},[1532,1534],{"type":37,"value":1533},"Ask yourself: ",{"type":32,"tag":40,"props":1535,"children":1536},{},[1537],{"type":37,"value":1538},"if I need to hire two more engineers for this stack in six months, can I find them? And if my one engineer leaves, can I replace them without rebuilding everything?",{"type":32,"tag":33,"props":1540,"children":1541},{},[1542],{"type":37,"value":1543},"A stack with a huge talent pool gives you options. A niche, exotic stack — however elegant — narrows your hiring to a handful of expensive specialists and makes every departure a crisis. React has an enormous hiring pool. So does Node and Python. The further you stray from the mainstream, the smaller your bench gets.",{"type":32,"tag":33,"props":1545,"children":1546},{},[1547],{"type":37,"value":1548},"You're not just choosing a technology. You're choosing how easy it'll be to build the team behind it.",{"type":32,"tag":946,"props":1550,"children":1552},{"id":1551},"_3-the-shape-of-your-problem",[1553],{"type":37,"value":1554},"3. The shape of your problem",{"type":32,"tag":33,"props":1556,"children":1557},{},[1558],{"type":37,"value":1559},"Different problems genuinely favor different tools. A few honest examples:",{"type":32,"tag":220,"props":1561,"children":1562},{},[1563,1573,1583,1593],{"type":32,"tag":224,"props":1564,"children":1565},{},[1566,1571],{"type":32,"tag":108,"props":1567,"children":1568},{},[1569],{"type":37,"value":1570},"Realtime and collaborative",{"type":37,"value":1572}," (chat, live dashboards, multiplayer) — Node's event-driven model fits naturally.",{"type":32,"tag":224,"props":1574,"children":1575},{},[1576,1581],{"type":32,"tag":108,"props":1577,"children":1578},{},[1579],{"type":37,"value":1580},"Data-heavy and analytical",{"type":37,"value":1582}," (ML, data pipelines, heavy number-crunching) — Python earns its place.",{"type":32,"tag":224,"props":1584,"children":1585},{},[1586,1591],{"type":32,"tag":108,"props":1587,"children":1588},{},[1589],{"type":37,"value":1590},"Mobile-first",{"type":37,"value":1592}," — React Native or Flutter let you ship iOS and Android from one codebase.",{"type":32,"tag":224,"props":1594,"children":1595},{},[1596,1601],{"type":32,"tag":108,"props":1597,"children":1598},{},[1599],{"type":37,"value":1600},"Content-heavy and SEO-driven",{"type":37,"value":1602}," — server-rendered frameworks like Next.js matter more than the language underneath.",{"type":32,"tag":33,"props":1604,"children":1605},{},[1606],{"type":37,"value":1607},"Match the tool to what your product actually does. Most products, though, are fairly ordinary web apps — and for those, the \"best\" stack is mostly the one your team knows.",{"type":32,"tag":946,"props":1609,"children":1611},{"id":1610},"_4-time-to-market",[1612],{"type":37,"value":1613},"4. Time-to-market",{"type":32,"tag":33,"props":1615,"children":1616},{},[1617],{"type":37,"value":1618},"How fast can you get a real product in front of real users? At the start, that's the metric that matters most, because every week you're not learning from users is a week of runway spent on guesses.",{"type":32,"tag":33,"props":1620,"children":1621},{},[1622],{"type":37,"value":1623},"Stacks with mature ecosystems, ready-made libraries, and good documentation get you there faster. The shiny new framework with three Stack Overflow answers does not.",{"type":32,"tag":946,"props":1625,"children":1627},{"id":1626},"_5-where-itll-hurt-to-change-later",[1628],{"type":37,"value":1629},"5. Where it'll hurt to change later",{"type":32,"tag":33,"props":1631,"children":1632},{},[1633],{"type":37,"value":1634},"Some choices are cheap to reverse. Some will cost you a rewrite. Choose carefully on the expensive ones and stop agonizing over the cheap ones — which brings us to the most useful idea in this whole post.",{"type":32,"tag":63,"props":1636,"children":1638},{"id":1637},"reversible-vs-expensive-decisions",[1639],{"type":37,"value":1640},"Reversible vs expensive decisions",{"type":32,"tag":33,"props":1642,"children":1643},{},[1644],{"type":37,"value":1645},"Treat your stack choices like a poker player treats chips: spend your deliberation budget where the stakes are real.",{"type":32,"tag":33,"props":1647,"children":1648},{},[1649,1654],{"type":32,"tag":108,"props":1650,"children":1651},{},[1652],{"type":37,"value":1653},"Cheap to reverse:",{"type":37,"value":1655}," Your CSS framework. Your component library. Your form-validation tool. Your deployment platform. Swapping any of these later is an afternoon, maybe a week. Don't lose sleep over them.",{"type":32,"tag":33,"props":1657,"children":1658},{},[1659,1664],{"type":32,"tag":108,"props":1660,"children":1661},{},[1662],{"type":37,"value":1663},"Expensive to reverse:",{"type":37,"value":1665}," Your primary backend language. Your database. Your core framework. Changing these after launch isn't a swap — it's a rewrite, and rewrites eat months you won't get back.",{"type":32,"tag":33,"props":1667,"children":1668},{},[1669],{"type":37,"value":1670},"So here's the rule: agonize over the language and the database. Pick the rest quickly and move on. The number of founders who've spent two weeks choosing a CSS framework while the expensive decisions went unexamined would surprise you.",{"type":32,"tag":63,"props":1672,"children":1674},{"id":1673},"frontend-react-vue-or-angular-the-honest-take-for-startups",[1675],{"type":37,"value":1676},"Frontend — React, Vue, or Angular (the honest take for startups)",{"type":32,"tag":33,"props":1678,"children":1679},{},[1680],{"type":37,"value":1681},"This is the matchup founders ask about most, so here's our straight read.",{"type":32,"tag":33,"props":1683,"children":1684},{},[1685,1690,1692,1698],{"type":32,"tag":108,"props":1686,"children":1687},{},[1688],{"type":37,"value":1689},"React",{"type":37,"value":1691}," has the biggest hiring pool and the deepest ecosystem of any frontend framework. Whatever you need to do, someone's built a library for it, and you can find engineers who know it almost anywhere. It's the safe default for most startups precisely because of that gravity. If you go this route, our ",{"type":32,"tag":149,"props":1693,"children":1695},{"href":1694},"/hire-react-developer/",[1696],{"type":37,"value":1697},"React team",{"type":37,"value":1699}," lives here every day.",{"type":32,"tag":33,"props":1701,"children":1702},{},[1703,1708,1710,1716],{"type":32,"tag":108,"props":1704,"children":1705},{},[1706],{"type":37,"value":1707},"Vue",{"type":37,"value":1709}," is the fastest to write readable, maintainable code, and its gentler learning curve makes it a genuine pleasure for small teams and SaaS MVPs. If you want to move fast and keep your codebase approachable, it's an excellent choice — our ",{"type":32,"tag":149,"props":1711,"children":1713},{"href":1712},"/hire-vuejs-developer/",[1714],{"type":37,"value":1715},"Vue.js engineers",{"type":37,"value":1717}," reach for it often.",{"type":32,"tag":33,"props":1719,"children":1720},{},[1721,1726,1728,1734],{"type":32,"tag":108,"props":1722,"children":1723},{},[1724],{"type":37,"value":1725},"Angular",{"type":37,"value":1727}," brings structure and convention that pay off at real enterprise scale, with large teams and complex apps. For most early startups, that structure is overkill — you're paying for guardrails you don't need yet. But if you're building something genuinely large from day one, or your team already knows it, our ",{"type":32,"tag":149,"props":1729,"children":1731},{"href":1730},"/hire-angular-developer/",[1732],{"type":37,"value":1733},"Angular team",{"type":37,"value":1735}," can tell you honestly whether it fits.",{"type":32,"tag":33,"props":1737,"children":1738},{},[1739,1741,1746,1748,1753,1755,1761],{"type":37,"value":1740},"For mobile, the cross-platform question usually comes down to ",{"type":32,"tag":108,"props":1742,"children":1743},{},[1744],{"type":37,"value":1745},"React Native",{"type":37,"value":1747}," (great if your team already knows React) or ",{"type":32,"tag":108,"props":1749,"children":1750},{},[1751],{"type":37,"value":1752},"Flutter",{"type":37,"value":1754}," (excellent UI consistency and performance). Either lets you ship both platforms from one codebase — our ",{"type":32,"tag":149,"props":1756,"children":1758},{"href":1757},"/hire-flutter-developer/",[1759],{"type":37,"value":1760},"Flutter developers",{"type":37,"value":1762}," can walk you through the trade-off for your specific app.",{"type":32,"tag":33,"props":1764,"children":1765},{},[1766],{"type":37,"value":1767},"There's no universal winner here. There's only the one that fits your team, your problem, and your hiring plan.",{"type":32,"tag":63,"props":1769,"children":1771},{"id":1770},"backend-and-database-match-the-problem-not-the-trend",[1772],{"type":37,"value":1773},"Backend and database — match the problem, not the trend",{"type":32,"tag":33,"props":1775,"children":1776},{},[1777],{"type":37,"value":1778},"Same principle, different layer.",{"type":32,"tag":220,"props":1780,"children":1781},{},[1782,1800,1818,1836],{"type":32,"tag":224,"props":1783,"children":1784},{},[1785,1790,1792,1798],{"type":32,"tag":108,"props":1786,"children":1787},{},[1788],{"type":37,"value":1789},"Node.js",{"type":37,"value":1791}," — great for realtime, fast to build with, and it lets a small team share one language across frontend and backend. Our ",{"type":32,"tag":149,"props":1793,"children":1795},{"href":1794},"/hire-nodejs-developer/",[1796],{"type":37,"value":1797},"Node.js team",{"type":37,"value":1799}," builds a lot of startup backends here.",{"type":32,"tag":224,"props":1801,"children":1802},{},[1803,1808,1810,1816],{"type":32,"tag":108,"props":1804,"children":1805},{},[1806],{"type":37,"value":1807},"Python",{"type":37,"value":1809}," — the right call for anything data- or ML-heavy, with a famously readable syntax. Our ",{"type":32,"tag":149,"props":1811,"children":1813},{"href":1812},"/hire-python-developer/",[1814],{"type":37,"value":1815},"Python developers",{"type":37,"value":1817}," reach for it when the problem leans analytical.",{"type":32,"tag":224,"props":1819,"children":1820},{},[1821,1826,1828,1834],{"type":32,"tag":108,"props":1822,"children":1823},{},[1824],{"type":37,"value":1825},"Rails",{"type":37,"value":1827}," — still one of the fastest ways to get a conventional web app shipped, with batteries included. Our ",{"type":32,"tag":149,"props":1829,"children":1831},{"href":1830},"/hire-rails-developer/",[1832],{"type":37,"value":1833},"Rails team",{"type":37,"value":1835}," loves it for exactly that.",{"type":32,"tag":224,"props":1837,"children":1838},{},[1839,1844,1846,1852],{"type":32,"tag":108,"props":1840,"children":1841},{},[1842],{"type":37,"value":1843},".NET",{"type":37,"value":1845}," — a strong, mature choice if your team or enterprise context already lives in the Microsoft world. Our ",{"type":32,"tag":149,"props":1847,"children":1849},{"href":1848},"/hire-dotnet-developer/",[1850],{"type":37,"value":1851},".NET engineers",{"type":37,"value":1853}," can tell you when it's the right home.",{"type":32,"tag":33,"props":1855,"children":1856},{},[1857,1859,1864,1866,1871,1873,1878],{"type":37,"value":1858},"For your database, ",{"type":32,"tag":108,"props":1860,"children":1861},{},[1862],{"type":37,"value":1863},"PostgreSQL is the sane default",{"type":37,"value":1865}," for most products. It's reliable, it scales further than most startups will ever need, and it handles structured and semi-structured data gracefully. Reach for ",{"type":32,"tag":108,"props":1867,"children":1868},{},[1869],{"type":37,"value":1870},"MongoDB",{"type":37,"value":1872}," when your data is genuinely document-shaped and schema-flexible, and add ",{"type":32,"tag":108,"props":1874,"children":1875},{},[1876],{"type":37,"value":1877},"Redis",{"type":37,"value":1879}," when you need fast caching or session storage. But start with Postgres unless you have a specific reason not to — \"I read Mongo is web-scale\" is not a reason.",{"type":32,"tag":63,"props":1881,"children":1883},{"id":1882},"the-two-stage-answer",[1884],{"type":37,"value":1885},"The two-stage answer",{"type":32,"tag":33,"props":1887,"children":1888},{},[1889],{"type":37,"value":1890},"Here's the reframe that resolves most of the anxiety: your stack decision isn't one decision. It's two, at two different stages.",{"type":32,"tag":33,"props":1892,"children":1893},{},[1894,1899],{"type":32,"tag":108,"props":1895,"children":1896},{},[1897],{"type":37,"value":1898},"At MVP stage",{"type":37,"value":1900},", optimize for shipping. Use what your team knows. Pick mature, well-documented tools. Get a real product in front of real users as fast as you honestly can. Your goal here is learning, not perfection.",{"type":32,"tag":33,"props":1902,"children":1903},{},[1904,1909,1911,1917],{"type":32,"tag":108,"props":1905,"children":1906},{},[1907],{"type":37,"value":1908},"At scale stage",{"type":37,"value":1910},", the questions change. Now you're optimizing for the team you'll hire, the load you'll carry, and the parts of your architecture that have started to strain. That's a real moment, and it deserves its own thinking — we've written about exactly ",{"type":32,"tag":149,"props":1912,"children":1914},{"href":1913},"/blog/scale-mvp-to-product/",[1915],{"type":37,"value":1916},"when and how to scale your MVP into a real product",{"type":37,"value":1918}," when you get there.",{"type":32,"tag":33,"props":1920,"children":1921},{},[1922],{"type":37,"value":1923},"The mistake is trying to make the scale-stage decision at the MVP stage. You don't have the information yet, and you'll over-engineer for a future you can't predict. Build for where you are. Re-evaluate when you've earned the right to.",{"type":32,"tag":63,"props":1925,"children":1927},{"id":1926},"before-you-choose-scope-it-then-build-it",[1928],{"type":37,"value":1929},"Before you choose: scope it, then build it",{"type":32,"tag":33,"props":1931,"children":1932},{},[1933],{"type":37,"value":1934},"Two things bracket the stack decision, and both deserve a moment.",{"type":32,"tag":33,"props":1936,"children":1937},{},[1938,1940,1944,1946,1951],{"type":37,"value":1939},"Before you pick a stack, get clear on ",{"type":32,"tag":40,"props":1941,"children":1942},{},[1943],{"type":37,"value":73},{"type":37,"value":1945}," you're building. A tight, ruthlessly scoped first version makes the stack choice almost obvious — and an unscoped wishlist makes every choice feel high-stakes. If you haven't done this yet, start with ",{"type":32,"tag":149,"props":1947,"children":1948},{"href":723},[1949],{"type":37,"value":1950},"how to scope a software project",{"type":37,"value":46},{"type":32,"tag":33,"props":1953,"children":1954},{},[1955,1957,1963],{"type":37,"value":1956},"After you choose, there's the actual build. If you want to see how a disciplined MVP comes together once the stack is settled, here's ",{"type":32,"tag":149,"props":1958,"children":1960},{"href":1959},"/blog/mvp-development-process/",[1961],{"type":37,"value":1962},"our MVP development process",{"type":37,"value":46},{"type":32,"tag":63,"props":1965,"children":1967},{"id":1966},"when-to-get-help-choosing",[1968],{"type":37,"value":1969},"When to get help choosing",{"type":32,"tag":33,"props":1971,"children":1972},{},[1973],{"type":37,"value":1974},"You don't need a CTO to make this call. The five factors above will get you most of the way, and honestly, most founders land in a reasonable place on their own.",{"type":32,"tag":33,"props":1976,"children":1977},{},[1978],{"type":37,"value":1979},"But a second honest opinion helps — especially if you're non-technical and the stakes feel high. The thing to watch for: make sure the person advising you doesn't have a reason to push one answer. An agency that only does React will, funnily enough, conclude you need React.",{"type":32,"tag":33,"props":1981,"children":1982},{},[1983,1985,1989],{"type":37,"value":1984},"When we sit down with founders on this, we start with your team, your problem, and your hiring plan — not with a stack we're hoping to sell you. We built ",{"type":32,"tag":149,"props":1986,"children":1987},{"href":703},[1988],{"type":37,"value":706},{"type":37,"value":1990},", our own SaaS product, which means we've made these calls from the founder's seat, not just the vendor's. Sometimes our honest read is \"what you've got is fine — just start building.\"",{"type":32,"tag":33,"props":1992,"children":1993},{},[1994],{"type":37,"value":1995},"That's the kind of advice that's hard to find when everyone giving it has a stack to sell.",{"type":32,"tag":63,"props":1997,"children":1998},{"id":731},[1999],{"type":37,"value":734},{"type":32,"tag":33,"props":2001,"children":2002},{},[2003],{"type":37,"value":2004},"Choose your stack on fit, not hype. Lead with your team's skills and your hiring pool — those matter more than any benchmark. Match the tool to your problem, optimize for shipping at the MVP stage, and save your real deliberation for the expensive-to-reverse choices: your language and your database. Everything else, decide quickly and move on.",{"type":32,"tag":33,"props":2006,"children":2007},{},[2008],{"type":37,"value":2009},"Then go build the thing that actually matters: a product people want.",{"type":32,"tag":746,"props":2011,"children":2012},{},[],{"type":32,"tag":33,"props":2014,"children":2015},{},[2016,2021,2023],{"type":32,"tag":108,"props":2017,"children":2018},{},[2019],{"type":37,"value":2020},"Not sure which stack fits your product and your team?",{"type":37,"value":2022}," Let's talk it through — no pitch, just an honest read. ",{"type":32,"tag":149,"props":2024,"children":2025},{"href":761},[2026],{"type":37,"value":764},{"title":7,"searchDepth":766,"depth":766,"links":2028},[2029,2030,2037,2038,2039,2040,2041,2042,2043],{"id":1462,"depth":766,"text":1465},{"id":1488,"depth":766,"text":1491,"children":2031},[2032,2033,2034,2035,2036],{"id":1499,"depth":1400,"text":1502},{"id":1520,"depth":1400,"text":1523},{"id":1551,"depth":1400,"text":1554},{"id":1610,"depth":1400,"text":1613},{"id":1626,"depth":1400,"text":1629},{"id":1637,"depth":766,"text":1640},{"id":1673,"depth":766,"text":1676},{"id":1770,"depth":766,"text":1773},{"id":1882,"depth":766,"text":1885},{"id":1926,"depth":766,"text":1929},{"id":1966,"depth":766,"text":1969},{"id":731,"depth":766,"text":734},"content:blog:how-to-choose-a-tech-stack.md","blog/how-to-choose-a-tech-stack.md","blog/how-to-choose-a-tech-stack",[2048,2522,2979,3427],{"_path":1416,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1417,"description":1418,"topic":10,"author":11,"authorProfile":12,"coverImg":1419,"coverImgAlt":1420,"published":15,"toc":15,"readingTime":16,"createdAt":1421,"updatedAt":1421,"keywords":2049,"body":2050,"_type":778,"_id":2044,"_source":780,"_file":2045,"_stem":2046,"_extension":783},[1423,1424,1425,1426,1427,1428,1429,1430],{"type":29,"children":2051,"toc":2505},[2052,2056,2060,2064,2073,2077,2081,2090,2094,2098,2102,2106,2110,2114,2118,2122,2126,2134,2138,2142,2146,2150,2185,2189,2193,2197,2201,2205,2209,2213,2217,2225,2233,2237,2241,2245,2258,2271,2284,2303,2307,2311,2315,2370,2389,2393,2397,2405,2418,2422,2426,2430,2444,2453,2457,2461,2465,2474,2478,2482,2486,2490,2493],{"type":32,"tag":33,"props":2053,"children":2054},{},[2055],{"type":37,"value":1437},{"type":32,"tag":33,"props":2057,"children":2058},{},[2059],{"type":37,"value":1442},{"type":32,"tag":33,"props":2061,"children":2062},{},[2063],{"type":37,"value":1447},{"type":32,"tag":33,"props":2065,"children":2066},{},[2067,2068,2072],{"type":37,"value":1452},{"type":32,"tag":40,"props":2069,"children":2070},{},[2071],{"type":37,"value":1457},{"type":37,"value":1459},{"type":32,"tag":63,"props":2074,"children":2075},{"id":1462},[2076],{"type":37,"value":1465},{"type":32,"tag":33,"props":2078,"children":2079},{},[2080],{"type":37,"value":1470},{"type":32,"tag":33,"props":2082,"children":2083},{},[2084,2085,2089],{"type":37,"value":1475},{"type":32,"tag":40,"props":2086,"children":2087},{},[2088],{"type":37,"value":145},{"type":37,"value":46},{"type":32,"tag":33,"props":2091,"children":2092},{},[2093],{"type":37,"value":1485},{"type":32,"tag":63,"props":2095,"children":2096},{"id":1488},[2097],{"type":37,"value":1491},{"type":32,"tag":33,"props":2099,"children":2100},{},[2101],{"type":37,"value":1496},{"type":32,"tag":946,"props":2103,"children":2104},{"id":1499},[2105],{"type":37,"value":1502},{"type":32,"tag":33,"props":2107,"children":2108},{},[2109],{"type":37,"value":1507},{"type":32,"tag":33,"props":2111,"children":2112},{},[2113],{"type":37,"value":1512},{"type":32,"tag":33,"props":2115,"children":2116},{},[2117],{"type":37,"value":1517},{"type":32,"tag":946,"props":2119,"children":2120},{"id":1520},[2121],{"type":37,"value":1523},{"type":32,"tag":33,"props":2123,"children":2124},{},[2125],{"type":37,"value":1528},{"type":32,"tag":33,"props":2127,"children":2128},{},[2129,2130],{"type":37,"value":1533},{"type":32,"tag":40,"props":2131,"children":2132},{},[2133],{"type":37,"value":1538},{"type":32,"tag":33,"props":2135,"children":2136},{},[2137],{"type":37,"value":1543},{"type":32,"tag":33,"props":2139,"children":2140},{},[2141],{"type":37,"value":1548},{"type":32,"tag":946,"props":2143,"children":2144},{"id":1551},[2145],{"type":37,"value":1554},{"type":32,"tag":33,"props":2147,"children":2148},{},[2149],{"type":37,"value":1559},{"type":32,"tag":220,"props":2151,"children":2152},{},[2153,2161,2169,2177],{"type":32,"tag":224,"props":2154,"children":2155},{},[2156,2160],{"type":32,"tag":108,"props":2157,"children":2158},{},[2159],{"type":37,"value":1570},{"type":37,"value":1572},{"type":32,"tag":224,"props":2162,"children":2163},{},[2164,2168],{"type":32,"tag":108,"props":2165,"children":2166},{},[2167],{"type":37,"value":1580},{"type":37,"value":1582},{"type":32,"tag":224,"props":2170,"children":2171},{},[2172,2176],{"type":32,"tag":108,"props":2173,"children":2174},{},[2175],{"type":37,"value":1590},{"type":37,"value":1592},{"type":32,"tag":224,"props":2178,"children":2179},{},[2180,2184],{"type":32,"tag":108,"props":2181,"children":2182},{},[2183],{"type":37,"value":1600},{"type":37,"value":1602},{"type":32,"tag":33,"props":2186,"children":2187},{},[2188],{"type":37,"value":1607},{"type":32,"tag":946,"props":2190,"children":2191},{"id":1610},[2192],{"type":37,"value":1613},{"type":32,"tag":33,"props":2194,"children":2195},{},[2196],{"type":37,"value":1618},{"type":32,"tag":33,"props":2198,"children":2199},{},[2200],{"type":37,"value":1623},{"type":32,"tag":946,"props":2202,"children":2203},{"id":1626},[2204],{"type":37,"value":1629},{"type":32,"tag":33,"props":2206,"children":2207},{},[2208],{"type":37,"value":1634},{"type":32,"tag":63,"props":2210,"children":2211},{"id":1637},[2212],{"type":37,"value":1640},{"type":32,"tag":33,"props":2214,"children":2215},{},[2216],{"type":37,"value":1645},{"type":32,"tag":33,"props":2218,"children":2219},{},[2220,2224],{"type":32,"tag":108,"props":2221,"children":2222},{},[2223],{"type":37,"value":1653},{"type":37,"value":1655},{"type":32,"tag":33,"props":2226,"children":2227},{},[2228,2232],{"type":32,"tag":108,"props":2229,"children":2230},{},[2231],{"type":37,"value":1663},{"type":37,"value":1665},{"type":32,"tag":33,"props":2234,"children":2235},{},[2236],{"type":37,"value":1670},{"type":32,"tag":63,"props":2238,"children":2239},{"id":1673},[2240],{"type":37,"value":1676},{"type":32,"tag":33,"props":2242,"children":2243},{},[2244],{"type":37,"value":1681},{"type":32,"tag":33,"props":2246,"children":2247},{},[2248,2252,2253,2257],{"type":32,"tag":108,"props":2249,"children":2250},{},[2251],{"type":37,"value":1689},{"type":37,"value":1691},{"type":32,"tag":149,"props":2254,"children":2255},{"href":1694},[2256],{"type":37,"value":1697},{"type":37,"value":1699},{"type":32,"tag":33,"props":2259,"children":2260},{},[2261,2265,2266,2270],{"type":32,"tag":108,"props":2262,"children":2263},{},[2264],{"type":37,"value":1707},{"type":37,"value":1709},{"type":32,"tag":149,"props":2267,"children":2268},{"href":1712},[2269],{"type":37,"value":1715},{"type":37,"value":1717},{"type":32,"tag":33,"props":2272,"children":2273},{},[2274,2278,2279,2283],{"type":32,"tag":108,"props":2275,"children":2276},{},[2277],{"type":37,"value":1725},{"type":37,"value":1727},{"type":32,"tag":149,"props":2280,"children":2281},{"href":1730},[2282],{"type":37,"value":1733},{"type":37,"value":1735},{"type":32,"tag":33,"props":2285,"children":2286},{},[2287,2288,2292,2293,2297,2298,2302],{"type":37,"value":1740},{"type":32,"tag":108,"props":2289,"children":2290},{},[2291],{"type":37,"value":1745},{"type":37,"value":1747},{"type":32,"tag":108,"props":2294,"children":2295},{},[2296],{"type":37,"value":1752},{"type":37,"value":1754},{"type":32,"tag":149,"props":2299,"children":2300},{"href":1757},[2301],{"type":37,"value":1760},{"type":37,"value":1762},{"type":32,"tag":33,"props":2304,"children":2305},{},[2306],{"type":37,"value":1767},{"type":32,"tag":63,"props":2308,"children":2309},{"id":1770},[2310],{"type":37,"value":1773},{"type":32,"tag":33,"props":2312,"children":2313},{},[2314],{"type":37,"value":1778},{"type":32,"tag":220,"props":2316,"children":2317},{},[2318,2331,2344,2357],{"type":32,"tag":224,"props":2319,"children":2320},{},[2321,2325,2326,2330],{"type":32,"tag":108,"props":2322,"children":2323},{},[2324],{"type":37,"value":1789},{"type":37,"value":1791},{"type":32,"tag":149,"props":2327,"children":2328},{"href":1794},[2329],{"type":37,"value":1797},{"type":37,"value":1799},{"type":32,"tag":224,"props":2332,"children":2333},{},[2334,2338,2339,2343],{"type":32,"tag":108,"props":2335,"children":2336},{},[2337],{"type":37,"value":1807},{"type":37,"value":1809},{"type":32,"tag":149,"props":2340,"children":2341},{"href":1812},[2342],{"type":37,"value":1815},{"type":37,"value":1817},{"type":32,"tag":224,"props":2345,"children":2346},{},[2347,2351,2352,2356],{"type":32,"tag":108,"props":2348,"children":2349},{},[2350],{"type":37,"value":1825},{"type":37,"value":1827},{"type":32,"tag":149,"props":2353,"children":2354},{"href":1830},[2355],{"type":37,"value":1833},{"type":37,"value":1835},{"type":32,"tag":224,"props":2358,"children":2359},{},[2360,2364,2365,2369],{"type":32,"tag":108,"props":2361,"children":2362},{},[2363],{"type":37,"value":1843},{"type":37,"value":1845},{"type":32,"tag":149,"props":2366,"children":2367},{"href":1848},[2368],{"type":37,"value":1851},{"type":37,"value":1853},{"type":32,"tag":33,"props":2371,"children":2372},{},[2373,2374,2378,2379,2383,2384,2388],{"type":37,"value":1858},{"type":32,"tag":108,"props":2375,"children":2376},{},[2377],{"type":37,"value":1863},{"type":37,"value":1865},{"type":32,"tag":108,"props":2380,"children":2381},{},[2382],{"type":37,"value":1870},{"type":37,"value":1872},{"type":32,"tag":108,"props":2385,"children":2386},{},[2387],{"type":37,"value":1877},{"type":37,"value":1879},{"type":32,"tag":63,"props":2390,"children":2391},{"id":1882},[2392],{"type":37,"value":1885},{"type":32,"tag":33,"props":2394,"children":2395},{},[2396],{"type":37,"value":1890},{"type":32,"tag":33,"props":2398,"children":2399},{},[2400,2404],{"type":32,"tag":108,"props":2401,"children":2402},{},[2403],{"type":37,"value":1898},{"type":37,"value":1900},{"type":32,"tag":33,"props":2406,"children":2407},{},[2408,2412,2413,2417],{"type":32,"tag":108,"props":2409,"children":2410},{},[2411],{"type":37,"value":1908},{"type":37,"value":1910},{"type":32,"tag":149,"props":2414,"children":2415},{"href":1913},[2416],{"type":37,"value":1916},{"type":37,"value":1918},{"type":32,"tag":33,"props":2419,"children":2420},{},[2421],{"type":37,"value":1923},{"type":32,"tag":63,"props":2423,"children":2424},{"id":1926},[2425],{"type":37,"value":1929},{"type":32,"tag":33,"props":2427,"children":2428},{},[2429],{"type":37,"value":1934},{"type":32,"tag":33,"props":2431,"children":2432},{},[2433,2434,2438,2439,2443],{"type":37,"value":1939},{"type":32,"tag":40,"props":2435,"children":2436},{},[2437],{"type":37,"value":73},{"type":37,"value":1945},{"type":32,"tag":149,"props":2440,"children":2441},{"href":723},[2442],{"type":37,"value":1950},{"type":37,"value":46},{"type":32,"tag":33,"props":2445,"children":2446},{},[2447,2448,2452],{"type":37,"value":1956},{"type":32,"tag":149,"props":2449,"children":2450},{"href":1959},[2451],{"type":37,"value":1962},{"type":37,"value":46},{"type":32,"tag":63,"props":2454,"children":2455},{"id":1966},[2456],{"type":37,"value":1969},{"type":32,"tag":33,"props":2458,"children":2459},{},[2460],{"type":37,"value":1974},{"type":32,"tag":33,"props":2462,"children":2463},{},[2464],{"type":37,"value":1979},{"type":32,"tag":33,"props":2466,"children":2467},{},[2468,2469,2473],{"type":37,"value":1984},{"type":32,"tag":149,"props":2470,"children":2471},{"href":703},[2472],{"type":37,"value":706},{"type":37,"value":1990},{"type":32,"tag":33,"props":2475,"children":2476},{},[2477],{"type":37,"value":1995},{"type":32,"tag":63,"props":2479,"children":2480},{"id":731},[2481],{"type":37,"value":734},{"type":32,"tag":33,"props":2483,"children":2484},{},[2485],{"type":37,"value":2004},{"type":32,"tag":33,"props":2487,"children":2488},{},[2489],{"type":37,"value":2009},{"type":32,"tag":746,"props":2491,"children":2492},{},[],{"type":32,"tag":33,"props":2494,"children":2495},{},[2496,2500,2501],{"type":32,"tag":108,"props":2497,"children":2498},{},[2499],{"type":37,"value":2020},{"type":37,"value":2022},{"type":32,"tag":149,"props":2502,"children":2503},{"href":761},[2504],{"type":37,"value":764},{"title":7,"searchDepth":766,"depth":766,"links":2506},[2507,2508,2515,2516,2517,2518,2519,2520,2521],{"id":1462,"depth":766,"text":1465},{"id":1488,"depth":766,"text":1491,"children":2509},[2510,2511,2512,2513,2514],{"id":1499,"depth":1400,"text":1502},{"id":1520,"depth":1400,"text":1523},{"id":1551,"depth":1400,"text":1554},{"id":1610,"depth":1400,"text":1613},{"id":1626,"depth":1400,"text":1629},{"id":1637,"depth":766,"text":1640},{"id":1673,"depth":766,"text":1676},{"id":1770,"depth":766,"text":1773},{"id":1882,"depth":766,"text":1885},{"id":1926,"depth":766,"text":1929},{"id":1966,"depth":766,"text":1969},{"id":731,"depth":766,"text":734},{"_path":2523,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2524,"description":2525,"topic":2526,"author":11,"authorProfile":12,"coverImg":2527,"coverImgAlt":2528,"published":15,"toc":15,"readingTime":16,"createdAt":2529,"updatedAt":2529,"keywords":2530,"body":2539,"_type":778,"_id":2976,"_source":780,"_file":2977,"_stem":2978,"_extension":783},"/blog/scale-mvp-to-product","When (and How) to Scale Your MVP Into a Real Product","Your MVP worked, and now the pressure is to scale. Here's how to know it's the right moment — and how to scale without a rewrite.","MVP Development","/images/blog/scale-mvp-to-product.webp","When and how to scale your MVP into a real product — the honest signals and the path","2026-06-15",[2531,2532,2533,2534,2535,2536,2537,2538],"how to scale an MVP to a full product","when to scale an MVP","MVP to production","signs your MVP is ready to scale","scaling an MVP","from MVP to scale","what changes when you scale an app","MVP technical debt scaling",{"type":29,"children":2540,"toc":2966},[2541,2552,2557,2562,2568,2573,2583,2593,2605,2611,2616,2659,2672,2678,2683,2753,2759,2764,2769,2774,2786,2792,2797,2810,2815,2820,2826,2831,2836,2841,2874,2879,2885,2929,2934,2938,2943,2948,2951],{"type":32,"tag":33,"props":2542,"children":2543},{},[2544,2546,2551],{"type":37,"value":2545},"The MVP worked. People are using it, some are paying, and the graphs are pointing up. Now everyone around you — investors, advisors, your own ambition — is saying the same word: ",{"type":32,"tag":40,"props":2547,"children":2548},{},[2549],{"type":37,"value":2550},"scale",{"type":37,"value":46},{"type":32,"tag":33,"props":2553,"children":2554},{},[2555],{"type":37,"value":2556},"It's a thrilling moment and a dangerous one. Because scaling at the wrong time, or with the wrong team, can burn the very runway your traction just earned you. We've watched founders pour their first real money into \"scaling\" before the product was ready to carry it, and end up worse off than when they had a scrappy MVP and a clear head.",{"type":32,"tag":33,"props":2558,"children":2559},{},[2560],{"type":37,"value":2561},"So let's slow down for a second. Scaling is not a reward you claim the moment you get traction. It's a decision with a right time and a wrong time. Here's how to tell which one you're in — and how to scale without setting fire to what's working.",{"type":32,"tag":63,"props":2563,"children":2565},{"id":2564},"two-reasons-people-scale-only-one-is-right",[2566],{"type":37,"value":2567},"Two reasons people scale — only one is right",{"type":32,"tag":33,"props":2569,"children":2570},{},[2571],{"type":37,"value":2572},"When founders decide to scale, the reason usually falls into one of two buckets. Be honest with yourself about which one you're in.",{"type":32,"tag":33,"props":2574,"children":2575},{},[2576,2581],{"type":32,"tag":108,"props":2577,"children":2578},{},[2579],{"type":37,"value":2580},"The right reason: real demand.",{"type":37,"value":2582}," Users are showing up faster than you can serve them. Retention is holding. People are hitting the limits of what your MVP can do and asking for more. The product has found something real, and the constraint on growth is now your product and infrastructure, not your market. This is the moment scaling exists for.",{"type":32,"tag":33,"props":2584,"children":2585},{},[2586,2591],{"type":32,"tag":108,"props":2587,"children":2588},{},[2589],{"type":37,"value":2590},"The wrong reason: optics.",{"type":37,"value":2592}," You want to look bigger than you are. An investor mentioned \"scale\" and now it's lodged in your head. You're afraid that a simple, working MVP makes you look unserious. None of these are about your users — they're about how you feel, or how you think you're being perceived. Scaling for optics spends real money to solve an imaginary problem.",{"type":32,"tag":33,"props":2594,"children":2595},{},[2596,2598,2603],{"type":37,"value":2597},"The test is simple: ",{"type":32,"tag":40,"props":2599,"children":2600},{},[2601],{"type":37,"value":2602},"would you scale this if no one were watching?",{"type":37,"value":2604}," If the honest answer is \"yes, because users are pushing the limits,\" go. If it's \"well, it would look better,\" wait.",{"type":32,"tag":63,"props":2606,"children":2608},{"id":2607},"the-readiness-signals-that-actually-mean-scale-now",[2609],{"type":37,"value":2610},"The readiness signals that actually mean \"scale now\"",{"type":32,"tag":33,"props":2612,"children":2613},{},[2614],{"type":37,"value":2615},"Feelings aside, here are the concrete signals that you're genuinely ready:",{"type":32,"tag":220,"props":2617,"children":2618},{},[2619,2629,2639,2649],{"type":32,"tag":224,"props":2620,"children":2621},{},[2622,2627],{"type":32,"tag":108,"props":2623,"children":2624},{},[2625],{"type":37,"value":2626},"Retention is stable.",{"type":37,"value":2628}," People come back. If users churn out as fast as they arrive, scaling just pours more water into a leaky bucket — you'll spend more to lose more. Fix retention first.",{"type":32,"tag":224,"props":2630,"children":2631},{},[2632,2637],{"type":32,"tag":108,"props":2633,"children":2634},{},[2635],{"type":37,"value":2636},"Demand is outpacing capacity.",{"type":37,"value":2638}," You're turning people away, capping signups, or watching the product strain under load you actually have. Not load you imagine — load you're measuring.",{"type":32,"tag":224,"props":2640,"children":2641},{},[2642,2647],{"type":32,"tag":108,"props":2643,"children":2644},{},[2645],{"type":37,"value":2646},"Your technical limits come from growth, not poor early choices.",{"type":37,"value":2648}," This is a crucial distinction. If things are slow because thousands of real users are hitting the system, that's a scaling problem worth solving. If things are slow because the MVP was built carelessly, that's a quality problem — fix the foundation before you pile more on it.",{"type":32,"tag":224,"props":2650,"children":2651},{},[2652,2657],{"type":32,"tag":108,"props":2653,"children":2654},{},[2655],{"type":37,"value":2656},"Acquisition is repeatable.",{"type":37,"value":2658}," You know where your users come from and you can get more on demand. If growth so far has been luck or one viral moment, scaling the product won't manufacture more of it.",{"type":32,"tag":33,"props":2660,"children":2661},{},[2662,2664,2670],{"type":37,"value":2663},"If most of these are true, you've earned the right to scale. If they're not, the most valuable thing you can do is keep refining the MVP until they are. (And if you're earlier than you think — still unsure the core idea holds — it's worth revisiting ",{"type":32,"tag":149,"props":2665,"children":2667},{"href":2666},"/blog/when-not-to-build-an-mvp/",[2668],{"type":37,"value":2669},"when not to build at all",{"type":37,"value":2671},", the much earlier gate.)",{"type":32,"tag":63,"props":2673,"children":2675},{"id":2674},"what-actually-changes-when-you-scale",[2676],{"type":37,"value":2677},"What actually changes when you scale",{"type":32,"tag":33,"props":2679,"children":2680},{},[2681],{"type":37,"value":2682},"\"Scaling\" sounds like one thing. It's actually several, and they hit at once. Here's what genuinely changes from MVP to real product:",{"type":32,"tag":220,"props":2684,"children":2685},{},[2686,2696,2706,2716,2733,2743],{"type":32,"tag":224,"props":2687,"children":2688},{},[2689,2694],{"type":32,"tag":108,"props":2690,"children":2691},{},[2692],{"type":37,"value":2693},"Architecture.",{"type":37,"value":2695}," The simple structure that got you here — usually a single, sensible monolith — may need hardening. That rarely means tearing it apart into microservices on day one; more often it means strengthening the parts that bear the most weight.",{"type":32,"tag":224,"props":2697,"children":2698},{},[2699,2704],{"type":32,"tag":108,"props":2700,"children":2701},{},[2702],{"type":37,"value":2703},"Data and performance.",{"type":37,"value":2705}," Queries that were instant on a thousand rows crawl on a million. You'll need indexing, caching, and a database that's been set up to grow. This is where early shortcuts come due.",{"type":32,"tag":224,"props":2707,"children":2708},{},[2709,2714],{"type":32,"tag":108,"props":2710,"children":2711},{},[2712],{"type":37,"value":2713},"Release process.",{"type":37,"value":2715}," Shipping by hand was fine when it was just you. With users depending on uptime, you need real CI/CD — automated tests, safe deploys, the ability to roll back fast when something breaks.",{"type":32,"tag":224,"props":2717,"children":2718},{},[2719,2724,2726,2731],{"type":32,"tag":108,"props":2720,"children":2721},{},[2722],{"type":37,"value":2723},"Observability.",{"type":37,"value":2725}," At MVP stage you find out something's broken when a user emails you. At scale you need monitoring and alerting that tells you ",{"type":32,"tag":40,"props":2727,"children":2728},{},[2729],{"type":37,"value":2730},"before",{"type":37,"value":2732}," they do.",{"type":32,"tag":224,"props":2734,"children":2735},{},[2736,2741],{"type":32,"tag":108,"props":2737,"children":2738},{},[2739],{"type":37,"value":2740},"Security.",{"type":37,"value":2742}," More users, more data, more attention — and more responsibility. Security that was \"good enough\" for a hundred friendly users isn't good enough for ten thousand strangers.",{"type":32,"tag":224,"props":2744,"children":2745},{},[2746,2751],{"type":32,"tag":108,"props":2747,"children":2748},{},[2749],{"type":37,"value":2750},"And the part everyone forgets: the team.",{"type":37,"value":2752}," Which deserves its own section.",{"type":32,"tag":63,"props":2754,"children":2756},{"id":2755},"the-team-transition-nobody-warns-you-about",[2757],{"type":37,"value":2758},"The team transition nobody warns you about",{"type":32,"tag":33,"props":2760,"children":2761},{},[2762],{"type":37,"value":2763},"Here's the hard truth that doesn't make it into the celebratory blog posts: the team that built your MVP often can't scale it. And that's not a knock on them.",{"type":32,"tag":33,"props":2765,"children":2766},{},[2767],{"type":37,"value":2768},"A freelancer, a no-code build, or a scrappy one-or-two-person team is exactly right for getting a validated product into the world fast. Those are different muscles from the ones scaling demands — architecture under load, reliability, security, the discipline of building something dozens of engineers and thousands of users will depend on. Being brilliant at the first doesn't make you wrong; it just doesn't automatically make you ready for the second.",{"type":32,"tag":33,"props":2770,"children":2771},{},[2772],{"type":37,"value":2773},"So the honest version: sometimes you scale with the team you have, growing their capabilities alongside the product. Sometimes you need different muscle for this stage. Often it's both — you keep the people who know the product cold and add the strength the product now needs.",{"type":32,"tag":33,"props":2775,"children":2776},{},[2777,2779,2784],{"type":37,"value":2778},"This is exactly where having a partner who ",{"type":32,"tag":40,"props":2780,"children":2781},{},[2782],{"type":37,"value":2783},"stays",{"type":37,"value":2785}," matters. Not someone who shows up, ships a thing, and vanishes — but a team that's there through the messy transition, that knows your product's history because they lived part of it, and that grows with you rather than handing you off. That continuity is worth more at this stage than almost anything else.",{"type":32,"tag":63,"props":2787,"children":2789},{"id":2788},"what-scaling-actually-looked-like-the-eitoss-story",[2790],{"type":37,"value":2791},"What scaling actually looked like — the Eitoss story",{"type":32,"tag":33,"props":2793,"children":2794},{},[2795],{"type":37,"value":2796},"We don't want to leave this abstract, so here's a real one.",{"type":32,"tag":33,"props":2798,"children":2799},{},[2800,2802,2808],{"type":37,"value":2801},"We shipped ",{"type":32,"tag":149,"props":2803,"children":2805},{"href":2804},"/case-studies/eitoss/",[2806],{"type":37,"value":2807},"Eitoss",{"type":37,"value":2809},"'s MVP in three months. It was focused, it was fast, and it was built to prove the core idea — not to handle a million users on day one. The MVP did its job: it worked, it earned belief, and the team raised funding on the back of it.",{"type":32,"tag":33,"props":2811,"children":2812},{},[2813],{"type":37,"value":2814},"Then came the scaling moment. And here's the part that matters: we didn't disappear after delivery and leave them to figure out the hard stage alone. We stayed. More than two years later, we're still building together — through the architecture hardening, the team growth, the steady climb from \"it works\" to \"it works for everyone, reliably.\"",{"type":32,"tag":33,"props":2816,"children":2817},{},[2818],{"type":37,"value":2819},"That's the arc we believe in. The MVP and the scale-up aren't two separate jobs handed between two separate teams. They're one journey, and the partner who walked the first mile with you is the one who knows where the road goes next.",{"type":32,"tag":63,"props":2821,"children":2823},{"id":2822},"how-to-scale-without-a-rewrite",[2824],{"type":37,"value":2825},"How to scale without a rewrite",{"type":32,"tag":33,"props":2827,"children":2828},{},[2829],{"type":37,"value":2830},"The single most expensive mistake at this stage is the \"burn it down and rebuild\" instinct. Something's slow or messy, and the temptation is to throw it all away and start clean.",{"type":32,"tag":33,"props":2832,"children":2833},{},[2834],{"type":37,"value":2835},"Resist it. A full rewrite means months where you ship nothing new while you rebuild what you already had — and the new version usually arrives with fresh bugs and missed edge cases the old one had quietly solved. Plenty of products have died mid-rewrite.",{"type":32,"tag":33,"props":2837,"children":2838},{},[2839],{"type":37,"value":2840},"The better path is to scale incrementally:",{"type":32,"tag":220,"props":2842,"children":2843},{},[2844,2854,2864],{"type":32,"tag":224,"props":2845,"children":2846},{},[2847,2852],{"type":32,"tag":108,"props":2848,"children":2849},{},[2850],{"type":37,"value":2851},"Harden, don't replace.",{"type":37,"value":2853}," Strengthen the parts under the most strain. Most of your MVP is probably fine.",{"type":32,"tag":224,"props":2855,"children":2856},{},[2857,2862],{"type":32,"tag":108,"props":2858,"children":2859},{},[2860],{"type":37,"value":2861},"Refactor the load-bearing pieces.",{"type":37,"value":2863}," Identify the few components that actually buckle under growth and improve those specifically, while the rest keeps running.",{"type":32,"tag":224,"props":2865,"children":2866},{},[2867,2872],{"type":32,"tag":108,"props":2868,"children":2869},{},[2870],{"type":37,"value":2871},"Keep the product alive and shipping.",{"type":37,"value":2873}," Improvements should land continuously. Users should feel things getting faster and steadier — not watch the product stand still for a quarter.",{"type":32,"tag":33,"props":2875,"children":2876},{},[2877],{"type":37,"value":2878},"A careful, incremental scale-up keeps your momentum and your runway intact. A panicked rewrite risks both.",{"type":32,"tag":63,"props":2880,"children":2882},{"id":2881},"where-this-fits",[2883],{"type":37,"value":2884},"Where this fits",{"type":32,"tag":33,"props":2886,"children":2887},{},[2888,2890,2895,2897,2902,2903,2907,2909,2913,2914,2919,2921,2927],{"type":37,"value":2889},"Scaling is the ",{"type":32,"tag":40,"props":2891,"children":2892},{},[2893],{"type":37,"value":2894},"after",{"type":37,"value":2896}," of the MVP story. If you're earlier in the journey, the rest of the path is worth knowing: ",{"type":32,"tag":149,"props":2898,"children":2899},{"href":1959},[2900],{"type":37,"value":2901},"how we build an MVP in the first place",{"type":37,"value":339},{"type":32,"tag":149,"props":2904,"children":2905},{"href":528},[2906],{"type":37,"value":531},{"type":37,"value":2908}," so the numbers don't surprise you. When you do reach the scaling stage and need more hands, that can mean ",{"type":32,"tag":149,"props":2910,"children":2911},{"href":342},[2912],{"type":37,"value":345},{"type":37,"value":612},{"type":32,"tag":149,"props":2915,"children":2916},{"href":326},[2917],{"type":37,"value":2918},"embedding engineers into your team",{"type":37,"value":2920}," — the way ",{"type":32,"tag":149,"props":2922,"children":2924},{"href":2923},"/case-studies/performline/",[2925],{"type":37,"value":2926},"PerformLine",{"type":37,"value":2928}," grew with us from one engineer to more than eight over two years.",{"type":32,"tag":33,"props":2930,"children":2931},{},[2932],{"type":37,"value":2933},"That's the same pattern, every time: we don't just deliver and leave. We stay, and we grow with you. It's why more than 80% of our clients are still with us.",{"type":32,"tag":63,"props":2935,"children":2936},{"id":731},[2937],{"type":37,"value":734},{"type":32,"tag":33,"props":2939,"children":2940},{},[2941],{"type":37,"value":2942},"Scale when real demand — not optics — is pushing the limits of what your product can do, your retention is stable, and your growth is repeatable. When you do, expect more than code to change: your architecture, your process, and often your team all shift at once. Scale incrementally rather than rewriting, and lean on people who'll stay through the transition rather than hand you off at the hardest part.",{"type":32,"tag":33,"props":2944,"children":2945},{},[2946],{"type":37,"value":2947},"Your MVP proved people want what you're building. Scaling is just making sure they can keep getting it.",{"type":32,"tag":746,"props":2949,"children":2950},{},[],{"type":32,"tag":33,"props":2952,"children":2953},{},[2954,2959,2961],{"type":32,"tag":108,"props":2955,"children":2956},{},[2957],{"type":37,"value":2958},"Hit the scaling moment?",{"type":37,"value":2960}," Let's figure out what your product — and your team — actually need next. ",{"type":32,"tag":149,"props":2962,"children":2963},{"href":761},[2964],{"type":37,"value":2965},"Let's talk it through.",{"title":7,"searchDepth":766,"depth":766,"links":2967},[2968,2969,2970,2971,2972,2973,2974,2975],{"id":2564,"depth":766,"text":2567},{"id":2607,"depth":766,"text":2610},{"id":2674,"depth":766,"text":2677},{"id":2755,"depth":766,"text":2758},{"id":2788,"depth":766,"text":2791},{"id":2822,"depth":766,"text":2825},{"id":2881,"depth":766,"text":2884},{"id":731,"depth":766,"text":734},"content:blog:scale-mvp-to-product.md","blog/scale-mvp-to-product.md","blog/scale-mvp-to-product",{"_path":2980,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2981,"description":2982,"topic":10,"author":11,"authorProfile":12,"coverImg":2983,"coverImgAlt":2984,"published":15,"toc":15,"readingTime":2985,"createdAt":2986,"updatedAt":2986,"keywords":2987,"body":2997,"_type":778,"_id":3424,"_source":780,"_file":3425,"_stem":3426,"_extension":783},"/blog/no-code-vs-custom-development","No-Code vs Custom: When Your No-Code App Hits the Ceiling","No-code was probably the right first move. Here are the honest signs you've outgrown it — and how to migrate to custom without stalling.","/images/blog/no-code-vs-custom-development.webp","No-code vs custom development — knowing when your no-code app hits the ceiling","10 min read","2026-06-12",[2988,2989,2990,2991,2992,2993,2994,2995,2996],"no-code vs custom development","when to switch from no-code to custom","when to move from bubble to custom code","no code limitations","is no-code scalable","outgrowing no-code","signs you need custom development","no-code vs low-code vs custom","bubble to custom code migration",{"type":29,"children":2998,"toc":3415},[2999,3004,3009,3014,3020,3025,3030,3063,3068,3073,3079,3084,3094,3104,3114,3124,3134,3140,3152,3157,3162,3180,3185,3191,3196,3208,3243,3248,3254,3259,3299,3304,3310,3315,3320,3353,3364,3383,3387,3392,3397,3400],{"type":32,"tag":33,"props":3000,"children":3001},{},[3002],{"type":37,"value":3003},"If you built your first product on no-code, you probably made the right call.",{"type":32,"tag":33,"props":3005,"children":3006},{},[3007],{"type":37,"value":3008},"Let's say that clearly up front, because most \"no-code vs custom\" articles are written by developers who quietly think no-code is a toy. We don't. No-code let you get a real product in front of real users without burning your savings on a build you weren't sure anyone wanted. That's not a shortcut — that's smart.",{"type":32,"tag":33,"props":3010,"children":3011},{},[3012],{"type":37,"value":3013},"This article isn't about whether no-code was a mistake. It's about something every successful no-code founder eventually faces: knowing when you've outgrown it. Because if your no-code app is working — if people are using it, paying for it, asking for more — you'll hit a ceiling. And recognizing that moment for what it is (a good problem) is the difference between a smooth graduation and a painful scramble.",{"type":32,"tag":63,"props":3015,"children":3017},{"id":3016},"what-no-code-is-genuinely-great-at",[3018],{"type":37,"value":3019},"What no-code is genuinely great at",{"type":32,"tag":33,"props":3021,"children":3022},{},[3023],{"type":37,"value":3024},"Before we talk about the ceiling, let's give no-code its full due — because understanding what it's good at tells you exactly when it stops being enough.",{"type":32,"tag":33,"props":3026,"children":3027},{},[3028],{"type":37,"value":3029},"No-code platforms like Bubble, Webflow, Glide, and the rest are genuinely excellent at:",{"type":32,"tag":220,"props":3031,"children":3032},{},[3033,3043,3053],{"type":32,"tag":224,"props":3034,"children":3035},{},[3036,3041],{"type":32,"tag":108,"props":3037,"children":3038},{},[3039],{"type":37,"value":3040},"Fast validation.",{"type":37,"value":3042}," You can go from idea to working app in days or weeks, not months. For testing whether anyone wants what you're building, nothing beats it.",{"type":32,"tag":224,"props":3044,"children":3045},{},[3046,3051],{"type":32,"tag":108,"props":3047,"children":3048},{},[3049],{"type":37,"value":3050},"Low cost.",{"type":37,"value":3052}," You're paying a subscription, not a build. That keeps your runway intact while you learn.",{"type":32,"tag":224,"props":3054,"children":3055},{},[3056,3061],{"type":32,"tag":108,"props":3057,"children":3058},{},[3059],{"type":37,"value":3060},"Founder-friendliness.",{"type":37,"value":3062}," You don't need to be technical to ship something real. That's genuinely empowering, and it's put products into the world that never would have existed otherwise.",{"type":32,"tag":33,"props":3064,"children":3065},{},[3066],{"type":37,"value":3067},"If those are still your main needs — you're validating, iterating fast, keeping costs near zero — stay on no-code. Seriously. Don't let anyone talk you into a custom build you don't need yet. The whole point is to spend the minimum to learn the maximum, and no-code does that beautifully.",{"type":32,"tag":33,"props":3069,"children":3070},{},[3071],{"type":37,"value":3072},"The ceiling only matters once you've succeeded.",{"type":32,"tag":63,"props":3074,"children":3076},{"id":3075},"the-specific-signals-youve-hit-the-ceiling",[3077],{"type":37,"value":3078},"The specific signals you've hit the ceiling",{"type":32,"tag":33,"props":3080,"children":3081},{},[3082],{"type":37,"value":3083},"So how do you know you've outgrown it? Not from a vague feeling — from concrete signals. Here are the ones that actually mean something.",{"type":32,"tag":33,"props":3085,"children":3086},{},[3087,3092],{"type":32,"tag":108,"props":3088,"children":3089},{},[3090],{"type":37,"value":3091},"Your workarounds have workarounds.",{"type":37,"value":3093}," Early on, you bend the platform a little to do what you need. Fine. But when you're stringing together three plugins and a fragile automation to fake a feature the platform can't do natively — and you're scared to touch any of it — that's the ceiling talking.",{"type":32,"tag":33,"props":3095,"children":3096},{},[3097,3102],{"type":32,"tag":108,"props":3098,"children":3099},{},[3100],{"type":37,"value":3101},"Your users can feel the performance.",{"type":37,"value":3103}," No-code platforms hit real performance limits under load. Pages that were snappy with a hundred records start to crawl once you've got serious volume. When lists lag, screens hang, and users start mentioning it, you've outgrown the engine underneath you.",{"type":32,"tag":33,"props":3105,"children":3106},{},[3107,3112],{"type":32,"tag":108,"props":3108,"children":3109},{},[3110],{"type":37,"value":3111},"The integration you need doesn't exist.",{"type":37,"value":3113}," You need to connect to a specific payment processor, a partner's API, a piece of hardware, or build a genuinely custom workflow — and the platform simply can't. No plugin, no workaround. That's a hard wall.",{"type":32,"tag":33,"props":3115,"children":3116},{},[3117,3122],{"type":32,"tag":108,"props":3118,"children":3119},{},[3120],{"type":37,"value":3121},"Your costs are scaling faster than your revenue.",{"type":37,"value":3123}," Many no-code platforms charge by usage, workflow runs, or seats. At small scale that's cheap. At real scale, the bill can climb faster than the money coming in. When the math starts working against you, the economics of owning your code start to make sense.",{"type":32,"tag":33,"props":3125,"children":3126},{},[3127,3132],{"type":32,"tag":108,"props":3128,"children":3129},{},[3130],{"type":37,"value":3131},"And the big one: you can't export your source code.",{"type":37,"value":3133}," This deserves its own section, because it's the signal founders discover too late.",{"type":32,"tag":63,"props":3135,"children":3137},{"id":3136},"the-lock-in-problem-nobody-mentions-until-its-too-late",[3138],{"type":37,"value":3139},"The lock-in problem nobody mentions until it's too late",{"type":32,"tag":33,"props":3141,"children":3142},{},[3143,3145,3150],{"type":37,"value":3144},"Here's something most no-code platforms don't put on the homepage: on most of them, you don't own source code. You own a ",{"type":32,"tag":40,"props":3146,"children":3147},{},[3148],{"type":37,"value":3149},"configuration",{"type":37,"value":3151}," inside someone else's system.",{"type":32,"tag":33,"props":3153,"children":3154},{},[3155],{"type":37,"value":3156},"Think about what that means. If you decide to leave — because you've outgrown the platform, the pricing changed, or the company gets acquired and shuts a feature down — your app doesn't come with you. You can't hand a folder of code to a new team and say \"build on this.\" The logic, the workflows, the years of refinement you poured in live inside the platform. Leave, and the app stays behind.",{"type":32,"tag":33,"props":3158,"children":3159},{},[3160],{"type":37,"value":3161},"That's the real risk of no-code, and it's invisible right up until the moment it isn't.",{"type":32,"tag":33,"props":3163,"children":3164},{},[3165,3167,3171,3173,3178],{"type":37,"value":3166},"We feel this one personally. We built ",{"type":32,"tag":149,"props":3168,"children":3169},{"href":703},[3170],{"type":37,"value":706},{"type":37,"value":3172},", our own SaaS product, and that taught us exactly what owning your code is worth — the freedom to take it anywhere, change anything, and never ask permission. It's the same reason we've written before about ",{"type":32,"tag":149,"props":3174,"children":3175},{"href":151},[3176],{"type":37,"value":3177},"avoiding vendor lock-in",{"type":37,"value":3179},": your product should be yours, fully, with no one else holding the keys.",{"type":32,"tag":33,"props":3181,"children":3182},{},[3183],{"type":37,"value":3184},"None of this means no-code was wrong. It means that once you've got traction, owning your code stops being a nice-to-have and starts being the thing that protects everything you've built.",{"type":32,"tag":63,"props":3186,"children":3188},{"id":3187},"what-going-custom-actually-involves",[3189],{"type":37,"value":3190},"What \"going custom\" actually involves",{"type":32,"tag":33,"props":3192,"children":3193},{},[3194],{"type":37,"value":3195},"Let's demystify this, because \"rebuild it in custom code\" sounds scarier than it is.",{"type":32,"tag":33,"props":3197,"children":3198},{},[3199,3201,3206],{"type":37,"value":3200},"Going custom is a ",{"type":32,"tag":108,"props":3202,"children":3203},{},[3204],{"type":37,"value":3205},"graduation, not a failure.",{"type":37,"value":3207}," You're not throwing away what you learned — you're taking a validated, working product and rebuilding it on a foundation that's actually yours and can grow without limits. Every workflow you painstakingly figured out in no-code becomes a spec for the custom build. The hard part — knowing what to build — you've already done.",{"type":32,"tag":33,"props":3209,"children":3210},{},[3211,3213,3219,3221,3225,3226,3230,3231,3236,3237,3241],{"type":37,"value":3212},"Roughly, a focused first custom build of a validated no-code app runs in the range of eight to twelve weeks, depending on complexity. You'd choose a stack you can hire for and grow on — typically something like React or Vue on the front end with Node.js or Rails behind it (here's ",{"type":32,"tag":149,"props":3214,"children":3216},{"href":3215},"/blog/how-to-choose-a-tech-stack/",[3217],{"type":37,"value":3218},"how to choose a tech stack",{"type":37,"value":3220}," for the full thinking). That's the stack we'd most often rebuild a no-code app onto, with teams of ",{"type":32,"tag":149,"props":3222,"children":3223},{"href":1694},[3224],{"type":37,"value":1689},{"type":37,"value":331},{"type":32,"tag":149,"props":3227,"children":3228},{"href":1794},[3229],{"type":37,"value":1789},{"type":37,"value":331},{"type":32,"tag":149,"props":3232,"children":3233},{"href":1712},[3234],{"type":37,"value":3235},"Vue.js",{"type":37,"value":339},{"type":32,"tag":149,"props":3238,"children":3239},{"href":1830},[3240],{"type":37,"value":1825},{"type":37,"value":3242}," engineers who do this regularly.",{"type":32,"tag":33,"props":3244,"children":3245},{},[3246],{"type":37,"value":3247},"The cost depends entirely on scope — we won't quote a number here, but if you want real ranges, that's worth a proper conversation rather than a guess.",{"type":32,"tag":63,"props":3249,"children":3251},{"id":3250},"no-code-vs-low-code-vs-custom-a-quick-honest-map",[3252],{"type":37,"value":3253},"No-code vs low-code vs custom — a quick, honest map",{"type":32,"tag":33,"props":3255,"children":3256},{},[3257],{"type":37,"value":3258},"These three terms get muddled, so here's the short version:",{"type":32,"tag":220,"props":3260,"children":3261},{},[3262,3272,3289],{"type":32,"tag":224,"props":3263,"children":3264},{},[3265,3270],{"type":32,"tag":108,"props":3266,"children":3267},{},[3268],{"type":37,"value":3269},"No-code",{"type":37,"value":3271}," — you build by configuring, no programming. Best for validation, simple apps, and founders who want full control without code. Trade-off: platform limits and usually no code ownership.",{"type":32,"tag":224,"props":3273,"children":3274},{},[3275,3280,3282,3287],{"type":32,"tag":108,"props":3276,"children":3277},{},[3278],{"type":37,"value":3279},"Low-code",{"type":37,"value":3281}," — mostly visual, but you can drop into code for custom logic. A middle ground when you've hit ",{"type":32,"tag":40,"props":3283,"children":3284},{},[3285],{"type":37,"value":3286},"some",{"type":37,"value":3288}," limits but not all of them, and you have a little technical help.",{"type":32,"tag":224,"props":3290,"children":3291},{},[3292,3297],{"type":32,"tag":108,"props":3293,"children":3294},{},[3295],{"type":37,"value":3296},"Custom",{"type":37,"value":3298}," — fully built code, fully yours. Maximum flexibility, performance, and ownership. Trade-off: it costs more and takes longer up front, and it only makes sense once you've validated that it's worth it.",{"type":32,"tag":33,"props":3300,"children":3301},{},[3302],{"type":37,"value":3303},"The honest rule: start as low on this ladder as your needs allow, and climb only when the signals above tell you to. Most founders should start on no-code. Some should stop there forever. The ones reading this far have probably earned their way up to custom.",{"type":32,"tag":63,"props":3305,"children":3307},{"id":3306},"how-to-migrate-without-losing-momentum",[3308],{"type":37,"value":3309},"How to migrate without losing momentum",{"type":32,"tag":33,"props":3311,"children":3312},{},[3313],{"type":37,"value":3314},"The fear with going custom is that everything stops for three months while engineers rebuild what already works. It doesn't have to be that way.",{"type":32,"tag":33,"props":3316,"children":3317},{},[3318],{"type":37,"value":3319},"The approach that protects your momentum:",{"type":32,"tag":220,"props":3321,"children":3322},{},[3323,3333,3343],{"type":32,"tag":224,"props":3324,"children":3325},{},[3326,3331],{"type":32,"tag":108,"props":3327,"children":3328},{},[3329],{"type":37,"value":3330},"Run both in parallel.",{"type":37,"value":3332}," Keep your no-code app live and serving users while the custom build comes together. Nothing goes dark.",{"type":32,"tag":224,"props":3334,"children":3335},{},[3336,3341],{"type":32,"tag":108,"props":3337,"children":3338},{},[3339],{"type":37,"value":3340},"Migrate the load-bearing pieces first.",{"type":37,"value":3342}," Start with the part that's straining hardest — the slow workflow, the feature you couldn't build, the integration you needed. Get the highest-pain piece onto solid ground first.",{"type":32,"tag":224,"props":3344,"children":3345},{},[3346,3351],{"type":32,"tag":108,"props":3347,"children":3348},{},[3349],{"type":37,"value":3350},"Keep shipping.",{"type":37,"value":3352}," A good migration doesn't freeze your roadmap. You should still be improving the product while the rebuild happens underneath.",{"type":32,"tag":33,"props":3354,"children":3355},{},[3356,3358,3362],{"type":37,"value":3357},"This is exactly the kind of moment where a partner who plans the migration ",{"type":32,"tag":40,"props":3359,"children":3360},{},[3361],{"type":37,"value":316},{"type":37,"value":3363}," you matters — someone who sequences it so you're never caught between two half-working systems. We've done this enough to know where the sharp edges are, and we'd rather help you avoid them than learn them the expensive way.",{"type":32,"tag":33,"props":3365,"children":3366},{},[3367,3369,3373,3375,3381],{"type":37,"value":3368},"One more pointer: outgrowing a no-code ",{"type":32,"tag":40,"props":3370,"children":3371},{},[3372],{"type":37,"value":669},{"type":37,"value":3374}," is one specific version of a bigger question — when to build something custom versus buy or use something off the shelf. If you're weighing that more broadly across your product, our ",{"type":32,"tag":149,"props":3376,"children":3378},{"href":3377},"/blog/build-vs-buy-software/",[3379],{"type":37,"value":3380},"build vs buy framework",{"type":37,"value":3382}," is the fuller map. The no-code ceiling is just the sharpest, most concrete case of it.",{"type":32,"tag":63,"props":3384,"children":3385},{"id":731},[3386],{"type":37,"value":734},{"type":32,"tag":33,"props":3388,"children":3389},{},[3390],{"type":37,"value":3391},"No-code did its job: it let you validate cheaply and get real users without betting the runway. If it's still serving you, stay. But when the workarounds pile up, the performance shows, the integrations won't come, the costs outpace revenue, or you realize you can't take your own app with you — those are the signals it's time to graduate.",{"type":32,"tag":33,"props":3393,"children":3394},{},[3395],{"type":37,"value":3396},"Going custom isn't a confession that you started wrong. It's proof you started right and it worked. The product earned its way to a foundation that's truly yours.",{"type":32,"tag":746,"props":3398,"children":3399},{},[],{"type":32,"tag":33,"props":3401,"children":3402},{},[3403,3408,3410],{"type":32,"tag":108,"props":3404,"children":3405},{},[3406],{"type":37,"value":3407},"Outgrowing your no-code app?",{"type":37,"value":3409}," Let's map a migration that doesn't stall your momentum — and figure out what's genuinely worth rebuilding first. ",{"type":32,"tag":149,"props":3411,"children":3412},{"href":761},[3413],{"type":37,"value":3414},"Talk to us.",{"title":7,"searchDepth":766,"depth":766,"links":3416},[3417,3418,3419,3420,3421,3422,3423],{"id":3016,"depth":766,"text":3019},{"id":3075,"depth":766,"text":3078},{"id":3136,"depth":766,"text":3139},{"id":3187,"depth":766,"text":3190},{"id":3250,"depth":766,"text":3253},{"id":3306,"depth":766,"text":3309},{"id":731,"depth":766,"text":734},"content:blog:no-code-vs-custom-development.md","blog/no-code-vs-custom-development.md","blog/no-code-vs-custom-development",{"_path":3428,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3429,"description":3430,"topic":2526,"author":11,"authorProfile":12,"coverImg":3431,"coverImgAlt":3432,"published":15,"toc":15,"readingTime":2985,"createdAt":3433,"updatedAt":3433,"keywords":3434,"body":3443,"_type":778,"_id":4021,"_source":780,"_file":4022,"_stem":4023,"_extension":783},"/blog/build-product-limited-budget","How to Start Building Your Product on a Limited Budget","You've decided to build and the budget's tight. Here's the honest playbook — what to build first, where no-code fits, and where help saves money.","/images/blog/build-product-limited-budget.webp","How to start building your product on a limited budget — the constructive playbook","2026-06-11",[3435,3436,3437,3438,3439,3440,3441,3442],"how to build a startup product on a limited budget","how to build an app with a small budget","how to start building your product with no money","build a SaaS product on a tight budget","building software on a budget","launch a startup product on a shoestring budget","cheapest way to build an app","building a product with limited resources",{"type":29,"children":3444,"toc":4011},[3445,3450,3455,3460,3479,3485,3490,3502,3513,3518,3561,3566,3572,3577,3627,3639,3645,3657,3662,3680,3699,3705,3710,3715,3727,3738,3744,3749,3760,3772,3802,3820,3826,3837,3909,3914,3920,3937,3942,3975,3980,3984,3989,3994,3997],{"type":32,"tag":33,"props":3446,"children":3447},{},[3448],{"type":37,"value":3449},"A tight budget isn't a disadvantage. It's a forcing function.",{"type":32,"tag":33,"props":3451,"children":3452},{},[3453],{"type":37,"value":3454},"When money is short, you can't afford to build the wrong big thing — so you're pushed to build the right small thing instead. That constraint, painful as it feels, is one of the best things that can happen to an early product. Some of the leanest, sharpest products ever made came from founders who couldn't afford to be wasteful.",{"type":32,"tag":33,"props":3456,"children":3457},{},[3458],{"type":37,"value":3459},"We'll be honest about the advice you've probably been getting, too. Most of it falls into two camps: \"just raise more money\" (unhelpful if you can't) or \"hire us to build it\" (convenient for whoever's saying it). This is neither. This is the honest playbook for building cheaply and well, when the money is real and limited and yours.",{"type":32,"tag":33,"props":3461,"children":3462},{},[3463,3465,3470,3472,3477],{"type":37,"value":3464},"One thing before we start. This post assumes you've already validated the idea — that you have some real signal people want this. If you're not sure yet, don't spend a rupee on building. Start with ",{"type":32,"tag":149,"props":3466,"children":3467},{"href":2666},[3468],{"type":37,"value":3469},"when NOT to build an MVP",{"type":37,"value":3471},", which walks through the cheap ways to test demand first. Come back here when you're ready to actually build. Everything below is the ",{"type":32,"tag":40,"props":3473,"children":3474},{},[3475],{"type":37,"value":3476},"how-to-build-cheaply",{"type":37,"value":3478}," path, for founders who are past that gate.",{"type":32,"tag":63,"props":3480,"children":3482},{"id":3481},"build-the-smallest-thing-that-proves-the-value",[3483],{"type":37,"value":3484},"Build the smallest thing that proves the value",{"type":32,"tag":33,"props":3486,"children":3487},{},[3488],{"type":37,"value":3489},"The single most expensive mistake on a tight budget is building too much.",{"type":32,"tag":33,"props":3491,"children":3492},{},[3493,3495,3500],{"type":37,"value":3494},"Every feature is money. Every screen is money. Every \"while we're at it, let's also...\" is money you may not have. So the discipline that protects your budget more than any other is ruthless scoping: define the ",{"type":32,"tag":40,"props":3496,"children":3497},{},[3498],{"type":37,"value":3499},"one",{"type":37,"value":3501}," core action your product must do well, and cut everything else to \"later.\"",{"type":32,"tag":33,"props":3503,"children":3504},{},[3505,3507,3511],{"type":37,"value":3506},"This isn't corner-cutting — it's the opposite. It's deciding, on purpose, what actually has to exist for your product to prove its value, and refusing to spend on anything that doesn't. (Scoping well is its own skill, and we've written the deep how-to: ",{"type":32,"tag":149,"props":3508,"children":3509},{"href":723},[3510],{"type":37,"value":1950},{"type":37,"value":3512},". Read it before you spec a single feature.)",{"type":32,"tag":33,"props":3514,"children":3515},{},[3516],{"type":37,"value":3517},"To make it concrete, here's what almost always gets cut from a first build:",{"type":32,"tag":220,"props":3519,"children":3520},{},[3521,3531,3541,3551],{"type":32,"tag":224,"props":3522,"children":3523},{},[3524,3529],{"type":32,"tag":108,"props":3525,"children":3526},{},[3527],{"type":37,"value":3528},"Settings and preferences pages",{"type":37,"value":3530}," — most users never touch them at first. Hardcode sensible defaults.",{"type":32,"tag":224,"props":3532,"children":3533},{},[3534,3539],{"type":32,"tag":108,"props":3535,"children":3536},{},[3537],{"type":37,"value":3538},"Admin panels and dashboards",{"type":37,"value":3540}," — you can manage data directly in the database early on. Build the admin UI when managing-by-hand actually hurts.",{"type":32,"tag":224,"props":3542,"children":3543},{},[3544,3549],{"type":32,"tag":108,"props":3545,"children":3546},{},[3547],{"type":37,"value":3548},"Edge-case flows",{"type":37,"value":3550}," — the rare password-reset variant, the unusual permission combination. Handle the common path; deal with edge cases when a real user hits one.",{"type":32,"tag":224,"props":3552,"children":3553},{},[3554,3559],{"type":32,"tag":108,"props":3555,"children":3556},{},[3557],{"type":37,"value":3558},"\"Nice to have\" integrations",{"type":37,"value":3560}," — every connector you add is build time and maintenance. Add them when a paying user needs one.",{"type":32,"tag":33,"props":3562,"children":3563},{},[3564],{"type":37,"value":3565},"If cutting these feels uncomfortable, good. That discomfort is you protecting your runway.",{"type":32,"tag":63,"props":3567,"children":3569},{"id":3568},"sequence-it-what-to-build-first-second-and-not-yet",[3570],{"type":37,"value":3571},"Sequence it — what to build first, second, and not yet",{"type":32,"tag":33,"props":3573,"children":3574},{},[3575],{"type":37,"value":3576},"Once you've scoped small, order what's left by what proves the most with the least spend. A budget-conscious build sequence usually looks like this:",{"type":32,"tag":546,"props":3578,"children":3579},{},[3580,3590,3607,3617],{"type":32,"tag":224,"props":3581,"children":3582},{},[3583,3588],{"type":32,"tag":108,"props":3584,"children":3585},{},[3586],{"type":37,"value":3587},"The core value action.",{"type":37,"value":3589}," The one thing your product does that makes someone go \"yes, I want this.\" Build this first and build it well. Everything else exists to support it.",{"type":32,"tag":224,"props":3591,"children":3592},{},[3593,3598,3600,3605],{"type":32,"tag":108,"props":3594,"children":3595},{},[3596],{"type":37,"value":3597},"The thinnest path to a user actually using it.",{"type":37,"value":3599}," Just enough sign-up and onboarding to get a real person to the core action. Note: sign-in is a ",{"type":32,"tag":40,"props":3601,"children":3602},{},[3603],{"type":37,"value":3604},"bought",{"type":37,"value":3606}," service, not a build (more on that below) — don't spend your budget here.",{"type":32,"tag":224,"props":3608,"children":3609},{},[3610,3615],{"type":32,"tag":108,"props":3611,"children":3612},{},[3613],{"type":37,"value":3614},"A way to charge or capture interest.",{"type":37,"value":3616}," Even a simple checkout or a waitlist. You need to learn whether people will pay, or at least commit, and you can't learn that without a way for them to.",{"type":32,"tag":224,"props":3618,"children":3619},{},[3620,3625],{"type":32,"tag":108,"props":3621,"children":3622},{},[3623],{"type":37,"value":3624},"Everything else — later.",{"type":37,"value":3626}," Genuinely later.",{"type":32,"tag":33,"props":3628,"children":3629},{},[3630,3632,3637],{"type":37,"value":3631},"The principle behind the order: ",{"type":32,"tag":108,"props":3633,"children":3634},{},[3635],{"type":37,"value":3636},"spend your first dollars on the part that proves people want it.",{"type":37,"value":3638}," Not on polish, not on the admin tools, not on the feature you're personally excited about. On the thing that turns \"I think people want this\" into \"people are using this.\"",{"type":32,"tag":63,"props":3640,"children":3642},{"id":3641},"no-code-and-low-code-are-a-legitimate-cheap-start-not-a-cop-out",[3643],{"type":37,"value":3644},"No-code and low-code are a legitimate cheap start (not a cop-out)",{"type":32,"tag":33,"props":3646,"children":3647},{},[3648,3650,3655],{"type":37,"value":3649},"Here's something worth saying plainly: for many budget-constrained founders, building your first version on no-code or low-code is the ",{"type":32,"tag":40,"props":3651,"children":3652},{},[3653],{"type":37,"value":3654},"smart",{"type":37,"value":3656}," move, not a compromise.",{"type":32,"tag":33,"props":3658,"children":3659},{},[3660],{"type":37,"value":3661},"It's the fastest, cheapest way to get a working product in front of real users. You're paying a small subscription instead of a build, and you can change things yourself without waiting on (or paying) an engineer. If that gets you to real users and real learning sooner, it's the right tool — full stop. We don't look down on no-code, and you shouldn't let anyone make you feel like you should.",{"type":32,"tag":33,"props":3663,"children":3664},{},[3665,3667,3672,3674,3678],{"type":37,"value":3666},"The one honest trade-off to keep in mind: if it works, you'll probably outgrow it. That's a ",{"type":32,"tag":40,"props":3668,"children":3669},{},[3670],{"type":37,"value":3671},"good",{"type":37,"value":3673}," problem — it means people are using your product hard enough to find the limits. And when you get there, you'll know exactly what to do, because we've written it: ",{"type":32,"tag":149,"props":3675,"children":3676},{"href":674},[3677],{"type":37,"value":677},{"type":37,"value":3679}," covers the signals and how to graduate without losing momentum. But that's a future-you problem. Today, if no-code gets you live cheaply, use it.",{"type":32,"tag":33,"props":3681,"children":3682},{},[3683,3685,3690,3692,3697],{"type":37,"value":3684},"(To be clear, that's a different question from this one: here we're talking about ",{"type":32,"tag":40,"props":3686,"children":3687},{},[3688],{"type":37,"value":3689},"starting",{"type":37,"value":3691}," cheap on no-code. That post is about ",{"type":32,"tag":40,"props":3693,"children":3694},{},[3695],{"type":37,"value":3696},"leaving",{"type":37,"value":3698}," it once you've outgrown it. Start here; graduate there.)",{"type":32,"tag":63,"props":3700,"children":3702},{"id":3701},"buy-the-boring-parts-so-your-budget-goes-to-your-product",[3703],{"type":37,"value":3704},"Buy the boring parts so your budget goes to your product",{"type":32,"tag":33,"props":3706,"children":3707},{},[3708],{"type":37,"value":3709},"Here's a fast way to waste a limited budget: spend it rebuilding things that already exist for a few dollars a month.",{"type":32,"tag":33,"props":3711,"children":3712},{},[3713],{"type":37,"value":3714},"Authentication. Payments. Email. Hosting. These are solved problems with cheap — often free-tier — services ready to use. Building your own auth system or payment flow on a tight budget is spending your scarcest resource reinventing something a specialist already perfected and gives you for almost nothing.",{"type":32,"tag":33,"props":3716,"children":3717},{},[3718,3720,3725],{"type":37,"value":3719},"The rule: ",{"type":32,"tag":108,"props":3721,"children":3722},{},[3723],{"type":37,"value":3724},"every dollar not spent on a solved problem is a dollar spent on the thing that's actually yours.",{"type":37,"value":3726}," Wire in a ready-made auth service. Use Stripe or a similar processor for payments. Send email through a transactional service's free tier. Host on a platform with a generous starter plan. Then point all the budget you just saved at your core value action — the part no one else can build for you.",{"type":32,"tag":33,"props":3728,"children":3729},{},[3730,3732,3736],{"type":37,"value":3731},"This is one tactic from a bigger principle, and if you want the full version — when to build, when to buy, and how to think about it across your whole product — our ",{"type":32,"tag":149,"props":3733,"children":3734},{"href":3377},[3735],{"type":37,"value":3380},{"type":37,"value":3737}," is the complete map. For now, just remember: buy the boring parts.",{"type":32,"tag":63,"props":3739,"children":3741},{"id":3740},"where-a-small-paid-engagement-actually-saves-money",[3742],{"type":37,"value":3743},"Where a small paid engagement actually saves money",{"type":32,"tag":33,"props":3745,"children":3746},{},[3747],{"type":37,"value":3748},"Now the honest commercial part — and we'll keep it soft, because it should be.",{"type":32,"tag":33,"props":3750,"children":3751},{},[3752,3754,3758],{"type":37,"value":3753},"You do ",{"type":32,"tag":40,"props":3755,"children":3756},{},[3757],{"type":37,"value":352},{"type":37,"value":3759}," need to hire a full team to build on a budget. Plenty of founders do the entire first build themselves, on no-code or with a single freelancer, and that's completely valid. We're not here to tell you that you must hire anyone.",{"type":32,"tag":33,"props":3761,"children":3762},{},[3763,3765,3770],{"type":37,"value":3764},"But there are a couple of specific moments where a ",{"type":32,"tag":40,"props":3766,"children":3767},{},[3768],{"type":37,"value":3769},"small",{"type":37,"value":3771}," paid engagement quietly saves you money rather than costing it:",{"type":32,"tag":220,"props":3773,"children":3774},{},[3775,3785],{"type":32,"tag":224,"props":3776,"children":3777},{},[3778,3783],{"type":32,"tag":108,"props":3779,"children":3780},{},[3781],{"type":37,"value":3782},"A few days of an experienced engineer to set the foundation right.",{"type":37,"value":3784}," Getting the early structure, data model, and a few key decisions right means you don't pay double later unpicking shortcuts that hardened into problems. On a tight budget, paying once beats paying twice.",{"type":32,"tag":224,"props":3786,"children":3787},{},[3788,3793,3795,3800],{"type":32,"tag":108,"props":3789,"children":3790},{},[3791],{"type":37,"value":3792},"An hour of honest guidance before you commit.",{"type":37,"value":3794}," A straight conversation about scope and which ",{"type":32,"tag":149,"props":3796,"children":3797},{"href":3215},[3798],{"type":37,"value":3799},"tech stack",{"type":37,"value":3801}," you can actually afford to staff — before you've sunk money into the wrong direction — can save weeks of expensive backtracking.",{"type":32,"tag":33,"props":3803,"children":3804},{},[3805,3807,3812,3813,3818],{"type":37,"value":3806},"That's how we think about it: we partner big or small. A small task, or even a bit of honest guidance today, is a partnership that can grow — and plenty of ours started exactly that way. If a few days of senior help or a foundation done right is what saves you from paying twice, that's where ",{"type":32,"tag":149,"props":3808,"children":3809},{"href":326},[3810],{"type":37,"value":3811},"a focused engagement",{"type":37,"value":612},{"type":32,"tag":149,"props":3814,"children":3815},{"href":334},[3816],{"type":37,"value":3817},"a small MVP build",{"type":37,"value":3819}," earns its keep. But it's optional, and we'll always tell you when you don't need us.",{"type":32,"tag":63,"props":3821,"children":3823},{"id":3822},"protect-the-runway-you-have-the-mistakes-that-quietly-burn-budget",[3824],{"type":37,"value":3825},"Protect the runway you have — the mistakes that quietly burn budget",{"type":32,"tag":33,"props":3827,"children":3828},{},[3829,3831,3835],{"type":37,"value":3830},"Building cheaply is as much about what you ",{"type":32,"tag":40,"props":3832,"children":3833},{},[3834],{"type":37,"value":293},{"type":37,"value":3836}," spend on. Here are the budget leaks that catch founders most often:",{"type":32,"tag":220,"props":3838,"children":3839},{},[3840,3850,3866,3876,3893],{"type":32,"tag":224,"props":3841,"children":3842},{},[3843,3848],{"type":32,"tag":108,"props":3844,"children":3845},{},[3846],{"type":37,"value":3847},"Scope creep mid-build.",{"type":37,"value":3849}," The \"while we're here, let's also add...\" that turns a four-week build into a four-month one. Every addition needs to fight its way past \"does this prove the core value?\"",{"type":32,"tag":224,"props":3851,"children":3852},{},[3853,3858,3860,3865],{"type":32,"tag":108,"props":3854,"children":3855},{},[3856],{"type":37,"value":3857},"Building for scale you don't have yet.",{"type":37,"value":3859}," Architecting for a million users when you have zero is paying today for a problem you'd be lucky to have. Build for the users you have; ",{"type":32,"tag":149,"props":3861,"children":3862},{"href":1913},[3863],{"type":37,"value":3864},"scale when you've earned it",{"type":37,"value":46},{"type":32,"tag":224,"props":3867,"children":3868},{},[3869,3874],{"type":32,"tag":108,"props":3870,"children":3871},{},[3872],{"type":37,"value":3873},"Hiring full-time too early.",{"type":37,"value":3875}," A full-time salary is the biggest fixed cost there is. Before you commit to it, be sure the work is permanent and full-time — not a burst you could handle another way.",{"type":32,"tag":224,"props":3877,"children":3878},{},[3879,3884,3886,3891],{"type":32,"tag":108,"props":3880,"children":3881},{},[3882],{"type":37,"value":3883},"Choosing a stack you can't find cheap help for.",{"type":37,"value":3885}," An exotic stack means expensive, hard-to-find engineers. Pick something with a deep, affordable talent pool — your ",{"type":32,"tag":149,"props":3887,"children":3888},{"href":3215},[3889],{"type":37,"value":3890},"stack choice",{"type":37,"value":3892}," is also a hiring-cost choice.",{"type":32,"tag":224,"props":3894,"children":3895},{},[3896,3901,3903,3907],{"type":32,"tag":108,"props":3897,"children":3898},{},[3899],{"type":37,"value":3900},"Skipping the validation gate.",{"type":37,"value":3902}," The most expensive leak of all: building something nobody wanted. If you haven't validated, go back to ",{"type":32,"tag":149,"props":3904,"children":3905},{"href":2666},[3906],{"type":37,"value":3469},{"type":37,"value":3908}," first.",{"type":32,"tag":33,"props":3910,"children":3911},{},[3912],{"type":37,"value":3913},"Each of these is real money leaking out of a budget that doesn't have any to spare. Name them, watch for them, plug them.",{"type":32,"tag":63,"props":3915,"children":3917},{"id":3916},"a-realistic-first-build-budget-mindset",[3918],{"type":37,"value":3919},"A realistic first-build budget mindset",{"type":32,"tag":33,"props":3921,"children":3922},{},[3923,3925,3930,3932,3936],{"type":37,"value":3924},"We won't hand you a price list — anyone who quotes a firm number for \"building an app\" without knowing what you're building is guessing, and we won't. (If you want honest cost ",{"type":32,"tag":40,"props":3926,"children":3927},{},[3928],{"type":37,"value":3929},"ranges",{"type":37,"value":3931}," grounded in real projects, here's ",{"type":32,"tag":149,"props":3933,"children":3934},{"href":528},[3935],{"type":37,"value":531},{"type":37,"value":533},{"type":32,"tag":33,"props":3938,"children":3939},{},[3940],{"type":37,"value":3941},"What we'll give you instead is the mindset, which matters more than any figure:",{"type":32,"tag":220,"props":3943,"children":3944},{},[3945,3955,3965],{"type":32,"tag":224,"props":3946,"children":3947},{},[3948,3953],{"type":32,"tag":108,"props":3949,"children":3950},{},[3951],{"type":37,"value":3952},"Spend the minimum to learn the maximum.",{"type":37,"value":3954}," Every dollar should buy you a piece of real information about whether this works.",{"type":32,"tag":224,"props":3956,"children":3957},{},[3958,3963],{"type":32,"tag":108,"props":3959,"children":3960},{},[3961],{"type":37,"value":3962},"Keep enough runway to act on what you learn.",{"type":37,"value":3964}," Don't spend it all on the build. The learning is worthless if you can't afford to respond to it.",{"type":32,"tag":224,"props":3966,"children":3967},{},[3968,3973],{"type":32,"tag":108,"props":3969,"children":3970},{},[3971],{"type":37,"value":3972},"Treat the first build as a step, not the finish line.",{"type":37,"value":3974}," It's there to prove the value and earn you the right — and the resources — to build the next, better thing.",{"type":32,"tag":33,"props":3976,"children":3977},{},[3978],{"type":37,"value":3979},"A limited budget, spent this way, isn't a handicap. It's the discipline that keeps you building the right small thing until you've earned the bigger one.",{"type":32,"tag":63,"props":3981,"children":3982},{"id":731},[3983],{"type":37,"value":734},{"type":32,"tag":33,"props":3985,"children":3986},{},[3987],{"type":37,"value":3988},"Tight budget, decided to build? Scope ruthlessly to the one thing that proves your value. Sequence the build so your first dollars go to that core action. Lean on no-code if it gets you live cheaply, buy the boring parts instead of building them, and bring in a little senior help only where it stops you paying twice. Watch the leaks — scope creep, premature scale, early full-time hires — that quietly drain a budget that can't spare it.",{"type":32,"tag":33,"props":3990,"children":3991},{},[3992],{"type":37,"value":3993},"Build the right small thing. The bigger things come after you've earned them.",{"type":32,"tag":746,"props":3995,"children":3996},{},[],{"type":32,"tag":33,"props":3998,"children":3999},{},[4000,4005,4007],{"type":32,"tag":108,"props":4001,"children":4002},{},[4003],{"type":37,"value":4004},"Building on a tight budget and want a straight read on where to spend it — and where not to?",{"type":37,"value":4006}," Let's talk. Even a short conversation can save you from the expensive mistakes. No pitch, big or small. ",{"type":32,"tag":149,"props":4008,"children":4009},{"href":761},[4010],{"type":37,"value":764},{"title":7,"searchDepth":766,"depth":766,"links":4012},[4013,4014,4015,4016,4017,4018,4019,4020],{"id":3481,"depth":766,"text":3484},{"id":3568,"depth":766,"text":3571},{"id":3641,"depth":766,"text":3644},{"id":3701,"depth":766,"text":3704},{"id":3740,"depth":766,"text":3743},{"id":3822,"depth":766,"text":3825},{"id":3916,"depth":766,"text":3919},{"id":731,"depth":766,"text":734},"content:blog:build-product-limited-budget.md","blog/build-product-limited-budget.md","blog/build-product-limited-budget",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"topic":10,"author":11,"authorProfile":12,"coverImg":13,"coverImgAlt":14,"published":15,"toc":15,"readingTime":16,"createdAt":17,"updatedAt":17,"keywords":4025,"body":4026,"_type":778,"_id":779,"_source":780,"_file":781,"_stem":782,"_extension":783},[19,20,21,22,23,24,25,26,27],{"type":29,"children":4027,"toc":4577},[4028,4037,4041,4045,4049,4063,4067,4076,4080,4087,4091,4095,4104,4118,4127,4131,4135,4139,4148,4152,4161,4165,4216,4225,4229,4233,4242,4266,4287,4291,4295,4299,4308,4316,4335,4343,4376,4385,4404,4408,4412,4477,4481,4485,4489,4497,4515,4519,4523,4527,4536,4550,4554,4558,4562,4565],{"type":32,"tag":33,"props":4029,"children":4030},{},[4031,4032,4036],{"type":37,"value":38},{"type":32,"tag":40,"props":4033,"children":4034},{},[4035],{"type":37,"value":44},{"type":37,"value":46},{"type":32,"tag":33,"props":4038,"children":4039},{},[4040],{"type":37,"value":51},{"type":32,"tag":33,"props":4042,"children":4043},{},[4044],{"type":37,"value":56},{"type":32,"tag":33,"props":4046,"children":4047},{},[4048],{"type":37,"value":61},{"type":32,"tag":63,"props":4050,"children":4051},{"id":65},[4052,4053,4057,4058,4062],{"type":37,"value":68},{"type":32,"tag":40,"props":4054,"children":4055},{},[4056],{"type":37,"value":73},{"type":37,"value":75},{"type":32,"tag":40,"props":4059,"children":4060},{},[4061],{"type":37,"value":73},{"type":37,"value":81},{"type":32,"tag":33,"props":4064,"children":4065},{},[4066],{"type":37,"value":86},{"type":32,"tag":33,"props":4068,"children":4069},{},[4070,4071,4075],{"type":37,"value":91},{"type":32,"tag":40,"props":4072,"children":4073},{},[4074],{"type":37,"value":96},{"type":37,"value":98},{"type":32,"tag":33,"props":4077,"children":4078},{},[4079],{"type":37,"value":103},{"type":32,"tag":33,"props":4081,"children":4082},{},[4083],{"type":32,"tag":108,"props":4084,"children":4085},{},[4086],{"type":37,"value":112},{"type":32,"tag":33,"props":4088,"children":4089},{},[4090],{"type":37,"value":117},{"type":32,"tag":63,"props":4092,"children":4093},{"id":120},[4094],{"type":37,"value":123},{"type":32,"tag":33,"props":4096,"children":4097},{},[4098,4099,4103],{"type":37,"value":128},{"type":32,"tag":40,"props":4100,"children":4101},{},[4102],{"type":37,"value":133},{"type":37,"value":135},{"type":32,"tag":33,"props":4105,"children":4106},{},[4107,4108,4112,4113,4117],{"type":37,"value":140},{"type":32,"tag":40,"props":4109,"children":4110},{},[4111],{"type":37,"value":145},{"type":37,"value":147},{"type":32,"tag":149,"props":4114,"children":4115},{"href":151},[4116],{"type":37,"value":154},{"type":37,"value":156},{"type":32,"tag":33,"props":4119,"children":4120},{},[4121,4122,4126],{"type":37,"value":161},{"type":32,"tag":108,"props":4123,"children":4124},{},[4125],{"type":37,"value":166},{"type":37,"value":168},{"type":32,"tag":33,"props":4128,"children":4129},{},[4130],{"type":37,"value":173},{"type":32,"tag":33,"props":4132,"children":4133},{},[4134],{"type":37,"value":178},{"type":32,"tag":63,"props":4136,"children":4137},{"id":181},[4138],{"type":37,"value":184},{"type":32,"tag":33,"props":4140,"children":4141},{},[4142,4143,4147],{"type":37,"value":189},{"type":32,"tag":40,"props":4144,"children":4145},{},[4146],{"type":37,"value":194},{"type":37,"value":196},{"type":32,"tag":33,"props":4149,"children":4150},{},[4151],{"type":37,"value":201},{"type":32,"tag":33,"props":4153,"children":4154},{},[4155,4156,4160],{"type":37,"value":206},{"type":32,"tag":108,"props":4157,"children":4158},{},[4159],{"type":37,"value":211},{"type":37,"value":213},{"type":32,"tag":33,"props":4162,"children":4163},{},[4164],{"type":37,"value":218},{"type":32,"tag":220,"props":4166,"children":4167},{},[4168,4176,4184,4192,4200,4208],{"type":32,"tag":224,"props":4169,"children":4170},{},[4171,4175],{"type":32,"tag":108,"props":4172,"children":4173},{},[4174],{"type":37,"value":231},{"type":37,"value":233},{"type":32,"tag":224,"props":4177,"children":4178},{},[4179,4183],{"type":32,"tag":108,"props":4180,"children":4181},{},[4182],{"type":37,"value":241},{"type":37,"value":243},{"type":32,"tag":224,"props":4185,"children":4186},{},[4187,4191],{"type":32,"tag":108,"props":4188,"children":4189},{},[4190],{"type":37,"value":251},{"type":37,"value":253},{"type":32,"tag":224,"props":4193,"children":4194},{},[4195,4199],{"type":32,"tag":108,"props":4196,"children":4197},{},[4198],{"type":37,"value":261},{"type":37,"value":263},{"type":32,"tag":224,"props":4201,"children":4202},{},[4203,4207],{"type":32,"tag":108,"props":4204,"children":4205},{},[4206],{"type":37,"value":271},{"type":37,"value":273},{"type":32,"tag":224,"props":4209,"children":4210},{},[4211,4215],{"type":32,"tag":108,"props":4212,"children":4213},{},[4214],{"type":37,"value":281},{"type":37,"value":283},{"type":32,"tag":33,"props":4217,"children":4218},{},[4219,4220,4224],{"type":37,"value":288},{"type":32,"tag":40,"props":4221,"children":4222},{},[4223],{"type":37,"value":293},{"type":37,"value":295},{"type":32,"tag":63,"props":4226,"children":4227},{"id":298},[4228],{"type":37,"value":301},{"type":32,"tag":33,"props":4230,"children":4231},{},[4232],{"type":37,"value":306},{"type":32,"tag":33,"props":4234,"children":4235},{},[4236,4237,4241],{"type":37,"value":311},{"type":32,"tag":40,"props":4238,"children":4239},{},[4240],{"type":37,"value":316},{"type":37,"value":318},{"type":32,"tag":33,"props":4243,"children":4244},{},[4245,4246,4250,4251,4255,4256,4260,4261,4265],{"type":37,"value":323},{"type":32,"tag":149,"props":4247,"children":4248},{"href":326},[4249],{"type":37,"value":329},{"type":37,"value":331},{"type":32,"tag":149,"props":4252,"children":4253},{"href":334},[4254],{"type":37,"value":337},{"type":37,"value":339},{"type":32,"tag":149,"props":4257,"children":4258},{"href":342},[4259],{"type":37,"value":345},{"type":37,"value":347},{"type":32,"tag":40,"props":4262,"children":4263},{},[4264],{"type":37,"value":352},{"type":37,"value":354},{"type":32,"tag":220,"props":4267,"children":4268},{},[4269,4278],{"type":32,"tag":224,"props":4270,"children":4271},{},[4272,4273,4277],{"type":37,"value":362},{"type":32,"tag":108,"props":4274,"children":4275},{},[4276],{"type":37,"value":367},{"type":37,"value":369},{"type":32,"tag":224,"props":4279,"children":4280},{},[4281,4282,4286],{"type":37,"value":374},{"type":32,"tag":108,"props":4283,"children":4284},{},[4285],{"type":37,"value":379},{"type":37,"value":381},{"type":32,"tag":33,"props":4288,"children":4289},{},[4290],{"type":37,"value":386},{"type":32,"tag":63,"props":4292,"children":4293},{"id":389},[4294],{"type":37,"value":392},{"type":32,"tag":33,"props":4296,"children":4297},{},[4298],{"type":37,"value":397},{"type":32,"tag":33,"props":4300,"children":4301},{},[4302,4303,4307],{"type":37,"value":402},{"type":32,"tag":40,"props":4304,"children":4305},{},[4306],{"type":37,"value":407},{"type":37,"value":409},{"type":32,"tag":33,"props":4309,"children":4310},{},[4311,4315],{"type":32,"tag":108,"props":4312,"children":4313},{},[4314],{"type":37,"value":417},{"type":37,"value":419},{"type":32,"tag":220,"props":4317,"children":4318},{},[4319,4323,4327,4331],{"type":32,"tag":224,"props":4320,"children":4321},{},[4322],{"type":37,"value":427},{"type":32,"tag":224,"props":4324,"children":4325},{},[4326],{"type":37,"value":432},{"type":32,"tag":224,"props":4328,"children":4329},{},[4330],{"type":37,"value":437},{"type":32,"tag":224,"props":4332,"children":4333},{},[4334],{"type":37,"value":442},{"type":32,"tag":33,"props":4336,"children":4337},{},[4338,4342],{"type":32,"tag":108,"props":4339,"children":4340},{},[4341],{"type":37,"value":450},{"type":37,"value":452},{"type":32,"tag":220,"props":4344,"children":4345},{},[4346,4350,4363,4367],{"type":32,"tag":224,"props":4347,"children":4348},{},[4349],{"type":37,"value":460},{"type":32,"tag":224,"props":4351,"children":4352},{},[4353,4357,4358,4362],{"type":32,"tag":108,"props":4354,"children":4355},{},[4356],{"type":37,"value":468},{"type":37,"value":470},{"type":32,"tag":40,"props":4359,"children":4360},{},[4361],{"type":37,"value":475},{"type":37,"value":477},{"type":32,"tag":224,"props":4364,"children":4365},{},[4366],{"type":37,"value":482},{"type":32,"tag":224,"props":4368,"children":4369},{},[4370,4371,4375],{"type":37,"value":487},{"type":32,"tag":40,"props":4372,"children":4373},{},[4374],{"type":37,"value":492},{"type":37,"value":494},{"type":32,"tag":33,"props":4377,"children":4378},{},[4379,4380,4384],{"type":37,"value":499},{"type":32,"tag":108,"props":4381,"children":4382},{},[4383],{"type":37,"value":504},{"type":37,"value":506},{"type":32,"tag":33,"props":4386,"children":4387},{},[4388,4389,4393,4394,4398,4399,4403],{"type":37,"value":511},{"type":32,"tag":108,"props":4390,"children":4391},{},[4392],{"type":37,"value":516},{"type":37,"value":518},{"type":32,"tag":40,"props":4395,"children":4396},{},[4397],{"type":37,"value":523},{"type":37,"value":525},{"type":32,"tag":149,"props":4400,"children":4401},{"href":528},[4402],{"type":37,"value":531},{"type":37,"value":533},{"type":32,"tag":63,"props":4405,"children":4406},{"id":536},[4407],{"type":37,"value":539},{"type":32,"tag":33,"props":4409,"children":4410},{},[4411],{"type":37,"value":544},{"type":32,"tag":546,"props":4413,"children":4414},{},[4415,4433,4446,4469],{"type":32,"tag":224,"props":4416,"children":4417},{},[4418,4427,4428,4432],{"type":32,"tag":108,"props":4419,"children":4420},{},[4421,4422,4426],{"type":37,"value":556},{"type":32,"tag":40,"props":4423,"children":4424},{},[4425],{"type":37,"value":561},{"type":37,"value":563},{"type":37,"value":565},{"type":32,"tag":108,"props":4429,"children":4430},{},[4431],{"type":37,"value":570},{"type":37,"value":572},{"type":32,"tag":224,"props":4434,"children":4435},{},[4436,4440,4441,4445],{"type":32,"tag":108,"props":4437,"children":4438},{},[4439],{"type":37,"value":580},{"type":37,"value":565},{"type":32,"tag":108,"props":4442,"children":4443},{},[4444],{"type":37,"value":586},{"type":37,"value":588},{"type":32,"tag":224,"props":4447,"children":4448},{},[4449,4458,4459,4463,4464,4468],{"type":32,"tag":108,"props":4450,"children":4451},{},[4452,4453,4457],{"type":37,"value":596},{"type":32,"tag":40,"props":4454,"children":4455},{},[4456],{"type":37,"value":601},{"type":37,"value":603},{"type":37,"value":605},{"type":32,"tag":108,"props":4460,"children":4461},{},[4462],{"type":37,"value":610},{"type":37,"value":612},{"type":32,"tag":108,"props":4465,"children":4466},{},[4467],{"type":37,"value":586},{"type":37,"value":618},{"type":32,"tag":224,"props":4470,"children":4471},{},[4472,4476],{"type":32,"tag":108,"props":4473,"children":4474},{},[4475],{"type":37,"value":626},{"type":37,"value":628},{"type":32,"tag":33,"props":4478,"children":4479},{},[4480],{"type":37,"value":633},{"type":32,"tag":63,"props":4482,"children":4483},{"id":636},[4484],{"type":37,"value":639},{"type":32,"tag":33,"props":4486,"children":4487},{},[4488],{"type":37,"value":644},{"type":32,"tag":33,"props":4490,"children":4491},{},[4492,4496],{"type":32,"tag":108,"props":4493,"children":4494},{},[4495],{"type":37,"value":652},{"type":37,"value":654},{"type":32,"tag":33,"props":4498,"children":4499},{},[4500,4504,4505,4509,4510,4514],{"type":32,"tag":108,"props":4501,"children":4502},{},[4503],{"type":37,"value":662},{"type":37,"value":664},{"type":32,"tag":40,"props":4506,"children":4507},{},[4508],{"type":37,"value":669},{"type":37,"value":671},{"type":32,"tag":149,"props":4511,"children":4512},{"href":674},[4513],{"type":37,"value":677},{"type":37,"value":679},{"type":32,"tag":63,"props":4516,"children":4517},{"id":682},[4518],{"type":37,"value":685},{"type":32,"tag":33,"props":4520,"children":4521},{},[4522],{"type":37,"value":690},{"type":32,"tag":33,"props":4524,"children":4525},{},[4526],{"type":37,"value":695},{"type":32,"tag":33,"props":4528,"children":4529},{},[4530,4531,4535],{"type":37,"value":700},{"type":32,"tag":149,"props":4532,"children":4533},{"href":703},[4534],{"type":37,"value":706},{"type":37,"value":708},{"type":32,"tag":33,"props":4537,"children":4538},{},[4539,4540,4544,4545,4549],{"type":37,"value":713},{"type":32,"tag":40,"props":4541,"children":4542},{},[4543],{"type":37,"value":718},{"type":37,"value":720},{"type":32,"tag":149,"props":4546,"children":4547},{"href":723},[4548],{"type":37,"value":726},{"type":37,"value":728},{"type":32,"tag":63,"props":4551,"children":4552},{"id":731},[4553],{"type":37,"value":734},{"type":32,"tag":33,"props":4555,"children":4556},{},[4557],{"type":37,"value":739},{"type":32,"tag":33,"props":4559,"children":4560},{},[4561],{"type":37,"value":744},{"type":32,"tag":746,"props":4563,"children":4564},{},[],{"type":32,"tag":33,"props":4566,"children":4567},{},[4568,4572,4573],{"type":32,"tag":108,"props":4569,"children":4570},{},[4571],{"type":37,"value":756},{"type":37,"value":758},{"type":32,"tag":149,"props":4574,"children":4575},{"href":761},[4576],{"type":37,"value":764},{"title":7,"searchDepth":766,"depth":766,"links":4578},[4579,4580,4581,4582,4583,4584,4585,4586,4587],{"id":65,"depth":766,"text":769},{"id":120,"depth":766,"text":123},{"id":181,"depth":766,"text":184},{"id":298,"depth":766,"text":301},{"id":389,"depth":766,"text":392},{"id":536,"depth":766,"text":539},{"id":636,"depth":766,"text":639},{"id":682,"depth":766,"text":685},{"id":731,"depth":766,"text":734},1781599534436]