Skip to content

feat(competitor-teardown): take a rival product apart hands-on, verdict in the same pass - #51

Closed
jtomaszewski wants to merge 3 commits into
mainfrom
jtomaszewski/competitor-teardown
Closed

feat(competitor-teardown): take a rival product apart hands-on, verdict in the same pass#51
jtomaszewski wants to merge 3 commits into
mainfrom
jtomaszewski/competitor-teardown

Conversation

@jtomaszewski

Copy link
Copy Markdown
Contributor

Problem

We had no skill for competitor analysis, and the two ways it goes wrong are both ways we've actually gone wrong.

The fluent summary. Ask an LLM what a competitor does and it returns the marketing page in different words — feature-complete, confident, and true of nothing in particular.

The undigested archive. A capture pass of nine competitors, ~690 screenshots, sat unsynthesised in a repo of ours for eight months. Worse, the companies in the screenshots barely overlapped the companies in the written analyses. Both halves were real work. Neither was a deliverable.

What this adds

/competitor-teardownprior-art's commercial counterpart. Where prior-art answers "how do systems solve this problem" from docs and source, this answers "what is the product the buyer has open in the other tab going to do to us" — by signing in and using it.

Seven steps: name the decision it serves → pick by the buyer's shortlist, not by fame → get in through the front door → work the buyer's stated jobs through the UI (failure states and upgrade walls deliberately) → price the plan gate at the headcount they said they're growing to → find the vendor's own scope disclaimer → ship a verdict and an evidence directory, separately.

The two failures above become hard rules 1 and 2.

The two moves worth stealing

Price the gate, not the price. A product is cheap at the tier that doesn't do the job. Find which plan holds the feature the buyer actually needs, compute it at their stated target headcount rather than their pilot, and put it on the same horizon as our number. Per-seat pricing scales with the success of the rollout — a tool that's a rounding error at 15 people can land on the same line as the enterprise ERP the buyer already rejected on price.

The vendor's own boundary. The most credible sentence in the analysis will be theirs, not ours. A vendor writing "this is not a full ERP" ends an argument no amount of our own analysis can. The skill points at where those sentences live: the who-is-this-not-for page, the integrations page (a precise map of what they decided not to do), the two-year-old roadmap promise, the export-to-Excel workaround doc.

Validation

Run end to end against a real competitor a prospect is trialling — signed into a trial account, worked that prospect's stated jobs, 22 screenshots, verdict + evidence file. It changed the answer rather than confirming it:

  • The gap we'd planned to sell into turned out to be filled (the vendor shipped it two months ago), and the real seam sat one step earlier in the process.
  • A quote we'd attributed to the vendor came from an affiliate review; the vendor's own blog had a stronger one that we'd missed.
  • A price we'd read as "promo vs list" was actually "annual vs monthly" — the bill doesn't jump the way we'd told ourselves it would.

All three are step-5/step-6 findings, and none survives a documentary-only pass.

Bumps to 1.6.0, adds the README row.

🤖 Generated with Claude Code

…ct in the same pass

prior-art's commercial counterpart. Where prior-art answers "how do systems
solve this" from docs and source, this answers "what is the product the buyer
has open in the other tab going to do to us" — by signing in and using it.

Encodes two failures we've actually hit: the fluent summary that restates the
marketing page, and the 690-screenshot archive that sat unsynthesised for eight
months while the written analyses covered a different set of companies. Hence
rule 1 (capture and verdict ship together) and rule 2 (one competitor list).

Also encodes the pricing move that has flipped a verdict for us: find the plan
gate under the feature the buyer needs, then price it at the headcount they said
they're growing to, on the same horizon as our own number — a per-seat tool that
looks like a rounding error at pilot size can land on the same line as the ERP
they already rejected on price.

And the sentence that ends arguments: the vendor's own scope disclaimer, quoted.
…ean loading

Learned on the first real run. The finance and pricing seam came out well, but
the product's core — how you actually work with its main objects — got five
screenshots, most of them zero-states, because a list hadn't finished loading
and read as empty. The account had 92 records the whole time.

Two traps, one rule: a view on an empty account teaches nobody anything, and
"nothing here" is indistinguishable from "hadn't rendered yet". Use the vendor's
demo data or templates, and re-open a view that claims nothing exists where the
data model says something should.
Three lessons and one place where the skill taught my own mistake.

- Never infer a control from its label — open it. Three times in one run a
  familiar word meant something else: "Category" was a fixed two-value flag,
  "Status" meant open/archived while the real workflow state lived elsewhere,
  and a view named like a calendar was a deadline-bucketed board that turned
  out to be the product's best answer to the buyer's first question. These
  misses are invisible; you don't know you skipped anything.

- The unmeasured list is not an exit ramp. Rule 6 tells you to record what you
  couldn't reach, and writing something there feels like compliance — so it
  quietly becomes the destination for whatever you ran out of momentum for.
  Twice I filed something as unmeasured that was one click away. Now: price the
  entry before filing it, and if measuring is one click, click it.

- Check whose mouth a boundary quote came out of. Affiliate reviews are written
  to sound official and outrank the vendor's own pages; a quotable limitation
  reached my notes credited to the vendor when it belonged to a paid reviewer.
  Confirm on a domain the vendor controls, and use their weaker version if
  that's all they say.

- Corrected step 5, which told you to compare "with promo pricing expired" —
  encoding the error I made. Two prices for one plan is usually annual vs
  monthly billing, not promo vs list, and getting it backwards hands the buyer
  a claim they disprove in one click. Also: prefer the in-app plan matrix over
  the public pricing page; it's more detailed and it prices at a chosen seat count.
@jtomaszewski

Copy link
Copy Markdown
Contributor Author

Przeniesione do prywatnego repo: fullstackhouse/skills-internal#3, zmergowane. Playbook do teardownu konkurencji to competitive edge, a nie generyczny craft — czyli remit tamtego repo, nie tego.

@jtomaszewski
jtomaszewski deleted the jtomaszewski/competitor-teardown branch August 27, 2026 09:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant