---
title: "How to choose a software development agency"
canonical: https://wavect.io/software-development-guide/how-to-choose-a-software-agency/
language: en
description: "Run every agency through five tests. Do they challenge your scope instead of just quoting it? Do the senior people who pitched stay after the sale? Does the …"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

Choosing guide

# How to choose a software development agency

Run every agency through five tests. Do they challenge your scope instead of just quoting it? Do the senior people who pitched stay after the sale? Does the contract match how certain your scope actually is? Can they show software they shipped, not just slides? And do they leave you code your own team can run without them? An agency that passes all five is rare. Most fail on the second or the last.

Short answer

Judge agencies on five tests: scope challenge, senior continuity, contract fit, shipped proof, and clean handover.

Best for

- Founders hiring an agency for the first time
- Buyers comparing several pitches that all sound the same
- Teams that need to own the code afterward
- Anyone burned by a previous agency

Not for

- Buyers who only care about the lowest bid
- Quick one-off tasks better suited to a freelancer
- Teams with no internal owner for the relationship

// 01

## Compare the options

What to look for, and what should make you walk.

| Test | Green flag | Red flag |
| --- | --- | --- |
| Scope | They challenge and tighten your scope | They quote your scope back without question |
| Senior continuity | The people who pitch do the work | Seniors sell, juniors build |
| Contract | Fixed price for locked scope, retainer for uncertain | One rigid contract for every project |
| Proof | Live products and case studies you can inspect | Slides, logos, and vague claims |
| Handover | You get clean code and docs your team can run | Lock-in: only they can maintain it |
| Communication | Direct answers, named owner | Account manager filters every reply |

// 02

## Where Wavect lands on this

The pitch is the easy part. Every agency can write a deck. The five tests exist to find out what happens after you sign.

The two that trip up most agencies: senior continuity and handover. Seniors win the deal, then juniors do the work. And too many agencies build software only they can maintain, so you cannot leave. Ask directly who writes the code and what the handover includes. Vague answers are the answer.

We staff senior people end to end, and we hand over code your team can run without us. If an agency cannot tell you exactly who builds and how you take ownership, that is the signal. If you are weighing us against a typical [dev shop, here is how Wavect compares](/compare/wavect-vs-dev-agencies/).

Still weighing a three person studio against a forty person shop? Size is a separate test from capability, and the delivery research does not favour the bigger org. Our breakdown of [how big your software partner should be](/blog/micro-agency-vs-mid-size-software-partner-2026/) covers the team-size evidence and the four clauses that make a small partner safe to hire.

Already shortlisted the agency and received its paperwork? The decision has moved from **who to hire** to **what you are signing**. Use the [software agency proposal teardown](/blog/software-agency-proposal-teardown/) to inspect the twelve clauses that move price, scope, security and ownership.

// 03

## Cost, risk and timeline

First step Discovery sprint From EUR 3,500 to see how an agency actually scopes

Biggest risk Bait and switch Seniors sell, juniors build the real thing

Track record 75+ products shipped Ask for live proof, not slides

// 04

## Where this usually goes wrong

- Buying the pitch instead of the team that does the work
- Accepting a scope quote with no challenge or questions
- Signing a rigid contract when the scope is still moving
- Trusting logos and slides instead of inspecting shipped products
- Ignoring handover until the project ends and you are locked in
- Letting an account manager sit between you and the engineers

// 05

## The checklist

Put every agency through this before you sign.

- Ask them to challenge your scope in the first call
- Confirm the people who pitched will do the build
- Match the contract to your certainty: fixed or retainer
- Ask to inspect a live product they shipped
- Request the case study facts and timelines in writing
- Ask exactly what the handover includes
- Identify a named technical owner you can reach directly
- Walk if the answers stay vague

// 06

## What this looks like in our work

These are products you can inspect, with real timelines, not logos on a slide.

### [PromptID](/case-studies/promptid/)
- **Status:** Live
- **Outcome:** 6 weeks - 0 to Production
- **Summary:** AI-native assessment platform, 0→production in 6 weeks under compressed market pressure.
- **Stack:** NestJS, NextJS, LangChain

### [Twinsoft AI](/case-studies/twinsoft-ai/)
- **Status:** Live
- **Outcome:** 2 weeks - To Sellable MVP
- **Summary:** Took a vibe-coded prototype to enterprise pilot-ready, no shortcuts.
- **Stack:** Python / Flask, LLMs, Terraform

