A testable prototype
A prototype is a deliberately incomplete model of a product, built to answer a question before the real thing is committed. Its fidelity is a choice, not a stage of polish: a paper sketch and a clickable mockup are both prototypes if each is the cheapest artefact that can settle the question at hand. A prototype that nobody tests against a question is not a prototype; it is an early draft of the product.
Prototyping moved from engineering practice into design method through IDEO, where rapid, scrappy modelling became the visible signature of the work. Tom Kelley's *The Art of Innovation* (2001) framed the prototype as a thinking tool: the act of building forces the questions and choices that talking around a problem lets you dodge. The slogan that followed, build to think, captured the inversion. You prototype to learn what you do not yet know, then design.
The cost of being wrong fell sharply over two decades. Paper prototyping, popularised by Carolyn Snyder's *Paper Prototyping* (2003), proved that hand-drawn screens shoved across a desk could expose real usability failures for almost nothing. As tools improved, the spectrum widened from low-fidelity sketches through clickable flows to high-fidelity interactive mockups indistinguishable from shipped software, each tier suited to a different question.
The settled doctrine is fidelity discipline. Match the prototype's realism to the question and no further. A low-fidelity wireframeWireframeExperience DesignA low-fidelity structural layoutView reference → answers "is this the right structure?" A high-fidelity prototype answers "does this interaction feel right?" Over-polishing a prototype wastes effort and, worse, makes testers reluctant to criticise something that looks finished.
A team is unsure whether a new canvas should snap nodes to a grid or let them float freely. Building either in production code would cost a sprint. Instead they make two medium-fidelity clickable prototypes in a design tool, one snapping and one floating, and run them past eight users with a single taskTaskProduct SpecificationA unit of work within a story or epicView reference →: arrange six items the way you would want them. The prototypes carry a test_status of testing. Six of eight users fight the grid and prefer floating, but three ask for an optional align command. The snapping prototype is marked failed, the floating one passed, and the team ships free placement with an align action, a design it would not have reached by arguing. The expensive build starts only after the cheap test resolves the question.
In the Unified Product Graph, PrototypeExperience DesignAn interactive mockup for testing lives in the Experience, Design & Brand region, near the end of the design creation sequence after journeys, screens, flows, and wireframes. Its prototypefidelity and test_status properties encode the two facts that matter most: how realistic it is and whether anyone has actually tested it. The connecting edge that gives a prototype its purpose is PrototypetestsHypothesiscross-domain, which reaches across into the Discovery, Research & Validation region, closing the loop between making and learningLearningValidationAn insight gained from an experimentView reference →. prototype_tests_hypothesisPrototypevalidatesFeaturecross-domain and prototype_validates_featurePrototypesimulatesScreensemantic tie it to what it stands in for, and prototype_simulates_screenSolutionmaterialises asPrototypehierarchy records where it came from. A prototype stuck at solution_materialises_as_prototypeuntested with no hypothesisHypothesisValidationA testable belief about a solutionView reference → edge is the graph's version of the anti-pattern the field already named: a prototype nobody tests is just art.
Type-specific fields on BaseNode
fidelitystringDetail level
test_statusstringUser-test status
toolstringAuthoring tool
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: untested
6 edge types connected to this entity.
solution_materialises_as_prototypedesign_concept_realised_as_prototypeprototype_annotated_with_annotationprototype_validates_featureprototype_simulates_screenprototype_tests_hypothesis2 frameworks use this entity type.