9.1 KiB
Chat / Bot Capability Audit
Reviewed on 2026-05-07 against the current main branch.
This audit is separate from the completed UI migration roadmap. It assesses the functional maturity of:
- trading bot/runtime
- realtime socket integration
- Trade Plans automation
- reconciliation / operational tooling
- chat / AI assistant capabilities
Executive Summary
The app has real bot and chat functionality today. It is not a mock product.
Current maturity estimate:
| Subsystem | Completion | Notes |
|---|---|---|
| Trading bot/runtime | 80-85% |
Real execution, state recovery, order lifecycle, and user-scoped broker credentials exist. |
| Realtime web integration | 85-90% |
Socket-driven state and health flows are implemented and tested. |
| Trade Plans automation | 85% |
Buy/exit automation, portfolio linkage, lifecycle toasts, and setup history are in place. |
| Reconciliation / ops | 75-80% |
Strong operational depth exists, but manual-review and quarantine paths are still prominent. |
| Chat / AI assistant | 60-70% |
Real assistant exists, but it is still mostly profile-generation/config assistance, not a full trading copilot. |
| Overall product maturity | 75-80% |
The product is functional and substantial, but not yet “quiet”, fully unified, or deeply assistant-driven. |
What Exists Today
1. Trading runtime is real
Evidence:
Implemented behavior includes:
- authenticated trading APIs
- live trading loop
- manual trader/profile routing
- order and position lifecycle tracking
- user-scoped Alpaca credential usage
- health tracking and loop telemetry
Conclusion:
- this is not a toy bot shell
- execution/runtime infrastructure is one of the stronger parts of the app
2. Realtime web state is real
Evidence:
Implemented behavior includes:
- authenticated socket connection
- runtime symbol/order/history/alert updates
- health and reconciliation metrics in app state
- tested event application behavior
Conclusion:
- realtime state propagation is substantially implemented
- this is a strong, working foundation for trading/ops UX
3. Trade Plans are a real workflow
Evidence:
Implemented behavior includes:
- short-term buy plans
- profit-exit attachment to existing holdings
- concurrent same-symbol setup support
- long-term conversion / resume exit management
- portfolio linkage
- setup-level runtime events
- setup activity history and timeline
Conclusion:
- Trade Plans are feature-complete enough for real use
- remaining work is mostly refinement, not existence
4. Reconciliation and ops tooling are deep
Evidence:
- backend/src/services/reconciliationService.ts
- backend/src/services/healthTracker.ts
- web/src/tabs/ReconciliationAuditPanel.tsx
- web/src/tabs/AdminTab.tsx
Implemented behavior includes:
- reconciliation cycles
- parity / backfill / coverage / repair services
- health metrics and watchdog signals
- admin reconciliation audit UI
- operational event surfaces
Conclusion:
- the platform has real operational depth
- the remaining issue is not missing machinery; it is reducing how often users/admins need it
5. Chat assistant is real, but narrower
Evidence:
- web/src/components/ChatControl.tsx
- web/src/components/ChatControl.dom.test.tsx
- backend/src/services/apiServer.ts
- backend/src/services/aiClient.ts
Implemented behavior includes:
- authenticated
/api/chat - LLM provider fallback chain
- deterministic local fallback if AI output fails
- profile create/update/explain intent
- draft editing and apply flow in the UI
- quick actions for common profile prompts
Conclusion:
- this is a real assistant workflow
- but it is still mostly “profile configuration assistant”, not a broad product copilot
Major Gaps
1. Chat is not yet a full portfolio / execution / reconciliation copilot
Current state:
- chat can generate or modify profiles
- chat is not yet deeply integrated into:
- portfolio explanation
- trade-fire reasoning
- exit-block diagnosis
- reconciliation guidance
- post-trade review
Impact:
- the product has strong underlying runtime data, but the assistant does not yet exploit it fully
Priority:
- highest
2. Explanation surfaces are still shallow
Evidence:
Current state:
- explanation logic is heuristic and limited
- comments in code explicitly note simplified behavior
Impact:
- users can see state, but not always the most useful “why” behind it
Priority:
- high
3. Reconciliation maturity is strong, but still noisy
Current state:
- there are many reconciliation and quarantine paths
- this is good operationally, but it usually means the user/admin experience is still noisy
Impact:
- reliability is protected
- clarity and quietness can still improve
Priority:
- high
4. Error surfaces are still uneven
Examples:
- user-facing flows still rely on thrown messages in several places
- some UI/runtime areas still log directly with
console.error
Impact:
- technically functional
- not fully product-polished
Priority:
- medium
5. Chat lacks deeper action verbs
Current state:
- assistant handles
create_profile,update_profile,explain - it does not clearly own richer actions like:
- explain current position
- explain why no trade fired
- inspect blocked exit
- summarize reconciliation anomalies
- propose fix without leaving chat
Impact:
- user expectation of “AI trading assistant” is only partially met
Priority:
- highest
Recommended Next Implementation Order
Phase A: Make chat a real copilot
- Add assistant intents for:
- explain current holding
- explain why a symbol/profile did not enter
- explain why an exit is blocked
- summarize reconciliation issues
- suggest safe next actions
- Feed live runtime context into
/api/chat:- holdings
- active profiles
- recent orders
- recent operational events
- reconciliation health summary
- Return structured action types, not only free text:
explain_positionexplain_blockersummarize_reconciliationrecommend_profile_change
Phase B: Improve explanation quality outside chat
- Replace heuristic-only explanation paths with lifecycle-aware reasoning
- Reuse the same explanation contracts in:
- Portfolio
- Trade Plans
- Overview
- Chat
Phase C: Quiet the ops layer
- Reduce quarantine/manual-review frequency
- Improve user-facing messages for blocked trades/exits
- Add clearer reconciliation state summaries for admins and end users
Phase D: Polish error UX
- unify user-safe error formatting
- reduce raw thrown-message exposure
- reduce console-noise paths in stable workflows
Recommended Success Criteria
The chat/bot experience should be considered “substantially complete” when:
- chat can explain active positions and blocked actions using live runtime context
- chat can explain “why nothing happened” for a profile or symbol
- Trade Plans, Portfolio, and Chat share consistent lifecycle reasoning
- reconciliation remains available but becomes rarer and quieter
- user-facing errors are product-grade instead of raw internal messages
Bottom Line
The app already has real bot functionality and a real assistant.
The biggest remaining gap is not “build chat from scratch.” It is:
- turning the current assistant from a profile generator into a true trading copilot
That is the highest-value next product move because the runtime, socket state, Trade Plans, and reconciliation foundations are already in place.