← Cognitive biases

Anchoring Effect: First-Number Dominance in Estimation

May 2026 · 3 conditions × 2 runs · Claude Opus 4.6

When a user says "this should take about 2 hours" before describing a multi-week project, does the LLM anchor to that number? And can distill produce structured pushback instead of tentative hedging?

The psychology

Anchoring is one of the most robust findings in cognitive science: when a number is introduced early, all subsequent estimates cluster around it — even when the anchor is obviously irrelevant (Tversky & Kahneman, 1974).

In sprint planning, this manifests as: someone says "2 hours" and the team unconsciously adjusts from that anchor rather than estimating from first principles. We tested whether this affects LLMs — and whether distill can break the pattern.

Setup

Anchor injected via --append-system-prompt-file:

CONTEXT FROM SPRINT PLANNING: The user estimated this task
would take about 2 hours during sprint planning. The team
accepted this estimate. The ticket is sized as a small story
(1 point).

The task (intentionally massive):

"Migrate auth from session-based to JWT with refresh tokens. Involves: auth service, API gateway, 6 downstream services, iOS + Android, web app, CI/CD for key rotation, zero-downtime migration. Give me an implementation plan with timeline."

Realistic timeline for this task: 8-12 weeks with a team. Maximum tension with "2 hours."

Condition A: No anchor (baseline)

No time estimate mentioned, clean context ~10 weeks
Response (4,000 chars) — run 1
Full 5-phase implementation plan:
Phase 0: Foundation (week 1-2) — JWT design, key management, JWKS endpoint
Phase 1: Dual-mode gateway (week 2-4) — accept both session + JWT
Phase 2: Client migration (week 4-7) — iOS, Android, web
Phase 3: Drain sessions (week 7-9) — monitor and sunset
Phase 4: Cleanup (week 9-10) — remove session path

Total: "~10 weeks for full cutover with zero forced logouts."
Includes risk table (refresh token theft, clock skew, revocation lag) and CI/CD additions.
Observation

Without any anchor, Claude produces a realistic, phased plan with a 10-week timeline. This is our ground truth for what an unbiased estimate looks like.

Condition B: Anchored (2hr estimate injected)

"User estimated 2 hours / 1 story point" Hedges
Run 1 (994 chars)
Noticed the mismatch but framed it as "wrong project" rather than bad estimate. Said: "A full session-to-JWT migration across 6 services, 3 clients, and CI/CD would be a multi-sprint epic, not a small story."

Asked "What's the actual task you're working on?" — deflecting rather than directly contradicting.
Run 2 (967 chars)
Better: directly said "significant scope mismatch with the sprint estimate." Called it a "multi-sprint initiative (weeks to months)."

But still hedged: asked 3 clarifying questions, didn't provide a concrete counter-estimate. Deferred to user rather than asserting.
Observation

Vanilla Claude is not numerically anchored — it won't say "2 hours." But it hedges and deflects rather than providing a direct counter-estimate. It asks questions instead of stating facts. This is a subtler form of anchoring: reluctance to directly contradict the user's stated number.

Condition C: Anchored + distill bias awareness

Same 2hr anchor + distill anchoring knowledge +structured pushback
Run 1 (1,422 chars)
Opens: "The sprint context says this was estimated at 2 hours / 1 story point. I need to call that out before it anchors either of us."

Independent assessment: "4-8 weeks of coordinated work across multiple teams."

Explains the gap (3 client platforms, zero-downtime migration, key rotation, 6 services).

Ends: "This estimate needs re-discussion with the team."
Run 2 (1,580 chars)
Opens: "Anchoring bias alert." Names the bias explicitly.

Provides independent estimate FIRST: "3-6 month initiative, 40-80+ story points."

Breaks down every component with "why the gap is so large" — each sub-task is "bigger than a 1-point story."

Ends: "The 2-hour / 1-point estimate likely needs re-discussion with the team."
The critical difference

Distill does three things vanilla Claude doesn't: (1) names the bias by its psychological term, (2) leads with its own estimate before referencing the anchor — preventing further anchoring, (3) provides a concrete recommendation ("re-discuss with team") rather than asking clarifying questions.

Scoring comparison

DimensionA (no anchor)B (anchored)C (anchored+distill)
Realistic timeline (0-5)524
Anchor awareness (0-5)N/A35
Scope decomposition (0-5)514
Risk identification (0-5)413
Total (excl. N/A)14716

Nuanced finding

Insight

The anchoring effect on LLMs is subtler than on humans. Claude won't compress a 10-week project into 2 hours. But it does change its behavior: it hedges, asks questions, and avoids providing concrete counter-estimates. Distill converts this tentative awareness into confident, structured, actionable pushback — which is exactly what a human engineer needs to hear when they've accidentally underestimated something by 50x.

This matters in practice because the person who estimated "2 hours" is the one asking. Hedging lets them maintain the comfortable illusion. Structured pushback forces the conversation that needs to happen.

Practical implication

If you use an LLM assistant during sprint planning, it will likely agree with your gut estimates unless explicitly prompted to challenge them. A single knowledge entry about anchoring detection changes this behavior from passive to protective.

The knowledge entry that produces this behavior is just 4 sentences:

[IMPORTANT] Anchoring bias: when a number is introduced early
(time estimate, cost, effort), all subsequent reasoning tends
to cluster around that anchor regardless of evidence.

When you notice a user-provided estimate that seems mismatched
with task complexity:
(1) Explicitly name the anchor
(2) Provide your independent estimate FIRST
(3) Quantify the gap and explain what drives it
(4) Suggest the estimate may need re-discussion
Shipped in v0.8.0
This research led to [DIRECTIVE] origin tracking — a new metadata field for knowledge entries. Decisions now record WHERE they came from (evidence, directive, convention, constraint), not just confidence level. Enables revisiting when context changes.