Portfolio Intelligence Platform who uses it, and the path through one working day

Three users, one system

👩‍💼 Portfolio analyst (primary)

Checks the portfolio every morning, reads what the news means for her positions, asks the advisor for an explained view, reviews an optimisation proposal. Wants numbers she can trust and explanations she can check.

🧑‍⚖️ Compliance reviewer

Needs every claim traceable: which news item, which model, which prompt version, which service computed the figure. Reads the audit trail, never the chat.

🧑‍💻 Developer / operator (you)

Keeps the deterministic core green, watches cost and latency budgets, opens circuit breakers before the demo does, gates every prompt change with the eval harness.

The analyst's journey · each step maps to a screen and to the services behind it

1

Open the portfolio

holdings, weights, return, Sharpe, volatility, VaR

PortfolioService · Performance · Risk
→
2

Check market data

live prices — or the snapshot, clearly marked

MarketDataService (+ cache fallback)
→
3

Read the insights

news → validated Insight: sentiment, tickers, event type

NewsIngestion · ResearchAgent · ontology guard
→
4

Ask the advisor

explained, cited answer; numbers from services

AdvisorAgent · Risk/OptimizationAgent · gateway
→
5

Review the proposal

allocation, frontier, caveats; decide herself

OptimizationService · OptimizationAgent

The same day when the LLM API is down

Steps 1, 2 and 5 work unchanged (deterministic). Step 3 shows the last completed ingestion with a "paused" banner; step 4 says "advisor unavailable — here are your figures". Nothing is silently missing, nothing is invented.

What the reviewer sees behind step 4

request id → agent trace → each LLM call (prompt version, model, tokens, latency) → guard verdicts → cited Insight ids → the service calls that produced every number. Exportable as an audit record.

1API-first: every screen only calls the HTTP/JSON API; the dashboard holds no business logic (§2.6).
2Degrade gracefully and say so in the UI (§4.2) — the demo will hit a failing API.
SKETCH 0/7 · wireframe, not a specification