Green · worked feature study
Classify features for a productivity app.
This tutorial makes the Kano machinery visible: the product and feature descriptions respondents see, the explicit sample, both questions in each pair, the response matrix, and the formulas behind classification and satisfaction coefficients.
1. Define the product—not just feature IDs
green init --type kano \
--description "Prioritizing features for a collaborative writing and notes app"
green product describe writing_app \
--description "A subscription app for writing, organizing notes, and collaborating across phone and desktop"
green product show
Show persisted context
Product: writing app
Description: A subscription app for writing, organizing notes,
and collaborating across phone and desktop
Study context: Prioritizing features for a collaborative writing and notes appKano questions are conditional reactions to features of a particular product. Green now requires the product definition; it no longer fields questions about an unexplained “this product.”
2. Define what each feature actually does
green feature add offline --label "Offline mode" \
--description "Read and edit documents without an internet connection; changes sync later"
green feature add sharing --label "One-click sharing" \
--description "Create a permissioned share link from any document in one action"
green feature add dark_mode --label "Dark mode" \
--description "Use a low-light color theme throughout the app"
green feature list
green validate
Show the response scale
Like · Expect · Neutral · Tolerate · DislikeStable IDs such as offline are analysis keys. Labels and descriptions are respondent-facing content. Each feature produces a functional question (feature present) and dysfunctional question (feature absent).
3. Define respondents explicitly
green agent-list create panel
green agent add panel --id mobile_writer \
--persona "Freelance writer who often works while traveling with unreliable connectivity" \
--trait primary_device=phone --trait collaboration=low
green agent add panel --id team_editor \
--persona "Editor coordinating drafts and comments across a six-person team" \
--trait primary_device=desktop --trait collaboration=high
green agent add panel --id student \
--persona "University student taking notes in lectures and libraries" \
--trait price_sensitivity=high
green agent add panel --id night_researcher \
--persona "Researcher who reads and annotates long documents late at night" \
--trait low_light_use=high
green agent-list show panel
Green translates exactly these records into EDSL agents. It does not infer a target population, persona distribution, or sample size.
4. Build and inspect the paired Survey
green field build --job-name features --agent-list panel
ep inspect jobs.ep
ep inspect agent_list.ep
ep surveys questions survey.ep
Show one real question pair
kano_offline_functional · multiple_choice
Product: writing app
Description: A subscription app for writing, organizing notes,
and collaborating across phone and desktop
Feature: Offline mode
Feature description: Read and edit documents without an internet
connection; changes sync later
If writing app had Offline mode, how would you feel?
Options: Like, Expect, Neutral, Tolerate, Dislike
kano_offline_dysfunctional · multiple_choice
[same product and feature context]
If writing app did not have Offline mode, how would you feel?
Options: Like, Expect, Neutral, Tolerate, DislikeThree features create six questions per respondent. question-map.json records the stable feature ID and functional/dysfunctional direction for every answer.
5. Review cost, then choose model or human administration
ep jobs cost jobs.ep --model gpt-5.4-mini
green plan field --job-name features
Show fielding arithmetic
4 agents × 3 features × 2 questions = 24 external model calls
requires approval: true
expected output: results.ep# Model path—only after explicit approval
ep run jobs.ep --model gpt-5.4-mini --output results.ep
# Human path—from the same reviewed Survey
ep humanize preview --survey survey.ep
ep humanize create --survey survey.ep \
--schema humanize-schema.json --name "Writing app feature study"
6. Normalize paired answers
green data import-edsl results.ep \
--job-name features --name field_run_1
green data quality field_run_1
Show the long-row contract
respondent_id,feature_id,functional,dysfunctional
mobile_writer,offline,like,dislike
mobile_writer,sharing,neutral,neutral
mobile_writer,dark_mode,tolerate,neutralEach row is one respondent-feature pair. Green preserves the two answers; classification happens during analysis rather than rewriting the source responses.
7. Apply the Kano evaluation matrix
Show the complete matrix
Dysfunctional answer
Functional Like Expect Neutral Tolerate Dislike
Like Q A A A O
Expect R I I I M
Neutral R I I I M
Tolerate R I I I M
Dislike R R R R Q
A attractive · O one-dimensional · M must-be
I indifferent · R reverse · Q questionableFor example, “Like when present” plus “Dislike when absent” is one-dimensional. “Like when present” plus “Neutral when absent” is attractive. Green counts every resulting category by feature and reports the modal category without discarding the distribution.
8. Reproduce the checked-in example
green data import-kano examples/kano/responses.csv --name feature_reactions
green data quality feature_reactions
green report kano feature_reactions
Show category counts
dark_mode must-be M 3 · O 1
offline one-dimensional O 2 · A 1 · M 1
sharing attractive A 3 · I 1The checked-in four-respondent fixture exists to reproduce the calculation. It is not presented as population evidence or as output from the four illustrative agents.
9. Understand the coefficients
denominator = A + O + M + I
satisfaction = (A + O) / denominator
dissatisfaction = -(M + O) / denominator
Show the resulting decision table
feature modal category satisfaction dissatisfaction
dark_mode must-be 0.25 -1.00
offline one-dimensional 0.75 -0.75
sharing attractive 0.75 0.00Reverse and questionable responses remain in category counts but are excluded from these two coefficient denominators. A coefficient is descriptive of this sample, not a causal estimate of adoption.
10. Save the auditable decision artifact
green report save --name feature_priorities \
--kind kano --input feature_reactions
green report list
green validate --require-report kano
The saved JSON retains category counts, modal classifications, coefficients, and data provenance. The Markdown, SVG, and HTML outputs are views of that same calculation.