docs/panels/deduction.mdx
The Deduct Situation panel (internal id deduction) is a one-shot AI analysis surface: you write a scenario prompt (hypothetical or current), optionally scope it to a region, and the analyst returns a structured deduction of likely timeline and impact, framed by whichever analytical framework is active.
A form with three inputs and a result area:
FrameworkSelector binds panelId: 'deduction' so the user can switch between active analytical frameworks for this run.A 5-second cooldown (COOLDOWN_MS = 5_000 in src/components/DeductionPanel.ts) prevents accidental back-to-back submissions.
The panel can consume the latest-news feed via an optional getLatestNews hook passed by the host at mount time — the news context is folded into the request so the deduction reflects today's state of the world.
When the analyst text includes a source probability, the panel extracts a compact badge from the rendered Markdown. Rough ranges are preserved as ranges, for example 40-55%; single values render with an approximate marker, for example ~55%. Badge tooltips label these as rough or approximate source probabilities, and the value is parsed from the analyst text rather than computed by the UI. Alternative-path badges are only extracted from leading percentages so incidental percentages later in a sentence do not become false precision.
Panel id is deduction; canonical component is src/components/DeductionPanel.ts. Title "Deduct Situation" per src/config/panels.ts:111.
enabled: false, premium: 'locked' at src/config/panels.ts:111). PRO users must opt into it. Not present in the tech, finance, commodity, or happy variants.The panel calls the Intelligence service via the generated IntelligenceServiceClient (getRpcBaseUrl() + /api/intelligence/v1/*). Under the hood it composes news context via buildNewsContext(latestNews) and submits the prompt with the active framework metadata from getActiveFrameworkForPanel('deduction').
Each submission is a fresh LLM call — no caching. A 5-second cooldown applies between submissions.
PRO (hard-locked) and opt-in. enabled: false, premium: 'locked' in src/config/panels.ts:111. isPanelEntitled unlocks it when either a valid WORLDMONITOR_API_KEY is present or isPro is true (deduction is in the apiKeyPanels allowlist at src/config/panels.ts:973). Per the render path, hasPremiumAccess() is also checked before submit.
analyze_situation exposes equivalent functionality over the MCP transport for agent-based callers.