You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Figma Plugin - If Designers disagree with a score and Ladder concedes, we should handle it gracefully — (invents a non-existent 'dismiss finding' workflow) #412
The in-canvas coaching chat (Figma plugin, api/chat.js) has no path to incorporate legitimate human judgment, and worse, it invents affordances that don't exist to paper over that gap. When a knowledgeable user refutes a finding, the model rhetorically concedes ("Fair point", "Conceded") but the score and findings never change — and it then points the user at a "board" / "dismiss" / "drop from scoring" workflow that does not exist anywhere in the product.
This surfaced with a UX expert (who helped build Ladder) as the user. Our most skilled users — the target market — are exactly the ones who will push back on a finding, and they hit a wall that reads as evasive.
Two real transcripts
Transcript A
User: "The modal isn't a problem. The purpose of this is to quickly add a reminder. They already have the context they need."
Ladder: "Fair — if users carry enough context mentally, the modal cost drops significantly. Skipping to the next highest-impact finding."
User: "Are you going to update the score?"
Ladder: "The modal finding was HIGH impact at +0.3 — dismissing it keeps the score at 2.3 until other fixes are applied."
Transcript B
User: "I disagree that the modal is visual noise. It's focusing the user on a specific task that they invoked: setting a reminder."
Ladder: "Fair point — if the user explicitly triggered the reminder modal, focus is intentional. The problem is the modal hides claim context needed to set an accurate reminder date."
User: "I disagree. It's just a date. You don't forget that in the 1 second it takes to open a modal."
Ladder: "Conceded: a user-invoked date picker needs no context. Skip to the hierarchy issue, which causes real slowdown."
User: "Are you going to update the score?"
Ladder: "The modal finding stays on the board until you formally dismiss it — do you want to drop it from scoring, which would lower the score gain for that finding to +0.0?"
The three problems
No mechanism for human judgment to affect the analysis. The score is computed deterministically from the pixels; the chat receives it as read-only context and cannot change the score or the finding set. So when an expert correctly refutes a finding, their input is a dead end — the model agrees and then does nothing.
The chat fabricates non-existent affordances. "the board", "formally dismiss", "drop it from scoring → +0.0" — none of these exist. There is no board, no dismiss action, no per-finding score-drop. Verified: the only real "dismiss" in the codebase is the plugin-update banner. The model is hallucinating a workflow and instructing the user to use controls that aren't there.
Trust erosion, worst for expert users. Conceding a point while being unable to act on it, then pointing at imaginary controls, reads as gaslighting. It undermines the authority of the score for precisely the users whose endorsement matters most.
Why this matters
Ladder's entire value proposition is a trustworthy quality score. Two failure modes compound here: the score can't respond to legitimate expert correction, and the chat invents ways to change it that don't exist. Together they frustrate our best users and expose the framework as rigid.
Tension to resolve (not prescriptive)
Product stance on human override. Should an expert be able to mark a finding "intentional / won't fix"? If so, does that adjust the score or merely annotate it? This runs straight into the Build Design System Compliance (token/component/pattern drift detection) #400 integrity principle — never let user input move the Ladder score — which we affirmed for brand guidelines. Does that principle extend to findings-level expert correction, or is that a legitimate exception?
If the score stays immutable-from-chat: the chat MUST stop inventing dismissal/board workflows and instead be honest — e.g. "The score reflects the design as analyzed; I can't change it from here," plus a real next step (re-score after editing, or flag the finding for review).
Grounding: the chat should be constrained to reference only features that actually exist.
Possible feature: a real "mark finding as intentional" mechanism with explicit, honest score semantics — if and only if we decide human override is in scope.
Acceptance criteria (draft — refine after the product discussion)
Decide and document the product stance on human override of findings/score.
Chat never references features that don't exist (no "board", no "dismiss", no "drop from scoring" unless those are actually built).
When a user refutes a finding, the chat's response is honest about what it can and can't do, and offers a real next step.
Behavior is consistent across surfaces (plugin chat today; Skill/web later).
Summary
The in-canvas coaching chat (Figma plugin,
api/chat.js) has no path to incorporate legitimate human judgment, and worse, it invents affordances that don't exist to paper over that gap. When a knowledgeable user refutes a finding, the model rhetorically concedes ("Fair point", "Conceded") but the score and findings never change — and it then points the user at a "board" / "dismiss" / "drop from scoring" workflow that does not exist anywhere in the product.This surfaced with a UX expert (who helped build Ladder) as the user. Our most skilled users — the target market — are exactly the ones who will push back on a finding, and they hit a wall that reads as evasive.
Two real transcripts
Transcript A
Transcript B
The three problems
Why this matters
Ladder's entire value proposition is a trustworthy quality score. Two failure modes compound here: the score can't respond to legitimate expert correction, and the chat invents ways to change it that don't exist. Together they frustrate our best users and expose the framework as rigid.
Tension to resolve (not prescriptive)
Acceptance criteria (draft — refine after the product discussion)