Definition
Judgment routinely departs from rational expected-value reasoning because the brain runs heuristics to conserve effort. These shortcuts produce predictable distortions — confirmation bias, anchoring, availability — that shape what users notice, believe, and remember about a product. Bias is not failure; bias is the default cognitive operating mode.
Why it matters for ShurIQ reports
Reports are read through bias filters: an executive who already favors Player A will interpret a tied score as a win for A. The brief must therefore expose the methodology, surface counter-evidence, and force comparison rather than allow confirmation. Evidence trails and SBPI rubric breakdowns exist exactly to slow the bias machinery before a stack rank gets weaponized internally.
Takeaways
- Always expose how a score was constructed — opaque numbers harden the reader's prior belief.
- Counter confirmation bias by surfacing the strongest opposing evidence on the same card as the supporting evidence.
- Watch for anchor effects in the lead chart — the first number a reader sees colors every score that follows.
- Test claims with users whose priors point the other way; consensus among aligned readers is not validation.
Visual motion language
Apply a brief shake-warn pulse on contradictory evidence as it loads, then resolve to a steady state with a soft accent color. The micro-disruption interrupts pattern-matching just long enough to register the counter-signal.
Origins
Amos Tversky and Daniel Kahneman, 1972 — formalized cognitive bias through heuristics-and-biases research.
Cavalry scene
The script below builds this concept's motion in Cavalry through the Stallion bridge. Pipe to cavalry_run_script via MCP, or paste into Cavalry's JavaScript Editor.
// Laws of UX · cognitive-bias · Cavalry scene
// Motion family: center-out radial pulse
// Palette: cobalt + cream
// To run: pipe to cavalry_run_script tool, or paste into Cavalry's JavaScript Editor
// Built 2026-04-30 by ShurAI
(function () {
var PREFIX = "claude_lawofux_cognitive-bias_";
var existing = api.getAllSceneLayers();
for (var i = 0; i < existing.length; i++) {
try {
var nm = api.getNiceName(existing[i]);
if (nm && nm.indexOf("claude_lawofux_") === 0) api.deleteLayer(existing[i]);
} catch (e) {}
}
var BG = "#1E5C8C";
var DARK = "#163E5C";
var CREAM = "#D6CDB0";
var bg = api.primitive("rectangle", PREFIX + "bg");
api.set(bg, { "generator.dimensions": [1080, 1080] });
api.setFill(bg, true);
api.set(bg, { "material.materialColor": BG });
// Three concentric flattened ellipses (eye)
var rings = [
{ name: "outer", w: 320, h: 210 },
{ name: "mid", w: 240, h: 140 },
{ name: "inner", w: 160, h: 90 }
];
for (var i = 0; i < rings.length; i++) {
var r = rings[i];
var e = api.primitive("ellipse", PREFIX + "ring_" + r.name);
api.set(e, {
"generator.radius": [r.w, r.h],
"position.x": 0, "position.y": 0,
"opacity": 0
});
api.setFill(e, true);
api.set(e, { "material.materialColor": DARK });
var inF = i * 14;
var fullF = inF + 18;
api.keyframe(e, inF, { "opacity": 0 });
api.keyframe(e, fullF, { "opacity": 50 });
}
// Pupil
var pupil = api.primitive("ellipse", PREFIX + "pupil");
api.set(pupil, {
"generator.radius": [45, 45],
"position.x": 0, "position.y": 0,
"opacity": 0,
"scale.x": 0.3, "scale.y": 0.3
});
api.setFill(pupil, true);
api.set(pupil, { "material.materialColor": CREAM });
api.keyframe(pupil, 38, { "opacity": 0, "scale.x": 0.3, "scale.y": 0.3 });
api.keyframe(pupil, 56, { "opacity": 100, "scale.x": 1.0, "scale.y": 1.0 });
api.magicEasing(pupil, "scale.x", 56, "EaseOut", "");
api.magicEasing(pupil, "scale.y", 56, "EaseOut", "");
// Sustained slow pulse
api.keyframe(pupil, 90, { "scale.x": 1.0, "scale.y": 1.0 });
api.keyframe(pupil, 120, { "scale.x": 1.08, "scale.y": 1.08 });
api.keyframe(pupil, 150, { "scale.x": 1.0, "scale.y": 1.0 });
var layerCount = api.getAllSceneLayers().length;
console.log("scene built: cognitive-bias (" + layerCount + " layers)");
})();