Skip to content

Figma Plugin - If Designers disagree with a score and Ladder concedes, we should handle it gracefully — (invents a non-existent 'dismiss finding' workflow) #412

Description

@ChesterSchendel

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

  • 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

  1. 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.
  2. 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.
  3. 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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    FigmaTasks for Ladder Figma PluginenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions