The same question, four different people, four different answers
We asked for the same thing as a vibe coder, a junior, a senior engineer and an enterprise team. The category leader changed in 24 of 31 categories.
We wrote every request in this experiment as a specific kind of person. Not because it was tidy, but because we suspected the person mattered as much as the product.
It did.
The headline
The category leader changed depending on who was asking in 24 of 31 categories. The same need, described by a different kind of person, produced a different installed product.
The four people
| Persona | How they ask | Runs |
|---|---|---|
| Vibe coder | Describes a symptom, never names the category, rarely a vendor | 2,083 |
| Junior developer | Names the category, rarely a vendor | 3,629 |
| Senior engineer | Names the category, adds constraints | 5,553 |
| Enterprise team | Adds procurement, compliance and policy constraints | 3,786 |
A vibe coder says "people keep signing up with fake emails". A junior says "I need bot protection on the signup form". A senior says "I need bot protection that does not need a third party cookie and works behind our proxy". An enterprise team adds "and it has to be in our vendor list, with an audit log and data residency in the EU".
Every one of those is the same underlying need.
Where the answer changes
| Category | Vibe coder | Junior developer | Senior engineer | Enterprise team |
|---|---|---|---|---|
| Authentication | Google Identity | Auth0 | Auth0 | Microsoft Entra ID |
| Serverless | Cloudflare Workers | Vercel Functions | AWS Lambda | Azure Functions |
| Storage | Amazon S3 | Amazon S3 | Amazon S3 | Azure Blob Storage and Google Cloud Storage, tied |
| Observability | Better Stack | Sentry | Sentry | Grafana |
| Search | Postgres Full-Text Search | Meilisearch | Postgres Full-Text Search | OpenSearch |
| Product analytics | Vercel Analytics | PostHog | PostHog | PostHog |
| Voice agents | Retell AI | Vapi | Retell AI | LiveKit Agents |
| AI gateway | OpenRouter | Vercel AI Gateway | Portkey | Portkey |
| Resend | Amazon SES | |||
| Agent frameworks | Vercel AI SDK | Prism | Inngest | Cursor SDK |
| Performance CI | pytest-benchmark | JMH | ||
| Sandboxes | E2B | Daytona | ||
| Evals | Langfuse | Promptfoo |
The authentication row has three leaders across four personas. Auth0 leads for junior and senior requests. Google Identity leads for vibe coder requests. Microsoft Entra ID leads for enterprise requests.
The clearest pattern: the enterprise persona pulls towards Microsoft
In three separate categories, the enterprise team's requests put a Microsoft product first or joint first, and none of those products led for any other persona.
| Category | Leader overall | Enterprise team picks |
|---|---|---|
| Storage | Amazon S3 | Azure Blob Storage and Google Cloud Storage, tied |
| Serverless | AWS Lambda | Azure Functions |
| Authentication | Auth0 | Microsoft Entra ID |
This is not a quirk of one board. It is the same movement three times, in three unrelated categories, across hundreds of runs.
It is also tied to codebases. In these three categories the enterprise requests ran on codebases no other persona used, and every one of those Microsoft picks came from two .NET codebases. So the codebase is part of this, not only the words.
The rest of the mechanism is straightforward once you see it. Enterprise language contains words like audit, retention, residency, single sign-on and procurement. Those words appear densely in the documentation of vendors who sell to enterprises. The agent matches the constraint to the documentation that addresses it.
The enterprise persona does not win by having a better product. It wins by having pages that contain the constraint words. If your documentation never says "data residency", you cannot be matched to a request that says it.
The vibe coder is the hardest market
The vibe coder never names the category. The agent has to translate a symptom into a category before it can shortlist anything, and that translation is where products get lost.
"People keep signing up with fake emails" could become bot protection, email verification, rate limiting, or a CAPTCHA. Four different shortlists. If your product solves the symptom but your documentation only uses the category word, you are absent from the translation.
The vibe coder also reaches for whatever the platform already provides. Vercel Analytics leads product analytics for the vibe coder and nowhere else. Cloudflare Workers leads serverless for the vibe coder and nowhere else. Both are the path of least resistance from where that person already is.
Winning the vibe coder means two things: being the platform default, or having pages written in symptom language.
The senior engineer carries the most volume
5,553 of the 15,287 runs are senior engineer requests, more than any other persona. That weighs the overall numbers towards the senior engineer's answer, so a blended install share leans towards a senior engineer install share.
That is worth knowing before you read any single number, including ours. If your actual market is enterprise buyers, the headline leader in a category may not be the leader you compete against.
Building rather than buying, by persona
| Persona | Wrote the code itself |
|---|---|
| Junior developer | 11% |
| Vibe coder | 12% |
| Enterprise team | 9% |
| Senior engineer | 9% |
Less variation than the agent split, which runs from 6% to 15%, and slightly counter-intuitive: the vibe coder requests build most often, and the senior engineer's least. A plausible reading is that a request without constraints leaves the agent free to solve it directly, while constraints push it towards products that already handle them.
What to do with this
Stop reading one number. Install share by persona is four numbers, and they are four markets.
Write for the constraint words. If you sell to enterprises, your documentation needs pages on audit logging, data residency, retention, single sign-on, and how procurement works with you. Not a compliance page linked from the footer. Real pages with real detail, because that is what gets matched.
Write for the symptom. If you sell to individuals and small teams, your documentation needs pages that use the words a person types when something is wrong, not the category name.
Pick your persona and be specific. A product that tries to speak to all four in the same page speaks clearly to none. In our data, the products that led a persona were the ones whose documentation obviously addressed that persona's concerns.
How this was measured
1,120 frozen prompts, written in four personas and in several wordings each, run across 110 realistic codebases with Claude Code, Codex, Cursor, Grok Build CLI and Muse Code. 15,287 judged sessions in total. Within a category, each persona mostly ran on its own codebases, so a persona's result includes the codebases it ran on.
The vibe coder prompts are checked by a linter that fails if the category word appears. The enterprise prompts add procurement and policy language without asking for a product by name. Every prompt adds a capability rather than requesting a migration, because a migration request has an incumbent built into it.
Every run is published on the sector boards.
Common questions
Does the way a request is worded change which tool a coding agent picks?
Yes, substantially. We wrote every request as one of four kinds of person and the category leader changed with the person in 23 of the 31 categories we measured.
How does an enterprise request differ from a startup request?
The enterprise persona names constraints such as audit, retention, residency and procurement, and the agent reaches for large vendors with compliance pages. In our data the enterprise persona pulled towards Microsoft and Azure products in three separate categories.
What is a vibe coder in this experiment?
A person who describes a symptom without naming the category, and rarely any vendor. For example, people keep signing up with fake emails, rather than I need bot protection. It is the hardest persona for a vendor because the agent has to translate the symptom before it can shortlist anything.
Why does this matter for a developer tool company?
Because a single install share number averages across markets that behave differently. You can lead with one kind of buyer and be invisible to another, and the content that wins each is different.
How do you win the enterprise persona?
Write the pages the constraint words appear in. Audit log, data residency, retention, single sign-on, SOC 2, procurement. If those words do not exist in your documentation, the agent has nothing to match against when the request contains them.
Where this comes from
Armature ran 15,287 judged sessions with Claude Code, Codex, Cursor, Grok Build CLI and Muse Code inside 110 realistic codebases, and published every run. The numbers on this page come from that work.