[{"data":1,"prerenderedAt":4538},["ShallowReactive",2],{"blog-staff-augmentation-vs-outsourcing":3,"related-topic-staff-augmentation-vs-outsourcing":858,"related-recent-staff-augmentation-vs-outsourcing":859,"content-query-UiizG2PdZ3":3886},{"_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":852,"_id":853,"_source":854,"_file":855,"_stem":856,"_extension":857},"/blog/staff-augmentation-vs-outsourcing","blog",false,"","Staff Augmentation vs. Outsourcing: What's Actually Different?","Staff augmentation keeps you in control. Outsourcing hands off the work. We break down costs, control, culture, and when each model makes sense for your team.","Resource Augmentation","AcornGlobus","/images/blog/staff-aug-vs-outsourcing.webp","Staff augmentation vs outsourcing — understanding the real differences",true,"15 min read","2026-04-05",[18,19,20,21,22,23,24,25],"staff augmentation vs outsourcing","staff augmentation vs IT outsourcing","difference between staff augmentation and outsourcing","IT staff augmentation services","dedicated development team vs outsourcing","when to use staff augmentation","staff augmentation pros and cons","hybrid team model software development",{"type":27,"children":28,"toc":837},"root",[29,37,42,47,54,65,75,85,100,106,111,332,338,343,353,363,373,383,397,403,408,418,428,438,448,461,467,472,482,492,502,523,529,536,546,556,566,572,582,592,602,608,613,621,634,642,655,663,676,684,697,707,712,718,723,728,771,790,803,807],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","You need more engineering capacity. You've probably heard both terms thrown around — staff augmentation and outsourcing — sometimes used interchangeably, which doesn't help.",{"type":30,"tag":31,"props":38,"children":39},{},[40],{"type":35,"value":41},"They're different models. They solve different problems. And the right one depends on where your team is right now, not on which vendor is pitching you.",{"type":30,"tag":31,"props":43,"children":44},{},[45],{"type":35,"value":46},"Here's the honest breakdown.",{"type":30,"tag":48,"props":49,"children":51},"h2",{"id":50},"start-here-quick-definitions-no-jargon",[52],{"type":35,"value":53},"Start Here: Quick Definitions (No Jargon)",{"type":30,"tag":31,"props":55,"children":56},{},[57,63],{"type":30,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":35,"value":62},"Staff augmentation",{"type":35,"value":64}," means you hire engineers who work as part of YOUR team. Your tools, your standups, your process. They report to your tech lead. The only difference from a full-time hire is the employment contract.",{"type":30,"tag":31,"props":66,"children":67},{},[68,73],{"type":30,"tag":58,"props":69,"children":70},{},[71],{"type":35,"value":72},"Outsourcing",{"type":35,"value":74}," means you hand off a project or function to another team entirely. They manage the work, make technical decisions, and deliver a result. You define what you need. They figure out how to build it.",{"type":30,"tag":31,"props":76,"children":77},{},[78,80],{"type":35,"value":79},"The simplest way to think about it: ",{"type":30,"tag":58,"props":81,"children":82},{},[83],{"type":35,"value":84},"who's in charge of the daily work?",{"type":30,"tag":86,"props":87,"children":88},"ul",{},[89,95],{"type":30,"tag":90,"props":91,"children":92},"li",{},[93],{"type":35,"value":94},"Staff augmentation: you are.",{"type":30,"tag":90,"props":96,"children":97},{},[98],{"type":35,"value":99},"Outsourcing: they are.",{"type":30,"tag":48,"props":101,"children":103},{"id":102},"the-real-differences",[104],{"type":35,"value":105},"The Real Differences",{"type":30,"tag":31,"props":107,"children":108},{},[109],{"type":35,"value":110},"Here's a side-by-side comparison of what each model looks like in practice:",{"type":30,"tag":112,"props":113,"children":114},"table",{},[115,138],{"type":30,"tag":116,"props":117,"children":118},"thead",{},[119],{"type":30,"tag":120,"props":121,"children":122},"tr",{},[123,129,134],{"type":30,"tag":124,"props":125,"children":126},"th",{},[127],{"type":35,"value":128},"Dimension",{"type":30,"tag":124,"props":130,"children":131},{},[132],{"type":35,"value":133},"Staff Augmentation",{"type":30,"tag":124,"props":135,"children":136},{},[137],{"type":35,"value":72},{"type":30,"tag":139,"props":140,"children":141},"tbody",{},[142,164,185,206,227,248,269,290,311],{"type":30,"tag":120,"props":143,"children":144},{},[145,154,159],{"type":30,"tag":146,"props":147,"children":148},"td",{},[149],{"type":30,"tag":58,"props":150,"children":151},{},[152],{"type":35,"value":153},"Control over daily work",{"type":30,"tag":146,"props":155,"children":156},{},[157],{"type":35,"value":158},"Full — you manage the engineers",{"type":30,"tag":146,"props":160,"children":161},{},[162],{"type":35,"value":163},"Limited — the vendor manages execution",{"type":30,"tag":120,"props":165,"children":166},{},[167,175,180],{"type":30,"tag":146,"props":168,"children":169},{},[170],{"type":30,"tag":58,"props":171,"children":172},{},[173],{"type":35,"value":174},"Team integration",{"type":30,"tag":146,"props":176,"children":177},{},[178],{"type":35,"value":179},"Embedded in your team (same Slack, same Jira, same Git)",{"type":30,"tag":146,"props":181,"children":182},{},[183],{"type":35,"value":184},"Separate team with their own workflow",{"type":30,"tag":120,"props":186,"children":187},{},[188,196,201],{"type":30,"tag":146,"props":189,"children":190},{},[191],{"type":30,"tag":58,"props":192,"children":193},{},[194],{"type":35,"value":195},"Management responsibility",{"type":30,"tag":146,"props":197,"children":198},{},[199],{"type":35,"value":200},"Yours — you need a tech lead or PM",{"type":30,"tag":146,"props":202,"children":203},{},[204],{"type":35,"value":205},"Theirs — they assign a project manager",{"type":30,"tag":120,"props":207,"children":208},{},[209,217,222],{"type":30,"tag":146,"props":210,"children":211},{},[212],{"type":30,"tag":58,"props":213,"children":214},{},[215],{"type":35,"value":216},"Cost structure",{"type":30,"tag":146,"props":218,"children":219},{},[220],{"type":35,"value":221},"Per engineer, per month (predictable)",{"type":30,"tag":146,"props":223,"children":224},{},[225],{"type":35,"value":226},"Per project or per milestone (variable)",{"type":30,"tag":120,"props":228,"children":229},{},[230,238,243],{"type":30,"tag":146,"props":231,"children":232},{},[233],{"type":30,"tag":58,"props":234,"children":235},{},[236],{"type":35,"value":237},"IP and code ownership",{"type":30,"tag":146,"props":239,"children":240},{},[241],{"type":35,"value":242},"You own everything from day one",{"type":30,"tag":146,"props":244,"children":245},{},[246],{"type":35,"value":247},"Depends on contract — always negotiate this",{"type":30,"tag":120,"props":249,"children":250},{},[251,259,264],{"type":30,"tag":146,"props":252,"children":253},{},[254],{"type":30,"tag":58,"props":255,"children":256},{},[257],{"type":35,"value":258},"Scalability",{"type":30,"tag":146,"props":260,"children":261},{},[262],{"type":35,"value":263},"Scale up or down with 2-4 weeks notice",{"type":30,"tag":146,"props":265,"children":266},{},[267],{"type":35,"value":268},"Scope changes require renegotiation",{"type":30,"tag":120,"props":270,"children":271},{},[272,280,285],{"type":30,"tag":146,"props":273,"children":274},{},[275],{"type":30,"tag":58,"props":276,"children":277},{},[278],{"type":35,"value":279},"Knowledge retention",{"type":30,"tag":146,"props":281,"children":282},{},[283],{"type":35,"value":284},"Engineers learn your codebase deeply",{"type":30,"tag":146,"props":286,"children":287},{},[288],{"type":35,"value":289},"Knowledge stays with the vendor's team",{"type":30,"tag":120,"props":291,"children":292},{},[293,301,306],{"type":30,"tag":146,"props":294,"children":295},{},[296],{"type":30,"tag":58,"props":297,"children":298},{},[299],{"type":35,"value":300},"Communication",{"type":30,"tag":146,"props":302,"children":303},{},[304],{"type":35,"value":305},"Direct, daily, same tools",{"type":30,"tag":146,"props":307,"children":308},{},[309],{"type":35,"value":310},"Structured, through project manager",{"type":30,"tag":120,"props":312,"children":313},{},[314,322,327],{"type":30,"tag":146,"props":315,"children":316},{},[317],{"type":30,"tag":58,"props":318,"children":319},{},[320],{"type":35,"value":321},"Best for",{"type":30,"tag":146,"props":323,"children":324},{},[325],{"type":35,"value":326},"Ongoing capacity, team scaling",{"type":30,"tag":146,"props":328,"children":329},{},[330],{"type":35,"value":331},"Complete deliverables, defined projects",{"type":30,"tag":48,"props":333,"children":335},{"id":334},"when-staff-augmentation-makes-sense",[336],{"type":35,"value":337},"When Staff Augmentation Makes Sense",{"type":30,"tag":31,"props":339,"children":340},{},[341],{"type":35,"value":342},"Staff augmentation works when you already have a team and a process — you just need more people in it.",{"type":30,"tag":31,"props":344,"children":345},{},[346,351],{"type":30,"tag":58,"props":347,"children":348},{},[349],{"type":35,"value":350},"You have a CTO or tech lead who can manage.",{"type":35,"value":352}," Augmented engineers need direction. If nobody on your side can review code, set priorities, and make architecture decisions, augmentation won't work well.",{"type":30,"tag":31,"props":354,"children":355},{},[356,361],{"type":30,"tag":58,"props":357,"children":358},{},[359],{"type":35,"value":360},"You need specific skills your team lacks.",{"type":35,"value":362}," Maybe you need a React Native developer for 6 months, or a DevOps engineer to set up your CI/CD pipeline. Augmentation lets you add that skill without a permanent hire.",{"type":30,"tag":31,"props":364,"children":365},{},[366,371],{"type":30,"tag":58,"props":367,"children":368},{},[369],{"type":35,"value":370},"You want continuity, not just output.",{"type":35,"value":372}," The engineers learn your codebase, your patterns, your product. They become part of the team. That institutional knowledge compounds over time.",{"type":30,"tag":31,"props":374,"children":375},{},[376,381],{"type":30,"tag":58,"props":377,"children":378},{},[379],{"type":35,"value":380},"You need to scale up (or down) quickly.",{"type":35,"value":382}," Hiring full-time takes 3-6 months. Augmentation takes 2-4 weeks. And when the surge is over, you can scale back without layoffs.",{"type":30,"tag":31,"props":384,"children":385},{},[386,388,395],{"type":35,"value":387},"Here's what this looks like in practice: ",{"type":30,"tag":389,"props":390,"children":392},"a",{"href":391},"/case-studies/performline",[393],{"type":35,"value":394},"PerformLine",{"type":35,"value":396}," started with 1 AcornGlobus engineer embedded in their team. Same tools, same standups, same codebase. Over 2 years, that grew to 8+ engineers — full-stack, DevOps, data, QA, frontend. They didn't grow because we upsold them. They grew because the first engineer delivered, and the model worked.",{"type":30,"tag":48,"props":398,"children":400},{"id":399},"when-outsourcing-makes-sense",[401],{"type":35,"value":402},"When Outsourcing Makes Sense",{"type":30,"tag":31,"props":404,"children":405},{},[406],{"type":35,"value":407},"Outsourcing works when you need a complete deliverable — not ongoing capacity.",{"type":30,"tag":31,"props":409,"children":410},{},[411,416],{"type":30,"tag":58,"props":412,"children":413},{},[414],{"type":35,"value":415},"You need a finished product, not more hands.",{"type":35,"value":417}," If you're a founder who needs an MVP built, you don't want to manage individual engineers. You want a team that takes your vision and ships a working product.",{"type":30,"tag":31,"props":419,"children":420},{},[421,426],{"type":30,"tag":58,"props":422,"children":423},{},[424],{"type":35,"value":425},"You don't have internal engineering leadership.",{"type":35,"value":427}," Without a CTO or tech lead, managing augmented engineers is hard. An outsourced team brings their own technical leadership, project management, and process.",{"type":30,"tag":31,"props":429,"children":430},{},[431,436],{"type":30,"tag":58,"props":432,"children":433},{},[434],{"type":35,"value":435},"The project has clear scope and requirements.",{"type":35,"value":437}," Outsourcing works best when you can define what \"done\" looks like upfront. Fixed scope, fixed timeline, fixed budget.",{"type":30,"tag":31,"props":439,"children":440},{},[441,446],{"type":30,"tag":58,"props":442,"children":443},{},[444],{"type":35,"value":445},"You need to move fast without building a management layer.",{"type":35,"value":447}," Outsourcing trades control for speed. The right team can ship an MVP in 8-12 weeks without you hiring a project manager, setting up workflows, or learning to review pull requests.",{"type":30,"tag":31,"props":449,"children":450},{},[451,453,459],{"type":35,"value":452},"Our ",{"type":30,"tag":389,"props":454,"children":456},{"href":455},"/case-studies/eitoss",[457],{"type":35,"value":458},"Eitoss engagement",{"type":35,"value":460}," is an example: a non-technical founder with a clear vision and funding. We took ownership of the full build — architecture, development, deployment. Demoable MVP in 8 weeks. Live with real users in 3 months. They raised funding on that product.",{"type":30,"tag":48,"props":462,"children":464},{"id":463},"the-hybrid-path-what-most-guides-skip",[465],{"type":35,"value":466},"The Hybrid Path (What Most Guides Skip)",{"type":30,"tag":31,"props":468,"children":469},{},[470],{"type":35,"value":471},"Here's what most comparison articles miss: most companies don't fit neatly into one model. And the model that works today might not be the right one in six months.",{"type":30,"tag":31,"props":473,"children":474},{},[475,480],{"type":30,"tag":58,"props":476,"children":477},{},[478],{"type":35,"value":479},"Common pattern 1: Start with outsourcing, transition to augmentation.",{"type":35,"value":481},"\nYou need an MVP. You outsource the build. The product works. You raise funding. Now you're hiring a CTO and building an internal team — but you need more capacity while you ramp up. The outsourcing partner transitions some engineers into an augmentation model. Same people, same codebase, new relationship structure.",{"type":30,"tag":31,"props":483,"children":484},{},[485,490],{"type":30,"tag":58,"props":486,"children":487},{},[488],{"type":35,"value":489},"Common pattern 2: Outsource a module while augmenting your core team.",{"type":35,"value":491},"\nYour team is building the core product. But you need a mobile app, and nobody on your team knows React Native. You outsource the mobile build as a project while augmenting your web team with two additional backend engineers.",{"type":30,"tag":31,"props":493,"children":494},{},[495,500],{"type":30,"tag":58,"props":496,"children":497},{},[498],{"type":35,"value":499},"Common pattern 3: Augmentation that evolves into partnership.",{"type":35,"value":501},"\nYou bring on 2 engineers for a 3-month project. The project finishes, but you realize the engineers know your codebase better than most of your full-time team. You keep them. Three months becomes a year. One engineer becomes four.",{"type":30,"tag":31,"props":503,"children":504},{},[505,507,513,515,521],{"type":35,"value":506},"This is how we work with most of our clients. We offer both models — ",{"type":30,"tag":389,"props":508,"children":510},{"href":509},"/services/resource-augmentation",[511],{"type":35,"value":512},"resource augmentation",{"type":35,"value":514}," and ",{"type":30,"tag":389,"props":516,"children":518},{"href":517},"/services/full-project-delivery",[519],{"type":35,"value":520},"full project delivery",{"type":35,"value":522}," — because companies need different things at different stages. The engagement grows and changes shape as you do.",{"type":30,"tag":48,"props":524,"children":526},{"id":525},"what-can-go-wrong-red-flags-to-watch-for",[527],{"type":35,"value":528},"What Can Go Wrong (Red Flags to Watch For)",{"type":30,"tag":530,"props":531,"children":533},"h3",{"id":532},"staff-augmentation-red-flags",[534],{"type":35,"value":535},"Staff Augmentation Red Flags",{"type":30,"tag":31,"props":537,"children":538},{},[539,544],{"type":30,"tag":58,"props":540,"children":541},{},[542],{"type":35,"value":543},"Rotating engineers.",{"type":35,"value":545}," If the vendor swaps engineers every few months, you'll never build real team cohesion. Ask upfront: will I have the same people in 6 months? We commit to named engineers, not a rotating pool. You'll know them by name.",{"type":30,"tag":31,"props":547,"children":548},{},[549,554],{"type":30,"tag":58,"props":550,"children":551},{},[552],{"type":35,"value":553},"Engineers who don't ramp on your codebase.",{"type":35,"value":555}," If an augmented engineer is still asking basic questions about your architecture after two weeks, something's off. Good augmented engineers treat your codebase like their own — because for the duration of the engagement, it is.",{"type":30,"tag":31,"props":557,"children":558},{},[559,564],{"type":30,"tag":58,"props":560,"children":561},{},[562],{"type":35,"value":563},"No cultural alignment effort.",{"type":35,"value":565}," The engineers should attend your standups, use your tools, and understand your product goals. If they're just writing code in isolation, that's not augmentation — that's outsourcing with extra steps.",{"type":30,"tag":530,"props":567,"children":569},{"id":568},"outsourcing-red-flags",[570],{"type":35,"value":571},"Outsourcing Red Flags",{"type":30,"tag":31,"props":573,"children":574},{},[575,580],{"type":30,"tag":58,"props":576,"children":577},{},[578],{"type":35,"value":579},"No visibility into progress.",{"type":35,"value":581}," If you only see the product at milestone demos, you have no way to catch problems early. Weekly demos or sprint reviews should be standard.",{"type":30,"tag":31,"props":583,"children":584},{},[585,590],{"type":30,"tag":58,"props":586,"children":587},{},[588],{"type":35,"value":589},"Vendor lock-in.",{"type":35,"value":591}," Proprietary frameworks, custom deployment platforms, or code you can't access — these are traps. You should own your code from day one, with full access to the repository.",{"type":30,"tag":31,"props":593,"children":594},{},[595,600],{"type":30,"tag":58,"props":596,"children":597},{},[598],{"type":35,"value":599},"The \"bench rotation\" problem.",{"type":35,"value":601}," Some vendors win the deal with their A-team and then swap in junior engineers once the contract is signed. Ask to meet the engineers who'll actually do the work. If they say \"we'll assign the team after signing,\" that's a red flag.",{"type":30,"tag":48,"props":603,"children":605},{"id":604},"how-to-choose-a-decision-framework",[606],{"type":35,"value":607},"How to Choose: A Decision Framework",{"type":30,"tag":31,"props":609,"children":610},{},[611],{"type":35,"value":612},"Ask yourself these questions:",{"type":30,"tag":31,"props":614,"children":615},{},[616],{"type":30,"tag":58,"props":617,"children":618},{},[619],{"type":35,"value":620},"1. Do you have a technical lead?",{"type":30,"tag":86,"props":622,"children":623},{},[624,629],{"type":30,"tag":90,"props":625,"children":626},{},[627],{"type":35,"value":628},"Yes: augmentation can work. You have someone to manage the engineers.",{"type":30,"tag":90,"props":630,"children":631},{},[632],{"type":35,"value":633},"No: consider outsourcing. You need a team that brings its own leadership.",{"type":30,"tag":31,"props":635,"children":636},{},[637],{"type":30,"tag":58,"props":638,"children":639},{},[640],{"type":35,"value":641},"2. Do you need ongoing capacity or a defined deliverable?",{"type":30,"tag":86,"props":643,"children":644},{},[645,650],{"type":30,"tag":90,"props":646,"children":647},{},[648],{"type":35,"value":649},"Ongoing: augmentation gives you flexibility and continuity.",{"type":30,"tag":90,"props":651,"children":652},{},[653],{"type":35,"value":654},"Defined deliverable: outsourcing gives you a finished product without the management burden.",{"type":30,"tag":31,"props":656,"children":657},{},[658],{"type":30,"tag":58,"props":659,"children":660},{},[661],{"type":35,"value":662},"3. How important is cultural integration?",{"type":30,"tag":86,"props":664,"children":665},{},[666,671],{"type":30,"tag":90,"props":667,"children":668},{},[669],{"type":35,"value":670},"Very important: augmentation. The engineers become part of your team.",{"type":30,"tag":90,"props":672,"children":673},{},[674],{"type":35,"value":675},"Less critical: outsourcing. The relationship is more structured by design.",{"type":30,"tag":31,"props":677,"children":678},{},[679],{"type":30,"tag":58,"props":680,"children":681},{},[682],{"type":35,"value":683},"4. What's your budget model?",{"type":30,"tag":86,"props":685,"children":686},{},[687,692],{"type":30,"tag":90,"props":688,"children":689},{},[690],{"type":35,"value":691},"Per-person, per-month: augmentation.",{"type":30,"tag":90,"props":693,"children":694},{},[695],{"type":35,"value":696},"Per-project, per-milestone: outsourcing.",{"type":30,"tag":31,"props":698,"children":699},{},[700,705],{"type":30,"tag":58,"props":701,"children":702},{},[703],{"type":35,"value":704},"5. What might change in 6 months?",{"type":35,"value":706},"\nThis is the question most people skip. If you're likely to scale, shift direction, or bring development in-house — pick a partner who can adapt with you.",{"type":30,"tag":31,"props":708,"children":709},{},[710],{"type":35,"value":711},"The best model is the one that matches where you are right now. And it can change. The right partner won't lock you into one approach.",{"type":30,"tag":48,"props":713,"children":715},{"id":714},"our-take-why-we-offer-both",[716],{"type":35,"value":717},"Our Take: Why We Offer Both",{"type":30,"tag":31,"props":719,"children":720},{},[721],{"type":35,"value":722},"We do augmentation and full delivery because companies need both — sometimes at the same time, sometimes at different stages.",{"type":30,"tag":31,"props":724,"children":725},{},[726],{"type":35,"value":727},"What stays consistent is how we work:",{"type":30,"tag":86,"props":729,"children":730},{},[731,741,751,761],{"type":30,"tag":90,"props":732,"children":733},{},[734,739],{"type":30,"tag":58,"props":735,"children":736},{},[737],{"type":35,"value":738},"Named engineers, not a pool.",{"type":35,"value":740}," You'll know who's on your project from day one.",{"type":30,"tag":90,"props":742,"children":743},{},[744,749],{"type":30,"tag":58,"props":745,"children":746},{},[747],{"type":35,"value":748},"2-week trial for augmentation.",{"type":35,"value":750}," We want the fit to be right for both sides.",{"type":30,"tag":90,"props":752,"children":753},{},[754,759],{"type":30,"tag":58,"props":755,"children":756},{},[757],{"type":35,"value":758},"Code ownership from day one.",{"type":35,"value":760}," No lock-in. Your code, your product, your freedom.",{"type":30,"tag":90,"props":762,"children":763},{},[764,769],{"type":30,"tag":58,"props":765,"children":766},{},[767],{"type":35,"value":768},"80%+ client retention.",{"type":35,"value":770}," Clients stay because the partnership works — not because they're locked in.",{"type":30,"tag":31,"props":772,"children":773},{},[774,776,781,783,788],{"type":35,"value":775},"PerformLine and Eitoss are proof that both models work when done right. One started with ",{"type":30,"tag":389,"props":777,"children":778},{"href":391},[779],{"type":35,"value":780},"1 augmented engineer and grew to 8+",{"type":35,"value":782},". The other was a ",{"type":30,"tag":389,"props":784,"children":785},{"href":455},[786],{"type":35,"value":787},"full MVP delivery that turned into a 2+ year partnership",{"type":35,"value":789},". Different starting points. Same outcome: a team that stays and grows with you.",{"type":30,"tag":31,"props":791,"children":792},{},[793,795,801],{"type":35,"value":794},"If you're not sure which model fits — ",{"type":30,"tag":389,"props":796,"children":798},{"href":797},"/contact",[799],{"type":35,"value":800},"let's figure it out together",{"type":35,"value":802},". We'll give you an honest recommendation, even if it means suggesting something we don't offer.",{"type":30,"tag":804,"props":805,"children":806},"hr",{},[],{"type":30,"tag":31,"props":808,"children":809},{},[810],{"type":30,"tag":811,"props":812,"children":813},"em",{},[814,816,822,824,830,831],{"type":35,"value":815},"Related reading: ",{"type":30,"tag":389,"props":817,"children":819},{"href":818},"/blog/hire-developers-startup",[820],{"type":35,"value":821},"How to Hire Developers for Your Startup Without Getting Burned",{"type":35,"value":823}," | ",{"type":30,"tag":389,"props":825,"children":827},{"href":826},"/blog/mvp-development-cost",[828],{"type":35,"value":829},"How Much Does MVP Development Cost in 2026?",{"type":35,"value":823},{"type":30,"tag":389,"props":832,"children":834},{"href":833},"/blog/hire-freelancer-or-agency-for-business",[835],{"type":35,"value":836},"Should You Hire a Freelancer or Agency for Your Business?",{"title":7,"searchDepth":838,"depth":838,"links":839},2,[840,841,842,843,844,845,850,851],{"id":50,"depth":838,"text":53},{"id":102,"depth":838,"text":105},{"id":334,"depth":838,"text":337},{"id":399,"depth":838,"text":402},{"id":463,"depth":838,"text":466},{"id":525,"depth":838,"text":528,"children":846},[847,849],{"id":532,"depth":848,"text":535},3,{"id":568,"depth":848,"text":571},{"id":604,"depth":838,"text":607},{"id":714,"depth":838,"text":717},"markdown","content:blog:staff-augmentation-vs-outsourcing.md","content","blog/staff-augmentation-vs-outsourcing.md","blog/staff-augmentation-vs-outsourcing","md",[],[860,1757,2566,3191],{"_path":861,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":862,"description":863,"topic":864,"author":11,"coverImg":865,"coverImgAlt":866,"published":14,"createdAt":867,"keywords":868,"body":875,"_type":852,"_id":1754,"_source":854,"_file":1755,"_stem":1756,"_extension":857},"/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",[869,870,871,872,873,874],"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":876,"toc":1734},[877,882,887,892,898,903,908,913,918,924,929,935,945,955,965,975,985,991,1001,1011,1021,1031,1037,1042,1052,1062,1072,1082,1092,1098,1103,1109,1119,1129,1146,1156,1166,1172,1182,1192,1202,1212,1229,1235,1240,1250,1260,1270,1280,1290,1296,1301,1306,1316,1334,1343,1353,1358,1364,1369,1542,1552,1558,1563,1569,1622,1628,1691,1697,1702,1707,1719,1724,1729],{"type":30,"tag":31,"props":878,"children":879},{},[880],{"type":35,"value":881},"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":883,"children":884},{},[885],{"type":35,"value":886},"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":888,"children":889},{},[890],{"type":35,"value":891},"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":48,"props":893,"children":895},{"id":894},"why-this-comparison-is-harder-than-it-looks",[896],{"type":35,"value":897},"Why This Comparison Is Harder Than It Looks",{"type":30,"tag":31,"props":899,"children":900},{},[901],{"type":35,"value":902},"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":904,"children":905},{},[906],{"type":35,"value":907},"The reality is messier.",{"type":30,"tag":31,"props":909,"children":910},{},[911],{"type":35,"value":912},"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":914,"children":915},{},[916],{"type":35,"value":917},"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":48,"props":919,"children":921},{"id":920},"the-honest-case-for-freelancers",[922],{"type":35,"value":923},"The Honest Case for Freelancers",{"type":30,"tag":31,"props":925,"children":926},{},[927],{"type":35,"value":928},"We mean this sincerely. There are situations where a freelancer is the right choice -- even over us.",{"type":30,"tag":530,"props":930,"children":932},{"id":931},"when-freelancers-are-the-right-choice",[933],{"type":35,"value":934},"When Freelancers Are the Right Choice",{"type":30,"tag":31,"props":936,"children":937},{},[938,943],{"type":30,"tag":58,"props":939,"children":940},{},[941],{"type":35,"value":942},"You have a clearly defined, scoped task.",{"type":35,"value":944}," 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":946,"children":947},{},[948,953],{"type":30,"tag":58,"props":949,"children":950},{},[951],{"type":35,"value":952},"You have internal product and technical oversight.",{"type":35,"value":954}," 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":956,"children":957},{},[958,963],{"type":30,"tag":58,"props":959,"children":960},{},[961],{"type":35,"value":962},"You need specialized expertise for a short engagement.",{"type":35,"value":964}," 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":966,"children":967},{},[968,973],{"type":30,"tag":58,"props":969,"children":970},{},[971],{"type":35,"value":972},"Budget is tight and you can manage the project yourself.",{"type":35,"value":974}," 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":976,"children":977},{},[978,983],{"type":30,"tag":58,"props":979,"children":980},{},[981],{"type":35,"value":982},"The project is lower-risk.",{"type":35,"value":984}," 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":530,"props":986,"children":988},{"id":987},"what-freelancers-do-well",[989],{"type":35,"value":990},"What Freelancers Do Well",{"type":30,"tag":31,"props":992,"children":993},{},[994,999],{"type":30,"tag":58,"props":995,"children":996},{},[997],{"type":35,"value":998},"Direct communication.",{"type":35,"value":1000}," 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":1002,"children":1003},{},[1004,1009],{"type":30,"tag":58,"props":1005,"children":1006},{},[1007],{"type":35,"value":1008},"Cost efficiency for defined work.",{"type":35,"value":1010}," 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":1012,"children":1013},{},[1014,1019],{"type":30,"tag":58,"props":1015,"children":1016},{},[1017],{"type":35,"value":1018},"Speed for specific tasks.",{"type":35,"value":1020}," 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":1022,"children":1023},{},[1024,1029],{"type":30,"tag":58,"props":1025,"children":1026},{},[1027],{"type":35,"value":1028},"Access to niche skills.",{"type":35,"value":1030}," Need a Solidity developer? A Rust specialist? An accessibility auditor? The freelancer market often has specialists that generalist agencies don't.",{"type":30,"tag":530,"props":1032,"children":1034},{"id":1033},"where-freelancers-struggle",[1035],{"type":35,"value":1036},"Where Freelancers Struggle",{"type":30,"tag":31,"props":1038,"children":1039},{},[1040],{"type":35,"value":1041},"Being honest about freelancers means being honest about the risks too.",{"type":30,"tag":31,"props":1043,"children":1044},{},[1045,1050],{"type":30,"tag":58,"props":1046,"children":1047},{},[1048],{"type":35,"value":1049},"Single point of failure.",{"type":35,"value":1051}," 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":1053,"children":1054},{},[1055,1060],{"type":30,"tag":58,"props":1056,"children":1057},{},[1058],{"type":35,"value":1059},"No second pair of eyes.",{"type":35,"value":1061}," 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":1063,"children":1064},{},[1065,1070],{"type":30,"tag":58,"props":1066,"children":1067},{},[1068],{"type":35,"value":1069},"Knowledge concentration.",{"type":35,"value":1071}," 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":1073,"children":1074},{},[1075,1080],{"type":30,"tag":58,"props":1076,"children":1077},{},[1078],{"type":35,"value":1079},"Scaling is hard.",{"type":35,"value":1081}," 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":1083,"children":1084},{},[1085,1090],{"type":30,"tag":58,"props":1086,"children":1087},{},[1088],{"type":35,"value":1089},"Continuity risk.",{"type":35,"value":1091}," 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":48,"props":1093,"children":1095},{"id":1094},"the-honest-case-for-agencies",[1096],{"type":35,"value":1097},"The Honest Case for Agencies",{"type":30,"tag":31,"props":1099,"children":1100},{},[1101],{"type":35,"value":1102},"Now the part where we might be biased. We'll try not to be.",{"type":30,"tag":530,"props":1104,"children":1106},{"id":1105},"when-an-agency-is-the-right-choice",[1107],{"type":35,"value":1108},"When an Agency Is the Right Choice",{"type":30,"tag":31,"props":1110,"children":1111},{},[1112,1117],{"type":30,"tag":58,"props":1113,"children":1114},{},[1115],{"type":35,"value":1116},"You're building a core product.",{"type":35,"value":1118}," 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":1120,"children":1121},{},[1122,1127],{"type":30,"tag":58,"props":1123,"children":1124},{},[1125],{"type":35,"value":1126},"You need continuity over months or years.",{"type":35,"value":1128}," 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":1130,"children":1131},{},[1132,1137,1139,1144],{"type":30,"tag":58,"props":1133,"children":1134},{},[1135],{"type":35,"value":1136},"You don't have internal technical leadership.",{"type":35,"value":1138}," If you're a non-technical founder, you need more than code. You need someone to ",{"type":30,"tag":389,"props":1140,"children":1141},{"href":818},[1142],{"type":35,"value":1143},"help you make technical decisions",{"type":35,"value":1145},", 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":1147,"children":1148},{},[1149,1154],{"type":30,"tag":58,"props":1150,"children":1151},{},[1152],{"type":35,"value":1153},"The project is high-stakes.",{"type":35,"value":1155}," 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":1157,"children":1158},{},[1159,1164],{"type":30,"tag":58,"props":1160,"children":1161},{},[1162],{"type":35,"value":1163},"You need multiple skill sets working in coordination.",{"type":35,"value":1165}," 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":530,"props":1167,"children":1169},{"id":1168},"what-agencies-do-well",[1170],{"type":35,"value":1171},"What Agencies Do Well",{"type":30,"tag":31,"props":1173,"children":1174},{},[1175,1180],{"type":30,"tag":58,"props":1176,"children":1177},{},[1178],{"type":35,"value":1179},"Team depth.",{"type":35,"value":1181}," 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":1183,"children":1184},{},[1185,1190],{"type":30,"tag":58,"props":1186,"children":1187},{},[1188],{"type":35,"value":1189},"Process and accountability.",{"type":35,"value":1191}," 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":1193,"children":1194},{},[1195,1200],{"type":30,"tag":58,"props":1196,"children":1197},{},[1198],{"type":35,"value":1199},"Continuity.",{"type":35,"value":1201}," If one engineer leaves, the team's shared knowledge keeps the project moving. No single person is a bottleneck.",{"type":30,"tag":31,"props":1203,"children":1204},{},[1205,1210],{"type":30,"tag":58,"props":1206,"children":1207},{},[1208],{"type":35,"value":1209},"Scalability.",{"type":35,"value":1211}," 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":1213,"children":1214},{},[1215,1220,1222,1227],{"type":30,"tag":58,"props":1216,"children":1217},{},[1218],{"type":35,"value":1219},"Documentation and standards.",{"type":35,"value":1221}," 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":389,"props":1223,"children":1224},{"href":4},[1225],{"type":35,"value":1226},"something you can actually take ownership of",{"type":35,"value":1228},".",{"type":30,"tag":530,"props":1230,"children":1232},{"id":1231},"where-agencies-struggle-yes-agencies-fail-too",[1233],{"type":35,"value":1234},"Where Agencies Struggle (Yes, Agencies Fail Too)",{"type":30,"tag":31,"props":1236,"children":1237},{},[1238],{"type":35,"value":1239},"Here's the part most agency-written articles skip.",{"type":30,"tag":31,"props":1241,"children":1242},{},[1243,1248],{"type":30,"tag":58,"props":1244,"children":1245},{},[1246],{"type":35,"value":1247},"Higher cost for simple projects.",{"type":35,"value":1249}," 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":1251,"children":1252},{},[1253,1258],{"type":30,"tag":58,"props":1254,"children":1255},{},[1256],{"type":35,"value":1257},"Communication layers.",{"type":35,"value":1259}," 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":1261,"children":1262},{},[1263,1268],{"type":30,"tag":58,"props":1264,"children":1265},{},[1266],{"type":35,"value":1267},"The \"body shop\" problem.",{"type":35,"value":1269}," 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":1271,"children":1272},{},[1273,1278],{"type":30,"tag":58,"props":1274,"children":1275},{},[1276],{"type":35,"value":1277},"Over-engineering for billable hours.",{"type":35,"value":1279}," 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":1281,"children":1282},{},[1283,1288],{"type":30,"tag":58,"props":1284,"children":1285},{},[1286],{"type":35,"value":1287},"Feeling like a number.",{"type":35,"value":1289}," 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":48,"props":1291,"children":1293},{"id":1292},"the-question-nobody-asks-what-kind-of-agency",[1294],{"type":35,"value":1295},"The Question Nobody Asks: What Kind of Agency?",{"type":30,"tag":31,"props":1297,"children":1298},{},[1299],{"type":35,"value":1300},"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":1302,"children":1303},{},[1304],{"type":35,"value":1305},"The variables that matter:",{"type":30,"tag":31,"props":1307,"children":1308},{},[1309,1314],{"type":30,"tag":58,"props":1310,"children":1311},{},[1312],{"type":35,"value":1313},"Size.",{"type":35,"value":1315}," 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":1317,"children":1318},{},[1319,1324,1326,1332],{"type":30,"tag":58,"props":1320,"children":1321},{},[1322],{"type":35,"value":1323},"Ownership mindset.",{"type":35,"value":1325}," 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":389,"props":1327,"children":1329},{"href":1328},"/blog/why-we-built-formester",[1330],{"type":35,"value":1331},"built their own products",{"type":35,"value":1333}," tend to think differently about yours.",{"type":30,"tag":31,"props":1335,"children":1336},{},[1337,1341],{"type":30,"tag":58,"props":1338,"children":1339},{},[1340],{"type":35,"value":1199},{"type":35,"value":1342}," 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":1344,"children":1345},{},[1346,1351],{"type":30,"tag":58,"props":1347,"children":1348},{},[1349],{"type":35,"value":1350},"Post-delivery relationship.",{"type":35,"value":1352}," 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":1354,"children":1355},{},[1356],{"type":35,"value":1357},"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":48,"props":1359,"children":1361},{"id":1360},"a-decision-framework-that-actually-helps",[1362],{"type":35,"value":1363},"A Decision Framework That Actually Helps",{"type":30,"tag":31,"props":1365,"children":1366},{},[1367],{"type":35,"value":1368},"Instead of generic advice, here's a framework based on specific project characteristics.",{"type":30,"tag":112,"props":1370,"children":1371},{},[1372,1393],{"type":30,"tag":116,"props":1373,"children":1374},{},[1375],{"type":30,"tag":120,"props":1376,"children":1377},{},[1378,1383,1388],{"type":30,"tag":124,"props":1379,"children":1380},{},[1381],{"type":35,"value":1382},"Your Situation",{"type":30,"tag":124,"props":1384,"children":1385},{},[1386],{"type":35,"value":1387},"Recommendation",{"type":30,"tag":124,"props":1389,"children":1390},{},[1391],{"type":35,"value":1392},"Why",{"type":30,"tag":139,"props":1394,"children":1395},{},[1396,1414,1432,1450,1467,1485,1508,1525],{"type":30,"tag":120,"props":1397,"children":1398},{},[1399,1404,1409],{"type":30,"tag":146,"props":1400,"children":1401},{},[1402],{"type":35,"value":1403},"Small, defined task with internal tech oversight",{"type":30,"tag":146,"props":1405,"children":1406},{},[1407],{"type":35,"value":1408},"Freelancer",{"type":30,"tag":146,"props":1410,"children":1411},{},[1412],{"type":35,"value":1413},"Lower cost, direct communication, no overhead needed",{"type":30,"tag":120,"props":1415,"children":1416},{},[1417,1422,1427],{"type":30,"tag":146,"props":1418,"children":1419},{},[1420],{"type":35,"value":1421},"Full product build, 3+ months, no internal CTO",{"type":30,"tag":146,"props":1423,"children":1424},{},[1425],{"type":35,"value":1426},"Agency (product-focused)",{"type":30,"tag":146,"props":1428,"children":1429},{},[1430],{"type":35,"value":1431},"You need technical guidance, not just code",{"type":30,"tag":120,"props":1433,"children":1434},{},[1435,1440,1445],{"type":30,"tag":146,"props":1436,"children":1437},{},[1438],{"type":35,"value":1439},"Specialized short-term need (ML model, DevOps setup)",{"type":30,"tag":146,"props":1441,"children":1442},{},[1443],{"type":35,"value":1444},"Freelancer (specialist)",{"type":30,"tag":146,"props":1446,"children":1447},{},[1448],{"type":35,"value":1449},"Agencies rarely have niche specialists available on demand",{"type":30,"tag":120,"props":1451,"children":1452},{},[1453,1458,1462],{"type":30,"tag":146,"props":1454,"children":1455},{},[1456],{"type":35,"value":1457},"Core product, high-stakes (investor demo, production)",{"type":30,"tag":146,"props":1459,"children":1460},{},[1461],{"type":35,"value":1426},{"type":30,"tag":146,"props":1463,"children":1464},{},[1465],{"type":35,"value":1466},"Redundancy, process, and multi-discipline coordination matter",{"type":30,"tag":120,"props":1468,"children":1469},{},[1470,1475,1480],{"type":30,"tag":146,"props":1471,"children":1472},{},[1473],{"type":35,"value":1474},"Ongoing maintenance of stable product",{"type":30,"tag":146,"props":1476,"children":1477},{},[1478],{"type":35,"value":1479},"Either",{"type":30,"tag":146,"props":1481,"children":1482},{},[1483],{"type":35,"value":1484},"Depends on complexity and internal capacity",{"type":30,"tag":120,"props":1486,"children":1487},{},[1488,1493,1498],{"type":30,"tag":146,"props":1489,"children":1490},{},[1491],{"type":35,"value":1492},"Rapid scaling needed (3+ developers within a month)",{"type":30,"tag":146,"props":1494,"children":1495},{},[1496],{"type":35,"value":1497},"Agency",{"type":30,"tag":146,"props":1499,"children":1500},{},[1501,1506],{"type":30,"tag":389,"props":1502,"children":1503},{"href":4},[1504],{"type":35,"value":1505},"Augmentation models",{"type":35,"value":1507}," let you scale without individual hiring",{"type":30,"tag":120,"props":1509,"children":1510},{},[1511,1516,1520],{"type":30,"tag":146,"props":1512,"children":1513},{},[1514],{"type":35,"value":1515},"Budget under $15K, technical founder",{"type":30,"tag":146,"props":1517,"children":1518},{},[1519],{"type":35,"value":1408},{"type":30,"tag":146,"props":1521,"children":1522},{},[1523],{"type":35,"value":1524},"You can manage the relationship and evaluate the code yourself",{"type":30,"tag":120,"props":1526,"children":1527},{},[1528,1533,1537],{"type":30,"tag":146,"props":1529,"children":1530},{},[1531],{"type":35,"value":1532},"Budget $50K+, non-technical founder",{"type":30,"tag":146,"props":1534,"children":1535},{},[1536],{"type":35,"value":1497},{"type":30,"tag":146,"props":1538,"children":1539},{},[1540],{"type":35,"value":1541},"The investment warrants the process and protection",{"type":30,"tag":31,"props":1543,"children":1544},{},[1545,1550],{"type":30,"tag":58,"props":1546,"children":1547},{},[1548],{"type":35,"value":1549},"The hybrid model.",{"type":35,"value":1551}," 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":48,"props":1553,"children":1555},{"id":1554},"red-flags-for-each-option",[1556],{"type":35,"value":1557},"Red Flags for Each Option",{"type":30,"tag":31,"props":1559,"children":1560},{},[1561],{"type":35,"value":1562},"Regardless of which direction you go, watch for these.",{"type":30,"tag":530,"props":1564,"children":1566},{"id":1565},"freelancer-red-flags",[1567],{"type":35,"value":1568},"Freelancer Red Flags",{"type":30,"tag":86,"props":1570,"children":1571},{},[1572,1582,1592,1602,1612],{"type":30,"tag":90,"props":1573,"children":1574},{},[1575,1580],{"type":30,"tag":58,"props":1576,"children":1577},{},[1578],{"type":35,"value":1579},"Can't show previous client references.",{"type":35,"value":1581}," Experienced freelancers have happy clients who will vouch for them.",{"type":30,"tag":90,"props":1583,"children":1584},{},[1585,1590],{"type":30,"tag":58,"props":1586,"children":1587},{},[1588],{"type":35,"value":1589},"Resistant to code reviews.",{"type":35,"value":1591}," If they don't want anyone else looking at their code, ask yourself why.",{"type":30,"tag":90,"props":1593,"children":1594},{},[1595,1600],{"type":30,"tag":58,"props":1596,"children":1597},{},[1598],{"type":35,"value":1599},"No version control.",{"type":35,"value":1601}," If they're not using Git with meaningful commit history, walk away.",{"type":30,"tag":90,"props":1603,"children":1604},{},[1605,1610],{"type":30,"tag":58,"props":1606,"children":1607},{},[1608],{"type":35,"value":1609},"Promises unrealistic timelines.",{"type":35,"value":1611}," \"I can build your entire app in 2 weeks\" is not confidence. It's a warning sign.",{"type":30,"tag":90,"props":1613,"children":1614},{},[1615,1620],{"type":30,"tag":58,"props":1616,"children":1617},{},[1618],{"type":35,"value":1619},"No questions about your product.",{"type":35,"value":1621}," A freelancer who starts coding without understanding your users or business is building to a spec, not to an outcome.",{"type":30,"tag":530,"props":1623,"children":1625},{"id":1624},"agency-red-flags",[1626],{"type":35,"value":1627},"Agency Red Flags",{"type":30,"tag":86,"props":1629,"children":1630},{},[1631,1641,1651,1661,1671,1681],{"type":30,"tag":90,"props":1632,"children":1633},{},[1634,1639],{"type":30,"tag":58,"props":1635,"children":1636},{},[1637],{"type":35,"value":1638},"Can't introduce you to the engineers.",{"type":35,"value":1640}," If you only ever talk to the sales team, you don't know who's building your product.",{"type":30,"tag":90,"props":1642,"children":1643},{},[1644,1649],{"type":30,"tag":58,"props":1645,"children":1646},{},[1647],{"type":35,"value":1648},"Rotating developers.",{"type":35,"value":1650}," \"We had to swap your backend developer\" more than once means you're at a body shop.",{"type":30,"tag":90,"props":1652,"children":1653},{},[1654,1659],{"type":30,"tag":58,"props":1655,"children":1656},{},[1657],{"type":35,"value":1658},"No transparent process.",{"type":35,"value":1660}," You should see working software every 1-2 weeks. If you go a month without a demo, something is wrong.",{"type":30,"tag":90,"props":1662,"children":1663},{},[1664,1669],{"type":30,"tag":58,"props":1665,"children":1666},{},[1667],{"type":35,"value":1668},"Won't discuss code ownership.",{"type":35,"value":1670}," This should be explicit in the contract. Any hesitation is a sign.",{"type":30,"tag":90,"props":1672,"children":1673},{},[1674,1679],{"type":30,"tag":58,"props":1675,"children":1676},{},[1677],{"type":35,"value":1678},"\"We'll figure out the team after you sign.\"",{"type":35,"value":1680}," You should know exactly who's working on your project before the contract is signed.",{"type":30,"tag":90,"props":1682,"children":1683},{},[1684,1689],{"type":30,"tag":58,"props":1685,"children":1686},{},[1687],{"type":35,"value":1688},"They agree to everything.",{"type":35,"value":1690}," 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":48,"props":1692,"children":1694},{"id":1693},"our-perspective-since-were-being-honest",[1695],{"type":35,"value":1696},"Our Perspective (Since We're Being Honest)",{"type":30,"tag":31,"props":1698,"children":1699},{},[1700],{"type":35,"value":1701},"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":1703,"children":1704},{},[1705],{"type":35,"value":1706},"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":1708,"children":1709},{},[1710,1712,1717],{"type":35,"value":1711},"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":389,"props":1713,"children":1714},{"href":826},[1715],{"type":35,"value":1716},"tell you honestly",{"type":35,"value":1718}," what you need and what can wait.",{"type":30,"tag":31,"props":1720,"children":1721},{},[1722],{"type":35,"value":1723},"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":1725,"children":1726},{},[1727],{"type":35,"value":1728},"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":1730,"children":1731},{},[1732],{"type":35,"value":1733},"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":838,"depth":838,"links":1735},[1736,1737,1742,1747,1748,1749,1753],{"id":894,"depth":838,"text":897},{"id":920,"depth":838,"text":923,"children":1738},[1739,1740,1741],{"id":931,"depth":848,"text":934},{"id":987,"depth":848,"text":990},{"id":1033,"depth":848,"text":1036},{"id":1094,"depth":838,"text":1097,"children":1743},[1744,1745,1746],{"id":1105,"depth":848,"text":1108},{"id":1168,"depth":848,"text":1171},{"id":1231,"depth":848,"text":1234},{"id":1292,"depth":838,"text":1295},{"id":1360,"depth":838,"text":1363},{"id":1554,"depth":838,"text":1557,"children":1750},[1751,1752],{"id":1565,"depth":848,"text":1568},{"id":1624,"depth":848,"text":1627},{"id":1693,"depth":838,"text":1696},"content:blog:freelancer-vs-agency-software-development.md","blog/freelancer-vs-agency-software-development.md","blog/freelancer-vs-agency-software-development",{"_path":1758,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1759,"description":1760,"topic":1761,"author":11,"coverImg":1762,"coverImgAlt":1763,"published":14,"createdAt":1764,"keywords":1765,"body":1772,"_type":852,"_id":2563,"_source":854,"_file":2564,"_stem":2565,"_extension":857},"/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",[1766,1767,1768,1769,1770,1771],"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":1773,"toc":2548},[1774,1779,1784,1789,1794,1799,1805,1810,1815,1825,1835,1845,1850,1856,1861,1867,1872,1880,1903,1913,1923,1929,1934,1941,1984,2003,2013,2019,2024,2031,2074,2084,2090,2095,2102,2155,2161,2166,2173,2226,2232,2237,2244,2287,2293,2298,2308,2318,2328,2338,2348,2358,2368,2374,2379,2384,2392,2425,2437,2442,2448,2453,2463,2473,2483,2501,2511,2521,2527,2532,2543],{"type":30,"tag":31,"props":1775,"children":1776},{},[1777],{"type":35,"value":1778},"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":1780,"children":1781},{},[1782],{"type":35,"value":1783},"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":1785,"children":1786},{},[1787],{"type":35,"value":1788},"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":1790,"children":1791},{},[1792],{"type":35,"value":1793},"That's not a handoff. That's a trap.",{"type":30,"tag":31,"props":1795,"children":1796},{},[1797],{"type":35,"value":1798},"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":48,"props":1800,"children":1802},{"id":1801},"why-handoff-readiness-matters-even-if-youre-not-planning-to-leave",[1803],{"type":35,"value":1804},"Why Handoff-Readiness Matters (Even If You're Not Planning to Leave)",{"type":30,"tag":31,"props":1806,"children":1807},{},[1808],{"type":35,"value":1809},"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":1811,"children":1812},{},[1813],{"type":35,"value":1814},"Handoff-readiness still matters for three reasons:",{"type":30,"tag":31,"props":1816,"children":1817},{},[1818,1823],{"type":30,"tag":58,"props":1819,"children":1820},{},[1821],{"type":35,"value":1822},"1. It's a proxy for code quality.",{"type":35,"value":1824}," 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":1826,"children":1827},{},[1828,1833],{"type":30,"tag":58,"props":1829,"children":1830},{},[1831],{"type":35,"value":1832},"2. It protects your options.",{"type":35,"value":1834}," 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":1836,"children":1837},{},[1838,1843],{"type":30,"tag":58,"props":1839,"children":1840},{},[1841],{"type":35,"value":1842},"3. It makes onboarding faster.",{"type":35,"value":1844}," 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":1846,"children":1847},{},[1848],{"type":35,"value":1849},"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":48,"props":1851,"children":1853},{"id":1852},"the-handoff-ready-code-checklist",[1854],{"type":35,"value":1855},"The Handoff-Ready Code Checklist",{"type":30,"tag":31,"props":1857,"children":1858},{},[1859],{"type":35,"value":1860},"Print this. Use it during your next sprint review. Ask your agency how they score on each item.",{"type":30,"tag":530,"props":1862,"children":1864},{"id":1863},"_1-can-you-clone-and-run-it",[1865],{"type":35,"value":1866},"1. Can You Clone and Run It?",{"type":30,"tag":31,"props":1868,"children":1869},{},[1870],{"type":35,"value":1871},"This sounds basic. It's not. You'd be surprised how many codebases fail this test.",{"type":30,"tag":31,"props":1873,"children":1874},{},[1875],{"type":30,"tag":58,"props":1876,"children":1877},{},[1878],{"type":35,"value":1879},"What to look for:",{"type":30,"tag":86,"props":1881,"children":1882},{},[1883,1888,1893,1898],{"type":30,"tag":90,"props":1884,"children":1885},{},[1886],{"type":35,"value":1887},"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":90,"props":1889,"children":1890},{},[1891],{"type":35,"value":1892},"All environment variables documented with explanations of what each one does",{"type":30,"tag":90,"props":1894,"children":1895},{},[1896],{"type":35,"value":1897},"A containerized development environment (Docker or equivalent) so setup doesn't depend on someone's specific laptop configuration",{"type":30,"tag":90,"props":1899,"children":1900},{},[1901],{"type":35,"value":1902},"A seed script or sample data so the app has something to display when you first run it",{"type":30,"tag":31,"props":1904,"children":1905},{},[1906,1911],{"type":30,"tag":58,"props":1907,"children":1908},{},[1909],{"type":35,"value":1910},"The benchmark:",{"type":35,"value":1912}," 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":1914,"children":1915},{},[1916,1921],{"type":30,"tag":58,"props":1917,"children":1918},{},[1919],{"type":35,"value":1920},"How to test this yourself:",{"type":35,"value":1922}," 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":530,"props":1924,"children":1926},{"id":1925},"_2-is-the-code-documented-where-it-matters",[1927],{"type":35,"value":1928},"2. Is the Code Documented Where It Matters?",{"type":30,"tag":31,"props":1930,"children":1931},{},[1932],{"type":35,"value":1933},"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":1935,"children":1936},{},[1937],{"type":30,"tag":58,"props":1938,"children":1939},{},[1940],{"type":35,"value":1879},{"type":30,"tag":86,"props":1942,"children":1943},{},[1944,1954,1964,1974],{"type":30,"tag":90,"props":1945,"children":1946},{},[1947,1952],{"type":30,"tag":58,"props":1948,"children":1949},{},[1950],{"type":35,"value":1951},"Architecture overview:",{"type":35,"value":1953}," 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":90,"props":1955,"children":1956},{},[1957,1962],{"type":30,"tag":58,"props":1958,"children":1959},{},[1960],{"type":35,"value":1961},"API documentation:",{"type":35,"value":1963}," 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":90,"props":1965,"children":1966},{},[1967,1972],{"type":30,"tag":58,"props":1968,"children":1969},{},[1970],{"type":35,"value":1971},"Database schema:",{"type":35,"value":1973}," 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":90,"props":1975,"children":1976},{},[1977,1982],{"type":30,"tag":58,"props":1978,"children":1979},{},[1980],{"type":35,"value":1981},"Deployment documentation:",{"type":35,"value":1983}," How does code go from a developer's machine to production? What are the steps? What could go wrong?",{"type":30,"tag":31,"props":1985,"children":1986},{},[1987,1992,1994,2001],{"type":30,"tag":58,"props":1988,"children":1989},{},[1990],{"type":35,"value":1991},"What bad documentation looks like:",{"type":35,"value":1993}," A README that says \"See Confluence\" -- and the Confluence page was last updated eight months ago. Or inline comments that say ",{"type":30,"tag":1995,"props":1996,"children":1998},"code",{"className":1997},[],[1999],{"type":35,"value":2000},"// TODO: fix this later",{"type":35,"value":2002}," from a year ago.",{"type":30,"tag":31,"props":2004,"children":2005},{},[2006,2011],{"type":30,"tag":58,"props":2007,"children":2008},{},[2009],{"type":35,"value":2010},"What good documentation looks like:",{"type":35,"value":2012}," 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":530,"props":2014,"children":2016},{"id":2015},"_3-are-there-automated-tests",[2017],{"type":35,"value":2018},"3. Are There Automated Tests?",{"type":30,"tag":31,"props":2020,"children":2021},{},[2022],{"type":35,"value":2023},"\"We have tests\" and \"our tests catch real bugs\" are two very different statements.",{"type":30,"tag":31,"props":2025,"children":2026},{},[2027],{"type":30,"tag":58,"props":2028,"children":2029},{},[2030],{"type":35,"value":1879},{"type":30,"tag":86,"props":2032,"children":2033},{},[2034,2044,2054,2064],{"type":30,"tag":90,"props":2035,"children":2036},{},[2037,2042],{"type":30,"tag":58,"props":2038,"children":2039},{},[2040],{"type":35,"value":2041},"Test coverage that matches your product's maturity.",{"type":35,"value":2043}," 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":90,"props":2045,"children":2046},{},[2047,2052],{"type":30,"tag":58,"props":2048,"children":2049},{},[2050],{"type":35,"value":2051},"Tests that test behavior, not implementation.",{"type":35,"value":2053}," 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":90,"props":2055,"children":2056},{},[2057,2062],{"type":30,"tag":58,"props":2058,"children":2059},{},[2060],{"type":35,"value":2061},"A CI/CD pipeline that runs tests on every commit.",{"type":35,"value":2063}," Tests that exist but aren't run automatically are decorative. Every code change should trigger the test suite.",{"type":30,"tag":90,"props":2065,"children":2066},{},[2067,2072],{"type":30,"tag":58,"props":2068,"children":2069},{},[2070],{"type":35,"value":2071},"Tests that actually pass.",{"type":35,"value":2073}," 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":2075,"children":2076},{},[2077,2082],{"type":30,"tag":58,"props":2078,"children":2079},{},[2080],{"type":35,"value":2081},"The benchmark question:",{"type":35,"value":2083}," 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":530,"props":2085,"children":2087},{"id":2086},"_4-is-the-code-clean-and-maintainable",[2088],{"type":35,"value":2089},"4. Is the Code Clean and Maintainable?",{"type":30,"tag":31,"props":2091,"children":2092},{},[2093],{"type":35,"value":2094},"You don't need to read every line of code to evaluate maintainability. Look for structural signals.",{"type":30,"tag":31,"props":2096,"children":2097},{},[2098],{"type":30,"tag":58,"props":2099,"children":2100},{},[2101],{"type":35,"value":1879},{"type":30,"tag":86,"props":2103,"children":2104},{},[2105,2115,2125,2135,2145],{"type":30,"tag":90,"props":2106,"children":2107},{},[2108,2113],{"type":30,"tag":58,"props":2109,"children":2110},{},[2111],{"type":35,"value":2112},"Consistent coding style.",{"type":35,"value":2114}," 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":90,"props":2116,"children":2117},{},[2118,2123],{"type":30,"tag":58,"props":2119,"children":2120},{},[2121],{"type":35,"value":2122},"Reasonable file sizes.",{"type":35,"value":2124}," 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":90,"props":2126,"children":2127},{},[2128,2133],{"type":30,"tag":58,"props":2129,"children":2130},{},[2131],{"type":35,"value":2132},"Low code duplication.",{"type":35,"value":2134}," 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":90,"props":2136,"children":2137},{},[2138,2143],{"type":30,"tag":58,"props":2139,"children":2140},{},[2141],{"type":35,"value":2142},"Logical folder structure.",{"type":35,"value":2144}," 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":90,"props":2146,"children":2147},{},[2148,2153],{"type":30,"tag":58,"props":2149,"children":2150},{},[2151],{"type":35,"value":2152},"No hardcoded secrets.",{"type":35,"value":2154}," 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":530,"props":2156,"children":2158},{"id":2157},"_5-do-you-own-everything",[2159],{"type":35,"value":2160},"5. Do You Own Everything?",{"type":30,"tag":31,"props":2162,"children":2163},{},[2164],{"type":35,"value":2165},"This is the one that catches most founders off guard.",{"type":30,"tag":31,"props":2167,"children":2168},{},[2169],{"type":30,"tag":58,"props":2170,"children":2171},{},[2172],{"type":35,"value":1879},{"type":30,"tag":86,"props":2174,"children":2175},{},[2176,2186,2196,2206,2216],{"type":30,"tag":90,"props":2177,"children":2178},{},[2179,2184],{"type":30,"tag":58,"props":2180,"children":2181},{},[2182],{"type":35,"value":2183},"Full source code access.",{"type":35,"value":2185}," 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":90,"props":2187,"children":2188},{},[2189,2194],{"type":30,"tag":58,"props":2190,"children":2191},{},[2192],{"type":35,"value":2193},"Third-party accounts in your name.",{"type":35,"value":2195}," 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":90,"props":2197,"children":2198},{},[2199,2204],{"type":30,"tag":58,"props":2200,"children":2201},{},[2202],{"type":35,"value":2203},"Domain, SSL, and DNS under your control.",{"type":35,"value":2205}," Your domain registrar account, SSL certificates, and DNS records should be in your name and accessible to you.",{"type":30,"tag":90,"props":2207,"children":2208},{},[2209,2214],{"type":30,"tag":58,"props":2210,"children":2211},{},[2212],{"type":35,"value":2213},"No proprietary dependencies.",{"type":35,"value":2215}," 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":90,"props":2217,"children":2218},{},[2219,2224],{"type":30,"tag":58,"props":2220,"children":2221},{},[2222],{"type":35,"value":2223},"IP assignment in the contract.",{"type":35,"value":2225}," Check your agreement. Code written for you should be owned by you. This should be explicit, not assumed.",{"type":30,"tag":530,"props":2227,"children":2229},{"id":2228},"_6-is-there-a-knowledge-transfer-plan",[2230],{"type":35,"value":2231},"6. Is There a Knowledge Transfer Plan?",{"type":30,"tag":31,"props":2233,"children":2234},{},[2235],{"type":35,"value":2236},"Code is only part of the handoff. Knowledge is the other part -- and it's harder to transfer.",{"type":30,"tag":31,"props":2238,"children":2239},{},[2240],{"type":30,"tag":58,"props":2241,"children":2242},{},[2243],{"type":35,"value":1879},{"type":30,"tag":86,"props":2245,"children":2246},{},[2247,2257,2267,2277],{"type":30,"tag":90,"props":2248,"children":2249},{},[2250,2255],{"type":30,"tag":58,"props":2251,"children":2252},{},[2253],{"type":35,"value":2254},"Documented known issues and technical debt.",{"type":35,"value":2256}," Every codebase has tech debt. The question is whether it's documented and prioritized, or hidden and growing.",{"type":30,"tag":90,"props":2258,"children":2259},{},[2260,2265],{"type":30,"tag":58,"props":2261,"children":2262},{},[2263],{"type":35,"value":2264},"Architecture decision records.",{"type":35,"value":2266}," 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":90,"props":2268,"children":2269},{},[2270,2275],{"type":30,"tag":58,"props":2271,"children":2272},{},[2273],{"type":35,"value":2274},"Runbooks for common operations.",{"type":35,"value":2276}," 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":90,"props":2278,"children":2279},{},[2280,2285],{"type":30,"tag":58,"props":2281,"children":2282},{},[2283],{"type":35,"value":2284},"Transition period with overlapping access.",{"type":35,"value":2286}," 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":48,"props":2288,"children":2290},{"id":2289},"red-flags-that-your-code-is-not-handoff-ready",[2291],{"type":35,"value":2292},"Red Flags That Your Code Is NOT Handoff-Ready",{"type":30,"tag":31,"props":2294,"children":2295},{},[2296],{"type":35,"value":2297},"These should set off alarm bells during your next sprint review or technical check-in.",{"type":30,"tag":31,"props":2299,"children":2300},{},[2301,2306],{"type":30,"tag":58,"props":2302,"children":2303},{},[2304],{"type":35,"value":2305},"\"We'll document everything at the end.\"",{"type":35,"value":2307}," 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":2309,"children":2310},{},[2311,2316],{"type":30,"tag":58,"props":2312,"children":2313},{},[2314],{"type":35,"value":2315},"You've never seen the source code.",{"type":35,"value":2317}," 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":2319,"children":2320},{},[2321,2326],{"type":30,"tag":58,"props":2322,"children":2323},{},[2324],{"type":35,"value":2325},"Deployment requires a specific person.",{"type":35,"value":2327}," 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":2329,"children":2330},{},[2331,2336],{"type":30,"tag":58,"props":2332,"children":2333},{},[2334],{"type":35,"value":2335},"No staging environment.",{"type":35,"value":2337}," 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":2339,"children":2340},{},[2341,2346],{"type":30,"tag":58,"props":2342,"children":2343},{},[2344],{"type":35,"value":2345},"Messy or nonexistent version control.",{"type":35,"value":2347}," 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":2349,"children":2350},{},[2351,2356],{"type":30,"tag":58,"props":2352,"children":2353},{},[2354],{"type":35,"value":2355},"Agency-owned infrastructure.",{"type":35,"value":2357}," 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":2359,"children":2360},{},[2361,2366],{"type":30,"tag":58,"props":2362,"children":2363},{},[2364],{"type":35,"value":2365},"\"You don't need to worry about that.\"",{"type":35,"value":2367}," 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":48,"props":2369,"children":2371},{"id":2370},"how-we-build-for-the-handoff-from-day-one",[2372],{"type":35,"value":2373},"How We Build for the Handoff from Day One",{"type":30,"tag":31,"props":2375,"children":2376},{},[2377],{"type":35,"value":2378},"We're an agency writing about handoff-readiness, so let us be transparent about our own practices.",{"type":30,"tag":31,"props":2380,"children":2381},{},[2382],{"type":35,"value":2383},"Our philosophy is simple: your code, your product, your freedom. We mean that literally.",{"type":30,"tag":31,"props":2385,"children":2386},{},[2387],{"type":30,"tag":58,"props":2388,"children":2389},{},[2390],{"type":35,"value":2391},"From sprint one, every project we build includes:",{"type":30,"tag":86,"props":2393,"children":2394},{},[2395,2400,2405,2410,2415,2420],{"type":30,"tag":90,"props":2396,"children":2397},{},[2398],{"type":35,"value":2399},"Client-owned Git repository with full access from day one",{"type":30,"tag":90,"props":2401,"children":2402},{},[2403],{"type":35,"value":2404},"CI/CD pipeline configured and documented before the first feature ships",{"type":30,"tag":90,"props":2406,"children":2407},{},[2408],{"type":35,"value":2409},"Architecture documentation maintained as a living document, not an afterthought",{"type":30,"tag":90,"props":2411,"children":2412},{},[2413],{"type":35,"value":2414},"All third-party accounts registered under the client's company",{"type":30,"tag":90,"props":2416,"children":2417},{},[2418],{"type":35,"value":2419},"Clean deployment process documented in runbooks",{"type":30,"tag":90,"props":2421,"children":2422},{},[2423],{"type":35,"value":2424},"Code quality standards enforced through automated linting and review",{"type":30,"tag":31,"props":2426,"children":2427},{},[2428,2430,2435],{"type":35,"value":2429},"We build this way because we've been on the other side. When we built ",{"type":30,"tag":389,"props":2431,"children":2432},{"href":1328},[2433],{"type":35,"value":2434},"Formester",{"type":35,"value":2436},", 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":2438,"children":2439},{},[2440],{"type":35,"value":2441},"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":48,"props":2443,"children":2445},{"id":2444},"questions-to-ask-your-agency-today",[2446],{"type":35,"value":2447},"Questions to Ask Your Agency Today",{"type":30,"tag":31,"props":2449,"children":2450},{},[2451],{"type":35,"value":2452},"If you're working with an agency right now, here are questions you can ask in your next meeting.",{"type":30,"tag":31,"props":2454,"children":2455},{},[2456,2461],{"type":30,"tag":58,"props":2457,"children":2458},{},[2459],{"type":35,"value":2460},"1. \"Can I have repo access? I'd like a developer to do a quick code review.\"",{"type":35,"value":2462},"\nThe right answer is immediate access, no hesitation. Any resistance is a red flag.",{"type":30,"tag":31,"props":2464,"children":2465},{},[2466,2471],{"type":30,"tag":58,"props":2467,"children":2468},{},[2469],{"type":35,"value":2470},"2. \"Walk me through what happens if we need to bring this in-house.\"",{"type":35,"value":2472},"\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":2474,"children":2475},{},[2476,2481],{"type":30,"tag":58,"props":2477,"children":2478},{},[2479],{"type":35,"value":2480},"3. \"Who owns the cloud infrastructure accounts?\"",{"type":35,"value":2482},"\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":2484,"children":2485},{},[2486,2491,2493,2499],{"type":30,"tag":58,"props":2487,"children":2488},{},[2489],{"type":35,"value":2490},"4. \"How would a new developer get this running locally?\"",{"type":35,"value":2492},"\nIf the answer involves \"they'd probably need to talk to ",{"type":30,"tag":2494,"props":2495,"children":2496},"span",{},[2497],{"type":35,"value":2498},"specific person",{"type":35,"value":2500},",\" the setup isn't documented well enough.",{"type":30,"tag":31,"props":2502,"children":2503},{},[2504,2509],{"type":30,"tag":58,"props":2505,"children":2506},{},[2507],{"type":35,"value":2508},"5. \"What's your documentation practice -- do you write docs as you go or at the end?\"",{"type":35,"value":2510},"\n\"As we go\" is the only good answer. \"At the end\" means \"probably never in full.\"",{"type":30,"tag":31,"props":2512,"children":2513},{},[2514,2519],{"type":30,"tag":58,"props":2515,"children":2516},{},[2517],{"type":35,"value":2518},"6. \"What known technical debt exists, and where is it documented?\"",{"type":35,"value":2520},"\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":48,"props":2522,"children":2524},{"id":2523},"protecting-your-investment",[2525],{"type":35,"value":2526},"Protecting Your Investment",{"type":30,"tag":31,"props":2528,"children":2529},{},[2530],{"type":35,"value":2531},"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":2533,"children":2534},{},[2535,2537,2542],{"type":35,"value":2536},"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":389,"props":2538,"children":2539},{"href":826},[2540],{"type":35,"value":2541},"built to last",{"type":35,"value":1228},{"type":30,"tag":31,"props":2544,"children":2545},{},[2546],{"type":35,"value":2547},"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":838,"depth":838,"links":2549},[2550,2551,2559,2560,2561,2562],{"id":1801,"depth":838,"text":1804},{"id":1852,"depth":838,"text":1855,"children":2552},[2553,2554,2555,2556,2557,2558],{"id":1863,"depth":848,"text":1866},{"id":1925,"depth":848,"text":1928},{"id":2015,"depth":848,"text":2018},{"id":2086,"depth":848,"text":2089},{"id":2157,"depth":848,"text":2160},{"id":2228,"depth":848,"text":2231},{"id":2289,"depth":838,"text":2292},{"id":2370,"depth":838,"text":2373},{"id":2444,"depth":838,"text":2447},{"id":2523,"depth":838,"text":2526},"content:blog:agency-code-handoff-ready.md","blog/agency-code-handoff-ready.md","blog/agency-code-handoff-ready",{"_path":2567,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":2568,"description":2569,"topic":2570,"author":11,"coverImg":2571,"coverImgAlt":2572,"published":14,"createdAt":2573,"keywords":2574,"body":2581,"_type":852,"_id":3188,"_source":854,"_file":3189,"_stem":3190,"_extension":857},"/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",[2575,2576,2577,2578,2579,2580],"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":2582,"toc":3170},[2583,2588,2593,2598,2604,2609,2614,2622,2650,2658,2663,2669,2674,2679,2686,2714,2720,2725,2731,2741,2751,2756,2762,2767,2776,2785,2790,2796,2805,2814,2819,2825,2834,2850,2855,2861,2870,2879,2884,2890,2895,2905,2915,2925,2935,2945,2955,2965,2971,3004,3010,3043,3049,3054,3065,3070,3075,3080,3086,3091,3099,3127,3132,3138,3143,3148,3160,3165],{"type":30,"tag":31,"props":2584,"children":2585},{},[2586],{"type":35,"value":2587},"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":2589,"children":2590},{},[2591],{"type":35,"value":2592},"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":2594,"children":2595},{},[2596],{"type":35,"value":2597},"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":48,"props":2599,"children":2601},{"id":2600},"what-is-a-code-shop",[2602],{"type":35,"value":2603},"What Is a \"Code Shop\"?",{"type":30,"tag":31,"props":2605,"children":2606},{},[2607],{"type":35,"value":2608},"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":2610,"children":2611},{},[2612],{"type":35,"value":2613},"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":2615,"children":2616},{},[2617],{"type":30,"tag":58,"props":2618,"children":2619},{},[2620],{"type":35,"value":2621},"How you'll recognize one:",{"type":30,"tag":86,"props":2623,"children":2624},{},[2625,2630,2635,2640,2645],{"type":30,"tag":90,"props":2626,"children":2627},{},[2628],{"type":35,"value":2629},"They lead with \"How many screens?\" and \"What features do you need?\"",{"type":30,"tag":90,"props":2631,"children":2632},{},[2633],{"type":35,"value":2634},"Pricing is based on scope -- you get a quote tied to a feature list",{"type":30,"tag":90,"props":2636,"children":2637},{},[2638],{"type":35,"value":2639},"The team is assembled for your project, then moves on to the next one",{"type":30,"tag":90,"props":2641,"children":2642},{},[2643],{"type":35,"value":2644},"Communication follows a request-response pattern: you ask, they build",{"type":30,"tag":90,"props":2646,"children":2647},{},[2648],{"type":35,"value":2649},"The engagement has a clear end date tied to delivery",{"type":30,"tag":31,"props":2651,"children":2652},{},[2653],{"type":30,"tag":58,"props":2654,"children":2655},{},[2656],{"type":35,"value":2657},"When this model works:",{"type":30,"tag":31,"props":2659,"children":2660},{},[2661],{"type":35,"value":2662},"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":48,"props":2664,"children":2666},{"id":2665},"what-is-a-product-engineering-team",[2667],{"type":35,"value":2668},"What Is a Product Engineering Team?",{"type":30,"tag":31,"props":2670,"children":2671},{},[2672],{"type":35,"value":2673},"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":2675,"children":2676},{},[2677],{"type":35,"value":2678},"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":2680,"children":2681},{},[2682],{"type":30,"tag":58,"props":2683,"children":2684},{},[2685],{"type":35,"value":2621},{"type":30,"tag":86,"props":2687,"children":2688},{},[2689,2694,2699,2704,2709],{"type":30,"tag":90,"props":2690,"children":2691},{},[2692],{"type":35,"value":2693},"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":90,"props":2695,"children":2696},{},[2697],{"type":35,"value":2698},"They ask about your users, your market, your business model -- not just your tech requirements.",{"type":30,"tag":90,"props":2700,"children":2701},{},[2702],{"type":35,"value":2703},"They suggest scope changes based on what they're learning during development.",{"type":30,"tag":90,"props":2705,"children":2706},{},[2707],{"type":35,"value":2708},"The engineers working on your product stay on your product. They know your codebase, your users, your goals.",{"type":30,"tag":90,"props":2710,"children":2711},{},[2712],{"type":35,"value":2713},"The relationship doesn't end at delivery.",{"type":30,"tag":48,"props":2715,"children":2717},{"id":2716},"_5-practical-differences-that-matter",[2718],{"type":35,"value":2719},"5 Practical Differences That Matter",{"type":30,"tag":31,"props":2721,"children":2722},{},[2723],{"type":35,"value":2724},"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":530,"props":2726,"children":2728},{"id":2727},"_1-how-they-respond-to-your-brief",[2729],{"type":35,"value":2730},"1. How They Respond to Your Brief",{"type":30,"tag":31,"props":2732,"children":2733},{},[2734,2739],{"type":30,"tag":58,"props":2735,"children":2736},{},[2737],{"type":35,"value":2738},"Code shop approach:",{"type":35,"value":2740}," 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":2742,"children":2743},{},[2744,2749],{"type":30,"tag":58,"props":2745,"children":2746},{},[2747],{"type":35,"value":2748},"Product engineering approach:",{"type":35,"value":2750}," 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":2752,"children":2753},{},[2754],{"type":35,"value":2755},"This doesn't mean product teams don't talk about cost. They do. But cost comes after understanding, not before it.",{"type":30,"tag":530,"props":2757,"children":2759},{"id":2758},"_2-what-happens-when-something-isnt-working",[2760],{"type":35,"value":2761},"2. What Happens When Something Isn't Working",{"type":30,"tag":31,"props":2763,"children":2764},{},[2765],{"type":35,"value":2766},"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":2768,"children":2769},{},[2770,2774],{"type":30,"tag":58,"props":2771,"children":2772},{},[2773],{"type":35,"value":2738},{"type":35,"value":2775}," \"That's a change request. Here's the revised estimate.\"",{"type":30,"tag":31,"props":2777,"children":2778},{},[2779,2783],{"type":30,"tag":58,"props":2780,"children":2781},{},[2782],{"type":35,"value":2748},{"type":35,"value":2784}," \"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":2786,"children":2787},{},[2788],{"type":35,"value":2789},"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":530,"props":2791,"children":2793},{"id":2792},"_3-who-works-on-your-project",[2794],{"type":35,"value":2795},"3. Who Works on Your Project",{"type":30,"tag":31,"props":2797,"children":2798},{},[2799,2803],{"type":30,"tag":58,"props":2800,"children":2801},{},[2802],{"type":35,"value":2738},{"type":35,"value":2804}," 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":2806,"children":2807},{},[2808,2812],{"type":30,"tag":58,"props":2809,"children":2810},{},[2811],{"type":35,"value":2748},{"type":35,"value":2813}," 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":2815,"children":2816},{},[2817],{"type":35,"value":2818},"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":530,"props":2820,"children":2822},{"id":2821},"_4-what-you-get-at-the-end",[2823],{"type":35,"value":2824},"4. What You Get at the End",{"type":30,"tag":31,"props":2826,"children":2827},{},[2828,2832],{"type":30,"tag":58,"props":2829,"children":2830},{},[2831],{"type":35,"value":2738},{"type":35,"value":2833}," Delivered code, a final invoice, and a handoff document. The project is complete.",{"type":30,"tag":31,"props":2835,"children":2836},{},[2837,2841,2843,2848],{"type":30,"tag":58,"props":2838,"children":2839},{},[2840],{"type":35,"value":2748},{"type":35,"value":2842}," A production-ready product with documented architecture, clean deployment pipelines, and a team that's ready to keep building with you. ",{"type":30,"tag":389,"props":2844,"children":2845},{"href":818},[2846],{"type":35,"value":2847},"The code is yours, fully handoff-ready",{"type":35,"value":2849},", and you're never locked in.",{"type":30,"tag":31,"props":2851,"children":2852},{},[2853],{"type":35,"value":2854},"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":530,"props":2856,"children":2858},{"id":2857},"_5-what-happens-after-launch",[2859],{"type":35,"value":2860},"5. What Happens After Launch",{"type":30,"tag":31,"props":2862,"children":2863},{},[2864,2868],{"type":30,"tag":58,"props":2865,"children":2866},{},[2867],{"type":35,"value":2738},{"type":35,"value":2869}," If you bought a support contract, you get bug fixes. Otherwise, the engagement is over.",{"type":30,"tag":31,"props":2871,"children":2872},{},[2873,2877],{"type":30,"tag":58,"props":2874,"children":2875},{},[2876],{"type":35,"value":2748},{"type":35,"value":2878}," 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":2880,"children":2881},{},[2882],{"type":35,"value":2883},"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":48,"props":2885,"children":2887},{"id":2886},"how-to-tell-which-one-youre-talking-to",[2888],{"type":35,"value":2889},"How to Tell Which One You're Talking To",{"type":30,"tag":31,"props":2891,"children":2892},{},[2893],{"type":35,"value":2894},"During your evaluation process, here are questions that reveal mindset:",{"type":30,"tag":31,"props":2896,"children":2897},{},[2898,2903],{"type":30,"tag":58,"props":2899,"children":2900},{},[2901],{"type":35,"value":2902},"Ask: \"What would you change about our brief?\"",{"type":35,"value":2904},"\nA code shop will say \"nothing, it looks clear.\" A product team will have opinions.",{"type":30,"tag":31,"props":2906,"children":2907},{},[2908,2913],{"type":30,"tag":58,"props":2909,"children":2910},{},[2911],{"type":35,"value":2912},"Ask: \"Can I meet the engineers who will work on my project?\"",{"type":35,"value":2914},"\nIf the answer is vague or conditional, that tells you something about how the team is structured.",{"type":30,"tag":31,"props":2916,"children":2917},{},[2918,2923],{"type":30,"tag":58,"props":2919,"children":2920},{},[2921],{"type":35,"value":2922},"Ask: \"What happens when scope changes mid-project?\"",{"type":35,"value":2924},"\nListen for whether they frame it as a billing conversation or a product conversation.",{"type":30,"tag":31,"props":2926,"children":2927},{},[2928,2933],{"type":30,"tag":58,"props":2929,"children":2930},{},[2931],{"type":35,"value":2932},"Ask: \"Tell me about a project where you pushed back on the client's requirements.\"",{"type":35,"value":2934},"\nProduct teams will have specific stories. Code shops rarely push back -- that's not their role.",{"type":30,"tag":31,"props":2936,"children":2937},{},[2938,2943],{"type":30,"tag":58,"props":2939,"children":2940},{},[2941],{"type":35,"value":2942},"Ask: \"What happens after delivery?\"",{"type":35,"value":2944},"\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":2946,"children":2947},{},[2948,2953],{"type":30,"tag":58,"props":2949,"children":2950},{},[2951],{"type":35,"value":2952},"Ask: \"How do you handle features that don't work as expected during development?\"",{"type":35,"value":2954},"\nThis one reveals everything. You want to hear about proactive problem-solving, not change request processes.",{"type":30,"tag":31,"props":2956,"children":2957},{},[2958,2963],{"type":30,"tag":58,"props":2959,"children":2960},{},[2961],{"type":35,"value":2962},"Ask: \"Do you have your own product?\"",{"type":35,"value":2964},"\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":530,"props":2966,"children":2968},{"id":2967},"red-flags-that-signal-code-shop-even-when-they-claim-product-thinking",[2969],{"type":35,"value":2970},"Red Flags That Signal \"Code Shop\" Even When They Claim Product Thinking",{"type":30,"tag":86,"props":2972,"children":2973},{},[2974,2979,2984,2989,2994,2999],{"type":30,"tag":90,"props":2975,"children":2976},{},[2977],{"type":35,"value":2978},"They can't name the engineers who will work on your project",{"type":30,"tag":90,"props":2980,"children":2981},{},[2982],{"type":35,"value":2983},"The proposal is pure scope-and-cost with no questions about your users or business",{"type":30,"tag":90,"props":2985,"children":2986},{},[2987],{"type":35,"value":2988},"They agree to everything in your brief without a single pushback",{"type":30,"tag":90,"props":2990,"children":2991},{},[2992],{"type":35,"value":2993},"No mention of post-launch plans, iteration, or long-term partnership",{"type":30,"tag":90,"props":2995,"children":2996},{},[2997],{"type":35,"value":2998},"They list technologies before understanding your problem",{"type":30,"tag":90,"props":3000,"children":3001},{},[3002],{"type":35,"value":3003},"The sales process feels transactional: brief in, quote out, sign here",{"type":30,"tag":530,"props":3005,"children":3007},{"id":3006},"green-flags-that-signal-genuine-product-thinking",[3008],{"type":35,"value":3009},"Green Flags That Signal Genuine Product Thinking",{"type":30,"tag":86,"props":3011,"children":3012},{},[3013,3018,3023,3028,3033,3038],{"type":30,"tag":90,"props":3014,"children":3015},{},[3016],{"type":35,"value":3017},"They ask more questions than they answer in the first meeting",{"type":30,"tag":90,"props":3019,"children":3020},{},[3021],{"type":35,"value":3022},"They recommend cutting scope (even though it means less revenue for them)",{"type":30,"tag":90,"props":3024,"children":3025},{},[3026],{"type":35,"value":3027},"They can introduce you to the specific people who will build your product",{"type":30,"tag":90,"props":3029,"children":3030},{},[3031],{"type":35,"value":3032},"They share stories about long-term client relationships, not just project completions",{"type":30,"tag":90,"props":3034,"children":3035},{},[3036],{"type":35,"value":3037},"They have opinions about your product decisions -- and they're comfortable sharing them",{"type":30,"tag":90,"props":3039,"children":3040},{},[3041],{"type":35,"value":3042},"They've built something of their own",{"type":30,"tag":48,"props":3044,"children":3046},{"id":3045},"why-we-built-acornglobus-as-a-product-engineering-team",[3047],{"type":35,"value":3048},"Why We Built AcornGlobus as a Product Engineering Team",{"type":30,"tag":31,"props":3050,"children":3051},{},[3052],{"type":35,"value":3053},"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":3055,"children":3056},{},[3057,3059,3063],{"type":35,"value":3058},"We built ",{"type":30,"tag":389,"props":3060,"children":3061},{"href":1328},[3062],{"type":35,"value":2434},{"type":35,"value":3064}," -- 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":3066,"children":3067},{},[3068],{"type":35,"value":3069},"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":3071,"children":3072},{},[3073],{"type":35,"value":3074},"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":3076,"children":3077},{},[3078],{"type":35,"value":3079},"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":48,"props":3081,"children":3083},{"id":3082},"when-a-code-shop-is-actually-the-right-choice",[3084],{"type":35,"value":3085},"When a Code Shop Is Actually the Right Choice",{"type":30,"tag":31,"props":3087,"children":3088},{},[3089],{"type":35,"value":3090},"Honesty means admitting that product engineering isn't always what you need.",{"type":30,"tag":31,"props":3092,"children":3093},{},[3094],{"type":30,"tag":58,"props":3095,"children":3096},{},[3097],{"type":35,"value":3098},"A code shop might be right if:",{"type":30,"tag":86,"props":3100,"children":3101},{},[3102,3107,3112,3117,3122],{"type":30,"tag":90,"props":3103,"children":3104},{},[3105],{"type":35,"value":3106},"You have a detailed technical specification and an in-house product manager to own decisions",{"type":30,"tag":90,"props":3108,"children":3109},{},[3110],{"type":35,"value":3111},"You're building a defined feature or module, not a core product",{"type":30,"tag":90,"props":3113,"children":3114},{},[3115],{"type":35,"value":3116},"You have a fixed budget for a fixed scope and don't need ongoing iteration",{"type":30,"tag":90,"props":3118,"children":3119},{},[3120],{"type":35,"value":3121},"The project is a commodity build (marketing site, internal tool with standard requirements)",{"type":30,"tag":90,"props":3123,"children":3124},{},[3125],{"type":35,"value":3126},"You have strong internal technical leadership to manage the relationship",{"type":30,"tag":31,"props":3128,"children":3129},{},[3130],{"type":35,"value":3131},"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":48,"props":3133,"children":3135},{"id":3134},"making-the-right-choice-for-your-project",[3136],{"type":35,"value":3137},"Making the Right Choice for Your Project",{"type":30,"tag":31,"props":3139,"children":3140},{},[3141],{"type":35,"value":3142},"The real question isn't \"code shop or product team?\" It's: what does your project need?",{"type":30,"tag":31,"props":3144,"children":3145},{},[3146],{"type":35,"value":3147},"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":3149,"children":3150},{},[3151,3153,3158],{"type":35,"value":3152},"If you have a ",{"type":30,"tag":389,"props":3154,"children":3155},{"href":4},[3156],{"type":35,"value":3157},"clearly defined project",{"type":35,"value":3159}," with internal oversight and a specific deliverable, a code shop might be the efficient choice.",{"type":30,"tag":31,"props":3161,"children":3162},{},[3163],{"type":35,"value":3164},"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":3166,"children":3167},{},[3168],{"type":35,"value":3169},"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":838,"depth":838,"links":3171},[3172,3173,3174,3181,3185,3186,3187],{"id":2600,"depth":838,"text":2603},{"id":2665,"depth":838,"text":2668},{"id":2716,"depth":838,"text":2719,"children":3175},[3176,3177,3178,3179,3180],{"id":2727,"depth":848,"text":2730},{"id":2758,"depth":848,"text":2761},{"id":2792,"depth":848,"text":2795},{"id":2821,"depth":848,"text":2824},{"id":2857,"depth":848,"text":2860},{"id":2886,"depth":838,"text":2889,"children":3182},[3183,3184],{"id":2967,"depth":848,"text":2970},{"id":3006,"depth":848,"text":3009},{"id":3045,"depth":838,"text":3048},{"id":3082,"depth":838,"text":3085},{"id":3134,"depth":838,"text":3137},"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":3192,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3193,"description":3194,"topic":3195,"author":11,"coverImg":3196,"coverImgAlt":3197,"published":14,"toc":14,"readingTime":3198,"createdAt":3199,"keywords":3200,"body":3207,"_type":852,"_id":3883,"_source":854,"_file":3884,"_stem":3885,"_extension":857},"/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.","MVP Development","/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",[3201,3202,3203,3204,3205,3206],"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":3208,"toc":3869},[3209,3214,3219,3230,3236,3241,3246,3269,3274,3280,3285,3290,3296,3301,3309,3332,3340,3366,3376,3381,3387,3392,3399,3422,3429,3447,3457,3462,3468,3473,3480,3503,3510,3523,3532,3537,3543,3548,3555,3578,3585,3603,3613,3618,3624,3629,3636,3664,3671,3694,3704,3710,3715,3720,3725,3730,3735,3740,3745,3751,3756,3773,3783,3793,3810,3816,3826,3836,3846,3852,3864],{"type":30,"tag":31,"props":3210,"children":3211},{},[3212],{"type":35,"value":3213},"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":3215,"children":3216},{},[3217],{"type":35,"value":3218},"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":3220,"children":3221},{},[3222,3224,3228],{"type":35,"value":3223},"We've shipped MVPs for startups that went on to raise funding. We've also built our own product, ",{"type":30,"tag":389,"props":3225,"children":3226},{"href":1328},[3227],{"type":35,"value":2434},{"type":35,"value":3229},", 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":48,"props":3231,"children":3233},{"id":3232},"why-most-mvp-timeline-guides-dont-help",[3234],{"type":35,"value":3235},"Why Most MVP Timeline Guides Don't Help",{"type":30,"tag":31,"props":3237,"children":3238},{},[3239],{"type":35,"value":3240},"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":3242,"children":3243},{},[3244],{"type":35,"value":3245},"What founders actually want to know:",{"type":30,"tag":86,"props":3247,"children":3248},{},[3249,3254,3259,3264],{"type":30,"tag":90,"props":3250,"children":3251},{},[3252],{"type":35,"value":3253},"When will I see something working?",{"type":30,"tag":90,"props":3255,"children":3256},{},[3257],{"type":35,"value":3258},"What decisions do I need to make, and when?",{"type":30,"tag":90,"props":3260,"children":3261},{},[3262],{"type":35,"value":3263},"What happens when we realize the scope is bigger than we thought?",{"type":30,"tag":90,"props":3265,"children":3266},{},[3267],{"type":35,"value":3268},"What do I get at the end, and what happens next?",{"type":30,"tag":31,"props":3270,"children":3271},{},[3272],{"type":35,"value":3273},"Here's our honest answer to all of those questions.",{"type":30,"tag":48,"props":3275,"children":3277},{"id":3276},"our-8-week-mvp-development-process",[3278],{"type":35,"value":3279},"Our 8-Week MVP Development Process",{"type":30,"tag":31,"props":3281,"children":3282},{},[3283],{"type":35,"value":3284},"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":3286,"children":3287},{},[3288],{"type":35,"value":3289},"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":530,"props":3291,"children":3293},{"id":3292},"weeks-1-2-discovery-and-scoping",[3294],{"type":35,"value":3295},"Weeks 1-2: Discovery and Scoping",{"type":30,"tag":31,"props":3297,"children":3298},{},[3299],{"type":35,"value":3300},"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":3302,"children":3303},{},[3304],{"type":30,"tag":58,"props":3305,"children":3306},{},[3307],{"type":35,"value":3308},"What happens:",{"type":30,"tag":86,"props":3310,"children":3311},{},[3312,3317,3322,3327],{"type":30,"tag":90,"props":3313,"children":3314},{},[3315],{"type":35,"value":3316},"We learn your business. Who are your users? What problem are you solving? Why does this matter?",{"type":30,"tag":90,"props":3318,"children":3319},{},[3320],{"type":35,"value":3321},"We map out every feature you want, then cut it in half. Then cut it again.",{"type":30,"tag":90,"props":3323,"children":3324},{},[3325],{"type":35,"value":3326},"We prioritize ruthlessly: must-have vs. nice-to-have vs. future-version.",{"type":30,"tag":90,"props":3328,"children":3329},{},[3330],{"type":35,"value":3331},"We define the technical architecture -- what stack makes sense for your product and your budget.",{"type":30,"tag":31,"props":3333,"children":3334},{},[3335],{"type":30,"tag":58,"props":3336,"children":3337},{},[3338],{"type":35,"value":3339},"What you get:",{"type":30,"tag":86,"props":3341,"children":3342},{},[3343,3348,3353,3358],{"type":30,"tag":90,"props":3344,"children":3345},{},[3346],{"type":35,"value":3347},"A product brief with defined MVP scope",{"type":30,"tag":90,"props":3349,"children":3350},{},[3351],{"type":35,"value":3352},"Technical architecture document",{"type":30,"tag":90,"props":3354,"children":3355},{},[3356],{"type":35,"value":3357},"A realistic timeline with milestones",{"type":30,"tag":90,"props":3359,"children":3360},{},[3361],{"type":30,"tag":389,"props":3362,"children":3363},{"href":826},[3364],{"type":35,"value":3365},"A cost estimate tied to actual scope",{"type":30,"tag":31,"props":3367,"children":3368},{},[3369,3374],{"type":30,"tag":58,"props":3370,"children":3371},{},[3372],{"type":35,"value":3373},"What this feels like as a founder:",{"type":35,"value":3375},"\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":3377,"children":3378},{},[3379],{"type":35,"value":3380},"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":530,"props":3382,"children":3384},{"id":3383},"week-3-design-and-architecture",[3385],{"type":35,"value":3386},"Week 3: Design and Architecture",{"type":30,"tag":31,"props":3388,"children":3389},{},[3390],{"type":35,"value":3391},"With the scope locked, we design the experience and the system behind it.",{"type":30,"tag":31,"props":3393,"children":3394},{},[3395],{"type":30,"tag":58,"props":3396,"children":3397},{},[3398],{"type":35,"value":3308},{"type":30,"tag":86,"props":3400,"children":3401},{},[3402,3407,3412,3417],{"type":30,"tag":90,"props":3403,"children":3404},{},[3405],{"type":35,"value":3406},"Wireframes and UI design for core user flows",{"type":30,"tag":90,"props":3408,"children":3409},{},[3410],{"type":35,"value":3411},"Database design and API architecture",{"type":30,"tag":90,"props":3413,"children":3414},{},[3415],{"type":35,"value":3416},"Stack selection (we're stack-agnostic -- we pick what's right for your product, not what we're comfortable with)",{"type":30,"tag":90,"props":3418,"children":3419},{},[3420],{"type":35,"value":3421},"Development environment setup, CI/CD pipeline configuration",{"type":30,"tag":31,"props":3423,"children":3424},{},[3425],{"type":30,"tag":58,"props":3426,"children":3427},{},[3428],{"type":35,"value":3339},{"type":30,"tag":86,"props":3430,"children":3431},{},[3432,3437,3442],{"type":30,"tag":90,"props":3433,"children":3434},{},[3435],{"type":35,"value":3436},"Clickable prototype you can share with early users or investors",{"type":30,"tag":90,"props":3438,"children":3439},{},[3440],{"type":35,"value":3441},"Architecture diagram showing how the system fits together",{"type":30,"tag":90,"props":3443,"children":3444},{},[3445],{"type":35,"value":3446},"A development environment ready for sprint 1",{"type":30,"tag":31,"props":3448,"children":3449},{},[3450,3455],{"type":30,"tag":58,"props":3451,"children":3452},{},[3453],{"type":35,"value":3454},"Why this week matters:",{"type":35,"value":3456},"\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":3458,"children":3459},{},[3460],{"type":35,"value":3461},"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":530,"props":3463,"children":3465},{"id":3464},"weeks-4-5-sprint-1-core-features",[3466],{"type":35,"value":3467},"Weeks 4-5: Sprint 1 (Core Features)",{"type":30,"tag":31,"props":3469,"children":3470},{},[3471],{"type":35,"value":3472},"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":3474,"children":3475},{},[3476],{"type":30,"tag":58,"props":3477,"children":3478},{},[3479],{"type":35,"value":3308},{"type":30,"tag":86,"props":3481,"children":3482},{},[3483,3488,3493,3498],{"type":30,"tag":90,"props":3484,"children":3485},{},[3486],{"type":35,"value":3487},"We build the primary user journey end-to-end",{"type":30,"tag":90,"props":3489,"children":3490},{},[3491],{"type":35,"value":3492},"Core features take shape: authentication, data models, primary workflows",{"type":30,"tag":90,"props":3494,"children":3495},{},[3496],{"type":35,"value":3497},"We deploy to a staging environment so you can see progress in real time",{"type":30,"tag":90,"props":3499,"children":3500},{},[3501],{"type":35,"value":3502},"We demo at the end of week 5",{"type":30,"tag":31,"props":3504,"children":3505},{},[3506],{"type":30,"tag":58,"props":3507,"children":3508},{},[3509],{"type":35,"value":3339},{"type":30,"tag":86,"props":3511,"children":3512},{},[3513,3518],{"type":30,"tag":90,"props":3514,"children":3515},{},[3516],{"type":35,"value":3517},"A working build you can click through (not a mockup -- real, functioning software)",{"type":30,"tag":90,"props":3519,"children":3520},{},[3521],{"type":35,"value":3522},"Your first demo: see the product running, test the core flow",{"type":30,"tag":31,"props":3524,"children":3525},{},[3526,3530],{"type":30,"tag":58,"props":3527,"children":3528},{},[3529],{"type":35,"value":3373},{"type":35,"value":3531},"\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":3533,"children":3534},{},[3535],{"type":35,"value":3536},"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":530,"props":3538,"children":3540},{"id":3539},"weeks-6-7-sprint-2-feature-completion",[3541],{"type":35,"value":3542},"Weeks 6-7: Sprint 2 (Feature Completion)",{"type":30,"tag":31,"props":3544,"children":3545},{},[3546],{"type":35,"value":3547},"The second sprint is where the product starts feeling real.",{"type":30,"tag":31,"props":3549,"children":3550},{},[3551],{"type":30,"tag":58,"props":3552,"children":3553},{},[3554],{"type":35,"value":3308},{"type":30,"tag":86,"props":3556,"children":3557},{},[3558,3563,3568,3573],{"type":30,"tag":90,"props":3559,"children":3560},{},[3561],{"type":35,"value":3562},"Remaining features get built: secondary flows, integrations, edge cases",{"type":30,"tag":90,"props":3564,"children":3565},{},[3566],{"type":35,"value":3567},"We connect third-party services (payment processing, email, analytics)",{"type":30,"tag":90,"props":3569,"children":3570},{},[3571],{"type":35,"value":3572},"Internal testing begins -- our QA process catches bugs before you see them",{"type":30,"tag":90,"props":3574,"children":3575},{},[3576],{"type":35,"value":3577},"UI polish and responsive design",{"type":30,"tag":31,"props":3579,"children":3580},{},[3581],{"type":30,"tag":58,"props":3582,"children":3583},{},[3584],{"type":35,"value":3339},{"type":30,"tag":86,"props":3586,"children":3587},{},[3588,3593,3598],{"type":30,"tag":90,"props":3589,"children":3590},{},[3591],{"type":35,"value":3592},"Feature-complete build with all MVP scope implemented",{"type":30,"tag":90,"props":3594,"children":3595},{},[3596],{"type":35,"value":3597},"Internal QA results with bug fixes underway",{"type":30,"tag":90,"props":3599,"children":3600},{},[3601],{"type":35,"value":3602},"A product that looks and feels like what you imagined",{"type":30,"tag":31,"props":3604,"children":3605},{},[3606,3611],{"type":30,"tag":58,"props":3607,"children":3608},{},[3609],{"type":35,"value":3610},"Key decision point:",{"type":35,"value":3612},"\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":3614,"children":3615},{},[3616],{"type":35,"value":3617},"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":530,"props":3619,"children":3621},{"id":3620},"week-8-testing-polish-and-launch",[3622],{"type":35,"value":3623},"Week 8: Testing, Polish, and Launch",{"type":30,"tag":31,"props":3625,"children":3626},{},[3627],{"type":35,"value":3628},"The final push. Everything comes together.",{"type":30,"tag":31,"props":3630,"children":3631},{},[3632],{"type":30,"tag":58,"props":3633,"children":3634},{},[3635],{"type":35,"value":3308},{"type":30,"tag":86,"props":3637,"children":3638},{},[3639,3644,3649,3654,3659],{"type":30,"tag":90,"props":3640,"children":3641},{},[3642],{"type":35,"value":3643},"Final QA pass across devices and browsers",{"type":30,"tag":90,"props":3645,"children":3646},{},[3647],{"type":35,"value":3648},"Bug fixes and performance optimization",{"type":30,"tag":90,"props":3650,"children":3651},{},[3652],{"type":35,"value":3653},"Production deployment setup (cloud infrastructure, monitoring, backups)",{"type":30,"tag":90,"props":3655,"children":3656},{},[3657],{"type":35,"value":3658},"Documentation: deployment process, architecture overview, codebase guide",{"type":30,"tag":90,"props":3660,"children":3661},{},[3662],{"type":35,"value":3663},"Launch",{"type":30,"tag":31,"props":3665,"children":3666},{},[3667],{"type":30,"tag":58,"props":3668,"children":3669},{},[3670],{"type":35,"value":3339},{"type":30,"tag":86,"props":3672,"children":3673},{},[3674,3679,3684,3689],{"type":30,"tag":90,"props":3675,"children":3676},{},[3677],{"type":35,"value":3678},"Production-ready MVP deployed and live",{"type":30,"tag":90,"props":3680,"children":3681},{},[3682],{"type":35,"value":3683},"CI/CD pipeline (updates ship with a single command)",{"type":30,"tag":90,"props":3685,"children":3686},{},[3687],{"type":35,"value":3688},"Technical documentation for your codebase",{"type":30,"tag":90,"props":3690,"children":3691},{},[3692],{"type":35,"value":3693},"Post-launch support for the first 2 weeks",{"type":30,"tag":31,"props":3695,"children":3696},{},[3697,3702],{"type":30,"tag":58,"props":3698,"children":3699},{},[3700],{"type":35,"value":3701},"What launch day feels like:",{"type":35,"value":3703},"\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":48,"props":3705,"children":3707},{"id":3706},"what-happens-after-week-8",[3708],{"type":35,"value":3709},"What Happens After Week 8",{"type":30,"tag":31,"props":3711,"children":3712},{},[3713],{"type":35,"value":3714},"This is where most guides end. And this is where most agencies disappear.",{"type":30,"tag":31,"props":3716,"children":3717},{},[3718],{"type":35,"value":3719},"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":3721,"children":3722},{},[3723],{"type":35,"value":3724},"This is the moment you need your engineering team the most.",{"type":30,"tag":31,"props":3726,"children":3727},{},[3728],{"type":35,"value":3729},"We stay.",{"type":30,"tag":31,"props":3731,"children":3732},{},[3733],{"type":35,"value":3734},"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":3736,"children":3737},{},[3738],{"type":35,"value":3739},"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":3741,"children":3742},{},[3743],{"type":35,"value":3744},"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":48,"props":3746,"children":3748},{"id":3747},"how-to-set-your-mvp-up-for-success",[3749],{"type":35,"value":3750},"How to Set Your MVP Up for Success",{"type":30,"tag":31,"props":3752,"children":3753},{},[3754],{"type":35,"value":3755},"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":3757,"children":3758},{},[3759,3764,3766,3771],{"type":30,"tag":58,"props":3760,"children":3761},{},[3762],{"type":35,"value":3763},"Validate before you build.",{"type":35,"value":3765}," 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":389,"props":3767,"children":3768},{"href":826},[3769],{"type":35,"value":3770},"The cost of building an MVP",{"type":35,"value":3772}," is significant -- make sure you're solving a real problem first.",{"type":30,"tag":31,"props":3774,"children":3775},{},[3776,3781],{"type":30,"tag":58,"props":3777,"children":3778},{},[3779],{"type":35,"value":3780},"Be honest about your budget and timeline.",{"type":35,"value":3782}," 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":3784,"children":3785},{},[3786,3791],{"type":30,"tag":58,"props":3787,"children":3788},{},[3789],{"type":35,"value":3790},"Choose a partner who will tell you \"no.\"",{"type":35,"value":3792}," 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":3794,"children":3795},{},[3796,3801,3803,3808],{"type":30,"tag":58,"props":3797,"children":3798},{},[3799],{"type":35,"value":3800},"Plan for what comes after launch.",{"type":35,"value":3802}," Your MVP is the beginning, not the end. Budget for iteration. Plan for user feedback loops. ",{"type":30,"tag":389,"props":3804,"children":3805},{"href":818},[3806],{"type":35,"value":3807},"Think about your team structure",{"type":35,"value":3809}," beyond launch day.",{"type":30,"tag":48,"props":3811,"children":3813},{"id":3812},"what-this-process-is-not",[3814],{"type":35,"value":3815},"What This Process Is Not",{"type":30,"tag":31,"props":3817,"children":3818},{},[3819,3824],{"type":30,"tag":58,"props":3820,"children":3821},{},[3822],{"type":35,"value":3823},"Not a throwaway prototype.",{"type":35,"value":3825}," 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":3827,"children":3828},{},[3829,3834],{"type":30,"tag":58,"props":3830,"children":3831},{},[3832],{"type":35,"value":3833},"Not a waterfall project.",{"type":35,"value":3835}," You see working software every 2 weeks. You give feedback. We adjust. It's a conversation, not a handoff.",{"type":30,"tag":31,"props":3837,"children":3838},{},[3839,3844],{"type":30,"tag":58,"props":3840,"children":3841},{},[3842],{"type":35,"value":3843},"Not a transaction.",{"type":35,"value":3845}," 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":48,"props":3847,"children":3849},{"id":3848},"ready-to-talk-about-your-mvp",[3850],{"type":35,"value":3851},"Ready to Talk About Your MVP?",{"type":30,"tag":31,"props":3853,"children":3854},{},[3855,3857,3862],{"type":35,"value":3856},"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":389,"props":3858,"children":3859},{"href":826},[3860],{"type":35,"value":3861},"what it might cost",{"type":35,"value":3863}," -- no commitment, no pressure.",{"type":30,"tag":31,"props":3865,"children":3866},{},[3867],{"type":35,"value":3868},"The first step is always a conversation. And if we're not the right fit, we'll tell you that too.",{"title":7,"searchDepth":838,"depth":838,"links":3870},[3871,3872,3879,3880,3881,3882],{"id":3232,"depth":838,"text":3235},{"id":3276,"depth":838,"text":3279,"children":3873},[3874,3875,3876,3877,3878],{"id":3292,"depth":848,"text":3295},{"id":3383,"depth":848,"text":3386},{"id":3464,"depth":848,"text":3467},{"id":3539,"depth":848,"text":3542},{"id":3620,"depth":848,"text":3623},{"id":3706,"depth":838,"text":3709},{"id":3747,"depth":838,"text":3750},{"id":3812,"depth":838,"text":3815},{"id":3848,"depth":838,"text":3851},"content:blog:mvp-development-process.md","blog/mvp-development-process.md","blog/mvp-development-process",{"_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":3887,"body":3888,"_type":852,"_id":853,"_source":854,"_file":855,"_stem":856,"_extension":857},[18,19,20,21,22,23,24,25],{"type":27,"children":3889,"toc":4525},[3890,3894,3898,3902,3906,3914,3922,3930,3941,3945,3949,4135,4139,4143,4151,4159,4167,4175,4184,4188,4192,4200,4208,4216,4224,4233,4237,4241,4249,4257,4265,4279,4283,4287,4295,4303,4311,4315,4323,4331,4339,4343,4347,4354,4365,4372,4383,4390,4401,4408,4419,4427,4431,4435,4439,4443,4478,4492,4501,4504],{"type":30,"tag":31,"props":3891,"children":3892},{},[3893],{"type":35,"value":36},{"type":30,"tag":31,"props":3895,"children":3896},{},[3897],{"type":35,"value":41},{"type":30,"tag":31,"props":3899,"children":3900},{},[3901],{"type":35,"value":46},{"type":30,"tag":48,"props":3903,"children":3904},{"id":50},[3905],{"type":35,"value":53},{"type":30,"tag":31,"props":3907,"children":3908},{},[3909,3913],{"type":30,"tag":58,"props":3910,"children":3911},{},[3912],{"type":35,"value":62},{"type":35,"value":64},{"type":30,"tag":31,"props":3915,"children":3916},{},[3917,3921],{"type":30,"tag":58,"props":3918,"children":3919},{},[3920],{"type":35,"value":72},{"type":35,"value":74},{"type":30,"tag":31,"props":3923,"children":3924},{},[3925,3926],{"type":35,"value":79},{"type":30,"tag":58,"props":3927,"children":3928},{},[3929],{"type":35,"value":84},{"type":30,"tag":86,"props":3931,"children":3932},{},[3933,3937],{"type":30,"tag":90,"props":3934,"children":3935},{},[3936],{"type":35,"value":94},{"type":30,"tag":90,"props":3938,"children":3939},{},[3940],{"type":35,"value":99},{"type":30,"tag":48,"props":3942,"children":3943},{"id":102},[3944],{"type":35,"value":105},{"type":30,"tag":31,"props":3946,"children":3947},{},[3948],{"type":35,"value":110},{"type":30,"tag":112,"props":3950,"children":3951},{},[3952,3970],{"type":30,"tag":116,"props":3953,"children":3954},{},[3955],{"type":30,"tag":120,"props":3956,"children":3957},{},[3958,3962,3966],{"type":30,"tag":124,"props":3959,"children":3960},{},[3961],{"type":35,"value":128},{"type":30,"tag":124,"props":3963,"children":3964},{},[3965],{"type":35,"value":133},{"type":30,"tag":124,"props":3967,"children":3968},{},[3969],{"type":35,"value":72},{"type":30,"tag":139,"props":3971,"children":3972},{},[3973,3991,4009,4027,4045,4063,4081,4099,4117],{"type":30,"tag":120,"props":3974,"children":3975},{},[3976,3983,3987],{"type":30,"tag":146,"props":3977,"children":3978},{},[3979],{"type":30,"tag":58,"props":3980,"children":3981},{},[3982],{"type":35,"value":153},{"type":30,"tag":146,"props":3984,"children":3985},{},[3986],{"type":35,"value":158},{"type":30,"tag":146,"props":3988,"children":3989},{},[3990],{"type":35,"value":163},{"type":30,"tag":120,"props":3992,"children":3993},{},[3994,4001,4005],{"type":30,"tag":146,"props":3995,"children":3996},{},[3997],{"type":30,"tag":58,"props":3998,"children":3999},{},[4000],{"type":35,"value":174},{"type":30,"tag":146,"props":4002,"children":4003},{},[4004],{"type":35,"value":179},{"type":30,"tag":146,"props":4006,"children":4007},{},[4008],{"type":35,"value":184},{"type":30,"tag":120,"props":4010,"children":4011},{},[4012,4019,4023],{"type":30,"tag":146,"props":4013,"children":4014},{},[4015],{"type":30,"tag":58,"props":4016,"children":4017},{},[4018],{"type":35,"value":195},{"type":30,"tag":146,"props":4020,"children":4021},{},[4022],{"type":35,"value":200},{"type":30,"tag":146,"props":4024,"children":4025},{},[4026],{"type":35,"value":205},{"type":30,"tag":120,"props":4028,"children":4029},{},[4030,4037,4041],{"type":30,"tag":146,"props":4031,"children":4032},{},[4033],{"type":30,"tag":58,"props":4034,"children":4035},{},[4036],{"type":35,"value":216},{"type":30,"tag":146,"props":4038,"children":4039},{},[4040],{"type":35,"value":221},{"type":30,"tag":146,"props":4042,"children":4043},{},[4044],{"type":35,"value":226},{"type":30,"tag":120,"props":4046,"children":4047},{},[4048,4055,4059],{"type":30,"tag":146,"props":4049,"children":4050},{},[4051],{"type":30,"tag":58,"props":4052,"children":4053},{},[4054],{"type":35,"value":237},{"type":30,"tag":146,"props":4056,"children":4057},{},[4058],{"type":35,"value":242},{"type":30,"tag":146,"props":4060,"children":4061},{},[4062],{"type":35,"value":247},{"type":30,"tag":120,"props":4064,"children":4065},{},[4066,4073,4077],{"type":30,"tag":146,"props":4067,"children":4068},{},[4069],{"type":30,"tag":58,"props":4070,"children":4071},{},[4072],{"type":35,"value":258},{"type":30,"tag":146,"props":4074,"children":4075},{},[4076],{"type":35,"value":263},{"type":30,"tag":146,"props":4078,"children":4079},{},[4080],{"type":35,"value":268},{"type":30,"tag":120,"props":4082,"children":4083},{},[4084,4091,4095],{"type":30,"tag":146,"props":4085,"children":4086},{},[4087],{"type":30,"tag":58,"props":4088,"children":4089},{},[4090],{"type":35,"value":279},{"type":30,"tag":146,"props":4092,"children":4093},{},[4094],{"type":35,"value":284},{"type":30,"tag":146,"props":4096,"children":4097},{},[4098],{"type":35,"value":289},{"type":30,"tag":120,"props":4100,"children":4101},{},[4102,4109,4113],{"type":30,"tag":146,"props":4103,"children":4104},{},[4105],{"type":30,"tag":58,"props":4106,"children":4107},{},[4108],{"type":35,"value":300},{"type":30,"tag":146,"props":4110,"children":4111},{},[4112],{"type":35,"value":305},{"type":30,"tag":146,"props":4114,"children":4115},{},[4116],{"type":35,"value":310},{"type":30,"tag":120,"props":4118,"children":4119},{},[4120,4127,4131],{"type":30,"tag":146,"props":4121,"children":4122},{},[4123],{"type":30,"tag":58,"props":4124,"children":4125},{},[4126],{"type":35,"value":321},{"type":30,"tag":146,"props":4128,"children":4129},{},[4130],{"type":35,"value":326},{"type":30,"tag":146,"props":4132,"children":4133},{},[4134],{"type":35,"value":331},{"type":30,"tag":48,"props":4136,"children":4137},{"id":334},[4138],{"type":35,"value":337},{"type":30,"tag":31,"props":4140,"children":4141},{},[4142],{"type":35,"value":342},{"type":30,"tag":31,"props":4144,"children":4145},{},[4146,4150],{"type":30,"tag":58,"props":4147,"children":4148},{},[4149],{"type":35,"value":350},{"type":35,"value":352},{"type":30,"tag":31,"props":4152,"children":4153},{},[4154,4158],{"type":30,"tag":58,"props":4155,"children":4156},{},[4157],{"type":35,"value":360},{"type":35,"value":362},{"type":30,"tag":31,"props":4160,"children":4161},{},[4162,4166],{"type":30,"tag":58,"props":4163,"children":4164},{},[4165],{"type":35,"value":370},{"type":35,"value":372},{"type":30,"tag":31,"props":4168,"children":4169},{},[4170,4174],{"type":30,"tag":58,"props":4171,"children":4172},{},[4173],{"type":35,"value":380},{"type":35,"value":382},{"type":30,"tag":31,"props":4176,"children":4177},{},[4178,4179,4183],{"type":35,"value":387},{"type":30,"tag":389,"props":4180,"children":4181},{"href":391},[4182],{"type":35,"value":394},{"type":35,"value":396},{"type":30,"tag":48,"props":4185,"children":4186},{"id":399},[4187],{"type":35,"value":402},{"type":30,"tag":31,"props":4189,"children":4190},{},[4191],{"type":35,"value":407},{"type":30,"tag":31,"props":4193,"children":4194},{},[4195,4199],{"type":30,"tag":58,"props":4196,"children":4197},{},[4198],{"type":35,"value":415},{"type":35,"value":417},{"type":30,"tag":31,"props":4201,"children":4202},{},[4203,4207],{"type":30,"tag":58,"props":4204,"children":4205},{},[4206],{"type":35,"value":425},{"type":35,"value":427},{"type":30,"tag":31,"props":4209,"children":4210},{},[4211,4215],{"type":30,"tag":58,"props":4212,"children":4213},{},[4214],{"type":35,"value":435},{"type":35,"value":437},{"type":30,"tag":31,"props":4217,"children":4218},{},[4219,4223],{"type":30,"tag":58,"props":4220,"children":4221},{},[4222],{"type":35,"value":445},{"type":35,"value":447},{"type":30,"tag":31,"props":4225,"children":4226},{},[4227,4228,4232],{"type":35,"value":452},{"type":30,"tag":389,"props":4229,"children":4230},{"href":455},[4231],{"type":35,"value":458},{"type":35,"value":460},{"type":30,"tag":48,"props":4234,"children":4235},{"id":463},[4236],{"type":35,"value":466},{"type":30,"tag":31,"props":4238,"children":4239},{},[4240],{"type":35,"value":471},{"type":30,"tag":31,"props":4242,"children":4243},{},[4244,4248],{"type":30,"tag":58,"props":4245,"children":4246},{},[4247],{"type":35,"value":479},{"type":35,"value":481},{"type":30,"tag":31,"props":4250,"children":4251},{},[4252,4256],{"type":30,"tag":58,"props":4253,"children":4254},{},[4255],{"type":35,"value":489},{"type":35,"value":491},{"type":30,"tag":31,"props":4258,"children":4259},{},[4260,4264],{"type":30,"tag":58,"props":4261,"children":4262},{},[4263],{"type":35,"value":499},{"type":35,"value":501},{"type":30,"tag":31,"props":4266,"children":4267},{},[4268,4269,4273,4274,4278],{"type":35,"value":506},{"type":30,"tag":389,"props":4270,"children":4271},{"href":509},[4272],{"type":35,"value":512},{"type":35,"value":514},{"type":30,"tag":389,"props":4275,"children":4276},{"href":517},[4277],{"type":35,"value":520},{"type":35,"value":522},{"type":30,"tag":48,"props":4280,"children":4281},{"id":525},[4282],{"type":35,"value":528},{"type":30,"tag":530,"props":4284,"children":4285},{"id":532},[4286],{"type":35,"value":535},{"type":30,"tag":31,"props":4288,"children":4289},{},[4290,4294],{"type":30,"tag":58,"props":4291,"children":4292},{},[4293],{"type":35,"value":543},{"type":35,"value":545},{"type":30,"tag":31,"props":4296,"children":4297},{},[4298,4302],{"type":30,"tag":58,"props":4299,"children":4300},{},[4301],{"type":35,"value":553},{"type":35,"value":555},{"type":30,"tag":31,"props":4304,"children":4305},{},[4306,4310],{"type":30,"tag":58,"props":4307,"children":4308},{},[4309],{"type":35,"value":563},{"type":35,"value":565},{"type":30,"tag":530,"props":4312,"children":4313},{"id":568},[4314],{"type":35,"value":571},{"type":30,"tag":31,"props":4316,"children":4317},{},[4318,4322],{"type":30,"tag":58,"props":4319,"children":4320},{},[4321],{"type":35,"value":579},{"type":35,"value":581},{"type":30,"tag":31,"props":4324,"children":4325},{},[4326,4330],{"type":30,"tag":58,"props":4327,"children":4328},{},[4329],{"type":35,"value":589},{"type":35,"value":591},{"type":30,"tag":31,"props":4332,"children":4333},{},[4334,4338],{"type":30,"tag":58,"props":4335,"children":4336},{},[4337],{"type":35,"value":599},{"type":35,"value":601},{"type":30,"tag":48,"props":4340,"children":4341},{"id":604},[4342],{"type":35,"value":607},{"type":30,"tag":31,"props":4344,"children":4345},{},[4346],{"type":35,"value":612},{"type":30,"tag":31,"props":4348,"children":4349},{},[4350],{"type":30,"tag":58,"props":4351,"children":4352},{},[4353],{"type":35,"value":620},{"type":30,"tag":86,"props":4355,"children":4356},{},[4357,4361],{"type":30,"tag":90,"props":4358,"children":4359},{},[4360],{"type":35,"value":628},{"type":30,"tag":90,"props":4362,"children":4363},{},[4364],{"type":35,"value":633},{"type":30,"tag":31,"props":4366,"children":4367},{},[4368],{"type":30,"tag":58,"props":4369,"children":4370},{},[4371],{"type":35,"value":641},{"type":30,"tag":86,"props":4373,"children":4374},{},[4375,4379],{"type":30,"tag":90,"props":4376,"children":4377},{},[4378],{"type":35,"value":649},{"type":30,"tag":90,"props":4380,"children":4381},{},[4382],{"type":35,"value":654},{"type":30,"tag":31,"props":4384,"children":4385},{},[4386],{"type":30,"tag":58,"props":4387,"children":4388},{},[4389],{"type":35,"value":662},{"type":30,"tag":86,"props":4391,"children":4392},{},[4393,4397],{"type":30,"tag":90,"props":4394,"children":4395},{},[4396],{"type":35,"value":670},{"type":30,"tag":90,"props":4398,"children":4399},{},[4400],{"type":35,"value":675},{"type":30,"tag":31,"props":4402,"children":4403},{},[4404],{"type":30,"tag":58,"props":4405,"children":4406},{},[4407],{"type":35,"value":683},{"type":30,"tag":86,"props":4409,"children":4410},{},[4411,4415],{"type":30,"tag":90,"props":4412,"children":4413},{},[4414],{"type":35,"value":691},{"type":30,"tag":90,"props":4416,"children":4417},{},[4418],{"type":35,"value":696},{"type":30,"tag":31,"props":4420,"children":4421},{},[4422,4426],{"type":30,"tag":58,"props":4423,"children":4424},{},[4425],{"type":35,"value":704},{"type":35,"value":706},{"type":30,"tag":31,"props":4428,"children":4429},{},[4430],{"type":35,"value":711},{"type":30,"tag":48,"props":4432,"children":4433},{"id":714},[4434],{"type":35,"value":717},{"type":30,"tag":31,"props":4436,"children":4437},{},[4438],{"type":35,"value":722},{"type":30,"tag":31,"props":4440,"children":4441},{},[4442],{"type":35,"value":727},{"type":30,"tag":86,"props":4444,"children":4445},{},[4446,4454,4462,4470],{"type":30,"tag":90,"props":4447,"children":4448},{},[4449,4453],{"type":30,"tag":58,"props":4450,"children":4451},{},[4452],{"type":35,"value":738},{"type":35,"value":740},{"type":30,"tag":90,"props":4455,"children":4456},{},[4457,4461],{"type":30,"tag":58,"props":4458,"children":4459},{},[4460],{"type":35,"value":748},{"type":35,"value":750},{"type":30,"tag":90,"props":4463,"children":4464},{},[4465,4469],{"type":30,"tag":58,"props":4466,"children":4467},{},[4468],{"type":35,"value":758},{"type":35,"value":760},{"type":30,"tag":90,"props":4471,"children":4472},{},[4473,4477],{"type":30,"tag":58,"props":4474,"children":4475},{},[4476],{"type":35,"value":768},{"type":35,"value":770},{"type":30,"tag":31,"props":4479,"children":4480},{},[4481,4482,4486,4487,4491],{"type":35,"value":775},{"type":30,"tag":389,"props":4483,"children":4484},{"href":391},[4485],{"type":35,"value":780},{"type":35,"value":782},{"type":30,"tag":389,"props":4488,"children":4489},{"href":455},[4490],{"type":35,"value":787},{"type":35,"value":789},{"type":30,"tag":31,"props":4493,"children":4494},{},[4495,4496,4500],{"type":35,"value":794},{"type":30,"tag":389,"props":4497,"children":4498},{"href":797},[4499],{"type":35,"value":800},{"type":35,"value":802},{"type":30,"tag":804,"props":4502,"children":4503},{},[],{"type":30,"tag":31,"props":4505,"children":4506},{},[4507],{"type":30,"tag":811,"props":4508,"children":4509},{},[4510,4511,4515,4516,4520,4521],{"type":35,"value":815},{"type":30,"tag":389,"props":4512,"children":4513},{"href":818},[4514],{"type":35,"value":821},{"type":35,"value":823},{"type":30,"tag":389,"props":4517,"children":4518},{"href":826},[4519],{"type":35,"value":829},{"type":35,"value":823},{"type":30,"tag":389,"props":4522,"children":4523},{"href":833},[4524],{"type":35,"value":836},{"title":7,"searchDepth":838,"depth":838,"links":4526},[4527,4528,4529,4530,4531,4532,4536,4537],{"id":50,"depth":838,"text":53},{"id":102,"depth":838,"text":105},{"id":334,"depth":838,"text":337},{"id":399,"depth":838,"text":402},{"id":463,"depth":838,"text":466},{"id":525,"depth":838,"text":528,"children":4533},[4534,4535],{"id":532,"depth":848,"text":535},{"id":568,"depth":848,"text":571},{"id":604,"depth":838,"text":607},{"id":714,"depth":838,"text":717},1775731560906]