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