### [LivLive](/case-studies/livlive/)
- **Status:** Live
- **Outcome:** +1,000 - Concurrent Users
- **Summary:** AR-RWA platform: $2M+ raised through the product, 1,000+ concurrent users, six weeks flat.
- **Stack:** Solidity, Typescript, React

These are selected projects, not our full portfolio. We have shipped 75+ products since 2018.

// 07

## When this fits, and when it does not

// 01

### When Wavect is the right fit

- You want senior people on the work, not just the pitch
- You expect an agency to challenge your scope
- You need to own the code afterward
- You value direct answers over account-manager filtering

// 02

### When we are not the fit

- You are choosing on lowest bid alone
- The job is a small one-off a freelancer can handle
- You have no internal owner for the relationship

If you are still weighing an agency against other options, compare them head to head next.

// 08

## Related services & reading

- [SERVICE Software Development](/services/software-development/)
- [SERVICE Fractional CTO](/services/fractional-cto/)
- [SERVICE Software Quality Assurance](/services/software-quality-assurance/)
- [GUIDE Freelancer vs agency vs in-house](/software-development-guide/freelancer-vs-agency-vs-in-house/)
- [GUIDE Software handover checklist](/software-development-guide/software-handover-checklist/)
- [GUIDE Software development cost in Austria](/software-development-guide/software-development-cost-austria/)
- [CASE STUDY Twinsoft AI](/case-studies/twinsoft-ai/)
- [CASE STUDY PromptID](/case-studies/promptid/)

// 09

## FAQs

### How do I choose a software development agency?

Run five tests: do they challenge your scope, do senior people stay after the sale, does the contract match your uncertainty, can they show shipped products, and do they leave you code your team can run. Pass all five is rare.

### What are the red flags when hiring a software agency?

Seniors who sell but juniors who build, scope quoted back with no challenge, slides instead of live products, one rigid contract for every project, and a handover nobody will explain.

### What questions should I ask a software agency?

Who actually writes the code? Can I inspect a product you shipped? What does the handover include? Why this contract for my scope? Who is my named technical contact?

### How do I avoid getting locked into an agency?

Ask what the handover includes before you sign. You should get clean code and docs your own team can run. If only they can maintain it, that is lock-in by design.

### Should I pick the cheapest agency?

No. Low bids usually mean junior hands and rework. Judge on the five tests and total cost to a working product, not the headline price.

Last reviewed: 2026-06-26 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-06-26",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-26",
      "url": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/#article",
      "@type": "Article",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-06-26",
      "datePublished": "2026-06-26",
      "description": "Run every agency through five tests. Do they challenge your scope instead of just quoting it? Do the senior people who pitched stay after the sale? Does the contract match how certain your scope actually is? Can they show software they shipped, not just slides? And do they leave you code your own team can run without them? An agency that passes all five is rare. Most fail on the second or the last.",
      "headline": "How to choose a software development agency",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-26",
      "mainEntityOfPage": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/#webpage",
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        {
          "@type": "Service",
          "name": "Software Development",
          "url": "https://wavect.io/services/software-development/"
        },
        {
          "@type": "Service",
          "name": "Fractional CTO",
          "url": "https://wavect.io/services/fractional-cto/"
        },
        {
          "@type": "Service",
          "name": "Software Quality Assurance",
          "url": "https://wavect.io/services/software-quality-assurance/"
        }
      ],
      "name": "How to choose a software development agency",
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "reviewedBy": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".cmp-hero__headline",
          ".cmp-hero__lead"
        ]
      },
      "url": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/software-development-guide/",
          "name": "Software development guide",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/software-development-guide/how-to-choose-a-software-agency/",
          "name": "How to choose a software development agency",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Run five tests: do they challenge your scope, do senior people stay after the sale, does the contract match your uncertainty, can they show shipped products, and do they leave you code your team can run. Pass all five is rare."
      },
      "name": "How do I choose a software development agency?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Seniors who sell but juniors who build, scope quoted back with no challenge, slides instead of live products, one rigid contract for every project, and a handover nobody will explain."
      },
      "name": "What are the red flags when hiring a software agency?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Who actually writes the code? Can I inspect a product you shipped? What does the handover include? Why this contract for my scope? Who is my named technical contact?"
      },
      "name": "What questions should I ask a software agency?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ask what the handover includes before you sign. You should get clean code and docs your own team can run. If only they can maintain it, that is lock-in by design."
      },
      "name": "How do I avoid getting locked into an agency?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Low bids usually mean junior hands and rework. Judge on the five tests and total cost to a working product, not the headline price."
      },
      "name": "Should I pick the cheapest agency?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
