Release note
The agent stack now speaks plain English
Quantis Trade was built quant-first. Every layer of the agent stack — intent parsing, the strategy classifier, the goal translator, the misconception handler, the result card — assumed the user already knew what Sharpe ratio, drawdown, factor exposure, and PSR meant. A casual trader who'd never used a backtesting platform landed on the result card, saw twenty abbreviations with no explanations, and bounced.
We did a full audit (26 findings across 10 layers) and shipped the fixes in two waves.
Audience mode. Every user now has an audienceMode preference — casual by default, with explicit quant and auto options. The setting flows from the user record through the agent session into every LLM-driven layer, so the same query can route to plain-English or quant-flavoured responses without changing the underlying classifier output. Sessions can override with a header, cookie, or query param.
Plain-English LLM prompts. The strategy intent classifier, goal translator, and misconception handler each got a casual variant of their system prompt. In casual mode, "highest-Sharpe strategies" becomes "strategies with the steadiest, most consistent month-to-month returns". "Try a global portfolio across SPY, EFA, EEM" becomes "Try a global portfolio across SPY (US stocks), EFA (developed-market stocks outside the US — Europe, Japan, UK), and EEM (emerging-market stocks — China, India, Brazil)". The semantic output is identical; only the surfaced language changes.
Result card glossary. Every metric pill now has a ? icon that opens an accessible modal with the metric's full name, a one-sentence plain-English definition, why a casual trader should care, and a link to the relevant Learning Centre article. 33 metrics covered, organised into core (always visible) and advanced (behind a "Show advanced metrics" toggle for casual users). Drawdown gets a specific clarification — "this is the temporary fall from a peak, not money lost permanently unless you sell at the bottom" — because that confusion bounces more first-time users than any other concept.
Honest fallbacks. When the regex parser couldn't classify a query it used to silently fall back to a momentum strategy. Now it returns a ClarificationCard with three concrete reformulations — "I didn't catch that, did you mean one of these?". Same fix for ambiguous tickers, single-strategy hints the LLM detected but the regex missed, and bare "unsupported" responses with no redirect. Picking an option fills the chat input but doesn't auto-send, so you can edit before running.
Trust block, factor exposure, and regime labels. The data-quality strip below the equity curve now has three tiers (headline → expandable explainer → technical). Factor exposure shows a one-sentence plain-English summary on top, with the regression coefficients collapsible behind "Show technical details". Regime-conditional Sharpe is labelled "Up markets / Down markets / Volatile markets" instead of Bull/Bear/HighVol.
Onboarding. A prompt-suggestion carousel under the chat input shows eight starter queries (mix of strategies and research questions), filtered live as you type and hidden after three messages. /help is a chat-local command — /help sharpe opens the glossary modal at that metric, /help on its own lists every entry. Asking "what is X" where X is a known metric is intercepted locally before it hits the backend, so it doesn't burn tokens on a definitional question.
The audit report (docs/audits/AUDIT-AGENT-STACK-ACCESSIBILITY-2026-04-30.md) is in the repo with the full finding list, the discovered-during-implementation gaps, and the sequencing rationale. Future plan: an A/B test harness to actually measure whether casual-mode improves time-to-interpretation and re-run rate.
Source sprint log: SPRINT_LOG-A11Y-INFRA.md— transparency-by-default. The full log lives in the repo.