# Why did the coding agent pick my competitor?

> Five reasons, ranked by how often they occur in judged sessions. Four of the five are defects you can fix in days, not preferences you have to out-argue.

Source: https://armature.tech/library/why-did-the-agent-pick-my-competitor
Published: 2026-09-03
Publisher: Armature, Inc. (https://armature.tech)

---

> Usually not because your competitor argued better. In judged sessions, the recurring causes are the repository, then four specific defects: a quickstart that does not run, documentation describing an interface that changed, a package name that does not match the product name, and a missing answer to a production question.

## The five reasons, in order

### 1. The repository already decided

The biggest and the least satisfying.

We asked for a hosted database on JavaScript codebases 111 times: one product won all 111. The same request on TypeScript codebases: the same product won 48 of 132. Same words, different file extension.

And incumbency beats intention. A sentence in a repository file naming a preferred product was followed 16 times out of 18, then lost 2 times out of 3 once a competing library was installed in that same repository.

If your competitor is already in the codebase, you are not in a comparison. You are proposing a second dependency in a category that already has one, and a competent engineer avoids that.

**What to do:** get in before the question. Templates, framework integrations, official examples, platform defaults.

### 2. Your quickstart did not run

The most common fixable cause, and the one most companies fail without knowing.

The agent chose you, started the integration, hit a gap, and switched. Usual gaps: an environment variable mentioned on a different page, an install step assumed from the previous section, a dashboard action that never appears in code, a code block that is a fragment rather than a file.

An agent that cannot make your example work does not file a bug. It moves on.

**What to do:** open an empty project, paste your quickstart, run it. See [how to write a quickstart an agent can follow](/library/write-a-quickstart-an-agent-can-follow).

### 3. Your documentation described an interface that changed

The agent wrote code that matched your page, and it failed. This is worse than having no documentation, because the failure looks like the product being broken rather than the page being stale.

**What to do:** state the current version on the page, in the text, and test your examples in continuous integration so they cannot rot silently.

### 4. The package name did not match the product name

The agent knows "Acme Queue" and has to work out `@acme/queue`. When those differ, it guesses. A wrong guess installs nothing, an abandoned package, or somebody else's.

**What to do:** one name for one thing, or write the mapping down on every page with runnable code. See [package naming for coding agents](/library/package-naming-for-coding-agents).

### 5. The fit was genuinely wrong

The least common of the five, and the only one that is not a defect.

Sometimes the competitor was the right answer for that repository. That is worth knowing, and worth not confusing with the other four, because the response is different: adjust who you target rather than what you publish.

## The thing that is rarely the reason

"They have better marketing."

In our data, of the products that reached a shortlist at least 25 times and were adopted zero times, the recurring causes were overwhelmingly the four defects above. Mailgun was raised in 97 of 208 email sessions and chosen in none. Cursor put it on the shortlist in 85% of its email sessions and adopted it zero times. That is not a brand awareness problem. It got onto the list every time.

See [the products coding agents consider and never choose](/library/products-coding-agents-consider-and-never-choose).

## When you cannot win head on

If your competitor holds 88% of a category, no page you write this quarter changes that. Payments looks like this. So does cloud, at 62%.

What works instead is narrowing. There are always requests the default fits badly: a region it does not serve, a pricing model it does not offer, a compliance constraint it fails, a stack it supports poorly. Find those and own them completely, in the words the request uses.

And check the persona split before concluding anything. The category leader changed with who was asking in 14 of 18 categories. A category can be decided for one kind of buyer and wide open for another.

## How to get the actual answer for your product

Guessing from this list is better than guessing from nothing, and worse than reading the transcripts.

Run real agents on repositories that look like your users' projects, with requests written the way your users describe the problem. Record what got installed. Then read the sessions you lost, because the reason is in them.

See [how to measure install share](/library/how-to-measure-install-share).

## Common questions

### Why do coding agents pick a competitor instead of my product?

Most often because of the repository, not the comparison. After that, the recurring causes are a quickstart that does not run when pasted, documentation describing an interface that changed, a package name that does not match the product name, and a missing answer to a specific production question.

### Is it because my competitor is better known?

Sometimes, and less often than people assume. In our data, of the products that reached a shortlist and were never chosen, four of the five recurring causes were fixable defects rather than genuine preference.

### How do I find out the real reason?

Run the sessions and read the losses. A judge that records a rejection reason per session produces a defect list written by the buyer, with a pointer to the file or transcript line.

### Can I win a category where a competitor holds 88%?

Not head on, this quarter. What works is narrowing: find the requests where the leader fits badly, such as regional requirements, a pricing model it lacks or a compliance constraint, and own those in the words the request uses.

## Read next

- [Consideration rate](https://armature.tech/library/consideration-rate) (Markdown: https://armature.tech/library/consideration-rate.md)
- [The products coding agents consider and never choose](https://armature.tech/library/products-coding-agents-consider-and-never-choose) (Markdown: https://armature.tech/library/products-coding-agents-consider-and-never-choose.md)
- [Audit your documentation for coding agents](https://armature.tech/library/audit-your-docs-for-coding-agents) (Markdown: https://armature.tech/library/audit-your-docs-for-coding-agents.md)
- [The repository decides more than your marketing does](https://armature.tech/library/what-decides-the-pick-the-repository) (Markdown: https://armature.tech/library/what-decides-the-pick-the-repository.md)

---

Armature helps software products get discovered and used by coding agents.
Service: https://armature.tech/discoverability · Results: https://armature.tech/leaderboards/sectors · Contact: contact@armature.tech
