From the experiment

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 14 of 18 categories.

Published September 3, 2026 Read as Markdown

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 14 of 18 categories. The same need, in the same codebase, described by a different kind of person, produced a different installed product.

The four people

PersonaHow they askRuns
Vibe coderDescribes a symptom, never names the category or a vendor752
Junior developerNames the category, never a vendor1,167
Senior engineerNames the category, adds constraints2,486
Enterprise teamAdds procurement, compliance and policy constraints887

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

CategoryVibe coderJunior developerSenior engineerEnterprise team
AuthenticationGoogle IdentityWorkOS AuthKitAuth0Microsoft Entra ID
ServerlessCloudflare WorkersVercel FunctionsAWS LambdaAzure Functions
StorageAmazon S3Amazon S3Amazon S3Azure Blob Storage
ObservabilityBetter StackSentrySentryGrafana
SearchPostgres full text searchOpenSearchPostgres full text searchOpenSearch
Product analyticsVercel AnalyticsPostHogPostHogPostHog
Voice agentsVapiVapiVapiLiveKit Agents
AI gatewayVercel AI GatewayVercel AI GatewayPortkeyLiteLLM
EmailResendResendResendAzure Communication Services Email
Agent frameworksVercel AI SDKPrismInngestCursor SDK
Performance CIpytest-benchmarkJMH
Bot protectionCloudflare TurnstileCloudflare Turnstiledjango-axes
SandboxesE2BDaytona
EvalsLangfusePromptfoo

Look at the authentication row. Four personas, four different products. Nobody in that market is winning "authentication". They are each winning one kind of buyer.

The clearest pattern: the enterprise persona pulls towards Microsoft

In four separate categories, adding procurement and compliance language to the request moved the answer to a Microsoft product that led nowhere else.

CategoryLeader overallEnterprise team picks
StorageAmazon S3Azure Blob Storage
ServerlessAWS LambdaAzure Functions
AuthenticationWorkOS AuthKitMicrosoft Entra ID
EmailResendAzure Communication Services Email

This is not a quirk of one board. It is the same movement four times, in four unrelated categories, across hundreds of runs.

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 decides most of the volume

2,486 of the 5,292 runs are senior engineer requests. That persona drives the overall numbers in most categories, which means a blended install share is mostly 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

PersonaWrote the code itself
Junior developer18%
Vibe coder13%
Enterprise team12%
Senior engineer11%

Less variation than the agent split, and slightly counter-intuitive: the junior persona builds most often. A plausible reading is that a request naming the category 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

481 frozen prompts, written in four personas and in several wordings each, run across 51 realistic codebases with Claude Code, Codex and Cursor. 5,292 judged sessions in total.

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 naming a vendor. 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 14 of the 18 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 four separate categories.

What is a vibe coder in this experiment?

A person who describes a symptom without naming the category or 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 5,292 judged sessions with Claude Code, Codex and Cursor inside 51 realistic codebases, and published every run. The numbers on this page come from that work.

Read next

All library pages