[{"data":1,"prerenderedAt":5320},["ShallowReactive",2],{"blog-mvp-development-cost":3,"related-topic-mvp-development-cost":992,"related-recent-mvp-development-cost":1687,"content-query-ptxgu0GIGT":4572},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"topic":10,"author":11,"coverImg":12,"coverImgAlt":13,"published":14,"toc":14,"readingTime":15,"createdAt":16,"keywords":17,"body":26,"_type":986,"_id":987,"_source":988,"_file":989,"_stem":990,"_extension":991},"/blog/mvp-development-cost","blog",false,"","How Much Does MVP Development Cost in 2026?","MVP development costs $15,000 to $200,000+ in 2026. We break down real pricing by type, team model, and complexity — plus hidden costs most guides skip.","MVP Development","AcornGlobus","/images/blog/mvp-development-cost.webp","How much does MVP development cost in 2026 — a founder's honest guide",true,"18 min read","2026-04-03",[18,19,20,21,22,23,24,25],"how much does MVP development cost","MVP development cost 2026","cost to build an MVP","MVP development pricing","MVP cost breakdown","SaaS MVP cost","minimum viable product cost","startup MVP budget",{"type":27,"children":28,"toc":959},"root",[29,37,51,58,63,186,191,197,204,209,214,223,248,256,284,297,310,316,321,420,433,439,444,449,455,478,483,489,494,500,505,510,516,521,526,538,544,554,559,564,570,575,580,586,591,601,611,619,642,647,658,664,670,675,681,686,692,697,750,755,761,766,771,777,782,798,808,818,835,841,846,856,866,883,888,894,907,925,929],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","You're trying to figure out how much it costs to build an MVP. You've probably seen answers ranging from $5,000 to $500,000, which isn't helpful. Let's fix that.",{"type":30,"tag":31,"props":38,"children":39},{},[40,42,49],{"type":35,"value":41},"Here's the honest answer — from a team that's built MVPs for clients and ",{"type":30,"tag":43,"props":44,"children":46},"a",{"href":45},"/blog/why-we-built-formester",[47],{"type":35,"value":48},"built our own SaaS product",{"type":35,"value":50}," from scratch.",{"type":30,"tag":52,"props":53,"children":55},"h2",{"id":54},"the-short-answer",[56],{"type":35,"value":57},"The Short Answer",{"type":30,"tag":31,"props":59,"children":60},{},[61],{"type":35,"value":62},"Here's what MVP development actually costs in 2026, broken down by type:",{"type":30,"tag":64,"props":65,"children":66},"table",{},[67,92],{"type":30,"tag":68,"props":69,"children":70},"thead",{},[71],{"type":30,"tag":72,"props":73,"children":74},"tr",{},[75,81,87],{"type":30,"tag":76,"props":77,"children":78},"th",{},[79],{"type":35,"value":80},"MVP Type",{"type":30,"tag":76,"props":82,"children":84},{"align":83},"right",[85],{"type":35,"value":86},"Typical Cost Range",{"type":30,"tag":76,"props":88,"children":89},{},[90],{"type":35,"value":91},"Timeline",{"type":30,"tag":93,"props":94,"children":95},"tbody",{},[96,115,133,150,168],{"type":30,"tag":72,"props":97,"children":98},{},[99,105,110],{"type":30,"tag":100,"props":101,"children":102},"td",{},[103],{"type":35,"value":104},"Simple web app (1 platform, core features)",{"type":30,"tag":100,"props":106,"children":107},{"align":83},[108],{"type":35,"value":109},"$15,000 -- $40,000",{"type":30,"tag":100,"props":111,"children":112},{},[113],{"type":35,"value":114},"6--8 weeks",{"type":30,"tag":72,"props":116,"children":117},{},[118,123,128],{"type":30,"tag":100,"props":119,"children":120},{},[121],{"type":35,"value":122},"SaaS MVP (user accounts, billing, dashboard)",{"type":30,"tag":100,"props":124,"children":125},{"align":83},[126],{"type":35,"value":127},"$25,000 -- $75,000",{"type":30,"tag":100,"props":129,"children":130},{},[131],{"type":35,"value":132},"8--12 weeks",{"type":30,"tag":72,"props":134,"children":135},{},[136,141,146],{"type":30,"tag":100,"props":137,"children":138},{},[139],{"type":35,"value":140},"Mobile MVP (iOS or Android)",{"type":30,"tag":100,"props":142,"children":143},{"align":83},[144],{"type":35,"value":145},"$25,000 -- $60,000",{"type":30,"tag":100,"props":147,"children":148},{},[149],{"type":35,"value":132},{"type":30,"tag":72,"props":151,"children":152},{},[153,158,163],{"type":30,"tag":100,"props":154,"children":155},{},[156],{"type":35,"value":157},"Cross-platform mobile (iOS + Android)",{"type":30,"tag":100,"props":159,"children":160},{"align":83},[161],{"type":35,"value":162},"$35,000 -- $80,000",{"type":30,"tag":100,"props":164,"children":165},{},[166],{"type":35,"value":167},"10--14 weeks",{"type":30,"tag":72,"props":169,"children":170},{},[171,176,181],{"type":30,"tag":100,"props":172,"children":173},{},[174],{"type":35,"value":175},"Complex MVP (AI/ML, real-time, multi-platform)",{"type":30,"tag":100,"props":177,"children":178},{"align":83},[179],{"type":35,"value":180},"$60,000 -- $200,000+",{"type":30,"tag":100,"props":182,"children":183},{},[184],{"type":35,"value":185},"12--20 weeks",{"type":30,"tag":31,"props":187,"children":188},{},[189],{"type":35,"value":190},"These ranges are wide because every MVP is different. The next section explains what actually drives your specific cost up or down.",{"type":30,"tag":52,"props":192,"children":194},{"id":193},"what-actually-drives-the-cost",[195],{"type":35,"value":196},"What Actually Drives the Cost",{"type":30,"tag":198,"props":199,"children":201},"h3",{"id":200},"scope-and-feature-complexity",[202],{"type":35,"value":203},"Scope and Feature Complexity",{"type":30,"tag":31,"props":205,"children":206},{},[207],{"type":35,"value":208},"This is the biggest cost driver — by far.",{"type":30,"tag":31,"props":210,"children":211},{},[212],{"type":35,"value":213},"Here's a framework we use with every client: separate your features into \"must-have for launch\" and \"important but can wait.\"",{"type":30,"tag":31,"props":215,"children":216},{},[217],{"type":30,"tag":218,"props":219,"children":220},"strong",{},[221],{"type":35,"value":222},"Must-have for launch (your MVP):",{"type":30,"tag":224,"props":225,"children":226},"ul",{},[227,233,238,243],{"type":30,"tag":228,"props":229,"children":230},"li",{},[231],{"type":35,"value":232},"User authentication and onboarding",{"type":30,"tag":228,"props":234,"children":235},{},[236],{"type":35,"value":237},"The core workflow that tests your main hypothesis",{"type":30,"tag":228,"props":239,"children":240},{},[241],{"type":35,"value":242},"Payment integration (if your model requires it)",{"type":30,"tag":228,"props":244,"children":245},{},[246],{"type":35,"value":247},"Basic admin functions",{"type":30,"tag":31,"props":249,"children":250},{},[251],{"type":30,"tag":218,"props":252,"children":253},{},[254],{"type":35,"value":255},"Important but can wait (your v2):",{"type":30,"tag":224,"props":257,"children":258},{},[259,264,269,274,279],{"type":30,"tag":228,"props":260,"children":261},{},[262],{"type":35,"value":263},"Admin dashboard with analytics",{"type":30,"tag":228,"props":265,"children":266},{},[267],{"type":35,"value":268},"Push notifications",{"type":30,"tag":228,"props":270,"children":271},{},[272],{"type":35,"value":273},"Advanced user roles and permissions",{"type":30,"tag":228,"props":275,"children":276},{},[277],{"type":35,"value":278},"Third-party integrations beyond the essentials",{"type":30,"tag":228,"props":280,"children":281},{},[282],{"type":35,"value":283},"Mobile app (if your web app is the core)",{"type":30,"tag":31,"props":285,"children":286},{},[287,289,295],{"type":35,"value":288},"When we built ",{"type":30,"tag":43,"props":290,"children":292},{"href":291},"/case-studies/formester",[293],{"type":35,"value":294},"Formester",{"type":35,"value":296},", we started with a list of 30+ features. We launched with eight. Users didn't miss the other 22 — they told us what to build next based on how they actually used the product. That taught us more in two weeks than our feature planning taught us in two months.",{"type":30,"tag":31,"props":298,"children":299},{},[300,302,308],{"type":35,"value":301},"We apply the same discipline with clients. When we scoped ",{"type":30,"tag":43,"props":303,"children":305},{"href":304},"/case-studies/eitoss",[306],{"type":35,"value":307},"Eitoss's MVP",{"type":35,"value":309},", we focused on the features that would let them put the product in front of real users and demonstrate traction to investors. Everything else waited.",{"type":30,"tag":198,"props":311,"children":313},{"id":312},"team-structure-and-location",[314],{"type":35,"value":315},"Team Structure and Location",{"type":30,"tag":31,"props":317,"children":318},{},[319],{"type":35,"value":320},"Who builds your MVP significantly affects cost:",{"type":30,"tag":64,"props":322,"children":323},{},[324,345],{"type":30,"tag":68,"props":325,"children":326},{},[327],{"type":30,"tag":72,"props":328,"children":329},{},[330,335,340],{"type":30,"tag":76,"props":331,"children":332},{},[333],{"type":35,"value":334},"Team Model",{"type":30,"tag":76,"props":336,"children":337},{"align":83},[338],{"type":35,"value":339},"Typical Rate (per developer/hr)",{"type":30,"tag":76,"props":341,"children":342},{},[343],{"type":35,"value":344},"Tradeoffs",{"type":30,"tag":93,"props":346,"children":347},{},[348,366,384,402],{"type":30,"tag":72,"props":349,"children":350},{},[351,356,361],{"type":30,"tag":100,"props":352,"children":353},{},[354],{"type":35,"value":355},"In-house (US)",{"type":30,"tag":100,"props":357,"children":358},{"align":83},[359],{"type":35,"value":360},"$120 -- $200",{"type":30,"tag":100,"props":362,"children":363},{},[364],{"type":35,"value":365},"Full control, but slow to hire (3-6 months) and expensive",{"type":30,"tag":72,"props":367,"children":368},{},[369,374,379],{"type":30,"tag":100,"props":370,"children":371},{},[372],{"type":35,"value":373},"Agency (India)",{"type":30,"tag":100,"props":375,"children":376},{"align":83},[377],{"type":35,"value":378},"$20 -- $50",{"type":30,"tag":100,"props":380,"children":381},{},[382],{"type":35,"value":383},"Managed team, process in place, cost-effective for quality",{"type":30,"tag":72,"props":385,"children":386},{},[387,392,397],{"type":30,"tag":100,"props":388,"children":389},{},[390],{"type":35,"value":391},"Freelancers",{"type":30,"tag":100,"props":393,"children":394},{"align":83},[395],{"type":35,"value":396},"$15 -- $150",{"type":30,"tag":100,"props":398,"children":399},{},[400],{"type":35,"value":401},"Flexible but variable quality, availability risk",{"type":30,"tag":72,"props":403,"children":404},{},[405,410,415],{"type":30,"tag":100,"props":406,"children":407},{},[408],{"type":35,"value":409},"Agency (US/Europe)",{"type":30,"tag":100,"props":411,"children":412},{"align":83},[413],{"type":35,"value":414},"$100 -- $200",{"type":30,"tag":100,"props":416,"children":417},{},[418],{"type":35,"value":419},"High quality, but pricing often matches in-house costs",{"type":30,"tag":31,"props":421,"children":422},{},[423,425,431],{"type":35,"value":424},"A note on the agency model: not all agencies are the same. Some assign a rotating pool of developers. Others — ",{"type":30,"tag":43,"props":426,"children":428},{"href":427},"/services/mvp-development",[429],{"type":35,"value":430},"like us",{"type":35,"value":432}," — assign dedicated engineers who stay on your project from start to finish. You'll know them by name. The difference shows in the product.",{"type":30,"tag":198,"props":434,"children":436},{"id":435},"platform-choice",[437],{"type":35,"value":438},"Platform Choice",{"type":30,"tag":31,"props":440,"children":441},{},[442],{"type":35,"value":443},"Building for one platform first saves 30-40% compared to building for web and mobile simultaneously. If you're not sure where your users will be, start with web. It's faster to build, easier to iterate, and you can always add mobile once you've validated the product.",{"type":30,"tag":31,"props":445,"children":446},{},[447],{"type":35,"value":448},"Cross-platform frameworks (React Native, Flutter) can reduce the mobile gap, but they add complexity. For an MVP, pick one platform and do it well.",{"type":30,"tag":198,"props":450,"children":452},{"id":451},"design-complexity",[453],{"type":35,"value":454},"Design Complexity",{"type":30,"tag":224,"props":456,"children":457},{},[458,468],{"type":30,"tag":228,"props":459,"children":460},{},[461,466],{"type":30,"tag":218,"props":462,"children":463},{},[464],{"type":35,"value":465},"Wireframes and functional design:",{"type":35,"value":467}," Usually included in agency pricing. Gets the UX right without pixel-perfect polish.",{"type":30,"tag":228,"props":469,"children":470},{},[471,476],{"type":30,"tag":218,"props":472,"children":473},{},[474],{"type":35,"value":475},"Pixel-perfect UI design:",{"type":35,"value":477}," Adds $5,000 -- $15,000+ depending on screens. Worth it for consumer-facing products. Can wait for most B2B MVPs.",{"type":30,"tag":31,"props":479,"children":480},{},[481],{"type":35,"value":482},"We include wireframes and functional design in our MVP engagements. For pixel-perfect design, we recommend working with a dedicated designer — and we can connect you with good ones.",{"type":30,"tag":52,"props":484,"children":486},{"id":485},"the-costs-nobody-tells-you-about",[487],{"type":35,"value":488},"The Costs Nobody Tells You About",{"type":30,"tag":31,"props":490,"children":491},{},[492],{"type":35,"value":493},"Most MVP cost guides stop at development. That's where the surprises start.",{"type":30,"tag":198,"props":495,"children":497},{"id":496},"post-launch-infrastructure",[498],{"type":35,"value":499},"Post-Launch Infrastructure",{"type":30,"tag":31,"props":501,"children":502},{},[503],{"type":35,"value":504},"Your MVP needs somewhere to live. Cloud hosting (AWS, GCP, Azure) typically runs $100 -- $500/month for a new product. Add monitoring tools, error tracking, email services, and you're looking at $200 -- $800/month before you have significant traffic.",{"type":30,"tag":31,"props":506,"children":507},{},[508],{"type":35,"value":509},"This isn't a lot, but founders who don't budget for it get caught off guard.",{"type":30,"tag":198,"props":511,"children":513},{"id":512},"scope-creep",[514],{"type":35,"value":515},"Scope Creep",{"type":30,"tag":31,"props":517,"children":518},{},[519],{"type":35,"value":520},"The most expensive word in startups is \"also.\"",{"type":30,"tag":31,"props":522,"children":523},{},[524],{"type":35,"value":525},"\"Can we also add...\" is how a $30,000 MVP becomes a $60,000 one. It happens slowly — a feature here, a \"small change\" there. Each one seems reasonable in isolation. Together, they double your timeline and budget.",{"type":30,"tag":31,"props":527,"children":528},{},[529,531,536],{"type":35,"value":530},"This is why we scope aggressively upfront and push back on additions during the build. Not because we don't want to help — because we've seen what happens when scope isn't disciplined. We've felt it on ",{"type":30,"tag":43,"props":532,"children":533},{"href":45},[534],{"type":35,"value":535},"our own product",{"type":35,"value":537},".",{"type":30,"tag":198,"props":539,"children":541},{"id":540},"the-cost-of-getting-it-wrong",[542],{"type":35,"value":543},"The Cost of Getting It Wrong",{"type":30,"tag":31,"props":545,"children":546},{},[547,549],{"type":35,"value":548},"Here's the number nobody puts in their guide: ",{"type":30,"tag":218,"props":550,"children":551},{},[552],{"type":35,"value":553},"rewriting a bad MVP costs 2-3x the original build.",{"type":30,"tag":31,"props":555,"children":556},{},[557],{"type":35,"value":558},"If you hire a cheap freelancer who ships code without tests, no CI/CD, and an architecture that can't scale — you'll be paying to rebuild it within 6-12 months. We've taken over codebases from failed first attempts. The rewrite is always more expensive than doing it right would have been.",{"type":30,"tag":31,"props":560,"children":561},{},[562],{"type":35,"value":563},"Build production-quality from day one. Your MVP might become your product. It did for every successful startup.",{"type":30,"tag":198,"props":565,"children":567},{"id":566},"compliance-and-security",[568],{"type":35,"value":569},"Compliance and Security",{"type":30,"tag":31,"props":571,"children":572},{},[573],{"type":35,"value":574},"If your product handles health data (HIPAA), financial data, or European users (GDPR), compliance adds $5,000 -- $20,000 to your MVP cost. This includes secure data handling, audit logging, encryption standards, and potentially third-party compliance review.",{"type":30,"tag":31,"props":576,"children":577},{},[578],{"type":35,"value":579},"Don't skip this. The fines are worse than the upfront cost.",{"type":30,"tag":52,"props":581,"children":583},{"id":582},"how-your-mvp-budget-connects-to-fundraising",[584],{"type":35,"value":585},"How Your MVP Budget Connects to Fundraising",{"type":30,"tag":31,"props":587,"children":588},{},[589],{"type":35,"value":590},"This is the section most MVP guides skip — and it might be the most important one if you're raising capital.",{"type":30,"tag":31,"props":592,"children":593},{},[594,599],{"type":30,"tag":218,"props":595,"children":596},{},[597],{"type":35,"value":598},"The math matters.",{"type":35,"value":600}," If you're raising a $500K seed round and spending $200K on your MVP, you've used 40% of your runway before you've acquired a single user. That leaves you 6-8 months to find product-market fit, which is tight.",{"type":30,"tag":31,"props":602,"children":603},{},[604,609],{"type":30,"tag":218,"props":605,"children":606},{},[607],{"type":35,"value":608},"A better rule of thumb:",{"type":35,"value":610}," Your MVP should cost 15-30% of your total runway. That leaves room for iteration, marketing, hiring, and the unexpected.",{"type":30,"tag":31,"props":612,"children":613},{},[614],{"type":30,"tag":218,"props":615,"children":616},{},[617],{"type":35,"value":618},"What investors actually want to see:",{"type":30,"tag":224,"props":620,"children":621},{},[622,627,632,637],{"type":30,"tag":228,"props":623,"children":624},{},[625],{"type":35,"value":626},"A working product with real users (even a handful)",{"type":30,"tag":228,"props":628,"children":629},{},[630],{"type":35,"value":631},"Evidence that you can build and ship efficiently",{"type":30,"tag":228,"props":633,"children":634},{},[635],{"type":35,"value":636},"A team that can iterate based on feedback",{"type":30,"tag":228,"props":638,"children":639},{},[640],{"type":35,"value":641},"Enough runway to reach the next milestone",{"type":30,"tag":31,"props":643,"children":644},{},[645],{"type":35,"value":646},"Investors don't want a polished, feature-complete product. They want proof that your team can execute and that your hypothesis has legs. A focused MVP that costs $30,000 and has 50 active users is more compelling than a $150,000 product that nobody's using.",{"type":30,"tag":31,"props":648,"children":649},{},[650,652,656],{"type":35,"value":651},"When we shipped ",{"type":30,"tag":43,"props":653,"children":654},{"href":304},[655],{"type":35,"value":307},{"type":35,"value":657},", we focused on what they needed to demonstrate traction to investors. Demoable product in 8 weeks. Live with real users in 3 months. They raised funding. The MVP didn't need to do everything — it needed to prove the concept.",{"type":30,"tag":52,"props":659,"children":661},{"id":660},"how-to-spend-less-without-building-less",[662],{"type":35,"value":663},"How to Spend Less Without Building Less",{"type":30,"tag":198,"props":665,"children":667},{"id":666},"prioritize-ruthlessly",[668],{"type":35,"value":669},"Prioritize Ruthlessly",{"type":30,"tag":31,"props":671,"children":672},{},[673],{"type":35,"value":674},"Build the one thing that tests your riskiest assumption. If your startup's hypothesis is \"small businesses will pay for automated invoice reminders,\" your MVP is the reminder system — not the full invoicing platform.",{"type":30,"tag":198,"props":676,"children":678},{"id":677},"start-with-one-platform",[679],{"type":35,"value":680},"Start With One Platform",{"type":30,"tag":31,"props":682,"children":683},{},[684],{"type":35,"value":685},"Web first, mobile later. Or vice versa — but pick one. You can always expand after validation.",{"type":30,"tag":198,"props":687,"children":689},{"id":688},"use-what-already-exists",[690],{"type":35,"value":691},"Use What Already Exists",{"type":30,"tag":31,"props":693,"children":694},{},[695],{"type":35,"value":696},"Don't build what you can buy or integrate:",{"type":30,"tag":224,"props":698,"children":699},{},[700,710,720,730,740],{"type":30,"tag":228,"props":701,"children":702},{},[703,708],{"type":30,"tag":218,"props":704,"children":705},{},[706],{"type":35,"value":707},"Authentication:",{"type":35,"value":709}," Auth0, Clerk, Firebase Auth",{"type":30,"tag":228,"props":711,"children":712},{},[713,718],{"type":30,"tag":218,"props":714,"children":715},{},[716],{"type":35,"value":717},"Payments:",{"type":35,"value":719}," Stripe, Razorpay",{"type":30,"tag":228,"props":721,"children":722},{},[723,728],{"type":30,"tag":218,"props":724,"children":725},{},[726],{"type":35,"value":727},"Email:",{"type":35,"value":729}," SendGrid, Postmark",{"type":30,"tag":228,"props":731,"children":732},{},[733,738],{"type":30,"tag":218,"props":734,"children":735},{},[736],{"type":35,"value":737},"Cloud:",{"type":35,"value":739}," AWS, GCP (both have startup credits programs)",{"type":30,"tag":228,"props":741,"children":742},{},[743,748],{"type":30,"tag":218,"props":744,"children":745},{},[746],{"type":35,"value":747},"Analytics:",{"type":35,"value":749}," Mixpanel, PostHog (open-source)",{"type":30,"tag":31,"props":751,"children":752},{},[753],{"type":35,"value":754},"Every integration you use instead of building saves 1-3 weeks of development time.",{"type":30,"tag":198,"props":756,"children":758},{"id":757},"choose-a-fixed-price-or-capped-engagement",[759],{"type":35,"value":760},"Choose a Fixed-Price or Capped Engagement",{"type":30,"tag":31,"props":762,"children":763},{},[764],{"type":35,"value":765},"Know your ceiling before you start building. Fixed-price engagements mean you agree on scope and cost upfront. Capped time-and-materials means you get flexibility on features but a hard budget limit.",{"type":30,"tag":31,"props":767,"children":768},{},[769],{"type":35,"value":770},"We offer both. The right model depends on how well-defined your scope is when we start.",{"type":30,"tag":52,"props":772,"children":774},{"id":773},"what-to-look-for-in-an-mvp-development-partner",[775],{"type":35,"value":776},"What to Look for in an MVP Development Partner",{"type":30,"tag":31,"props":778,"children":779},{},[780],{"type":35,"value":781},"Before you commit to anyone — agency, freelancer, or in-house hire — ask these questions:",{"type":30,"tag":31,"props":783,"children":784},{},[785,790,792,796],{"type":30,"tag":218,"props":786,"children":787},{},[788],{"type":35,"value":789},"Do they build their own products?",{"type":35,"value":791}," A team that's built and maintained their own product understands the founder experience in a way that pure service companies don't. We built ",{"type":30,"tag":43,"props":793,"children":794},{"href":45},[795],{"type":35,"value":294},{"type":35,"value":797},". It taught us what ownership really means.",{"type":30,"tag":31,"props":799,"children":800},{},[801,806],{"type":30,"tag":218,"props":802,"children":803},{},[804],{"type":35,"value":805},"Do they guide scope or just take orders?",{"type":35,"value":807}," If your development partner says yes to everything, they're not protecting your budget or your timeline. You want a team that tells you what you need — and what can wait.",{"type":30,"tag":31,"props":809,"children":810},{},[811,816],{"type":30,"tag":218,"props":812,"children":813},{},[814],{"type":35,"value":815},"Who owns the code?",{"type":35,"value":817}," You should own 100% of your code from day one. No proprietary frameworks. No lock-in. If you want to bring development in-house later, your code should be ready for that.",{"type":30,"tag":31,"props":819,"children":820},{},[821,826,828,833],{"type":30,"tag":218,"props":822,"children":823},{},[824],{"type":35,"value":825},"What happens after launch?",{"type":35,"value":827}," An MVP that ships and then gets abandoned is a waste of money. Ask what post-launch support looks like. Ask if they've stayed with clients beyond the initial build. ",{"type":30,"tag":43,"props":829,"children":830},{"href":304},[831],{"type":35,"value":832},"We have",{"type":35,"value":834}," — Eitoss started as an MVP engagement, and we've been building together for over 2 years.",{"type":30,"tag":52,"props":836,"children":838},{"id":837},"what-happens-after-the-mvp-ships",[839],{"type":35,"value":840},"What Happens After the MVP Ships?",{"type":30,"tag":31,"props":842,"children":843},{},[844],{"type":35,"value":845},"Your MVP is the beginning, not the end. Here's what to budget for after launch:",{"type":30,"tag":31,"props":847,"children":848},{},[849,854],{"type":30,"tag":218,"props":850,"children":851},{},[852],{"type":35,"value":853},"Monthly maintenance:",{"type":35,"value":855}," $1,000 -- $5,000/month, depending on complexity. This covers bug fixes, security patches, minor improvements, and infrastructure management.",{"type":30,"tag":31,"props":857,"children":858},{},[859,864],{"type":30,"tag":218,"props":860,"children":861},{},[862],{"type":35,"value":863},"Iteration based on user feedback:",{"type":35,"value":865}," This is where the real product gets built. Budget for 2-3 months of iteration after launch. The features users ask for will surprise you — and they'll be different from what you planned.",{"type":30,"tag":31,"props":867,"children":868},{},[869,874,876,882],{"type":30,"tag":218,"props":870,"children":871},{},[872],{"type":35,"value":873},"Scaling:",{"type":35,"value":875}," Once you find product-market fit, you'll need to scale the team, the infrastructure, or both. This is where the engagement model often shifts from project-based to ",{"type":30,"tag":43,"props":877,"children":879},{"href":878},"/services/resource-augmentation",[880],{"type":35,"value":881},"resource augmentation",{"type":35,"value":537},{"type":30,"tag":31,"props":884,"children":885},{},[886],{"type":35,"value":887},"Eitoss followed this exact path. MVP in 3 months. Raised funding. Kept building. We're still their engineering team 2+ years later. That continuity — having a team that knows the codebase, the users, and the product vision — saves months of ramp-up time.",{"type":30,"tag":52,"props":889,"children":891},{"id":890},"ready-to-scope-your-mvp",[892],{"type":35,"value":893},"Ready to Scope Your MVP?",{"type":30,"tag":31,"props":895,"children":896},{},[897,899,905],{"type":35,"value":898},"If you're planning an MVP and want honest guidance on what to build, what to skip, and what it'll cost — ",{"type":30,"tag":43,"props":900,"children":902},{"href":901},"/contact",[903],{"type":35,"value":904},"let's talk",{"type":35,"value":906},". We'll give you a realistic timeline and budget, not a sales pitch.",{"type":30,"tag":31,"props":908,"children":909},{},[910,912,917,919,924],{"type":35,"value":911},"You can also explore our ",{"type":30,"tag":43,"props":913,"children":914},{"href":427},[915],{"type":35,"value":916},"MVP development service",{"type":35,"value":918}," or read about how we ",{"type":30,"tag":43,"props":920,"children":921},{"href":304},[922],{"type":35,"value":923},"shipped Eitoss from concept to funding",{"type":35,"value":537},{"type":30,"tag":926,"props":927,"children":928},"hr",{},[],{"type":30,"tag":31,"props":930,"children":931},{},[932],{"type":30,"tag":933,"props":934,"children":935},"em",{},[936,938,944,946,952,953],{"type":35,"value":937},"Related reading: ",{"type":30,"tag":43,"props":939,"children":941},{"href":940},"/blog/hire-developers-startup",[942],{"type":35,"value":943},"How to Hire Developers for Your Startup Without Getting Burned",{"type":35,"value":945}," | ",{"type":30,"tag":43,"props":947,"children":949},{"href":948},"/blog/staff-augmentation-vs-outsourcing",[950],{"type":35,"value":951},"Staff Augmentation vs. Outsourcing: What's Actually Different?",{"type":35,"value":945},{"type":30,"tag":43,"props":954,"children":956},{"href":955},"/blog/hire-freelancer-or-agency-for-business",[957],{"type":35,"value":958},"Should You Hire a Freelancer or Agency for Your Business?",{"title":7,"searchDepth":960,"depth":960,"links":961},2,[962,963,970,976,977,983,984,985],{"id":54,"depth":960,"text":57},{"id":193,"depth":960,"text":196,"children":964},[965,967,968,969],{"id":200,"depth":966,"text":203},3,{"id":312,"depth":966,"text":315},{"id":435,"depth":966,"text":438},{"id":451,"depth":966,"text":454},{"id":485,"depth":960,"text":488,"children":971},[972,973,974,975],{"id":496,"depth":966,"text":499},{"id":512,"depth":966,"text":515},{"id":540,"depth":966,"text":543},{"id":566,"depth":966,"text":569},{"id":582,"depth":960,"text":585},{"id":660,"depth":960,"text":663,"children":978},[979,980,981,982],{"id":666,"depth":966,"text":669},{"id":677,"depth":966,"text":680},{"id":688,"depth":966,"text":691},{"id":757,"depth":966,"text":760},{"id":773,"depth":960,"text":776},{"id":837,"depth":960,"text":840},{"id":890,"depth":960,"text":893},"markdown","content:blog:mvp-development-cost.md","content","blog/mvp-development-cost.md","blog/mvp-development-cost","md",[993],{"_path":994,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":995,"description":996,"topic":10,"author":11,"coverImg":997,"coverImgAlt":998,"published":14,"toc":14,"readingTime":999,"createdAt":1000,"keywords":1001,"body":1008,"_type":986,"_id":1684,"_source":988,"_file":1685,"_stem":1686,"_extension":991},"/blog/mvp-development-process","MVP Development Process: What 8 Weeks Really Looks Like","A week-by-week breakdown of our real MVP development process -- from discovery to launch -- with the honest details most agencies leave out.","/images/blog/mvp-development-process.webp","MVP Development Process — a week-by-week breakdown of what building an MVP really looks like","16 min read","2026-04-09",[1002,1003,1004,1005,1006,1007],"mvp development process","mvp development timeline","how long does it take to build an mvp","mvp development steps","build mvp in 8 weeks","startup mvp timeline",{"type":27,"children":1009,"toc":1670},[1010,1015,1020,1031,1037,1042,1047,1070,1075,1081,1086,1091,1097,1102,1110,1133,1141,1167,1177,1182,1188,1193,1200,1223,1230,1248,1258,1263,1269,1274,1281,1304,1311,1324,1333,1338,1344,1349,1356,1379,1386,1404,1414,1419,1425,1430,1437,1465,1472,1495,1505,1511,1516,1521,1526,1531,1536,1541,1546,1552,1557,1574,1584,1594,1611,1617,1627,1637,1647,1653,1665],{"type":30,"tag":31,"props":1011,"children":1012},{},[1013],{"type":35,"value":1014},"You've heard it before. \"An MVP takes 4 to 12 weeks.\" That range is so wide it's practically useless.",{"type":30,"tag":31,"props":1016,"children":1017},{},[1018],{"type":35,"value":1019},"When you're a founder with runway to manage and investors to update, you need more than a range. You need to know what actually happens each week. What decisions you'll face. What your team is building while you're wondering if this is all going to come together.",{"type":30,"tag":31,"props":1021,"children":1022},{},[1023,1025,1029],{"type":35,"value":1024},"We've shipped MVPs for startups that went on to raise funding. We've also built our own product, ",{"type":30,"tag":43,"props":1026,"children":1027},{"href":45},[1028],{"type":35,"value":294},{"type":35,"value":1030},", from scratch. Here's what the MVP development process actually looks like when you break it down week by week -- including the parts that are uncomfortable.",{"type":30,"tag":52,"props":1032,"children":1034},{"id":1033},"why-most-mvp-timeline-guides-dont-help",[1035],{"type":35,"value":1036},"Why Most MVP Timeline Guides Don't Help",{"type":30,"tag":31,"props":1038,"children":1039},{},[1040],{"type":35,"value":1041},"Most guides about the MVP development process describe phases in the abstract. \"Discovery phase. Design phase. Development phase.\" That's not a timeline. That's a table of contents.",{"type":30,"tag":31,"props":1043,"children":1044},{},[1045],{"type":35,"value":1046},"What founders actually want to know:",{"type":30,"tag":224,"props":1048,"children":1049},{},[1050,1055,1060,1065],{"type":30,"tag":228,"props":1051,"children":1052},{},[1053],{"type":35,"value":1054},"When will I see something working?",{"type":30,"tag":228,"props":1056,"children":1057},{},[1058],{"type":35,"value":1059},"What decisions do I need to make, and when?",{"type":30,"tag":228,"props":1061,"children":1062},{},[1063],{"type":35,"value":1064},"What happens when we realize the scope is bigger than we thought?",{"type":30,"tag":228,"props":1066,"children":1067},{},[1068],{"type":35,"value":1069},"What do I get at the end, and what happens next?",{"type":30,"tag":31,"props":1071,"children":1072},{},[1073],{"type":35,"value":1074},"Here's our honest answer to all of those questions.",{"type":30,"tag":52,"props":1076,"children":1078},{"id":1077},"our-8-week-mvp-development-process",[1079],{"type":35,"value":1080},"Our 8-Week MVP Development Process",{"type":30,"tag":31,"props":1082,"children":1083},{},[1084],{"type":35,"value":1085},"This is the process we've refined over years of building MVPs -- for clients and for ourselves. It's not theoretical. It's what we actually do.",{"type":30,"tag":31,"props":1087,"children":1088},{},[1089],{"type":35,"value":1090},"A caveat before we start: 8 weeks assumes proper scoping. The biggest reason MVPs take longer than expected isn't slow development -- it's unclear scope. When you try to build everything, you end up shipping nothing. Scoping is where most projects either succeed or fail.",{"type":30,"tag":198,"props":1092,"children":1094},{"id":1093},"weeks-1-2-discovery-and-scoping",[1095],{"type":35,"value":1096},"Weeks 1-2: Discovery and Scoping",{"type":30,"tag":31,"props":1098,"children":1099},{},[1100],{"type":35,"value":1101},"This is where we sit down together and figure out what we're actually building. Not the grand vision (that's important, but it comes later). The MVP. The smallest version of your product that proves the idea works.",{"type":30,"tag":31,"props":1103,"children":1104},{},[1105],{"type":30,"tag":218,"props":1106,"children":1107},{},[1108],{"type":35,"value":1109},"What happens:",{"type":30,"tag":224,"props":1111,"children":1112},{},[1113,1118,1123,1128],{"type":30,"tag":228,"props":1114,"children":1115},{},[1116],{"type":35,"value":1117},"We learn your business. Who are your users? What problem are you solving? Why does this matter?",{"type":30,"tag":228,"props":1119,"children":1120},{},[1121],{"type":35,"value":1122},"We map out every feature you want, then cut it in half. Then cut it again.",{"type":30,"tag":228,"props":1124,"children":1125},{},[1126],{"type":35,"value":1127},"We prioritize ruthlessly: must-have vs. nice-to-have vs. future-version.",{"type":30,"tag":228,"props":1129,"children":1130},{},[1131],{"type":35,"value":1132},"We define the technical architecture -- what stack makes sense for your product and your budget.",{"type":30,"tag":31,"props":1134,"children":1135},{},[1136],{"type":30,"tag":218,"props":1137,"children":1138},{},[1139],{"type":35,"value":1140},"What you get:",{"type":30,"tag":224,"props":1142,"children":1143},{},[1144,1149,1154,1159],{"type":30,"tag":228,"props":1145,"children":1146},{},[1147],{"type":35,"value":1148},"A product brief with defined MVP scope",{"type":30,"tag":228,"props":1150,"children":1151},{},[1152],{"type":35,"value":1153},"Technical architecture document",{"type":30,"tag":228,"props":1155,"children":1156},{},[1157],{"type":35,"value":1158},"A realistic timeline with milestones",{"type":30,"tag":228,"props":1160,"children":1161},{},[1162],{"type":30,"tag":43,"props":1163,"children":1164},{"href":4},[1165],{"type":35,"value":1166},"A cost estimate tied to actual scope",{"type":30,"tag":31,"props":1168,"children":1169},{},[1170,1175],{"type":30,"tag":218,"props":1171,"children":1172},{},[1173],{"type":35,"value":1174},"What this feels like as a founder:",{"type":35,"value":1176},"\nThis is the hardest part for most founders. You've been thinking about your product for months, maybe years. Every feature feels essential. But an MVP that tries to do everything does nothing well.",{"type":30,"tag":31,"props":1178,"children":1179},{},[1180],{"type":35,"value":1181},"We'll push back on features. Not because we don't want to build them -- but because we want your MVP to actually ship in 8 weeks, not 8 months. We'll tell you honestly what you need now and what can wait. The features you cut aren't gone. They're in the roadmap for after launch.",{"type":30,"tag":198,"props":1183,"children":1185},{"id":1184},"week-3-design-and-architecture",[1186],{"type":35,"value":1187},"Week 3: Design and Architecture",{"type":30,"tag":31,"props":1189,"children":1190},{},[1191],{"type":35,"value":1192},"With the scope locked, we design the experience and the system behind it.",{"type":30,"tag":31,"props":1194,"children":1195},{},[1196],{"type":30,"tag":218,"props":1197,"children":1198},{},[1199],{"type":35,"value":1109},{"type":30,"tag":224,"props":1201,"children":1202},{},[1203,1208,1213,1218],{"type":30,"tag":228,"props":1204,"children":1205},{},[1206],{"type":35,"value":1207},"Wireframes and UI design for core user flows",{"type":30,"tag":228,"props":1209,"children":1210},{},[1211],{"type":35,"value":1212},"Database design and API architecture",{"type":30,"tag":228,"props":1214,"children":1215},{},[1216],{"type":35,"value":1217},"Stack selection (we're stack-agnostic -- we pick what's right for your product, not what we're comfortable with)",{"type":30,"tag":228,"props":1219,"children":1220},{},[1221],{"type":35,"value":1222},"Development environment setup, CI/CD pipeline configuration",{"type":30,"tag":31,"props":1224,"children":1225},{},[1226],{"type":30,"tag":218,"props":1227,"children":1228},{},[1229],{"type":35,"value":1140},{"type":30,"tag":224,"props":1231,"children":1232},{},[1233,1238,1243],{"type":30,"tag":228,"props":1234,"children":1235},{},[1236],{"type":35,"value":1237},"Clickable prototype you can share with early users or investors",{"type":30,"tag":228,"props":1239,"children":1240},{},[1241],{"type":35,"value":1242},"Architecture diagram showing how the system fits together",{"type":30,"tag":228,"props":1244,"children":1245},{},[1246],{"type":35,"value":1247},"A development environment ready for sprint 1",{"type":30,"tag":31,"props":1249,"children":1250},{},[1251,1256],{"type":30,"tag":218,"props":1252,"children":1253},{},[1254],{"type":35,"value":1255},"Why this week matters:",{"type":35,"value":1257},"\nDecisions made in week 3 affect every week that follows. The stack choice, the database design, the API structure -- these are the foundation. We've seen projects where quick architectural decisions early on cost teams months of rework later.",{"type":30,"tag":31,"props":1259,"children":1260},{},[1261],{"type":35,"value":1262},"When we built Formester, the architecture decisions we made in the first weeks are still supporting the product today. That's the standard we hold ourselves to.",{"type":30,"tag":198,"props":1264,"children":1266},{"id":1265},"weeks-4-5-sprint-1-core-features",[1267],{"type":35,"value":1268},"Weeks 4-5: Sprint 1 (Core Features)",{"type":30,"tag":31,"props":1270,"children":1271},{},[1272],{"type":35,"value":1273},"This is where code starts flowing. We build the foundation -- the core user flows that make your product a product.",{"type":30,"tag":31,"props":1275,"children":1276},{},[1277],{"type":30,"tag":218,"props":1278,"children":1279},{},[1280],{"type":35,"value":1109},{"type":30,"tag":224,"props":1282,"children":1283},{},[1284,1289,1294,1299],{"type":30,"tag":228,"props":1285,"children":1286},{},[1287],{"type":35,"value":1288},"We build the primary user journey end-to-end",{"type":30,"tag":228,"props":1290,"children":1291},{},[1292],{"type":35,"value":1293},"Core features take shape: authentication, data models, primary workflows",{"type":30,"tag":228,"props":1295,"children":1296},{},[1297],{"type":35,"value":1298},"We deploy to a staging environment so you can see progress in real time",{"type":30,"tag":228,"props":1300,"children":1301},{},[1302],{"type":35,"value":1303},"We demo at the end of week 5",{"type":30,"tag":31,"props":1305,"children":1306},{},[1307],{"type":30,"tag":218,"props":1308,"children":1309},{},[1310],{"type":35,"value":1140},{"type":30,"tag":224,"props":1312,"children":1313},{},[1314,1319],{"type":30,"tag":228,"props":1315,"children":1316},{},[1317],{"type":35,"value":1318},"A working build you can click through (not a mockup -- real, functioning software)",{"type":30,"tag":228,"props":1320,"children":1321},{},[1322],{"type":35,"value":1323},"Your first demo: see the product running, test the core flow",{"type":30,"tag":31,"props":1325,"children":1326},{},[1327,1331],{"type":30,"tag":218,"props":1328,"children":1329},{},[1330],{"type":35,"value":1174},{"type":35,"value":1332},"\nHere's the honest part. Weeks 4-5 are when many founders hit a moment of doubt. The product works, but it doesn't look like the vision yet. The UI might feel rough. The flow might feel incomplete. That's normal.",{"type":30,"tag":31,"props":1334,"children":1335},{},[1336],{"type":35,"value":1337},"An MVP at this stage is like a house with the framing up and the plumbing in. It doesn't look like a home yet. But the structure is sound, and everything else builds on top of it. If the demo at week 5 makes you nervous, that's okay. We'll walk through what's coming in the next sprint.",{"type":30,"tag":198,"props":1339,"children":1341},{"id":1340},"weeks-6-7-sprint-2-feature-completion",[1342],{"type":35,"value":1343},"Weeks 6-7: Sprint 2 (Feature Completion)",{"type":30,"tag":31,"props":1345,"children":1346},{},[1347],{"type":35,"value":1348},"The second sprint is where the product starts feeling real.",{"type":30,"tag":31,"props":1350,"children":1351},{},[1352],{"type":30,"tag":218,"props":1353,"children":1354},{},[1355],{"type":35,"value":1109},{"type":30,"tag":224,"props":1357,"children":1358},{},[1359,1364,1369,1374],{"type":30,"tag":228,"props":1360,"children":1361},{},[1362],{"type":35,"value":1363},"Remaining features get built: secondary flows, integrations, edge cases",{"type":30,"tag":228,"props":1365,"children":1366},{},[1367],{"type":35,"value":1368},"We connect third-party services (payment processing, email, analytics)",{"type":30,"tag":228,"props":1370,"children":1371},{},[1372],{"type":35,"value":1373},"Internal testing begins -- our QA process catches bugs before you see them",{"type":30,"tag":228,"props":1375,"children":1376},{},[1377],{"type":35,"value":1378},"UI polish and responsive design",{"type":30,"tag":31,"props":1380,"children":1381},{},[1382],{"type":30,"tag":218,"props":1383,"children":1384},{},[1385],{"type":35,"value":1140},{"type":30,"tag":224,"props":1387,"children":1388},{},[1389,1394,1399],{"type":30,"tag":228,"props":1390,"children":1391},{},[1392],{"type":35,"value":1393},"Feature-complete build with all MVP scope implemented",{"type":30,"tag":228,"props":1395,"children":1396},{},[1397],{"type":35,"value":1398},"Internal QA results with bug fixes underway",{"type":30,"tag":228,"props":1400,"children":1401},{},[1402],{"type":35,"value":1403},"A product that looks and feels like what you imagined",{"type":30,"tag":31,"props":1405,"children":1406},{},[1407,1412],{"type":30,"tag":218,"props":1408,"children":1409},{},[1410],{"type":35,"value":1411},"Key decision point:",{"type":35,"value":1413},"\nSomething always comes up during development that wasn't in the original plan. A feature turns out to be more complex than expected. You discover a user need you hadn't anticipated.",{"type":30,"tag":31,"props":1415,"children":1416},{},[1417],{"type":35,"value":1418},"We'll help you make the call: cut scope to hit 8 weeks, or extend the timeline to include it? There's no wrong answer, but there's always a trade-off. We'll give you the honest assessment so you can decide based on your priorities -- launch date, feature set, or budget.",{"type":30,"tag":198,"props":1420,"children":1422},{"id":1421},"week-8-testing-polish-and-launch",[1423],{"type":35,"value":1424},"Week 8: Testing, Polish, and Launch",{"type":30,"tag":31,"props":1426,"children":1427},{},[1428],{"type":35,"value":1429},"The final push. Everything comes together.",{"type":30,"tag":31,"props":1431,"children":1432},{},[1433],{"type":30,"tag":218,"props":1434,"children":1435},{},[1436],{"type":35,"value":1109},{"type":30,"tag":224,"props":1438,"children":1439},{},[1440,1445,1450,1455,1460],{"type":30,"tag":228,"props":1441,"children":1442},{},[1443],{"type":35,"value":1444},"Final QA pass across devices and browsers",{"type":30,"tag":228,"props":1446,"children":1447},{},[1448],{"type":35,"value":1449},"Bug fixes and performance optimization",{"type":30,"tag":228,"props":1451,"children":1452},{},[1453],{"type":35,"value":1454},"Production deployment setup (cloud infrastructure, monitoring, backups)",{"type":30,"tag":228,"props":1456,"children":1457},{},[1458],{"type":35,"value":1459},"Documentation: deployment process, architecture overview, codebase guide",{"type":30,"tag":228,"props":1461,"children":1462},{},[1463],{"type":35,"value":1464},"Launch",{"type":30,"tag":31,"props":1466,"children":1467},{},[1468],{"type":30,"tag":218,"props":1469,"children":1470},{},[1471],{"type":35,"value":1140},{"type":30,"tag":224,"props":1473,"children":1474},{},[1475,1480,1485,1490],{"type":30,"tag":228,"props":1476,"children":1477},{},[1478],{"type":35,"value":1479},"Production-ready MVP deployed and live",{"type":30,"tag":228,"props":1481,"children":1482},{},[1483],{"type":35,"value":1484},"CI/CD pipeline (updates ship with a single command)",{"type":30,"tag":228,"props":1486,"children":1487},{},[1488],{"type":35,"value":1489},"Technical documentation for your codebase",{"type":30,"tag":228,"props":1491,"children":1492},{},[1493],{"type":35,"value":1494},"Post-launch support for the first 2 weeks",{"type":30,"tag":31,"props":1496,"children":1497},{},[1498,1503],{"type":30,"tag":218,"props":1499,"children":1500},{},[1501],{"type":35,"value":1502},"What launch day feels like:",{"type":35,"value":1504},"\nThere's a mix of excitement and anxiety on launch day. That's normal too. The first real users will find things you didn't expect. That's not a failure of the process -- that's the point of an MVP. You're learning what works and what doesn't, with real data instead of assumptions.",{"type":30,"tag":52,"props":1506,"children":1508},{"id":1507},"what-happens-after-week-8",[1509],{"type":35,"value":1510},"What Happens After Week 8",{"type":30,"tag":31,"props":1512,"children":1513},{},[1514],{"type":35,"value":1515},"This is where most guides end. And this is where most agencies disappear.",{"type":30,"tag":31,"props":1517,"children":1518},{},[1519],{"type":35,"value":1520},"The post-launch period is actually the most important phase of your product's life. You have real users now. They're finding bugs you didn't catch. They're using features in ways you didn't anticipate. They're telling you -- through behavior, not words -- what matters and what doesn't.",{"type":30,"tag":31,"props":1522,"children":1523},{},[1524],{"type":35,"value":1525},"This is the moment you need your engineering team the most.",{"type":30,"tag":31,"props":1527,"children":1528},{},[1529],{"type":35,"value":1530},"We stay.",{"type":30,"tag":31,"props":1532,"children":1533},{},[1534],{"type":35,"value":1535},"We shipped a demoable product for Eitoss in 8 weeks and a production-ready version in 3 months. They used it to raise funding. That was over 2 years ago. We're still building together.",{"type":30,"tag":31,"props":1537,"children":1538},{},[1539],{"type":35,"value":1540},"That's not an exception. That's how we work. PerformLine started with 1 engineer from our team. Two years later, we're 8+ engineers deep. They didn't plan for that at the start. The partnership grew because the work was good and the trust was real.",{"type":30,"tag":31,"props":1542,"children":1543},{},[1544],{"type":35,"value":1545},"We don't see the MVP launch as the finish line. We see it as the starting line. The first version of your product is never the best version. What matters is whether the team that built it is still there to make it better.",{"type":30,"tag":52,"props":1547,"children":1549},{"id":1548},"how-to-set-your-mvp-up-for-success",[1550],{"type":35,"value":1551},"How to Set Your MVP Up for Success",{"type":30,"tag":31,"props":1553,"children":1554},{},[1555],{"type":35,"value":1556},"Before you start the 8-week clock, here's what makes the difference between an MVP that gains traction and one that collects dust.",{"type":30,"tag":31,"props":1558,"children":1559},{},[1560,1565,1567,1572],{"type":30,"tag":218,"props":1561,"children":1562},{},[1563],{"type":35,"value":1564},"Validate before you build.",{"type":35,"value":1566}," Talk to potential users. Build a waitlist. Test the idea with a landing page. The best MVP development process in the world can't save a product nobody wants. ",{"type":30,"tag":43,"props":1568,"children":1569},{"href":4},[1570],{"type":35,"value":1571},"The cost of building an MVP",{"type":35,"value":1573}," is significant -- make sure you're solving a real problem first.",{"type":30,"tag":31,"props":1575,"children":1576},{},[1577,1582],{"type":30,"tag":218,"props":1578,"children":1579},{},[1580],{"type":35,"value":1581},"Be honest about your budget and timeline.",{"type":35,"value":1583}," If you have 12 weeks of runway and need an MVP in 8, that's tight but doable. If you have 6 weeks of runway, we need to have a different conversation. We'll always give you an honest assessment.",{"type":30,"tag":31,"props":1585,"children":1586},{},[1587,1592],{"type":30,"tag":218,"props":1588,"children":1589},{},[1590],{"type":35,"value":1591},"Choose a partner who will tell you \"no.\"",{"type":35,"value":1593}," If every agency you talk to says \"yes, we can do that\" to every feature and every timeline, be suspicious. A good partner pushes back because they care about the outcome, not just the deal.",{"type":30,"tag":31,"props":1595,"children":1596},{},[1597,1602,1604,1609],{"type":30,"tag":218,"props":1598,"children":1599},{},[1600],{"type":35,"value":1601},"Plan for what comes after launch.",{"type":35,"value":1603}," Your MVP is the beginning, not the end. Budget for iteration. Plan for user feedback loops. ",{"type":30,"tag":43,"props":1605,"children":1606},{"href":940},[1607],{"type":35,"value":1608},"Think about your team structure",{"type":35,"value":1610}," beyond launch day.",{"type":30,"tag":52,"props":1612,"children":1614},{"id":1613},"what-this-process-is-not",[1615],{"type":35,"value":1616},"What This Process Is Not",{"type":30,"tag":31,"props":1618,"children":1619},{},[1620,1625],{"type":30,"tag":218,"props":1621,"children":1622},{},[1623],{"type":35,"value":1624},"Not a throwaway prototype.",{"type":35,"value":1626}," Everything we build in 8 weeks is production-quality. Clean code, tested, documented, deployed. You're not throwing this away and rebuilding -- you're iterating on a solid foundation.",{"type":30,"tag":31,"props":1628,"children":1629},{},[1630,1635],{"type":30,"tag":218,"props":1631,"children":1632},{},[1633],{"type":35,"value":1634},"Not a waterfall project.",{"type":35,"value":1636}," You see working software every 2 weeks. You give feedback. We adjust. It's a conversation, not a handoff.",{"type":30,"tag":31,"props":1638,"children":1639},{},[1640,1645],{"type":30,"tag":218,"props":1641,"children":1642},{},[1643],{"type":35,"value":1644},"Not a transaction.",{"type":35,"value":1646}," The 8-week process is how we start a partnership. The best client relationships we have started with an MVP. What happened next -- the growth, the scaling, the product evolution -- that's the real story.",{"type":30,"tag":52,"props":1648,"children":1650},{"id":1649},"ready-to-talk-about-your-mvp",[1651],{"type":35,"value":1652},"Ready to Talk About Your MVP?",{"type":30,"tag":31,"props":1654,"children":1655},{},[1656,1658,1663],{"type":35,"value":1657},"If you have a product idea and you're wondering what 8 weeks could look like for you, we're happy to talk it through. We'll give you an honest assessment of scope, timeline, and ",{"type":30,"tag":43,"props":1659,"children":1660},{"href":4},[1661],{"type":35,"value":1662},"what it might cost",{"type":35,"value":1664}," -- no commitment, no pressure.",{"type":30,"tag":31,"props":1666,"children":1667},{},[1668],{"type":35,"value":1669},"The first step is always a conversation. And if we're not the right fit, we'll tell you that too.",{"title":7,"searchDepth":960,"depth":960,"links":1671},[1672,1673,1680,1681,1682,1683],{"id":1033,"depth":960,"text":1036},{"id":1077,"depth":960,"text":1080,"children":1674},[1675,1676,1677,1678,1679],{"id":1093,"depth":966,"text":1096},{"id":1184,"depth":966,"text":1187},{"id":1265,"depth":966,"text":1268},{"id":1340,"depth":966,"text":1343},{"id":1421,"depth":966,"text":1424},{"id":1507,"depth":960,"text":1510},{"id":1548,"depth":960,"text":1551},{"id":1613,"depth":960,"text":1616},{"id":1649,"depth":960,"text":1652},"content:blog:mvp-development-process.md","blog/mvp-development-process.md","blog/mvp-development-process",[1688,2583,3391,4016],{"_path":1689,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1690,"description":1691,"topic":1692,"author":11,"coverImg":1693,"coverImgAlt":1694,"published":14,"createdAt":1695,"keywords":1696,"body":1703,"_type":986,"_id":2580,"_source":988,"_file":2581,"_stem":2582,"_extension":991},"/blog/freelancer-vs-agency-software-development","Freelancer vs. Agency for Software Development: An Honest Comparison","Freelancer or agency for your software project? We break down the real trade-offs -- cost, risk, quality, and long-term outcomes -- with honest advice.","Hiring and Team Building","/images/blog/freelancer-vs-agency.webp","Freelancer vs Agency for software development — an honest comparison of trade-offs","2026-04-15",[1697,1698,1699,1700,1701,1702],"freelancer vs agency software development","freelancer vs development agency","hire freelancer or agency for app","freelancer vs software development company","freelancer vs agency for startup","should I hire freelancer or agency",{"type":27,"children":1704,"toc":2560},[1705,1710,1715,1720,1726,1731,1736,1741,1746,1752,1757,1763,1773,1783,1793,1803,1813,1819,1829,1839,1849,1859,1865,1870,1880,1890,1900,1910,1920,1926,1931,1937,1947,1957,1974,1984,1994,2000,2010,2020,2030,2040,2056,2062,2067,2077,2087,2097,2107,2117,2123,2128,2133,2143,2160,2169,2179,2184,2190,2195,2368,2378,2384,2389,2395,2448,2454,2517,2523,2528,2533,2545,2550,2555],{"type":30,"tag":31,"props":1706,"children":1707},{},[1708],{"type":35,"value":1709},"Let's start with a disclosure: we're an agency. We have a stake in this comparison, and pretending otherwise would be dishonest.",{"type":30,"tag":31,"props":1711,"children":1712},{},[1713],{"type":35,"value":1714},"So here's our commitment for this article: we're going to make the genuine case for freelancers, the genuine case for agencies, and then talk about what actually matters -- which is neither the label nor the pricing model, but whether the people building your product care about the outcome.",{"type":30,"tag":31,"props":1716,"children":1717},{},[1718],{"type":35,"value":1719},"We've worked with great freelancers. We've recommended freelancers to prospects when they were the better fit. We've also seen freelancer engagements go badly, the same way we've seen agency engagements go badly. The model isn't the problem. The fit is.",{"type":30,"tag":52,"props":1721,"children":1723},{"id":1722},"why-this-comparison-is-harder-than-it-looks",[1724],{"type":35,"value":1725},"Why This Comparison Is Harder Than It Looks",{"type":30,"tag":31,"props":1727,"children":1728},{},[1729],{"type":35,"value":1730},"Every version of this article you'll find online follows the same formula: list freelancer pros, list freelancer cons, list agency pros, list agency cons, conclude that agencies are better for \"serious\" projects. Convenient, since they're all written by agencies.",{"type":30,"tag":31,"props":1732,"children":1733},{},[1734],{"type":35,"value":1735},"The reality is messier.",{"type":30,"tag":31,"props":1737,"children":1738},{},[1739],{"type":35,"value":1740},"A brilliant freelancer who understands your product will outperform a mediocre agency every time. A well-run agency will outperform a brilliant freelancer on complex, multi-disciplinary projects. And a bad version of either will cost you months.",{"type":30,"tag":31,"props":1742,"children":1743},{},[1744],{"type":35,"value":1745},"The question isn't \"freelancer or agency?\" The question is: what does your project actually need, and what kind of relationship will get you there?",{"type":30,"tag":52,"props":1747,"children":1749},{"id":1748},"the-honest-case-for-freelancers",[1750],{"type":35,"value":1751},"The Honest Case for Freelancers",{"type":30,"tag":31,"props":1753,"children":1754},{},[1755],{"type":35,"value":1756},"We mean this sincerely. There are situations where a freelancer is the right choice -- even over us.",{"type":30,"tag":198,"props":1758,"children":1760},{"id":1759},"when-freelancers-are-the-right-choice",[1761],{"type":35,"value":1762},"When Freelancers Are the Right Choice",{"type":30,"tag":31,"props":1764,"children":1765},{},[1766,1771],{"type":30,"tag":218,"props":1767,"children":1768},{},[1769],{"type":35,"value":1770},"You have a clearly defined, scoped task.",{"type":35,"value":1772}," You need a React Native developer to build a specific feature. You need a backend engineer to set up your API gateway. The scope is clear, the tech is defined, and you have someone internally who can review the work.",{"type":30,"tag":31,"props":1774,"children":1775},{},[1776,1781],{"type":30,"tag":218,"props":1777,"children":1778},{},[1779],{"type":35,"value":1780},"You have internal product and technical oversight.",{"type":35,"value":1782}," If you have a CTO or technical co-founder who can define requirements, review code, and manage the relationship, a freelancer can slot into that structure efficiently.",{"type":30,"tag":31,"props":1784,"children":1785},{},[1786,1791],{"type":30,"tag":218,"props":1787,"children":1788},{},[1789],{"type":35,"value":1790},"You need specialized expertise for a short engagement.",{"type":35,"value":1792}," You need a machine learning engineer for 6 weeks to build a recommendation model. You need a DevOps specialist to set up your CI/CD pipeline. Agencies often don't have this kind of niche specialization available on short notice.",{"type":30,"tag":31,"props":1794,"children":1795},{},[1796,1801],{"type":30,"tag":218,"props":1797,"children":1798},{},[1799],{"type":35,"value":1800},"Budget is tight and you can manage the project yourself.",{"type":35,"value":1802}," Early-stage startups with technical founders often get better value from freelancers. You're paying for code, not process, and you have the technical judgment to evaluate quality.",{"type":30,"tag":31,"props":1804,"children":1805},{},[1806,1811],{"type":30,"tag":218,"props":1807,"children":1808},{},[1809],{"type":35,"value":1810},"The project is lower-risk.",{"type":35,"value":1812}," A marketing site. An internal dashboard. A prototype you might throw away. When the stakes are lower, the risk profile of a solo practitioner is more acceptable.",{"type":30,"tag":198,"props":1814,"children":1816},{"id":1815},"what-freelancers-do-well",[1817],{"type":35,"value":1818},"What Freelancers Do Well",{"type":30,"tag":31,"props":1820,"children":1821},{},[1822,1827],{"type":30,"tag":218,"props":1823,"children":1824},{},[1825],{"type":35,"value":1826},"Direct communication.",{"type":35,"value":1828}," No account managers, no project managers relaying your messages. You talk to the person writing the code. There's no game of telephone.",{"type":30,"tag":31,"props":1830,"children":1831},{},[1832,1837],{"type":30,"tag":218,"props":1833,"children":1834},{},[1835],{"type":35,"value":1836},"Cost efficiency for defined work.",{"type":35,"value":1838}," For small, well-scoped projects, freelancers are often 30-50% less expensive than agencies. You're not paying for the infrastructure around the developer -- the PM, the QA engineer, the overhead.",{"type":30,"tag":31,"props":1840,"children":1841},{},[1842,1847],{"type":30,"tag":218,"props":1843,"children":1844},{},[1845],{"type":35,"value":1846},"Speed for specific tasks.",{"type":35,"value":1848}," A freelancer can start tomorrow. No onboarding process, no team assembly, no kickoff meetings. For urgent, contained tasks, this speed matters.",{"type":30,"tag":31,"props":1850,"children":1851},{},[1852,1857],{"type":30,"tag":218,"props":1853,"children":1854},{},[1855],{"type":35,"value":1856},"Access to niche skills.",{"type":35,"value":1858}," Need a Solidity developer? A Rust specialist? An accessibility auditor? The freelancer market often has specialists that generalist agencies don't.",{"type":30,"tag":198,"props":1860,"children":1862},{"id":1861},"where-freelancers-struggle",[1863],{"type":35,"value":1864},"Where Freelancers Struggle",{"type":30,"tag":31,"props":1866,"children":1867},{},[1868],{"type":35,"value":1869},"Being honest about freelancers means being honest about the risks too.",{"type":30,"tag":31,"props":1871,"children":1872},{},[1873,1878],{"type":30,"tag":218,"props":1874,"children":1875},{},[1876],{"type":35,"value":1877},"Single point of failure.",{"type":35,"value":1879}," If your freelancer gets sick, takes another contract, or disappears (it happens more than anyone admits), your project stops. There's no backup.",{"type":30,"tag":31,"props":1881,"children":1882},{},[1883,1888],{"type":30,"tag":218,"props":1884,"children":1885},{},[1886],{"type":35,"value":1887},"No second pair of eyes.",{"type":35,"value":1889}," A freelancer writes code, reviews their own code, and deploys their own code. There's no QA process, no code review from a peer, no architectural challenge from a senior engineer. Bugs that a second person would catch in review make it to production.",{"type":30,"tag":31,"props":1891,"children":1892},{},[1893,1898],{"type":30,"tag":218,"props":1894,"children":1895},{},[1896],{"type":35,"value":1897},"Knowledge concentration.",{"type":35,"value":1899}," Everything about your project lives in one person's head. If they leave -- even on good terms -- onboarding their replacement means reverse-engineering their decisions.",{"type":30,"tag":31,"props":1901,"children":1902},{},[1903,1908],{"type":30,"tag":218,"props":1904,"children":1905},{},[1906],{"type":35,"value":1907},"Scaling is hard.",{"type":35,"value":1909}," Your project grows. You need a second developer. Now you're managing two freelancers who don't know each other's code, have different coding styles, and might not agree on architecture. You've become the project manager of a dysfunctional team.",{"type":30,"tag":31,"props":1911,"children":1912},{},[1913,1918],{"type":30,"tag":218,"props":1914,"children":1915},{},[1916],{"type":35,"value":1917},"Continuity risk.",{"type":35,"value":1919}," Freelancers take contracts. When yours ends, they take the next one. Coming back to your project six months later means re-learning context they've already forgotten.",{"type":30,"tag":52,"props":1921,"children":1923},{"id":1922},"the-honest-case-for-agencies",[1924],{"type":35,"value":1925},"The Honest Case for Agencies",{"type":30,"tag":31,"props":1927,"children":1928},{},[1929],{"type":35,"value":1930},"Now the part where we might be biased. We'll try not to be.",{"type":30,"tag":198,"props":1932,"children":1934},{"id":1933},"when-an-agency-is-the-right-choice",[1935],{"type":35,"value":1936},"When an Agency Is the Right Choice",{"type":30,"tag":31,"props":1938,"children":1939},{},[1940,1945],{"type":30,"tag":218,"props":1941,"children":1942},{},[1943],{"type":35,"value":1944},"You're building a core product.",{"type":35,"value":1946}," Not a feature, not a prototype -- the actual product your business will run on. Products require multiple disciplines (frontend, backend, DevOps, QA) working together with shared context.",{"type":30,"tag":31,"props":1948,"children":1949},{},[1950,1955],{"type":30,"tag":218,"props":1951,"children":1952},{},[1953],{"type":35,"value":1954},"You need continuity over months or years.",{"type":35,"value":1956}," If your product will be in development for 6+ months, you need a team that can maintain context across that timeline. An agency that assigns a dedicated team provides that continuity.",{"type":30,"tag":31,"props":1958,"children":1959},{},[1960,1965,1967,1972],{"type":30,"tag":218,"props":1961,"children":1962},{},[1963],{"type":35,"value":1964},"You don't have internal technical leadership.",{"type":35,"value":1966}," If you're a non-technical founder, you need more than code. You need someone to ",{"type":30,"tag":43,"props":1968,"children":1969},{"href":940},[1970],{"type":35,"value":1971},"help you make technical decisions",{"type":35,"value":1973},", challenge your assumptions, and translate between your vision and the engineering reality. A solo freelancer might write good code but won't necessarily guide your product decisions.",{"type":30,"tag":31,"props":1975,"children":1976},{},[1977,1982],{"type":30,"tag":218,"props":1978,"children":1979},{},[1980],{"type":35,"value":1981},"The project is high-stakes.",{"type":35,"value":1983}," Investor demos. Production systems with real users. Revenue-critical features. When failure has real consequences, the redundancy and process that a team provides isn't overhead -- it's insurance.",{"type":30,"tag":31,"props":1985,"children":1986},{},[1987,1992],{"type":30,"tag":218,"props":1988,"children":1989},{},[1990],{"type":35,"value":1991},"You need multiple skill sets working in coordination.",{"type":35,"value":1993}," Frontend, backend, database design, DevOps, QA. A single freelancer who claims to do all of these is either exceptional or spreading themselves too thin. A team brings specialists who collaborate.",{"type":30,"tag":198,"props":1995,"children":1997},{"id":1996},"what-agencies-do-well",[1998],{"type":35,"value":1999},"What Agencies Do Well",{"type":30,"tag":31,"props":2001,"children":2002},{},[2003,2008],{"type":30,"tag":218,"props":2004,"children":2005},{},[2006],{"type":35,"value":2007},"Team depth.",{"type":35,"value":2009}," When your backend developer is blocked, your frontend developer keeps shipping. When someone goes on vacation, the project doesn't stop. Specialization and redundancy work together.",{"type":30,"tag":31,"props":2011,"children":2012},{},[2013,2018],{"type":30,"tag":218,"props":2014,"children":2015},{},[2016],{"type":35,"value":2017},"Process and accountability.",{"type":35,"value":2019}," Code reviews, QA testing, sprint planning, regular demos. These aren't bureaucracy for its own sake -- they catch bugs earlier, keep scope under control, and make sure you see progress regularly.",{"type":30,"tag":31,"props":2021,"children":2022},{},[2023,2028],{"type":30,"tag":218,"props":2024,"children":2025},{},[2026],{"type":35,"value":2027},"Continuity.",{"type":35,"value":2029}," If one engineer leaves, the team's shared knowledge keeps the project moving. No single person is a bottleneck.",{"type":30,"tag":31,"props":2031,"children":2032},{},[2033,2038],{"type":30,"tag":218,"props":2034,"children":2035},{},[2036],{"type":35,"value":2037},"Scalability.",{"type":35,"value":2039}," Need to ramp up for a launch? Need to scale down after an initial build? An agency can flex the team size without you having to find, vet, and onboard new people.",{"type":30,"tag":31,"props":2041,"children":2042},{},[2043,2048,2050,2055],{"type":30,"tag":218,"props":2044,"children":2045},{},[2046],{"type":35,"value":2047},"Documentation and standards.",{"type":35,"value":2049}," A well-run agency has established practices for code quality, documentation, and handoff. These aren't nice-to-haves -- they're what make your codebase ",{"type":30,"tag":43,"props":2051,"children":2052},{"href":948},[2053],{"type":35,"value":2054},"something you can actually take ownership of",{"type":35,"value":537},{"type":30,"tag":198,"props":2057,"children":2059},{"id":2058},"where-agencies-struggle-yes-agencies-fail-too",[2060],{"type":35,"value":2061},"Where Agencies Struggle (Yes, Agencies Fail Too)",{"type":30,"tag":31,"props":2063,"children":2064},{},[2065],{"type":35,"value":2066},"Here's the part most agency-written articles skip.",{"type":30,"tag":31,"props":2068,"children":2069},{},[2070,2075],{"type":30,"tag":218,"props":2071,"children":2072},{},[2073],{"type":35,"value":2074},"Higher cost for simple projects.",{"type":35,"value":2076}," If you need a single developer for a 3-week task, paying for an agency's PM, QA, and overhead doesn't make sense. You're paying for infrastructure you don't need.",{"type":30,"tag":31,"props":2078,"children":2079},{},[2080,2085],{"type":30,"tag":218,"props":2081,"children":2082},{},[2083],{"type":35,"value":2084},"Communication layers.",{"type":35,"value":2086}," Some agencies put account managers and project managers between you and the engineers. What you say gets filtered. What the engineers need to tell you gets filtered. Important nuance gets lost.",{"type":30,"tag":31,"props":2088,"children":2089},{},[2090,2095],{"type":30,"tag":218,"props":2091,"children":2092},{},[2093],{"type":35,"value":2094},"The \"body shop\" problem.",{"type":35,"value":2096}," Some agencies -- especially larger ones -- treat developers as interchangeable resources. They rotate people on and off projects based on availability, not fit. You end up re-explaining your product every few weeks.",{"type":30,"tag":31,"props":2098,"children":2099},{},[2100,2105],{"type":30,"tag":218,"props":2101,"children":2102},{},[2103],{"type":35,"value":2104},"Over-engineering for billable hours.",{"type":35,"value":2106}," We wish this weren't a thing. But some agencies recommend complex solutions not because the project needs them, but because complex solutions generate more revenue. This is a trust problem, not an agency problem -- but it happens often enough to be worth naming.",{"type":30,"tag":31,"props":2108,"children":2109},{},[2110,2115],{"type":30,"tag":218,"props":2111,"children":2112},{},[2113],{"type":35,"value":2114},"Feeling like a number.",{"type":35,"value":2116}," At a large agency, your project might be one of fifty. The account manager is friendly, but the engineers don't know your name, your business, or your users. The work gets done, but nobody's thinking about your product at 2 AM because they genuinely care about the outcome.",{"type":30,"tag":52,"props":2118,"children":2120},{"id":2119},"the-question-nobody-asks-what-kind-of-agency",[2121],{"type":35,"value":2122},"The Question Nobody Asks: What Kind of Agency?",{"type":30,"tag":31,"props":2124,"children":2125},{},[2126],{"type":35,"value":2127},"This is where most comparison articles fall short. They treat \"agency\" as a single category, when the reality is that a 200-person offshore development company and a 20-person product engineering team have almost nothing in common.",{"type":30,"tag":31,"props":2129,"children":2130},{},[2131],{"type":35,"value":2132},"The variables that matter:",{"type":30,"tag":31,"props":2134,"children":2135},{},[2136,2141],{"type":30,"tag":218,"props":2137,"children":2138},{},[2139],{"type":35,"value":2140},"Size.",{"type":35,"value":2142}," At a 200-person agency, you're an account number. At a 20-person team, you know the engineers by name and they know your product. There's no buffer of middle managers between you and the people doing the work.",{"type":30,"tag":31,"props":2144,"children":2145},{},[2146,2151,2153,2158],{"type":30,"tag":218,"props":2147,"children":2148},{},[2149],{"type":35,"value":2150},"Ownership mindset.",{"type":35,"value":2152}," Does the agency build products like they're building their own? Or are they executing specs for billable hours? This is the hardest thing to evaluate, but it's the most important. Teams that have ",{"type":30,"tag":43,"props":2154,"children":2155},{"href":45},[2156],{"type":35,"value":2157},"built their own products",{"type":35,"value":2159}," tend to think differently about yours.",{"type":30,"tag":31,"props":2161,"children":2162},{},[2163,2167],{"type":30,"tag":218,"props":2164,"children":2165},{},[2166],{"type":35,"value":2027},{"type":35,"value":2168}," Ask: will the same engineers be on my project in six months? If the answer is \"we'll do our best\" or \"it depends on availability,\" you're at a body shop with a nicer website.",{"type":30,"tag":31,"props":2170,"children":2171},{},[2172,2177],{"type":30,"tag":218,"props":2173,"children":2174},{},[2175],{"type":35,"value":2176},"Post-delivery relationship.",{"type":35,"value":2178}," Does the engagement end at delivery, or does the team stay to iterate? PerformLine started with one of our engineers. Two years later, we have 8+ across their product. That happened because the relationship was built on trust, not a contract with a termination clause.",{"type":30,"tag":31,"props":2180,"children":2181},{},[2182],{"type":35,"value":2183},"The uncomfortable truth is that a bad agency experience can be worse than a bad freelancer experience. At least with a freelancer, you're only out the cost of one person. A bad agency can burn through your runway faster and leave you with a codebase that needs rewriting.",{"type":30,"tag":52,"props":2185,"children":2187},{"id":2186},"a-decision-framework-that-actually-helps",[2188],{"type":35,"value":2189},"A Decision Framework That Actually Helps",{"type":30,"tag":31,"props":2191,"children":2192},{},[2193],{"type":35,"value":2194},"Instead of generic advice, here's a framework based on specific project characteristics.",{"type":30,"tag":64,"props":2196,"children":2197},{},[2198,2219],{"type":30,"tag":68,"props":2199,"children":2200},{},[2201],{"type":30,"tag":72,"props":2202,"children":2203},{},[2204,2209,2214],{"type":30,"tag":76,"props":2205,"children":2206},{},[2207],{"type":35,"value":2208},"Your Situation",{"type":30,"tag":76,"props":2210,"children":2211},{},[2212],{"type":35,"value":2213},"Recommendation",{"type":30,"tag":76,"props":2215,"children":2216},{},[2217],{"type":35,"value":2218},"Why",{"type":30,"tag":93,"props":2220,"children":2221},{},[2222,2240,2258,2276,2293,2311,2334,2351],{"type":30,"tag":72,"props":2223,"children":2224},{},[2225,2230,2235],{"type":30,"tag":100,"props":2226,"children":2227},{},[2228],{"type":35,"value":2229},"Small, defined task with internal tech oversight",{"type":30,"tag":100,"props":2231,"children":2232},{},[2233],{"type":35,"value":2234},"Freelancer",{"type":30,"tag":100,"props":2236,"children":2237},{},[2238],{"type":35,"value":2239},"Lower cost, direct communication, no overhead needed",{"type":30,"tag":72,"props":2241,"children":2242},{},[2243,2248,2253],{"type":30,"tag":100,"props":2244,"children":2245},{},[2246],{"type":35,"value":2247},"Full product build, 3+ months, no internal CTO",{"type":30,"tag":100,"props":2249,"children":2250},{},[2251],{"type":35,"value":2252},"Agency (product-focused)",{"type":30,"tag":100,"props":2254,"children":2255},{},[2256],{"type":35,"value":2257},"You need technical guidance, not just code",{"type":30,"tag":72,"props":2259,"children":2260},{},[2261,2266,2271],{"type":30,"tag":100,"props":2262,"children":2263},{},[2264],{"type":35,"value":2265},"Specialized short-term need (ML model, DevOps setup)",{"type":30,"tag":100,"props":2267,"children":2268},{},[2269],{"type":35,"value":2270},"Freelancer (specialist)",{"type":30,"tag":100,"props":2272,"children":2273},{},[2274],{"type":35,"value":2275},"Agencies rarely have niche specialists available on demand",{"type":30,"tag":72,"props":2277,"children":2278},{},[2279,2284,2288],{"type":30,"tag":100,"props":2280,"children":2281},{},[2282],{"type":35,"value":2283},"Core product, high-stakes (investor demo, production)",{"type":30,"tag":100,"props":2285,"children":2286},{},[2287],{"type":35,"value":2252},{"type":30,"tag":100,"props":2289,"children":2290},{},[2291],{"type":35,"value":2292},"Redundancy, process, and multi-discipline coordination matter",{"type":30,"tag":72,"props":2294,"children":2295},{},[2296,2301,2306],{"type":30,"tag":100,"props":2297,"children":2298},{},[2299],{"type":35,"value":2300},"Ongoing maintenance of stable product",{"type":30,"tag":100,"props":2302,"children":2303},{},[2304],{"type":35,"value":2305},"Either",{"type":30,"tag":100,"props":2307,"children":2308},{},[2309],{"type":35,"value":2310},"Depends on complexity and internal capacity",{"type":30,"tag":72,"props":2312,"children":2313},{},[2314,2319,2324],{"type":30,"tag":100,"props":2315,"children":2316},{},[2317],{"type":35,"value":2318},"Rapid scaling needed (3+ developers within a month)",{"type":30,"tag":100,"props":2320,"children":2321},{},[2322],{"type":35,"value":2323},"Agency",{"type":30,"tag":100,"props":2325,"children":2326},{},[2327,2332],{"type":30,"tag":43,"props":2328,"children":2329},{"href":948},[2330],{"type":35,"value":2331},"Augmentation models",{"type":35,"value":2333}," let you scale without individual hiring",{"type":30,"tag":72,"props":2335,"children":2336},{},[2337,2342,2346],{"type":30,"tag":100,"props":2338,"children":2339},{},[2340],{"type":35,"value":2341},"Budget under $15K, technical founder",{"type":30,"tag":100,"props":2343,"children":2344},{},[2345],{"type":35,"value":2234},{"type":30,"tag":100,"props":2347,"children":2348},{},[2349],{"type":35,"value":2350},"You can manage the relationship and evaluate the code yourself",{"type":30,"tag":72,"props":2352,"children":2353},{},[2354,2359,2363],{"type":30,"tag":100,"props":2355,"children":2356},{},[2357],{"type":35,"value":2358},"Budget $50K+, non-technical founder",{"type":30,"tag":100,"props":2360,"children":2361},{},[2362],{"type":35,"value":2323},{"type":30,"tag":100,"props":2364,"children":2365},{},[2366],{"type":35,"value":2367},"The investment warrants the process and protection",{"type":30,"tag":31,"props":2369,"children":2370},{},[2371,2376],{"type":30,"tag":218,"props":2372,"children":2373},{},[2374],{"type":35,"value":2375},"The hybrid model.",{"type":35,"value":2377}," Some projects benefit from combining both. An agency for core product development, and freelancers for specialized tasks (design, copywriting, specific integrations). This works well when the agency is open to collaborating with external contributors.",{"type":30,"tag":52,"props":2379,"children":2381},{"id":2380},"red-flags-for-each-option",[2382],{"type":35,"value":2383},"Red Flags for Each Option",{"type":30,"tag":31,"props":2385,"children":2386},{},[2387],{"type":35,"value":2388},"Regardless of which direction you go, watch for these.",{"type":30,"tag":198,"props":2390,"children":2392},{"id":2391},"freelancer-red-flags",[2393],{"type":35,"value":2394},"Freelancer Red Flags",{"type":30,"tag":224,"props":2396,"children":2397},{},[2398,2408,2418,2428,2438],{"type":30,"tag":228,"props":2399,"children":2400},{},[2401,2406],{"type":30,"tag":218,"props":2402,"children":2403},{},[2404],{"type":35,"value":2405},"Can't show previous client references.",{"type":35,"value":2407}," Experienced freelancers have happy clients who will vouch for them.",{"type":30,"tag":228,"props":2409,"children":2410},{},[2411,2416],{"type":30,"tag":218,"props":2412,"children":2413},{},[2414],{"type":35,"value":2415},"Resistant to code reviews.",{"type":35,"value":2417}," If they don't want anyone else looking at their code, ask yourself why.",{"type":30,"tag":228,"props":2419,"children":2420},{},[2421,2426],{"type":30,"tag":218,"props":2422,"children":2423},{},[2424],{"type":35,"value":2425},"No version control.",{"type":35,"value":2427}," If they're not using Git with meaningful commit history, walk away.",{"type":30,"tag":228,"props":2429,"children":2430},{},[2431,2436],{"type":30,"tag":218,"props":2432,"children":2433},{},[2434],{"type":35,"value":2435},"Promises unrealistic timelines.",{"type":35,"value":2437}," \"I can build your entire app in 2 weeks\" is not confidence. It's a warning sign.",{"type":30,"tag":228,"props":2439,"children":2440},{},[2441,2446],{"type":30,"tag":218,"props":2442,"children":2443},{},[2444],{"type":35,"value":2445},"No questions about your product.",{"type":35,"value":2447}," A freelancer who starts coding without understanding your users or business is building to a spec, not to an outcome.",{"type":30,"tag":198,"props":2449,"children":2451},{"id":2450},"agency-red-flags",[2452],{"type":35,"value":2453},"Agency Red Flags",{"type":30,"tag":224,"props":2455,"children":2456},{},[2457,2467,2477,2487,2497,2507],{"type":30,"tag":228,"props":2458,"children":2459},{},[2460,2465],{"type":30,"tag":218,"props":2461,"children":2462},{},[2463],{"type":35,"value":2464},"Can't introduce you to the engineers.",{"type":35,"value":2466}," If you only ever talk to the sales team, you don't know who's building your product.",{"type":30,"tag":228,"props":2468,"children":2469},{},[2470,2475],{"type":30,"tag":218,"props":2471,"children":2472},{},[2473],{"type":35,"value":2474},"Rotating developers.",{"type":35,"value":2476}," \"We had to swap your backend developer\" more than once means you're at a body shop.",{"type":30,"tag":228,"props":2478,"children":2479},{},[2480,2485],{"type":30,"tag":218,"props":2481,"children":2482},{},[2483],{"type":35,"value":2484},"No transparent process.",{"type":35,"value":2486}," You should see working software every 1-2 weeks. If you go a month without a demo, something is wrong.",{"type":30,"tag":228,"props":2488,"children":2489},{},[2490,2495],{"type":30,"tag":218,"props":2491,"children":2492},{},[2493],{"type":35,"value":2494},"Won't discuss code ownership.",{"type":35,"value":2496}," This should be explicit in the contract. Any hesitation is a sign.",{"type":30,"tag":228,"props":2498,"children":2499},{},[2500,2505],{"type":30,"tag":218,"props":2501,"children":2502},{},[2503],{"type":35,"value":2504},"\"We'll figure out the team after you sign.\"",{"type":35,"value":2506}," You should know exactly who's working on your project before the contract is signed.",{"type":30,"tag":228,"props":2508,"children":2509},{},[2510,2515],{"type":30,"tag":218,"props":2511,"children":2512},{},[2513],{"type":35,"value":2514},"They agree to everything.",{"type":35,"value":2516}," An agency that never pushes back on scope, timeline, or approach isn't thinking about your outcome. They're thinking about closing the deal.",{"type":30,"tag":52,"props":2518,"children":2520},{"id":2519},"our-perspective-since-were-being-honest",[2521],{"type":35,"value":2522},"Our Perspective (Since We're Being Honest)",{"type":30,"tag":31,"props":2524,"children":2525},{},[2526],{"type":35,"value":2527},"We're an agency. We believe in the agency model for product development -- because building a real product takes a team, and a team that works together consistently produces better outcomes than a rotating cast of individuals.",{"type":30,"tag":31,"props":2529,"children":2530},{},[2531],{"type":35,"value":2532},"But we also know the agency model has earned some of its bad reputation. Too many agencies treat developers as interchangeable, charge for process that doesn't add value, and disappear after delivery.",{"type":30,"tag":31,"props":2534,"children":2535},{},[2536,2538,2543],{"type":35,"value":2537},"That's not us. We're 20+ engineers. The people you meet during the sales process are the people who build your product. We don't rotate developers. We don't pad timelines. We ",{"type":30,"tag":43,"props":2539,"children":2540},{"href":4},[2541],{"type":35,"value":2542},"tell you honestly",{"type":35,"value":2544}," what you need and what can wait.",{"type":30,"tag":31,"props":2546,"children":2547},{},[2548],{"type":35,"value":2549},"We've also recommended freelancers to prospects when they were the better fit. A startup with a technical CTO who needs one React developer for a 4-week project doesn't need us. They need a great freelancer and we'll say so.",{"type":30,"tag":31,"props":2551,"children":2552},{},[2553],{"type":35,"value":2554},"What matters isn't the model. It's whether the people building your product care about the outcome as much as you do. That's what we optimize for -- and it's what you should optimize for, regardless of whether you choose a freelancer or an agency.",{"type":30,"tag":31,"props":2556,"children":2557},{},[2558],{"type":35,"value":2559},"Not sure which model is right for your project? We're happy to talk it through -- and if a freelancer is the better fit, we'll tell you that honestly.",{"title":7,"searchDepth":960,"depth":960,"links":2561},[2562,2563,2568,2573,2574,2575,2579],{"id":1722,"depth":960,"text":1725},{"id":1748,"depth":960,"text":1751,"children":2564},[2565,2566,2567],{"id":1759,"depth":966,"text":1762},{"id":1815,"depth":966,"text":1818},{"id":1861,"depth":966,"text":1864},{"id":1922,"depth":960,"text":1925,"children":2569},[2570,2571,2572],{"id":1933,"depth":966,"text":1936},{"id":1996,"depth":966,"text":1999},{"id":2058,"depth":966,"text":2061},{"id":2119,"depth":960,"text":2122},{"id":2186,"depth":960,"text":2189},{"id":2380,"depth":960,"text":2383,"children":2576},[2577,2578],{"id":2391,"depth":966,"text":2394},{"id":2450,"depth":966,"text":2453},{"id":2519,"depth":960,"text":2522},"content:blog:freelancer-vs-agency-software-development.md","blog/freelancer-vs-agency-software-development.md","blog/freelancer-vs-agency-software-development",{"_path":2584,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2585,"description":2586,"topic":2587,"author":11,"coverImg":2588,"coverImgAlt":2589,"published":14,"createdAt":2590,"keywords":2591,"body":2598,"_type":986,"_id":3388,"_source":988,"_file":3389,"_stem":3390,"_extension":991},"/blog/agency-code-handoff-ready","How to Evaluate if Your Agency's Code Is Handoff-Ready","A practical checklist to evaluate whether the code your agency is writing can survive without them -- before it's too late to fix.","Code Quality and Handoff","/images/blog/code-handoff.webp","Code handoff checklist — how to evaluate if your agency's code is ready to hand over","2026-04-13",[2592,2593,2594,2595,2596,2597],"software project handoff checklist","code handoff best practices","evaluate code quality outsourced","agency code quality checklist","code handover documentation","vendor lock-in software development",{"type":27,"children":2599,"toc":3373},[2600,2605,2610,2615,2620,2625,2631,2636,2641,2651,2661,2671,2676,2682,2687,2693,2698,2706,2729,2739,2749,2755,2760,2767,2810,2829,2839,2845,2850,2857,2900,2910,2916,2921,2928,2981,2987,2992,2999,3052,3058,3063,3070,3113,3119,3124,3134,3144,3154,3164,3174,3184,3194,3200,3205,3210,3218,3251,3262,3267,3273,3278,3288,3298,3308,3326,3336,3346,3352,3357,3368],{"type":30,"tag":31,"props":2601,"children":2602},{},[2603],{"type":35,"value":2604},"There's a question every founder or CTO working with an agency should ask early and often: could we take this codebase in-house tomorrow?",{"type":30,"tag":31,"props":2606,"children":2607},{},[2608],{"type":35,"value":2609},"Not because you're planning to. But because a codebase that can't survive without its original authors is a codebase that holds you hostage.",{"type":30,"tag":31,"props":2611,"children":2612},{},[2613],{"type":35,"value":2614},"We've seen this play out too many times. A startup works with an agency for a year. The product is live, users are growing, and then the relationship ends -- amicably or otherwise. The new team clones the repo, opens the code, and realizes they're staring at months of archaeology before they can ship a single feature.",{"type":30,"tag":31,"props":2616,"children":2617},{},[2618],{"type":35,"value":2619},"That's not a handoff. That's a trap.",{"type":30,"tag":31,"props":2621,"children":2622},{},[2623],{"type":35,"value":2624},"Here's a practical checklist for evaluating whether the code your agency is writing is genuinely handoff-ready -- written from the buyer's perspective, not the agency's.",{"type":30,"tag":52,"props":2626,"children":2628},{"id":2627},"why-handoff-readiness-matters-even-if-youre-not-planning-to-leave",[2629],{"type":35,"value":2630},"Why Handoff-Readiness Matters (Even If You're Not Planning to Leave)",{"type":30,"tag":31,"props":2632,"children":2633},{},[2634],{"type":35,"value":2635},"Let's be clear: this isn't about trust. You might have a great relationship with your agency. You might plan to work together for years.",{"type":30,"tag":31,"props":2637,"children":2638},{},[2639],{"type":35,"value":2640},"Handoff-readiness still matters for three reasons:",{"type":30,"tag":31,"props":2642,"children":2643},{},[2644,2649],{"type":30,"tag":218,"props":2645,"children":2646},{},[2647],{"type":35,"value":2648},"1. It's a proxy for code quality.",{"type":35,"value":2650}," Code that's easy to hand off is code that's well-structured, documented, and tested. These aren't separate concerns. A team that builds handoff-ready code is building better software, period.",{"type":30,"tag":31,"props":2652,"children":2653},{},[2654,2659],{"type":30,"tag":218,"props":2655,"children":2656},{},[2657],{"type":35,"value":2658},"2. It protects your options.",{"type":35,"value":2660}," Companies change. Agencies change. Funding situations change. If your code can only be maintained by the people who wrote it, you don't own a product -- you own a dependency.",{"type":30,"tag":31,"props":2662,"children":2663},{},[2664,2669],{"type":30,"tag":218,"props":2665,"children":2666},{},[2667],{"type":35,"value":2668},"3. It makes onboarding faster.",{"type":35,"value":2670}," Even if you never leave your agency, you'll need to onboard new engineers at some point. Handoff-ready code means new team members become productive in days, not weeks.",{"type":30,"tag":31,"props":2672,"children":2673},{},[2674],{"type":35,"value":2675},"The test is simple: could a competent developer who has never seen your codebase clone the repo and be productive within a week? If the answer is no, you have a problem -- whether or not you're planning to switch teams.",{"type":30,"tag":52,"props":2677,"children":2679},{"id":2678},"the-handoff-ready-code-checklist",[2680],{"type":35,"value":2681},"The Handoff-Ready Code Checklist",{"type":30,"tag":31,"props":2683,"children":2684},{},[2685],{"type":35,"value":2686},"Print this. Use it during your next sprint review. Ask your agency how they score on each item.",{"type":30,"tag":198,"props":2688,"children":2690},{"id":2689},"_1-can-you-clone-and-run-it",[2691],{"type":35,"value":2692},"1. Can You Clone and Run It?",{"type":30,"tag":31,"props":2694,"children":2695},{},[2696],{"type":35,"value":2697},"This sounds basic. It's not. You'd be surprised how many codebases fail this test.",{"type":30,"tag":31,"props":2699,"children":2700},{},[2701],{"type":30,"tag":218,"props":2702,"children":2703},{},[2704],{"type":35,"value":2705},"What to look for:",{"type":30,"tag":224,"props":2707,"children":2708},{},[2709,2714,2719,2724],{"type":30,"tag":228,"props":2710,"children":2711},{},[2712],{"type":35,"value":2713},"A README with clear, step-by-step setup instructions -- not \"install dependencies and run\" but actual commands a new developer can follow",{"type":30,"tag":228,"props":2715,"children":2716},{},[2717],{"type":35,"value":2718},"All environment variables documented with explanations of what each one does",{"type":30,"tag":228,"props":2720,"children":2721},{},[2722],{"type":35,"value":2723},"A containerized development environment (Docker or equivalent) so setup doesn't depend on someone's specific laptop configuration",{"type":30,"tag":228,"props":2725,"children":2726},{},[2727],{"type":35,"value":2728},"A seed script or sample data so the app has something to display when you first run it",{"type":30,"tag":31,"props":2730,"children":2731},{},[2732,2737],{"type":30,"tag":218,"props":2733,"children":2734},{},[2735],{"type":35,"value":2736},"The benchmark:",{"type":35,"value":2738}," A new developer should be able to clone your repo and have the application running locally in under 30 minutes. If it takes longer, the setup is either undocumented or fragile.",{"type":30,"tag":31,"props":2740,"children":2741},{},[2742,2747],{"type":30,"tag":218,"props":2743,"children":2744},{},[2745],{"type":35,"value":2746},"How to test this yourself:",{"type":35,"value":2748}," If you're technical, try it. Clone the repo on a fresh machine and follow the README. If you're not technical, ask a developer friend to try. Their experience will tell you everything.",{"type":30,"tag":198,"props":2750,"children":2752},{"id":2751},"_2-is-the-code-documented-where-it-matters",[2753],{"type":35,"value":2754},"2. Is the Code Documented Where It Matters?",{"type":30,"tag":31,"props":2756,"children":2757},{},[2758],{"type":35,"value":2759},"Good documentation doesn't mean comments on every line. It means the right information is captured in the right place.",{"type":30,"tag":31,"props":2761,"children":2762},{},[2763],{"type":30,"tag":218,"props":2764,"children":2765},{},[2766],{"type":35,"value":2705},{"type":30,"tag":224,"props":2768,"children":2769},{},[2770,2780,2790,2800],{"type":30,"tag":228,"props":2771,"children":2772},{},[2773,2778],{"type":30,"tag":218,"props":2774,"children":2775},{},[2776],{"type":35,"value":2777},"Architecture overview:",{"type":35,"value":2779}," A document (or even a diagram) that explains how the system fits together. What are the main services? How do they communicate? What does the data flow look like?",{"type":30,"tag":228,"props":2781,"children":2782},{},[2783,2788],{"type":30,"tag":218,"props":2784,"children":2785},{},[2786],{"type":35,"value":2787},"API documentation:",{"type":35,"value":2789}," If the product has an API, endpoints should be documented with authentication requirements, request/response formats, and error codes. Auto-generated docs (Swagger/OpenAPI) are a strong signal.",{"type":30,"tag":228,"props":2791,"children":2792},{},[2793,2798],{"type":30,"tag":218,"props":2794,"children":2795},{},[2796],{"type":35,"value":2797},"Database schema:",{"type":35,"value":2799}," Not just the schema itself, but explanations of key relationships and design decisions. Why is this table structured this way? What does this status field mean?",{"type":30,"tag":228,"props":2801,"children":2802},{},[2803,2808],{"type":30,"tag":218,"props":2804,"children":2805},{},[2806],{"type":35,"value":2807},"Deployment documentation:",{"type":35,"value":2809}," How does code go from a developer's machine to production? What are the steps? What could go wrong?",{"type":30,"tag":31,"props":2811,"children":2812},{},[2813,2818,2820,2827],{"type":30,"tag":218,"props":2814,"children":2815},{},[2816],{"type":35,"value":2817},"What bad documentation looks like:",{"type":35,"value":2819}," A README that says \"See Confluence\" -- and the Confluence page was last updated eight months ago. Or inline comments that say ",{"type":30,"tag":2821,"props":2822,"children":2824},"code",{"className":2823},[],[2825],{"type":35,"value":2826},"// TODO: fix this later",{"type":35,"value":2828}," from a year ago.",{"type":30,"tag":31,"props":2830,"children":2831},{},[2832,2837],{"type":30,"tag":218,"props":2833,"children":2834},{},[2835],{"type":35,"value":2836},"What good documentation looks like:",{"type":35,"value":2838}," An architecture document that a new developer reads on their first day and says \"Oh, now I understand how this works.\" It doesn't need to be long. It needs to be accurate.",{"type":30,"tag":198,"props":2840,"children":2842},{"id":2841},"_3-are-there-automated-tests",[2843],{"type":35,"value":2844},"3. Are There Automated Tests?",{"type":30,"tag":31,"props":2846,"children":2847},{},[2848],{"type":35,"value":2849},"\"We have tests\" and \"our tests catch real bugs\" are two very different statements.",{"type":30,"tag":31,"props":2851,"children":2852},{},[2853],{"type":30,"tag":218,"props":2854,"children":2855},{},[2856],{"type":35,"value":2705},{"type":30,"tag":224,"props":2858,"children":2859},{},[2860,2870,2880,2890],{"type":30,"tag":228,"props":2861,"children":2862},{},[2863,2868],{"type":30,"tag":218,"props":2864,"children":2865},{},[2866],{"type":35,"value":2867},"Test coverage that matches your product's maturity.",{"type":35,"value":2869}," An MVP should have tests covering core business logic and critical user flows. A mature product should have broader coverage. There's no magic number, but below 40% for a production application is a red flag worth investigating.",{"type":30,"tag":228,"props":2871,"children":2872},{},[2873,2878],{"type":30,"tag":218,"props":2874,"children":2875},{},[2876],{"type":35,"value":2877},"Tests that test behavior, not implementation.",{"type":35,"value":2879}," Good tests verify that user-facing functionality works correctly. Bad tests verify that a specific function was called with specific arguments -- they break every time the code is refactored and catch nothing when real bugs appear.",{"type":30,"tag":228,"props":2881,"children":2882},{},[2883,2888],{"type":30,"tag":218,"props":2884,"children":2885},{},[2886],{"type":35,"value":2887},"A CI/CD pipeline that runs tests on every commit.",{"type":35,"value":2889}," Tests that exist but aren't run automatically are decorative. Every code change should trigger the test suite.",{"type":30,"tag":228,"props":2891,"children":2892},{},[2893,2898],{"type":30,"tag":218,"props":2894,"children":2895},{},[2896],{"type":35,"value":2897},"Tests that actually pass.",{"type":35,"value":2899}," This sounds obvious, but check. A test suite with 30 failing tests that everyone ignores is worse than no tests at all -- it teaches the team to ignore test failures.",{"type":30,"tag":31,"props":2901,"children":2902},{},[2903,2908],{"type":30,"tag":218,"props":2904,"children":2905},{},[2906],{"type":35,"value":2907},"The benchmark question:",{"type":35,"value":2909}," When was the last time a test caught a real bug before it reached production? If your agency can't answer that, the tests might be there for show.",{"type":30,"tag":198,"props":2911,"children":2913},{"id":2912},"_4-is-the-code-clean-and-maintainable",[2914],{"type":35,"value":2915},"4. Is the Code Clean and Maintainable?",{"type":30,"tag":31,"props":2917,"children":2918},{},[2919],{"type":35,"value":2920},"You don't need to read every line of code to evaluate maintainability. Look for structural signals.",{"type":30,"tag":31,"props":2922,"children":2923},{},[2924],{"type":30,"tag":218,"props":2925,"children":2926},{},[2927],{"type":35,"value":2705},{"type":30,"tag":224,"props":2929,"children":2930},{},[2931,2941,2951,2961,2971],{"type":30,"tag":228,"props":2932,"children":2933},{},[2934,2939],{"type":30,"tag":218,"props":2935,"children":2936},{},[2937],{"type":35,"value":2938},"Consistent coding style.",{"type":35,"value":2940}," A linter and formatter should be configured and enforced. Mixed indentation, inconsistent naming conventions, and style disagreements in the code tell you there's no shared standard.",{"type":30,"tag":228,"props":2942,"children":2943},{},[2944,2949],{"type":30,"tag":218,"props":2945,"children":2946},{},[2947],{"type":35,"value":2948},"Reasonable file sizes.",{"type":35,"value":2950}," Files with 1,000+ lines of code are a sign of accumulated complexity that will slow down every future change. Well-structured code is organized into focused, manageable modules.",{"type":30,"tag":228,"props":2952,"children":2953},{},[2954,2959],{"type":30,"tag":218,"props":2955,"children":2956},{},[2957],{"type":35,"value":2958},"Low code duplication.",{"type":35,"value":2960}," Code duplication under 5% is healthy. Higher than that, and you're paying for the same bug to be fixed in multiple places. Tools like SonarQube can measure this.",{"type":30,"tag":228,"props":2962,"children":2963},{},[2964,2969],{"type":30,"tag":218,"props":2965,"children":2966},{},[2967],{"type":35,"value":2968},"Logical folder structure.",{"type":35,"value":2970}," A new developer should be able to look at the project's folder structure and understand where things live. If finding the right file requires tribal knowledge, the structure needs work.",{"type":30,"tag":228,"props":2972,"children":2973},{},[2974,2979],{"type":30,"tag":218,"props":2975,"children":2976},{},[2977],{"type":35,"value":2978},"No hardcoded secrets.",{"type":35,"value":2980}," API keys, database passwords, and credentials should live in environment variables or a secrets manager -- never in the source code. This is a security issue and a handoff issue.",{"type":30,"tag":198,"props":2982,"children":2984},{"id":2983},"_5-do-you-own-everything",[2985],{"type":35,"value":2986},"5. Do You Own Everything?",{"type":30,"tag":31,"props":2988,"children":2989},{},[2990],{"type":35,"value":2991},"This is the one that catches most founders off guard.",{"type":30,"tag":31,"props":2993,"children":2994},{},[2995],{"type":30,"tag":218,"props":2996,"children":2997},{},[2998],{"type":35,"value":2705},{"type":30,"tag":224,"props":3000,"children":3001},{},[3002,3012,3022,3032,3042],{"type":30,"tag":228,"props":3003,"children":3004},{},[3005,3010],{"type":30,"tag":218,"props":3006,"children":3007},{},[3008],{"type":35,"value":3009},"Full source code access.",{"type":35,"value":3011}," You should have access to the complete source code repository at all times -- not just compiled builds or deployed applications. If your agency hosts the repo in their GitHub organization, make sure you have admin access or, better yet, move it to yours.",{"type":30,"tag":228,"props":3013,"children":3014},{},[3015,3020],{"type":30,"tag":218,"props":3016,"children":3017},{},[3018],{"type":35,"value":3019},"Third-party accounts in your name.",{"type":35,"value":3021}," Cloud hosting (AWS, Azure, GCP), monitoring tools, email services, payment processors, analytics -- all accounts should be registered under your company's email and billing. If your agency set these up under their accounts, you're one contract dispute away from losing access to your own infrastructure.",{"type":30,"tag":228,"props":3023,"children":3024},{},[3025,3030],{"type":30,"tag":218,"props":3026,"children":3027},{},[3028],{"type":35,"value":3029},"Domain, SSL, and DNS under your control.",{"type":35,"value":3031}," Your domain registrar account, SSL certificates, and DNS records should be in your name and accessible to you.",{"type":30,"tag":228,"props":3033,"children":3034},{},[3035,3040],{"type":30,"tag":218,"props":3036,"children":3037},{},[3038],{"type":35,"value":3039},"No proprietary dependencies.",{"type":35,"value":3041}," If your agency used their own internal framework, libraries, or tools in your codebase, find out what happens when you leave. Can you still build and deploy without access to their systems?",{"type":30,"tag":228,"props":3043,"children":3044},{},[3045,3050],{"type":30,"tag":218,"props":3046,"children":3047},{},[3048],{"type":35,"value":3049},"IP assignment in the contract.",{"type":35,"value":3051}," Check your agreement. Code written for you should be owned by you. This should be explicit, not assumed.",{"type":30,"tag":198,"props":3053,"children":3055},{"id":3054},"_6-is-there-a-knowledge-transfer-plan",[3056],{"type":35,"value":3057},"6. Is There a Knowledge Transfer Plan?",{"type":30,"tag":31,"props":3059,"children":3060},{},[3061],{"type":35,"value":3062},"Code is only part of the handoff. Knowledge is the other part -- and it's harder to transfer.",{"type":30,"tag":31,"props":3064,"children":3065},{},[3066],{"type":30,"tag":218,"props":3067,"children":3068},{},[3069],{"type":35,"value":2705},{"type":30,"tag":224,"props":3071,"children":3072},{},[3073,3083,3093,3103],{"type":30,"tag":228,"props":3074,"children":3075},{},[3076,3081],{"type":30,"tag":218,"props":3077,"children":3078},{},[3079],{"type":35,"value":3080},"Documented known issues and technical debt.",{"type":35,"value":3082}," Every codebase has tech debt. The question is whether it's documented and prioritized, or hidden and growing.",{"type":30,"tag":228,"props":3084,"children":3085},{},[3086,3091],{"type":30,"tag":218,"props":3087,"children":3088},{},[3089],{"type":35,"value":3090},"Architecture decision records.",{"type":35,"value":3092}," Why was this database chosen? Why does authentication work this way? Why didn't the team use the more obvious approach? These \"why\" decisions are the hardest to reverse-engineer from code alone.",{"type":30,"tag":228,"props":3094,"children":3095},{},[3096,3101],{"type":30,"tag":218,"props":3097,"children":3098},{},[3099],{"type":35,"value":3100},"Runbooks for common operations.",{"type":35,"value":3102}," How do you deploy? How do you roll back a bad deploy? How do you debug common issues? These should be written documents, not tribal knowledge.",{"type":30,"tag":228,"props":3104,"children":3105},{},[3106,3111],{"type":30,"tag":218,"props":3107,"children":3108},{},[3109],{"type":35,"value":3110},"Transition period with overlapping access.",{"type":35,"value":3112}," A clean handoff includes a period where the outgoing team is available to the incoming team for questions. This is standard practice, not a special request.",{"type":30,"tag":52,"props":3114,"children":3116},{"id":3115},"red-flags-that-your-code-is-not-handoff-ready",[3117],{"type":35,"value":3118},"Red Flags That Your Code Is NOT Handoff-Ready",{"type":30,"tag":31,"props":3120,"children":3121},{},[3122],{"type":35,"value":3123},"These should set off alarm bells during your next sprint review or technical check-in.",{"type":30,"tag":31,"props":3125,"children":3126},{},[3127,3132],{"type":30,"tag":218,"props":3128,"children":3129},{},[3130],{"type":35,"value":3131},"\"We'll document everything at the end.\"",{"type":35,"value":3133}," Documentation written retroactively is always incomplete. If they're not documenting as they build, they won't remember what they've forgotten by the time they finish.",{"type":30,"tag":31,"props":3135,"children":3136},{},[3137,3142],{"type":30,"tag":218,"props":3138,"children":3139},{},[3140],{"type":35,"value":3141},"You've never seen the source code.",{"type":35,"value":3143}," If you don't have access to the repository, ask for it today. If the answer is anything other than \"here's the link,\" you have a problem.",{"type":30,"tag":31,"props":3145,"children":3146},{},[3147,3152],{"type":30,"tag":218,"props":3148,"children":3149},{},[3150],{"type":35,"value":3151},"Deployment requires a specific person.",{"type":35,"value":3153}," If only one person on the team knows how to deploy, your product is one vacation day away from a production incident with no fix.",{"type":30,"tag":31,"props":3155,"children":3156},{},[3157,3162],{"type":30,"tag":218,"props":3158,"children":3159},{},[3160],{"type":35,"value":3161},"No staging environment.",{"type":35,"value":3163}," If code goes directly from a developer's machine to production, there's no way to test changes safely. This is a quality issue and a risk issue.",{"type":30,"tag":31,"props":3165,"children":3166},{},[3167,3172],{"type":30,"tag":218,"props":3168,"children":3169},{},[3170],{"type":35,"value":3171},"Messy or nonexistent version control.",{"type":35,"value":3173}," If the team isn't using Git (or equivalent) with meaningful commit messages and a clear branching strategy, reconstructing the history of changes will be impossible.",{"type":30,"tag":31,"props":3175,"children":3176},{},[3177,3182],{"type":30,"tag":218,"props":3178,"children":3179},{},[3180],{"type":35,"value":3181},"Agency-owned infrastructure.",{"type":35,"value":3183}," If your cloud hosting, domain, or critical services are under the agency's accounts, you're dependent on them for access to your own product.",{"type":30,"tag":31,"props":3185,"children":3186},{},[3187,3192],{"type":30,"tag":218,"props":3188,"children":3189},{},[3190],{"type":35,"value":3191},"\"You don't need to worry about that.\"",{"type":35,"value":3193}," Any time a technical question is deflected rather than answered, take note. You're the owner of this product. Every technical decision is your business.",{"type":30,"tag":52,"props":3195,"children":3197},{"id":3196},"how-we-build-for-the-handoff-from-day-one",[3198],{"type":35,"value":3199},"How We Build for the Handoff from Day One",{"type":30,"tag":31,"props":3201,"children":3202},{},[3203],{"type":35,"value":3204},"We're an agency writing about handoff-readiness, so let us be transparent about our own practices.",{"type":30,"tag":31,"props":3206,"children":3207},{},[3208],{"type":35,"value":3209},"Our philosophy is simple: your code, your product, your freedom. We mean that literally.",{"type":30,"tag":31,"props":3211,"children":3212},{},[3213],{"type":30,"tag":218,"props":3214,"children":3215},{},[3216],{"type":35,"value":3217},"From sprint one, every project we build includes:",{"type":30,"tag":224,"props":3219,"children":3220},{},[3221,3226,3231,3236,3241,3246],{"type":30,"tag":228,"props":3222,"children":3223},{},[3224],{"type":35,"value":3225},"Client-owned Git repository with full access from day one",{"type":30,"tag":228,"props":3227,"children":3228},{},[3229],{"type":35,"value":3230},"CI/CD pipeline configured and documented before the first feature ships",{"type":30,"tag":228,"props":3232,"children":3233},{},[3234],{"type":35,"value":3235},"Architecture documentation maintained as a living document, not an afterthought",{"type":30,"tag":228,"props":3237,"children":3238},{},[3239],{"type":35,"value":3240},"All third-party accounts registered under the client's company",{"type":30,"tag":228,"props":3242,"children":3243},{},[3244],{"type":35,"value":3245},"Clean deployment process documented in runbooks",{"type":30,"tag":228,"props":3247,"children":3248},{},[3249],{"type":35,"value":3250},"Code quality standards enforced through automated linting and review",{"type":30,"tag":31,"props":3252,"children":3253},{},[3254,3256,3260],{"type":35,"value":3255},"We build this way because we've been on the other side. When we built ",{"type":30,"tag":43,"props":3257,"children":3258},{"href":45},[3259],{"type":35,"value":294},{"type":35,"value":3261},", our own SaaS product, we experienced firsthand what it means to live with a codebase for years. Every shortcut you take during development becomes a tax you pay during maintenance. We don't take those shortcuts on our products, and we don't take them on yours.",{"type":30,"tag":31,"props":3263,"children":3264},{},[3265],{"type":35,"value":3266},"The goal isn't to keep clients dependent on us. It's the opposite. We want you to stay because the partnership works -- not because you can't leave. Our 80%+ client retention rate tells us that building for your independence actually makes for stronger, longer relationships.",{"type":30,"tag":52,"props":3268,"children":3270},{"id":3269},"questions-to-ask-your-agency-today",[3271],{"type":35,"value":3272},"Questions to Ask Your Agency Today",{"type":30,"tag":31,"props":3274,"children":3275},{},[3276],{"type":35,"value":3277},"If you're working with an agency right now, here are questions you can ask in your next meeting.",{"type":30,"tag":31,"props":3279,"children":3280},{},[3281,3286],{"type":30,"tag":218,"props":3282,"children":3283},{},[3284],{"type":35,"value":3285},"1. \"Can I have repo access? I'd like a developer to do a quick code review.\"",{"type":35,"value":3287},"\nThe right answer is immediate access, no hesitation. Any resistance is a red flag.",{"type":30,"tag":31,"props":3289,"children":3290},{},[3291,3296],{"type":30,"tag":218,"props":3292,"children":3293},{},[3294],{"type":35,"value":3295},"2. \"Walk me through what happens if we need to bring this in-house.\"",{"type":35,"value":3297},"\nListen for specifics. A team that builds for handoff has thought about this. A team that hasn't will fumble the answer.",{"type":30,"tag":31,"props":3299,"children":3300},{},[3301,3306],{"type":30,"tag":218,"props":3302,"children":3303},{},[3304],{"type":35,"value":3305},"3. \"Who owns the cloud infrastructure accounts?\"",{"type":35,"value":3307},"\nIf the accounts are under their company, ask for a migration plan. This should happen now, not at the end of the engagement.",{"type":30,"tag":31,"props":3309,"children":3310},{},[3311,3316,3318,3324],{"type":30,"tag":218,"props":3312,"children":3313},{},[3314],{"type":35,"value":3315},"4. \"How would a new developer get this running locally?\"",{"type":35,"value":3317},"\nIf the answer involves \"they'd probably need to talk to ",{"type":30,"tag":3319,"props":3320,"children":3321},"span",{},[3322],{"type":35,"value":3323},"specific person",{"type":35,"value":3325},",\" the setup isn't documented well enough.",{"type":30,"tag":31,"props":3327,"children":3328},{},[3329,3334],{"type":30,"tag":218,"props":3330,"children":3331},{},[3332],{"type":35,"value":3333},"5. \"What's your documentation practice -- do you write docs as you go or at the end?\"",{"type":35,"value":3335},"\n\"As we go\" is the only good answer. \"At the end\" means \"probably never in full.\"",{"type":30,"tag":31,"props":3337,"children":3338},{},[3339,3344],{"type":30,"tag":218,"props":3340,"children":3341},{},[3342],{"type":35,"value":3343},"6. \"What known technical debt exists, and where is it documented?\"",{"type":35,"value":3345},"\nEvery codebase has tech debt. A team that can't articulate theirs either doesn't track it or doesn't want to tell you about it.",{"type":30,"tag":52,"props":3347,"children":3349},{"id":3348},"protecting-your-investment",[3350],{"type":35,"value":3351},"Protecting Your Investment",{"type":30,"tag":31,"props":3353,"children":3354},{},[3355],{"type":35,"value":3356},"The code your agency writes is one of your most valuable assets. It represents months of decisions, iterations, and investment. Whether you plan to work with your current agency for another five years or transition to an in-house team next quarter, the code should be ready.",{"type":30,"tag":31,"props":3358,"children":3359},{},[3360,3362,3367],{"type":35,"value":3361},"Handoff-readiness isn't about planning to leave. It's about owning what you've paid for. A product built to hand over is a product ",{"type":30,"tag":43,"props":3363,"children":3364},{"href":4},[3365],{"type":35,"value":3366},"built to last",{"type":35,"value":537},{"type":30,"tag":31,"props":3369,"children":3370},{},[3371],{"type":35,"value":3372},"If you're not sure where your codebase stands, we do honest code audits. We'll tell you what's working, what needs attention, and whether your code is ready for a handoff -- no matter who built it.",{"title":7,"searchDepth":960,"depth":960,"links":3374},[3375,3376,3384,3385,3386,3387],{"id":2627,"depth":960,"text":2630},{"id":2678,"depth":960,"text":2681,"children":3377},[3378,3379,3380,3381,3382,3383],{"id":2689,"depth":966,"text":2692},{"id":2751,"depth":966,"text":2754},{"id":2841,"depth":966,"text":2844},{"id":2912,"depth":966,"text":2915},{"id":2983,"depth":966,"text":2986},{"id":3054,"depth":966,"text":3057},{"id":3115,"depth":960,"text":3118},{"id":3196,"depth":960,"text":3199},{"id":3269,"depth":960,"text":3272},{"id":3348,"depth":960,"text":3351},"content:blog:agency-code-handoff-ready.md","blog/agency-code-handoff-ready.md","blog/agency-code-handoff-ready",{"_path":3392,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3393,"description":3394,"topic":3395,"author":11,"coverImg":3396,"coverImgAlt":3397,"published":14,"createdAt":3398,"keywords":3399,"body":3406,"_type":986,"_id":4013,"_source":988,"_file":4014,"_stem":4015,"_extension":991},"/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.","Product Engineering","/images/blog/code-shop-vs-product-engineering.webp","Code Shop vs Product Engineering Team — understanding the difference and why it matters","2026-04-11",[3400,3401,3402,3403,3404,3405],"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":27,"children":3407,"toc":3995},[3408,3413,3418,3423,3429,3434,3439,3447,3475,3483,3488,3494,3499,3504,3511,3539,3545,3550,3556,3566,3576,3581,3587,3592,3601,3610,3615,3621,3630,3639,3644,3650,3659,3675,3680,3686,3695,3704,3709,3715,3720,3730,3740,3750,3760,3770,3780,3790,3796,3829,3835,3868,3874,3879,3890,3895,3900,3905,3911,3916,3924,3952,3957,3963,3968,3973,3985,3990],{"type":30,"tag":31,"props":3409,"children":3410},{},[3411],{"type":35,"value":3412},"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":30,"tag":31,"props":3414,"children":3415},{},[3416],{"type":35,"value":3417},"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":30,"tag":31,"props":3419,"children":3420},{},[3421],{"type":35,"value":3422},"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":30,"tag":52,"props":3424,"children":3426},{"id":3425},"what-is-a-code-shop",[3427],{"type":35,"value":3428},"What Is a \"Code Shop\"?",{"type":30,"tag":31,"props":3430,"children":3431},{},[3432],{"type":35,"value":3433},"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":30,"tag":31,"props":3435,"children":3436},{},[3437],{"type":35,"value":3438},"That's not a criticism. It's a description of a legitimate business model that works well for certain kinds of projects.",{"type":30,"tag":31,"props":3440,"children":3441},{},[3442],{"type":30,"tag":218,"props":3443,"children":3444},{},[3445],{"type":35,"value":3446},"How you'll recognize one:",{"type":30,"tag":224,"props":3448,"children":3449},{},[3450,3455,3460,3465,3470],{"type":30,"tag":228,"props":3451,"children":3452},{},[3453],{"type":35,"value":3454},"They lead with \"How many screens?\" and \"What features do you need?\"",{"type":30,"tag":228,"props":3456,"children":3457},{},[3458],{"type":35,"value":3459},"Pricing is based on scope -- you get a quote tied to a feature list",{"type":30,"tag":228,"props":3461,"children":3462},{},[3463],{"type":35,"value":3464},"The team is assembled for your project, then moves on to the next one",{"type":30,"tag":228,"props":3466,"children":3467},{},[3468],{"type":35,"value":3469},"Communication follows a request-response pattern: you ask, they build",{"type":30,"tag":228,"props":3471,"children":3472},{},[3473],{"type":35,"value":3474},"The engagement has a clear end date tied to delivery",{"type":30,"tag":31,"props":3476,"children":3477},{},[3478],{"type":30,"tag":218,"props":3479,"children":3480},{},[3481],{"type":35,"value":3482},"When this model works:",{"type":30,"tag":31,"props":3484,"children":3485},{},[3486],{"type":35,"value":3487},"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":30,"tag":52,"props":3489,"children":3491},{"id":3490},"what-is-a-product-engineering-team",[3492],{"type":35,"value":3493},"What Is a Product Engineering Team?",{"type":30,"tag":31,"props":3495,"children":3496},{},[3497],{"type":35,"value":3498},"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":30,"tag":31,"props":3500,"children":3501},{},[3502],{"type":35,"value":3503},"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":30,"tag":31,"props":3505,"children":3506},{},[3507],{"type":30,"tag":218,"props":3508,"children":3509},{},[3510],{"type":35,"value":3446},{"type":30,"tag":224,"props":3512,"children":3513},{},[3514,3519,3524,3529,3534],{"type":30,"tag":228,"props":3515,"children":3516},{},[3517],{"type":35,"value":3518},"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":30,"tag":228,"props":3520,"children":3521},{},[3522],{"type":35,"value":3523},"They ask about your users, your market, your business model -- not just your tech requirements.",{"type":30,"tag":228,"props":3525,"children":3526},{},[3527],{"type":35,"value":3528},"They suggest scope changes based on what they're learning during development.",{"type":30,"tag":228,"props":3530,"children":3531},{},[3532],{"type":35,"value":3533},"The engineers working on your product stay on your product. They know your codebase, your users, your goals.",{"type":30,"tag":228,"props":3535,"children":3536},{},[3537],{"type":35,"value":3538},"The relationship doesn't end at delivery.",{"type":30,"tag":52,"props":3540,"children":3542},{"id":3541},"_5-practical-differences-that-matter",[3543],{"type":35,"value":3544},"5 Practical Differences That Matter",{"type":30,"tag":31,"props":3546,"children":3547},{},[3548],{"type":35,"value":3549},"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":30,"tag":198,"props":3551,"children":3553},{"id":3552},"_1-how-they-respond-to-your-brief",[3554],{"type":35,"value":3555},"1. How They Respond to Your Brief",{"type":30,"tag":31,"props":3557,"children":3558},{},[3559,3564],{"type":30,"tag":218,"props":3560,"children":3561},{},[3562],{"type":35,"value":3563},"Code shop approach:",{"type":35,"value":3565}," 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":30,"tag":31,"props":3567,"children":3568},{},[3569,3574],{"type":30,"tag":218,"props":3570,"children":3571},{},[3572],{"type":35,"value":3573},"Product engineering approach:",{"type":35,"value":3575}," 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":30,"tag":31,"props":3577,"children":3578},{},[3579],{"type":35,"value":3580},"This doesn't mean product teams don't talk about cost. They do. But cost comes after understanding, not before it.",{"type":30,"tag":198,"props":3582,"children":3584},{"id":3583},"_2-what-happens-when-something-isnt-working",[3585],{"type":35,"value":3586},"2. What Happens When Something Isn't Working",{"type":30,"tag":31,"props":3588,"children":3589},{},[3590],{"type":35,"value":3591},"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":30,"tag":31,"props":3593,"children":3594},{},[3595,3599],{"type":30,"tag":218,"props":3596,"children":3597},{},[3598],{"type":35,"value":3563},{"type":35,"value":3600}," \"That's a change request. Here's the revised estimate.\"",{"type":30,"tag":31,"props":3602,"children":3603},{},[3604,3608],{"type":30,"tag":218,"props":3605,"children":3606},{},[3607],{"type":35,"value":3573},{"type":35,"value":3609}," \"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":30,"tag":31,"props":3611,"children":3612},{},[3613],{"type":35,"value":3614},"Neither response is wrong. But one treats the problem as a billing event, and the other treats it as a product decision.",{"type":30,"tag":198,"props":3616,"children":3618},{"id":3617},"_3-who-works-on-your-project",[3619],{"type":35,"value":3620},"3. Who Works on Your Project",{"type":30,"tag":31,"props":3622,"children":3623},{},[3624,3628],{"type":30,"tag":218,"props":3625,"children":3626},{},[3627],{"type":35,"value":3563},{"type":35,"value":3629}," 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":30,"tag":31,"props":3631,"children":3632},{},[3633,3637],{"type":30,"tag":218,"props":3634,"children":3635},{},[3636],{"type":35,"value":3573},{"type":35,"value":3638}," 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":30,"tag":31,"props":3640,"children":3641},{},[3642],{"type":35,"value":3643},"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":30,"tag":198,"props":3645,"children":3647},{"id":3646},"_4-what-you-get-at-the-end",[3648],{"type":35,"value":3649},"4. What You Get at the End",{"type":30,"tag":31,"props":3651,"children":3652},{},[3653,3657],{"type":30,"tag":218,"props":3654,"children":3655},{},[3656],{"type":35,"value":3563},{"type":35,"value":3658}," Delivered code, a final invoice, and a handoff document. The project is complete.",{"type":30,"tag":31,"props":3660,"children":3661},{},[3662,3666,3668,3673],{"type":30,"tag":218,"props":3663,"children":3664},{},[3665],{"type":35,"value":3573},{"type":35,"value":3667}," A production-ready product with documented architecture, clean deployment pipelines, and a team that's ready to keep building with you. ",{"type":30,"tag":43,"props":3669,"children":3670},{"href":940},[3671],{"type":35,"value":3672},"The code is yours, fully handoff-ready",{"type":35,"value":3674},", and you're never locked in.",{"type":30,"tag":31,"props":3676,"children":3677},{},[3678],{"type":35,"value":3679},"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":30,"tag":198,"props":3681,"children":3683},{"id":3682},"_5-what-happens-after-launch",[3684],{"type":35,"value":3685},"5. What Happens After Launch",{"type":30,"tag":31,"props":3687,"children":3688},{},[3689,3693],{"type":30,"tag":218,"props":3690,"children":3691},{},[3692],{"type":35,"value":3563},{"type":35,"value":3694}," If you bought a support contract, you get bug fixes. Otherwise, the engagement is over.",{"type":30,"tag":31,"props":3696,"children":3697},{},[3698,3702],{"type":30,"tag":218,"props":3699,"children":3700},{},[3701],{"type":35,"value":3573},{"type":35,"value":3703}," 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":30,"tag":31,"props":3705,"children":3706},{},[3707],{"type":35,"value":3708},"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":30,"tag":52,"props":3710,"children":3712},{"id":3711},"how-to-tell-which-one-youre-talking-to",[3713],{"type":35,"value":3714},"How to Tell Which One You're Talking To",{"type":30,"tag":31,"props":3716,"children":3717},{},[3718],{"type":35,"value":3719},"During your evaluation process, here are questions that reveal mindset:",{"type":30,"tag":31,"props":3721,"children":3722},{},[3723,3728],{"type":30,"tag":218,"props":3724,"children":3725},{},[3726],{"type":35,"value":3727},"Ask: \"What would you change about our brief?\"",{"type":35,"value":3729},"\nA code shop will say \"nothing, it looks clear.\" A product team will have opinions.",{"type":30,"tag":31,"props":3731,"children":3732},{},[3733,3738],{"type":30,"tag":218,"props":3734,"children":3735},{},[3736],{"type":35,"value":3737},"Ask: \"Can I meet the engineers who will work on my project?\"",{"type":35,"value":3739},"\nIf the answer is vague or conditional, that tells you something about how the team is structured.",{"type":30,"tag":31,"props":3741,"children":3742},{},[3743,3748],{"type":30,"tag":218,"props":3744,"children":3745},{},[3746],{"type":35,"value":3747},"Ask: \"What happens when scope changes mid-project?\"",{"type":35,"value":3749},"\nListen for whether they frame it as a billing conversation or a product conversation.",{"type":30,"tag":31,"props":3751,"children":3752},{},[3753,3758],{"type":30,"tag":218,"props":3754,"children":3755},{},[3756],{"type":35,"value":3757},"Ask: \"Tell me about a project where you pushed back on the client's requirements.\"",{"type":35,"value":3759},"\nProduct teams will have specific stories. Code shops rarely push back -- that's not their role.",{"type":30,"tag":31,"props":3761,"children":3762},{},[3763,3768],{"type":30,"tag":218,"props":3764,"children":3765},{},[3766],{"type":35,"value":3767},"Ask: \"What happens after delivery?\"",{"type":35,"value":3769},"\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":30,"tag":31,"props":3771,"children":3772},{},[3773,3778],{"type":30,"tag":218,"props":3774,"children":3775},{},[3776],{"type":35,"value":3777},"Ask: \"How do you handle features that don't work as expected during development?\"",{"type":35,"value":3779},"\nThis one reveals everything. You want to hear about proactive problem-solving, not change request processes.",{"type":30,"tag":31,"props":3781,"children":3782},{},[3783,3788],{"type":30,"tag":218,"props":3784,"children":3785},{},[3786],{"type":35,"value":3787},"Ask: \"Do you have your own product?\"",{"type":35,"value":3789},"\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":30,"tag":198,"props":3791,"children":3793},{"id":3792},"red-flags-that-signal-code-shop-even-when-they-claim-product-thinking",[3794],{"type":35,"value":3795},"Red Flags That Signal \"Code Shop\" Even When They Claim Product Thinking",{"type":30,"tag":224,"props":3797,"children":3798},{},[3799,3804,3809,3814,3819,3824],{"type":30,"tag":228,"props":3800,"children":3801},{},[3802],{"type":35,"value":3803},"They can't name the engineers who will work on your project",{"type":30,"tag":228,"props":3805,"children":3806},{},[3807],{"type":35,"value":3808},"The proposal is pure scope-and-cost with no questions about your users or business",{"type":30,"tag":228,"props":3810,"children":3811},{},[3812],{"type":35,"value":3813},"They agree to everything in your brief without a single pushback",{"type":30,"tag":228,"props":3815,"children":3816},{},[3817],{"type":35,"value":3818},"No mention of post-launch plans, iteration, or long-term partnership",{"type":30,"tag":228,"props":3820,"children":3821},{},[3822],{"type":35,"value":3823},"They list technologies before understanding your problem",{"type":30,"tag":228,"props":3825,"children":3826},{},[3827],{"type":35,"value":3828},"The sales process feels transactional: brief in, quote out, sign here",{"type":30,"tag":198,"props":3830,"children":3832},{"id":3831},"green-flags-that-signal-genuine-product-thinking",[3833],{"type":35,"value":3834},"Green Flags That Signal Genuine Product Thinking",{"type":30,"tag":224,"props":3836,"children":3837},{},[3838,3843,3848,3853,3858,3863],{"type":30,"tag":228,"props":3839,"children":3840},{},[3841],{"type":35,"value":3842},"They ask more questions than they answer in the first meeting",{"type":30,"tag":228,"props":3844,"children":3845},{},[3846],{"type":35,"value":3847},"They recommend cutting scope (even though it means less revenue for them)",{"type":30,"tag":228,"props":3849,"children":3850},{},[3851],{"type":35,"value":3852},"They can introduce you to the specific people who will build your product",{"type":30,"tag":228,"props":3854,"children":3855},{},[3856],{"type":35,"value":3857},"They share stories about long-term client relationships, not just project completions",{"type":30,"tag":228,"props":3859,"children":3860},{},[3861],{"type":35,"value":3862},"They have opinions about your product decisions -- and they're comfortable sharing them",{"type":30,"tag":228,"props":3864,"children":3865},{},[3866],{"type":35,"value":3867},"They've built something of their own",{"type":30,"tag":52,"props":3869,"children":3871},{"id":3870},"why-we-built-acornglobus-as-a-product-engineering-team",[3872],{"type":35,"value":3873},"Why We Built AcornGlobus as a Product Engineering Team",{"type":30,"tag":31,"props":3875,"children":3876},{},[3877],{"type":35,"value":3878},"This isn't a sales pitch. It's context for why we think about this distinction the way we do.",{"type":30,"tag":31,"props":3880,"children":3881},{},[3882,3884,3888],{"type":35,"value":3883},"We built ",{"type":30,"tag":43,"props":3885,"children":3886},{"href":45},[3887],{"type":35,"value":294},{"type":35,"value":3889}," -- 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":30,"tag":31,"props":3891,"children":3892},{},[3893],{"type":35,"value":3894},"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":30,"tag":31,"props":3896,"children":3897},{},[3898],{"type":35,"value":3899},"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":30,"tag":31,"props":3901,"children":3902},{},[3903],{"type":35,"value":3904},"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":30,"tag":52,"props":3906,"children":3908},{"id":3907},"when-a-code-shop-is-actually-the-right-choice",[3909],{"type":35,"value":3910},"When a Code Shop Is Actually the Right Choice",{"type":30,"tag":31,"props":3912,"children":3913},{},[3914],{"type":35,"value":3915},"Honesty means admitting that product engineering isn't always what you need.",{"type":30,"tag":31,"props":3917,"children":3918},{},[3919],{"type":30,"tag":218,"props":3920,"children":3921},{},[3922],{"type":35,"value":3923},"A code shop might be right if:",{"type":30,"tag":224,"props":3925,"children":3926},{},[3927,3932,3937,3942,3947],{"type":30,"tag":228,"props":3928,"children":3929},{},[3930],{"type":35,"value":3931},"You have a detailed technical specification and an in-house product manager to own decisions",{"type":30,"tag":228,"props":3933,"children":3934},{},[3935],{"type":35,"value":3936},"You're building a defined feature or module, not a core product",{"type":30,"tag":228,"props":3938,"children":3939},{},[3940],{"type":35,"value":3941},"You have a fixed budget for a fixed scope and don't need ongoing iteration",{"type":30,"tag":228,"props":3943,"children":3944},{},[3945],{"type":35,"value":3946},"The project is a commodity build (marketing site, internal tool with standard requirements)",{"type":30,"tag":228,"props":3948,"children":3949},{},[3950],{"type":35,"value":3951},"You have strong internal technical leadership to manage the relationship",{"type":30,"tag":31,"props":3953,"children":3954},{},[3955],{"type":35,"value":3956},"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":30,"tag":52,"props":3958,"children":3960},{"id":3959},"making-the-right-choice-for-your-project",[3961],{"type":35,"value":3962},"Making the Right Choice for Your Project",{"type":30,"tag":31,"props":3964,"children":3965},{},[3966],{"type":35,"value":3967},"The real question isn't \"code shop or product team?\" It's: what does your project need?",{"type":30,"tag":31,"props":3969,"children":3970},{},[3971],{"type":35,"value":3972},"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":30,"tag":31,"props":3974,"children":3975},{},[3976,3978,3983],{"type":35,"value":3977},"If you have a ",{"type":30,"tag":43,"props":3979,"children":3980},{"href":948},[3981],{"type":35,"value":3982},"clearly defined project",{"type":35,"value":3984}," with internal oversight and a specific deliverable, a code shop might be the efficient choice.",{"type":30,"tag":31,"props":3986,"children":3987},{},[3988],{"type":35,"value":3989},"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":30,"tag":31,"props":3991,"children":3992},{},[3993],{"type":35,"value":3994},"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":960,"depth":960,"links":3996},[3997,3998,3999,4006,4010,4011,4012],{"id":3425,"depth":960,"text":3428},{"id":3490,"depth":960,"text":3493},{"id":3541,"depth":960,"text":3544,"children":4000},[4001,4002,4003,4004,4005],{"id":3552,"depth":966,"text":3555},{"id":3583,"depth":966,"text":3586},{"id":3617,"depth":966,"text":3620},{"id":3646,"depth":966,"text":3649},{"id":3682,"depth":966,"text":3685},{"id":3711,"depth":960,"text":3714,"children":4007},[4008,4009],{"id":3792,"depth":966,"text":3795},{"id":3831,"depth":966,"text":3834},{"id":3870,"depth":960,"text":3873},{"id":3907,"depth":960,"text":3910},{"id":3959,"depth":960,"text":3962},"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":994,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":995,"description":996,"topic":10,"author":11,"coverImg":997,"coverImgAlt":998,"published":14,"toc":14,"readingTime":999,"createdAt":1000,"keywords":4017,"body":4018,"_type":986,"_id":1684,"_source":988,"_file":1685,"_stem":1686,"_extension":991},[1002,1003,1004,1005,1006,1007],{"type":27,"children":4019,"toc":4558},[4020,4024,4028,4037,4041,4045,4049,4068,4072,4076,4080,4084,4088,4092,4099,4118,4125,4147,4155,4159,4163,4167,4174,4193,4200,4215,4223,4227,4231,4235,4242,4261,4268,4279,4287,4291,4295,4299,4306,4325,4332,4347,4355,4359,4363,4367,4374,4397,4404,4423,4431,4435,4439,4443,4447,4451,4455,4459,4463,4467,4471,4484,4492,4500,4513,4517,4525,4533,4541,4545,4554],{"type":30,"tag":31,"props":4021,"children":4022},{},[4023],{"type":35,"value":1014},{"type":30,"tag":31,"props":4025,"children":4026},{},[4027],{"type":35,"value":1019},{"type":30,"tag":31,"props":4029,"children":4030},{},[4031,4032,4036],{"type":35,"value":1024},{"type":30,"tag":43,"props":4033,"children":4034},{"href":45},[4035],{"type":35,"value":294},{"type":35,"value":1030},{"type":30,"tag":52,"props":4038,"children":4039},{"id":1033},[4040],{"type":35,"value":1036},{"type":30,"tag":31,"props":4042,"children":4043},{},[4044],{"type":35,"value":1041},{"type":30,"tag":31,"props":4046,"children":4047},{},[4048],{"type":35,"value":1046},{"type":30,"tag":224,"props":4050,"children":4051},{},[4052,4056,4060,4064],{"type":30,"tag":228,"props":4053,"children":4054},{},[4055],{"type":35,"value":1054},{"type":30,"tag":228,"props":4057,"children":4058},{},[4059],{"type":35,"value":1059},{"type":30,"tag":228,"props":4061,"children":4062},{},[4063],{"type":35,"value":1064},{"type":30,"tag":228,"props":4065,"children":4066},{},[4067],{"type":35,"value":1069},{"type":30,"tag":31,"props":4069,"children":4070},{},[4071],{"type":35,"value":1074},{"type":30,"tag":52,"props":4073,"children":4074},{"id":1077},[4075],{"type":35,"value":1080},{"type":30,"tag":31,"props":4077,"children":4078},{},[4079],{"type":35,"value":1085},{"type":30,"tag":31,"props":4081,"children":4082},{},[4083],{"type":35,"value":1090},{"type":30,"tag":198,"props":4085,"children":4086},{"id":1093},[4087],{"type":35,"value":1096},{"type":30,"tag":31,"props":4089,"children":4090},{},[4091],{"type":35,"value":1101},{"type":30,"tag":31,"props":4093,"children":4094},{},[4095],{"type":30,"tag":218,"props":4096,"children":4097},{},[4098],{"type":35,"value":1109},{"type":30,"tag":224,"props":4100,"children":4101},{},[4102,4106,4110,4114],{"type":30,"tag":228,"props":4103,"children":4104},{},[4105],{"type":35,"value":1117},{"type":30,"tag":228,"props":4107,"children":4108},{},[4109],{"type":35,"value":1122},{"type":30,"tag":228,"props":4111,"children":4112},{},[4113],{"type":35,"value":1127},{"type":30,"tag":228,"props":4115,"children":4116},{},[4117],{"type":35,"value":1132},{"type":30,"tag":31,"props":4119,"children":4120},{},[4121],{"type":30,"tag":218,"props":4122,"children":4123},{},[4124],{"type":35,"value":1140},{"type":30,"tag":224,"props":4126,"children":4127},{},[4128,4132,4136,4140],{"type":30,"tag":228,"props":4129,"children":4130},{},[4131],{"type":35,"value":1148},{"type":30,"tag":228,"props":4133,"children":4134},{},[4135],{"type":35,"value":1153},{"type":30,"tag":228,"props":4137,"children":4138},{},[4139],{"type":35,"value":1158},{"type":30,"tag":228,"props":4141,"children":4142},{},[4143],{"type":30,"tag":43,"props":4144,"children":4145},{"href":4},[4146],{"type":35,"value":1166},{"type":30,"tag":31,"props":4148,"children":4149},{},[4150,4154],{"type":30,"tag":218,"props":4151,"children":4152},{},[4153],{"type":35,"value":1174},{"type":35,"value":1176},{"type":30,"tag":31,"props":4156,"children":4157},{},[4158],{"type":35,"value":1181},{"type":30,"tag":198,"props":4160,"children":4161},{"id":1184},[4162],{"type":35,"value":1187},{"type":30,"tag":31,"props":4164,"children":4165},{},[4166],{"type":35,"value":1192},{"type":30,"tag":31,"props":4168,"children":4169},{},[4170],{"type":30,"tag":218,"props":4171,"children":4172},{},[4173],{"type":35,"value":1109},{"type":30,"tag":224,"props":4175,"children":4176},{},[4177,4181,4185,4189],{"type":30,"tag":228,"props":4178,"children":4179},{},[4180],{"type":35,"value":1207},{"type":30,"tag":228,"props":4182,"children":4183},{},[4184],{"type":35,"value":1212},{"type":30,"tag":228,"props":4186,"children":4187},{},[4188],{"type":35,"value":1217},{"type":30,"tag":228,"props":4190,"children":4191},{},[4192],{"type":35,"value":1222},{"type":30,"tag":31,"props":4194,"children":4195},{},[4196],{"type":30,"tag":218,"props":4197,"children":4198},{},[4199],{"type":35,"value":1140},{"type":30,"tag":224,"props":4201,"children":4202},{},[4203,4207,4211],{"type":30,"tag":228,"props":4204,"children":4205},{},[4206],{"type":35,"value":1237},{"type":30,"tag":228,"props":4208,"children":4209},{},[4210],{"type":35,"value":1242},{"type":30,"tag":228,"props":4212,"children":4213},{},[4214],{"type":35,"value":1247},{"type":30,"tag":31,"props":4216,"children":4217},{},[4218,4222],{"type":30,"tag":218,"props":4219,"children":4220},{},[4221],{"type":35,"value":1255},{"type":35,"value":1257},{"type":30,"tag":31,"props":4224,"children":4225},{},[4226],{"type":35,"value":1262},{"type":30,"tag":198,"props":4228,"children":4229},{"id":1265},[4230],{"type":35,"value":1268},{"type":30,"tag":31,"props":4232,"children":4233},{},[4234],{"type":35,"value":1273},{"type":30,"tag":31,"props":4236,"children":4237},{},[4238],{"type":30,"tag":218,"props":4239,"children":4240},{},[4241],{"type":35,"value":1109},{"type":30,"tag":224,"props":4243,"children":4244},{},[4245,4249,4253,4257],{"type":30,"tag":228,"props":4246,"children":4247},{},[4248],{"type":35,"value":1288},{"type":30,"tag":228,"props":4250,"children":4251},{},[4252],{"type":35,"value":1293},{"type":30,"tag":228,"props":4254,"children":4255},{},[4256],{"type":35,"value":1298},{"type":30,"tag":228,"props":4258,"children":4259},{},[4260],{"type":35,"value":1303},{"type":30,"tag":31,"props":4262,"children":4263},{},[4264],{"type":30,"tag":218,"props":4265,"children":4266},{},[4267],{"type":35,"value":1140},{"type":30,"tag":224,"props":4269,"children":4270},{},[4271,4275],{"type":30,"tag":228,"props":4272,"children":4273},{},[4274],{"type":35,"value":1318},{"type":30,"tag":228,"props":4276,"children":4277},{},[4278],{"type":35,"value":1323},{"type":30,"tag":31,"props":4280,"children":4281},{},[4282,4286],{"type":30,"tag":218,"props":4283,"children":4284},{},[4285],{"type":35,"value":1174},{"type":35,"value":1332},{"type":30,"tag":31,"props":4288,"children":4289},{},[4290],{"type":35,"value":1337},{"type":30,"tag":198,"props":4292,"children":4293},{"id":1340},[4294],{"type":35,"value":1343},{"type":30,"tag":31,"props":4296,"children":4297},{},[4298],{"type":35,"value":1348},{"type":30,"tag":31,"props":4300,"children":4301},{},[4302],{"type":30,"tag":218,"props":4303,"children":4304},{},[4305],{"type":35,"value":1109},{"type":30,"tag":224,"props":4307,"children":4308},{},[4309,4313,4317,4321],{"type":30,"tag":228,"props":4310,"children":4311},{},[4312],{"type":35,"value":1363},{"type":30,"tag":228,"props":4314,"children":4315},{},[4316],{"type":35,"value":1368},{"type":30,"tag":228,"props":4318,"children":4319},{},[4320],{"type":35,"value":1373},{"type":30,"tag":228,"props":4322,"children":4323},{},[4324],{"type":35,"value":1378},{"type":30,"tag":31,"props":4326,"children":4327},{},[4328],{"type":30,"tag":218,"props":4329,"children":4330},{},[4331],{"type":35,"value":1140},{"type":30,"tag":224,"props":4333,"children":4334},{},[4335,4339,4343],{"type":30,"tag":228,"props":4336,"children":4337},{},[4338],{"type":35,"value":1393},{"type":30,"tag":228,"props":4340,"children":4341},{},[4342],{"type":35,"value":1398},{"type":30,"tag":228,"props":4344,"children":4345},{},[4346],{"type":35,"value":1403},{"type":30,"tag":31,"props":4348,"children":4349},{},[4350,4354],{"type":30,"tag":218,"props":4351,"children":4352},{},[4353],{"type":35,"value":1411},{"type":35,"value":1413},{"type":30,"tag":31,"props":4356,"children":4357},{},[4358],{"type":35,"value":1418},{"type":30,"tag":198,"props":4360,"children":4361},{"id":1421},[4362],{"type":35,"value":1424},{"type":30,"tag":31,"props":4364,"children":4365},{},[4366],{"type":35,"value":1429},{"type":30,"tag":31,"props":4368,"children":4369},{},[4370],{"type":30,"tag":218,"props":4371,"children":4372},{},[4373],{"type":35,"value":1109},{"type":30,"tag":224,"props":4375,"children":4376},{},[4377,4381,4385,4389,4393],{"type":30,"tag":228,"props":4378,"children":4379},{},[4380],{"type":35,"value":1444},{"type":30,"tag":228,"props":4382,"children":4383},{},[4384],{"type":35,"value":1449},{"type":30,"tag":228,"props":4386,"children":4387},{},[4388],{"type":35,"value":1454},{"type":30,"tag":228,"props":4390,"children":4391},{},[4392],{"type":35,"value":1459},{"type":30,"tag":228,"props":4394,"children":4395},{},[4396],{"type":35,"value":1464},{"type":30,"tag":31,"props":4398,"children":4399},{},[4400],{"type":30,"tag":218,"props":4401,"children":4402},{},[4403],{"type":35,"value":1140},{"type":30,"tag":224,"props":4405,"children":4406},{},[4407,4411,4415,4419],{"type":30,"tag":228,"props":4408,"children":4409},{},[4410],{"type":35,"value":1479},{"type":30,"tag":228,"props":4412,"children":4413},{},[4414],{"type":35,"value":1484},{"type":30,"tag":228,"props":4416,"children":4417},{},[4418],{"type":35,"value":1489},{"type":30,"tag":228,"props":4420,"children":4421},{},[4422],{"type":35,"value":1494},{"type":30,"tag":31,"props":4424,"children":4425},{},[4426,4430],{"type":30,"tag":218,"props":4427,"children":4428},{},[4429],{"type":35,"value":1502},{"type":35,"value":1504},{"type":30,"tag":52,"props":4432,"children":4433},{"id":1507},[4434],{"type":35,"value":1510},{"type":30,"tag":31,"props":4436,"children":4437},{},[4438],{"type":35,"value":1515},{"type":30,"tag":31,"props":4440,"children":4441},{},[4442],{"type":35,"value":1520},{"type":30,"tag":31,"props":4444,"children":4445},{},[4446],{"type":35,"value":1525},{"type":30,"tag":31,"props":4448,"children":4449},{},[4450],{"type":35,"value":1530},{"type":30,"tag":31,"props":4452,"children":4453},{},[4454],{"type":35,"value":1535},{"type":30,"tag":31,"props":4456,"children":4457},{},[4458],{"type":35,"value":1540},{"type":30,"tag":31,"props":4460,"children":4461},{},[4462],{"type":35,"value":1545},{"type":30,"tag":52,"props":4464,"children":4465},{"id":1548},[4466],{"type":35,"value":1551},{"type":30,"tag":31,"props":4468,"children":4469},{},[4470],{"type":35,"value":1556},{"type":30,"tag":31,"props":4472,"children":4473},{},[4474,4478,4479,4483],{"type":30,"tag":218,"props":4475,"children":4476},{},[4477],{"type":35,"value":1564},{"type":35,"value":1566},{"type":30,"tag":43,"props":4480,"children":4481},{"href":4},[4482],{"type":35,"value":1571},{"type":35,"value":1573},{"type":30,"tag":31,"props":4485,"children":4486},{},[4487,4491],{"type":30,"tag":218,"props":4488,"children":4489},{},[4490],{"type":35,"value":1581},{"type":35,"value":1583},{"type":30,"tag":31,"props":4493,"children":4494},{},[4495,4499],{"type":30,"tag":218,"props":4496,"children":4497},{},[4498],{"type":35,"value":1591},{"type":35,"value":1593},{"type":30,"tag":31,"props":4501,"children":4502},{},[4503,4507,4508,4512],{"type":30,"tag":218,"props":4504,"children":4505},{},[4506],{"type":35,"value":1601},{"type":35,"value":1603},{"type":30,"tag":43,"props":4509,"children":4510},{"href":940},[4511],{"type":35,"value":1608},{"type":35,"value":1610},{"type":30,"tag":52,"props":4514,"children":4515},{"id":1613},[4516],{"type":35,"value":1616},{"type":30,"tag":31,"props":4518,"children":4519},{},[4520,4524],{"type":30,"tag":218,"props":4521,"children":4522},{},[4523],{"type":35,"value":1624},{"type":35,"value":1626},{"type":30,"tag":31,"props":4526,"children":4527},{},[4528,4532],{"type":30,"tag":218,"props":4529,"children":4530},{},[4531],{"type":35,"value":1634},{"type":35,"value":1636},{"type":30,"tag":31,"props":4534,"children":4535},{},[4536,4540],{"type":30,"tag":218,"props":4537,"children":4538},{},[4539],{"type":35,"value":1644},{"type":35,"value":1646},{"type":30,"tag":52,"props":4542,"children":4543},{"id":1649},[4544],{"type":35,"value":1652},{"type":30,"tag":31,"props":4546,"children":4547},{},[4548,4549,4553],{"type":35,"value":1657},{"type":30,"tag":43,"props":4550,"children":4551},{"href":4},[4552],{"type":35,"value":1662},{"type":35,"value":1664},{"type":30,"tag":31,"props":4555,"children":4556},{},[4557],{"type":35,"value":1669},{"title":7,"searchDepth":960,"depth":960,"links":4559},[4560,4561,4568,4569,4570,4571],{"id":1033,"depth":960,"text":1036},{"id":1077,"depth":960,"text":1080,"children":4562},[4563,4564,4565,4566,4567],{"id":1093,"depth":966,"text":1096},{"id":1184,"depth":966,"text":1187},{"id":1265,"depth":966,"text":1268},{"id":1340,"depth":966,"text":1343},{"id":1421,"depth":966,"text":1424},{"id":1507,"depth":960,"text":1510},{"id":1548,"depth":960,"text":1551},{"id":1613,"depth":960,"text":1616},{"id":1649,"depth":960,"text":1652},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"topic":10,"author":11,"coverImg":12,"coverImgAlt":13,"published":14,"toc":14,"readingTime":15,"createdAt":16,"keywords":4573,"body":4574,"_type":986,"_id":987,"_source":988,"_file":989,"_stem":990,"_extension":991},[18,19,20,21,22,23,24,25],{"type":27,"children":4575,"toc":5295},[4576,4580,4589,4593,4597,4696,4700,4704,4708,4712,4716,4723,4742,4749,4772,4781,4790,4794,4798,4882,4891,4895,4899,4903,4907,4926,4930,4934,4938,4942,4946,4950,4954,4958,4962,4971,4975,4983,4987,4991,4995,4999,5003,5007,5011,5019,5027,5034,5053,5057,5066,5070,5074,5078,5082,5086,5090,5094,5137,5141,5145,5149,5153,5157,5161,5174,5182,5190,5203,5207,5211,5219,5227,5240,5244,5248,5257,5271,5274],{"type":30,"tag":31,"props":4577,"children":4578},{},[4579],{"type":35,"value":36},{"type":30,"tag":31,"props":4581,"children":4582},{},[4583,4584,4588],{"type":35,"value":41},{"type":30,"tag":43,"props":4585,"children":4586},{"href":45},[4587],{"type":35,"value":48},{"type":35,"value":50},{"type":30,"tag":52,"props":4590,"children":4591},{"id":54},[4592],{"type":35,"value":57},{"type":30,"tag":31,"props":4594,"children":4595},{},[4596],{"type":35,"value":62},{"type":30,"tag":64,"props":4598,"children":4599},{},[4600,4618],{"type":30,"tag":68,"props":4601,"children":4602},{},[4603],{"type":30,"tag":72,"props":4604,"children":4605},{},[4606,4610,4614],{"type":30,"tag":76,"props":4607,"children":4608},{},[4609],{"type":35,"value":80},{"type":30,"tag":76,"props":4611,"children":4612},{"align":83},[4613],{"type":35,"value":86},{"type":30,"tag":76,"props":4615,"children":4616},{},[4617],{"type":35,"value":91},{"type":30,"tag":93,"props":4619,"children":4620},{},[4621,4636,4651,4666,4681],{"type":30,"tag":72,"props":4622,"children":4623},{},[4624,4628,4632],{"type":30,"tag":100,"props":4625,"children":4626},{},[4627],{"type":35,"value":104},{"type":30,"tag":100,"props":4629,"children":4630},{"align":83},[4631],{"type":35,"value":109},{"type":30,"tag":100,"props":4633,"children":4634},{},[4635],{"type":35,"value":114},{"type":30,"tag":72,"props":4637,"children":4638},{},[4639,4643,4647],{"type":30,"tag":100,"props":4640,"children":4641},{},[4642],{"type":35,"value":122},{"type":30,"tag":100,"props":4644,"children":4645},{"align":83},[4646],{"type":35,"value":127},{"type":30,"tag":100,"props":4648,"children":4649},{},[4650],{"type":35,"value":132},{"type":30,"tag":72,"props":4652,"children":4653},{},[4654,4658,4662],{"type":30,"tag":100,"props":4655,"children":4656},{},[4657],{"type":35,"value":140},{"type":30,"tag":100,"props":4659,"children":4660},{"align":83},[4661],{"type":35,"value":145},{"type":30,"tag":100,"props":4663,"children":4664},{},[4665],{"type":35,"value":132},{"type":30,"tag":72,"props":4667,"children":4668},{},[4669,4673,4677],{"type":30,"tag":100,"props":4670,"children":4671},{},[4672],{"type":35,"value":157},{"type":30,"tag":100,"props":4674,"children":4675},{"align":83},[4676],{"type":35,"value":162},{"type":30,"tag":100,"props":4678,"children":4679},{},[4680],{"type":35,"value":167},{"type":30,"tag":72,"props":4682,"children":4683},{},[4684,4688,4692],{"type":30,"tag":100,"props":4685,"children":4686},{},[4687],{"type":35,"value":175},{"type":30,"tag":100,"props":4689,"children":4690},{"align":83},[4691],{"type":35,"value":180},{"type":30,"tag":100,"props":4693,"children":4694},{},[4695],{"type":35,"value":185},{"type":30,"tag":31,"props":4697,"children":4698},{},[4699],{"type":35,"value":190},{"type":30,"tag":52,"props":4701,"children":4702},{"id":193},[4703],{"type":35,"value":196},{"type":30,"tag":198,"props":4705,"children":4706},{"id":200},[4707],{"type":35,"value":203},{"type":30,"tag":31,"props":4709,"children":4710},{},[4711],{"type":35,"value":208},{"type":30,"tag":31,"props":4713,"children":4714},{},[4715],{"type":35,"value":213},{"type":30,"tag":31,"props":4717,"children":4718},{},[4719],{"type":30,"tag":218,"props":4720,"children":4721},{},[4722],{"type":35,"value":222},{"type":30,"tag":224,"props":4724,"children":4725},{},[4726,4730,4734,4738],{"type":30,"tag":228,"props":4727,"children":4728},{},[4729],{"type":35,"value":232},{"type":30,"tag":228,"props":4731,"children":4732},{},[4733],{"type":35,"value":237},{"type":30,"tag":228,"props":4735,"children":4736},{},[4737],{"type":35,"value":242},{"type":30,"tag":228,"props":4739,"children":4740},{},[4741],{"type":35,"value":247},{"type":30,"tag":31,"props":4743,"children":4744},{},[4745],{"type":30,"tag":218,"props":4746,"children":4747},{},[4748],{"type":35,"value":255},{"type":30,"tag":224,"props":4750,"children":4751},{},[4752,4756,4760,4764,4768],{"type":30,"tag":228,"props":4753,"children":4754},{},[4755],{"type":35,"value":263},{"type":30,"tag":228,"props":4757,"children":4758},{},[4759],{"type":35,"value":268},{"type":30,"tag":228,"props":4761,"children":4762},{},[4763],{"type":35,"value":273},{"type":30,"tag":228,"props":4765,"children":4766},{},[4767],{"type":35,"value":278},{"type":30,"tag":228,"props":4769,"children":4770},{},[4771],{"type":35,"value":283},{"type":30,"tag":31,"props":4773,"children":4774},{},[4775,4776,4780],{"type":35,"value":288},{"type":30,"tag":43,"props":4777,"children":4778},{"href":291},[4779],{"type":35,"value":294},{"type":35,"value":296},{"type":30,"tag":31,"props":4782,"children":4783},{},[4784,4785,4789],{"type":35,"value":301},{"type":30,"tag":43,"props":4786,"children":4787},{"href":304},[4788],{"type":35,"value":307},{"type":35,"value":309},{"type":30,"tag":198,"props":4791,"children":4792},{"id":312},[4793],{"type":35,"value":315},{"type":30,"tag":31,"props":4795,"children":4796},{},[4797],{"type":35,"value":320},{"type":30,"tag":64,"props":4799,"children":4800},{},[4801,4819],{"type":30,"tag":68,"props":4802,"children":4803},{},[4804],{"type":30,"tag":72,"props":4805,"children":4806},{},[4807,4811,4815],{"type":30,"tag":76,"props":4808,"children":4809},{},[4810],{"type":35,"value":334},{"type":30,"tag":76,"props":4812,"children":4813},{"align":83},[4814],{"type":35,"value":339},{"type":30,"tag":76,"props":4816,"children":4817},{},[4818],{"type":35,"value":344},{"type":30,"tag":93,"props":4820,"children":4821},{},[4822,4837,4852,4867],{"type":30,"tag":72,"props":4823,"children":4824},{},[4825,4829,4833],{"type":30,"tag":100,"props":4826,"children":4827},{},[4828],{"type":35,"value":355},{"type":30,"tag":100,"props":4830,"children":4831},{"align":83},[4832],{"type":35,"value":360},{"type":30,"tag":100,"props":4834,"children":4835},{},[4836],{"type":35,"value":365},{"type":30,"tag":72,"props":4838,"children":4839},{},[4840,4844,4848],{"type":30,"tag":100,"props":4841,"children":4842},{},[4843],{"type":35,"value":373},{"type":30,"tag":100,"props":4845,"children":4846},{"align":83},[4847],{"type":35,"value":378},{"type":30,"tag":100,"props":4849,"children":4850},{},[4851],{"type":35,"value":383},{"type":30,"tag":72,"props":4853,"children":4854},{},[4855,4859,4863],{"type":30,"tag":100,"props":4856,"children":4857},{},[4858],{"type":35,"value":391},{"type":30,"tag":100,"props":4860,"children":4861},{"align":83},[4862],{"type":35,"value":396},{"type":30,"tag":100,"props":4864,"children":4865},{},[4866],{"type":35,"value":401},{"type":30,"tag":72,"props":4868,"children":4869},{},[4870,4874,4878],{"type":30,"tag":100,"props":4871,"children":4872},{},[4873],{"type":35,"value":409},{"type":30,"tag":100,"props":4875,"children":4876},{"align":83},[4877],{"type":35,"value":414},{"type":30,"tag":100,"props":4879,"children":4880},{},[4881],{"type":35,"value":419},{"type":30,"tag":31,"props":4883,"children":4884},{},[4885,4886,4890],{"type":35,"value":424},{"type":30,"tag":43,"props":4887,"children":4888},{"href":427},[4889],{"type":35,"value":430},{"type":35,"value":432},{"type":30,"tag":198,"props":4892,"children":4893},{"id":435},[4894],{"type":35,"value":438},{"type":30,"tag":31,"props":4896,"children":4897},{},[4898],{"type":35,"value":443},{"type":30,"tag":31,"props":4900,"children":4901},{},[4902],{"type":35,"value":448},{"type":30,"tag":198,"props":4904,"children":4905},{"id":451},[4906],{"type":35,"value":454},{"type":30,"tag":224,"props":4908,"children":4909},{},[4910,4918],{"type":30,"tag":228,"props":4911,"children":4912},{},[4913,4917],{"type":30,"tag":218,"props":4914,"children":4915},{},[4916],{"type":35,"value":465},{"type":35,"value":467},{"type":30,"tag":228,"props":4919,"children":4920},{},[4921,4925],{"type":30,"tag":218,"props":4922,"children":4923},{},[4924],{"type":35,"value":475},{"type":35,"value":477},{"type":30,"tag":31,"props":4927,"children":4928},{},[4929],{"type":35,"value":482},{"type":30,"tag":52,"props":4931,"children":4932},{"id":485},[4933],{"type":35,"value":488},{"type":30,"tag":31,"props":4935,"children":4936},{},[4937],{"type":35,"value":493},{"type":30,"tag":198,"props":4939,"children":4940},{"id":496},[4941],{"type":35,"value":499},{"type":30,"tag":31,"props":4943,"children":4944},{},[4945],{"type":35,"value":504},{"type":30,"tag":31,"props":4947,"children":4948},{},[4949],{"type":35,"value":509},{"type":30,"tag":198,"props":4951,"children":4952},{"id":512},[4953],{"type":35,"value":515},{"type":30,"tag":31,"props":4955,"children":4956},{},[4957],{"type":35,"value":520},{"type":30,"tag":31,"props":4959,"children":4960},{},[4961],{"type":35,"value":525},{"type":30,"tag":31,"props":4963,"children":4964},{},[4965,4966,4970],{"type":35,"value":530},{"type":30,"tag":43,"props":4967,"children":4968},{"href":45},[4969],{"type":35,"value":535},{"type":35,"value":537},{"type":30,"tag":198,"props":4972,"children":4973},{"id":540},[4974],{"type":35,"value":543},{"type":30,"tag":31,"props":4976,"children":4977},{},[4978,4979],{"type":35,"value":548},{"type":30,"tag":218,"props":4980,"children":4981},{},[4982],{"type":35,"value":553},{"type":30,"tag":31,"props":4984,"children":4985},{},[4986],{"type":35,"value":558},{"type":30,"tag":31,"props":4988,"children":4989},{},[4990],{"type":35,"value":563},{"type":30,"tag":198,"props":4992,"children":4993},{"id":566},[4994],{"type":35,"value":569},{"type":30,"tag":31,"props":4996,"children":4997},{},[4998],{"type":35,"value":574},{"type":30,"tag":31,"props":5000,"children":5001},{},[5002],{"type":35,"value":579},{"type":30,"tag":52,"props":5004,"children":5005},{"id":582},[5006],{"type":35,"value":585},{"type":30,"tag":31,"props":5008,"children":5009},{},[5010],{"type":35,"value":590},{"type":30,"tag":31,"props":5012,"children":5013},{},[5014,5018],{"type":30,"tag":218,"props":5015,"children":5016},{},[5017],{"type":35,"value":598},{"type":35,"value":600},{"type":30,"tag":31,"props":5020,"children":5021},{},[5022,5026],{"type":30,"tag":218,"props":5023,"children":5024},{},[5025],{"type":35,"value":608},{"type":35,"value":610},{"type":30,"tag":31,"props":5028,"children":5029},{},[5030],{"type":30,"tag":218,"props":5031,"children":5032},{},[5033],{"type":35,"value":618},{"type":30,"tag":224,"props":5035,"children":5036},{},[5037,5041,5045,5049],{"type":30,"tag":228,"props":5038,"children":5039},{},[5040],{"type":35,"value":626},{"type":30,"tag":228,"props":5042,"children":5043},{},[5044],{"type":35,"value":631},{"type":30,"tag":228,"props":5046,"children":5047},{},[5048],{"type":35,"value":636},{"type":30,"tag":228,"props":5050,"children":5051},{},[5052],{"type":35,"value":641},{"type":30,"tag":31,"props":5054,"children":5055},{},[5056],{"type":35,"value":646},{"type":30,"tag":31,"props":5058,"children":5059},{},[5060,5061,5065],{"type":35,"value":651},{"type":30,"tag":43,"props":5062,"children":5063},{"href":304},[5064],{"type":35,"value":307},{"type":35,"value":657},{"type":30,"tag":52,"props":5067,"children":5068},{"id":660},[5069],{"type":35,"value":663},{"type":30,"tag":198,"props":5071,"children":5072},{"id":666},[5073],{"type":35,"value":669},{"type":30,"tag":31,"props":5075,"children":5076},{},[5077],{"type":35,"value":674},{"type":30,"tag":198,"props":5079,"children":5080},{"id":677},[5081],{"type":35,"value":680},{"type":30,"tag":31,"props":5083,"children":5084},{},[5085],{"type":35,"value":685},{"type":30,"tag":198,"props":5087,"children":5088},{"id":688},[5089],{"type":35,"value":691},{"type":30,"tag":31,"props":5091,"children":5092},{},[5093],{"type":35,"value":696},{"type":30,"tag":224,"props":5095,"children":5096},{},[5097,5105,5113,5121,5129],{"type":30,"tag":228,"props":5098,"children":5099},{},[5100,5104],{"type":30,"tag":218,"props":5101,"children":5102},{},[5103],{"type":35,"value":707},{"type":35,"value":709},{"type":30,"tag":228,"props":5106,"children":5107},{},[5108,5112],{"type":30,"tag":218,"props":5109,"children":5110},{},[5111],{"type":35,"value":717},{"type":35,"value":719},{"type":30,"tag":228,"props":5114,"children":5115},{},[5116,5120],{"type":30,"tag":218,"props":5117,"children":5118},{},[5119],{"type":35,"value":727},{"type":35,"value":729},{"type":30,"tag":228,"props":5122,"children":5123},{},[5124,5128],{"type":30,"tag":218,"props":5125,"children":5126},{},[5127],{"type":35,"value":737},{"type":35,"value":739},{"type":30,"tag":228,"props":5130,"children":5131},{},[5132,5136],{"type":30,"tag":218,"props":5133,"children":5134},{},[5135],{"type":35,"value":747},{"type":35,"value":749},{"type":30,"tag":31,"props":5138,"children":5139},{},[5140],{"type":35,"value":754},{"type":30,"tag":198,"props":5142,"children":5143},{"id":757},[5144],{"type":35,"value":760},{"type":30,"tag":31,"props":5146,"children":5147},{},[5148],{"type":35,"value":765},{"type":30,"tag":31,"props":5150,"children":5151},{},[5152],{"type":35,"value":770},{"type":30,"tag":52,"props":5154,"children":5155},{"id":773},[5156],{"type":35,"value":776},{"type":30,"tag":31,"props":5158,"children":5159},{},[5160],{"type":35,"value":781},{"type":30,"tag":31,"props":5162,"children":5163},{},[5164,5168,5169,5173],{"type":30,"tag":218,"props":5165,"children":5166},{},[5167],{"type":35,"value":789},{"type":35,"value":791},{"type":30,"tag":43,"props":5170,"children":5171},{"href":45},[5172],{"type":35,"value":294},{"type":35,"value":797},{"type":30,"tag":31,"props":5175,"children":5176},{},[5177,5181],{"type":30,"tag":218,"props":5178,"children":5179},{},[5180],{"type":35,"value":805},{"type":35,"value":807},{"type":30,"tag":31,"props":5183,"children":5184},{},[5185,5189],{"type":30,"tag":218,"props":5186,"children":5187},{},[5188],{"type":35,"value":815},{"type":35,"value":817},{"type":30,"tag":31,"props":5191,"children":5192},{},[5193,5197,5198,5202],{"type":30,"tag":218,"props":5194,"children":5195},{},[5196],{"type":35,"value":825},{"type":35,"value":827},{"type":30,"tag":43,"props":5199,"children":5200},{"href":304},[5201],{"type":35,"value":832},{"type":35,"value":834},{"type":30,"tag":52,"props":5204,"children":5205},{"id":837},[5206],{"type":35,"value":840},{"type":30,"tag":31,"props":5208,"children":5209},{},[5210],{"type":35,"value":845},{"type":30,"tag":31,"props":5212,"children":5213},{},[5214,5218],{"type":30,"tag":218,"props":5215,"children":5216},{},[5217],{"type":35,"value":853},{"type":35,"value":855},{"type":30,"tag":31,"props":5220,"children":5221},{},[5222,5226],{"type":30,"tag":218,"props":5223,"children":5224},{},[5225],{"type":35,"value":863},{"type":35,"value":865},{"type":30,"tag":31,"props":5228,"children":5229},{},[5230,5234,5235,5239],{"type":30,"tag":218,"props":5231,"children":5232},{},[5233],{"type":35,"value":873},{"type":35,"value":875},{"type":30,"tag":43,"props":5236,"children":5237},{"href":878},[5238],{"type":35,"value":881},{"type":35,"value":537},{"type":30,"tag":31,"props":5241,"children":5242},{},[5243],{"type":35,"value":887},{"type":30,"tag":52,"props":5245,"children":5246},{"id":890},[5247],{"type":35,"value":893},{"type":30,"tag":31,"props":5249,"children":5250},{},[5251,5252,5256],{"type":35,"value":898},{"type":30,"tag":43,"props":5253,"children":5254},{"href":901},[5255],{"type":35,"value":904},{"type":35,"value":906},{"type":30,"tag":31,"props":5258,"children":5259},{},[5260,5261,5265,5266,5270],{"type":35,"value":911},{"type":30,"tag":43,"props":5262,"children":5263},{"href":427},[5264],{"type":35,"value":916},{"type":35,"value":918},{"type":30,"tag":43,"props":5267,"children":5268},{"href":304},[5269],{"type":35,"value":923},{"type":35,"value":537},{"type":30,"tag":926,"props":5272,"children":5273},{},[],{"type":30,"tag":31,"props":5275,"children":5276},{},[5277],{"type":30,"tag":933,"props":5278,"children":5279},{},[5280,5281,5285,5286,5290,5291],{"type":35,"value":937},{"type":30,"tag":43,"props":5282,"children":5283},{"href":940},[5284],{"type":35,"value":943},{"type":35,"value":945},{"type":30,"tag":43,"props":5287,"children":5288},{"href":948},[5289],{"type":35,"value":951},{"type":35,"value":945},{"type":30,"tag":43,"props":5292,"children":5293},{"href":955},[5294],{"type":35,"value":958},{"title":7,"searchDepth":960,"depth":960,"links":5296},[5297,5298,5304,5310,5311,5317,5318,5319],{"id":54,"depth":960,"text":57},{"id":193,"depth":960,"text":196,"children":5299},[5300,5301,5302,5303],{"id":200,"depth":966,"text":203},{"id":312,"depth":966,"text":315},{"id":435,"depth":966,"text":438},{"id":451,"depth":966,"text":454},{"id":485,"depth":960,"text":488,"children":5305},[5306,5307,5308,5309],{"id":496,"depth":966,"text":499},{"id":512,"depth":966,"text":515},{"id":540,"depth":966,"text":543},{"id":566,"depth":966,"text":569},{"id":582,"depth":960,"text":585},{"id":660,"depth":960,"text":663,"children":5312},[5313,5314,5315,5316],{"id":666,"depth":966,"text":669},{"id":677,"depth":966,"text":680},{"id":688,"depth":966,"text":691},{"id":757,"depth":966,"text":760},{"id":773,"depth":960,"text":776},{"id":837,"depth":960,"text":840},{"id":890,"depth":960,"text":893},1775731560935]