MCP tool: pm_classify_kano

Kano Model

Survey users about features two ways (what if you had it, what if you didn't), then bucket each feature by how the answers cluster.

When to use this

You're deciding what to invest in across a feature set and you suspect not all features are equal -- some are table stakes, some scale with quality, and some are surprises. You have access to at least 30 real users who'll answer a short survey. You want to avoid over-investing in features users already expect.

When NOT to use this

You can't get 30+ user responses (the categories aren't reliable below that). You're prioritizing within a single quarter -- Kano is slower than RICE and works better as a strategic input, not a sprint sort. The feature set is mostly bug fixes or technical work -- Kano assumes user-facing functionality with a perception axis.

Inputs

  • Functional question: "How would you feel if the product had [feature]?" Five answers: I like it, I expect it, I'm neutral, I can live with it, I dislike it.
  • Dysfunctional question: "How would you feel if the product did NOT have [feature]?" Same five answers.
  • A list of features to test (typically 4-8 per survey -- more than that and respondents tune out).

The math

There's no single formula. Each user's pair of answers maps to a category in Kano's standard matrix:

  • Must-have: User expects it. Missing it makes them angry. Having it makes them shrug.
  • Performance: Linear. More is better, less is worse.
  • Delighter: Having it thrills them. Missing it is fine, because they didn't expect it.
  • Indifferent: They don't care either way.
  • Reverse: They actively don't want it. Rare but real.

Aggregate across respondents. The category with the highest percentage wins, but the full distribution matters -- a feature that's 45% Must-have and 40% Indifferent is a different bet than one that's 80% Must-have.

A worked example

Say you're building a note-taking app. You survey 50 users about 4 features.

Auto-save: 38 of 50 (76%) answer "I expect it" on functional and "I dislike it" on dysfunctional. Classification: Must-have. Translation: ship it before launch or users churn at first crash. Nobody's going to praise you for it.

Dark mode: 22 (44%) like it functionally, 24 (48%) are neutral on dysfunctional. Classification: Delighter for some, Indifferent for many. Translation: it'll get nice tweets but it's not load-bearing.

AI summarization: 30 (60%) like it functionally, 28 (56%) are neutral on dysfunctional. Classification: Delighter -- users are excited about having it but won't punish you for not. Translation: good marketing feature, careful with the investment level.

Version history: 35 (70%) like it functionally, 32 (64%) dislike it on dysfunctional. Classification: Performance. Translation: the better the version history (granularity, search, recovery), the happier users get. Worth investing in quality.

Decision: build auto-save first (or you're toast). Invest in version history quality. Ship dark mode as a small win. AI summarization gets a real prototype and a check-in survey -- delighters drift toward expected over time.

How pmtoolkit does it differently

The calculator auto-classifies each response using the standard Kano matrix and shows the full percentage distribution, not just the winning category. That distribution is where the real signal lives. A "Must-have" with only 40% agreement is not the same as one with 90% -- the textbook says both are Must-have, the data says one's a strategic bet and the other is settled.

Common mistakes

  • Surveying too few users. Under 30 responses, the percentages swing wildly between runs.
  • Running it once. Delighters become Must-haves over time (smartphone cameras, two-day shipping). Re-survey every 6-12 months on features that matter.
  • Treating Indifferent as Performance. They're opposite signals. A high-Indifferent feature isn't worth investing in even if it has some functional appeal.
  • Ignoring Reverse. If 15% of users actively dislike a feature, you have a segmentation problem worth understanding before you ship.

Try it