| # Blum AI Financial Intelligence Roadmap |
|
|
| This roadmap is the execution plan for turning Blum into a credible open-source AI financial intelligence platform. Each phase should ship with working code, API coverage, UI coverage, documentation and explicit limitations. |
|
|
| ## Current Increment - Live Intelligence Runtime |
|
|
| Shipped in the current architecture: |
|
|
| - FastAPI startup launches a background APScheduler worker. |
| - Startup pipeline ingests public news first, then historical OHLCV, signals and ETF trends. |
| - Public news ingestion combines publisher RSS feeds, thematic Google News RSS queries and asset-specific public web-search RSS queries. |
| - `/news/live`, `/sentiment/market` and `/pipeline/status` expose live news, market sentiment and worker state. |
| - Dashboard polls live endpoints every 30 seconds and surfaces news tape, sentiment mix, source/model state and signal readiness. |
| - Price pipeline remains real-data-only through yfinance, Yahoo Chart API and Stooq; no synthetic OHLCV fallback is allowed. |
|
|
| ## Phase 0 - Stabilize Docker Space Deployment |
|
|
| Goal: make the Hugging Face Docker Space build and boot reliably. |
|
|
| Deliverables: |
|
|
| - Confirm Docker build succeeds on Hugging Face Spaces. |
| - Verify FastAPI serves the exported Next.js frontend on port `7860`. |
| - Verify embedded PostgreSQL starts when `DATABASE_URL` is not provided. |
| - Verify `/health`, `/docs`, `/assets` and `/dashboard/overview`. |
| - Add lightweight demo mode if model dependencies exceed Space resources. |
| - Add clear build/runtime troubleshooting notes. |
|
|
| Exit criteria: |
|
|
| - Public Space loads without manual intervention. |
| - API docs are reachable. |
| - Seed asset universe is visible. |
| - No Gradio remnants remain in runtime metadata. |
|
|
| ## Phase 1 - Data Ingestion Reliability |
|
|
| Goal: make prices, assets and news ingestion reliable enough for a serious demo. |
|
|
| Deliverables: |
|
|
| - Harden yfinance provider with retries, partial failures and provider status. |
| - Keep real-data-only behavior: no synthetic OHLCV fallback in production or demo paths. |
| - Maintain a public provider chain for prices: yfinance, Yahoo Chart API and Stooq. |
| - Add incremental OHLCV updates instead of replacing recent rows blindly. |
| - Improve RSS source health diagnostics. |
| - Add article text extraction fallback with `newspaper3k` and BeautifulSoup. |
| - Add stronger duplicate detection across titles, URLs and canonical keys. |
| - Add source reliability and stale-data scoring. |
| - Add ingestion audit logs. |
|
|
| Exit criteria: |
|
|
| - `/market/update` reports per-ticker success/failure. |
| - `/news/update` reports source-level diagnostics. |
| - Duplicate articles are materially reduced. |
| - Failed feeds do not break the pipeline. |
|
|
| ## Phase 2 - AI Model Productionization |
|
|
| Goal: make AI model usage explicit, measurable and robust under limited compute. |
|
|
| Deliverables: |
|
|
| - Add model availability endpoint. |
| - Add lazy loading and memory-aware fallback for FinBERT, embeddings and LLM. |
| - Persist model run metadata for every sentiment and AI insight. |
| - Add prompt templates with strict evidence-only formatting. |
| - Add deterministic fallback explanations for low-resource mode. |
| - Add batch sentiment processing for article updates. |
| - Add configurable model names through Space variables. |
|
|
| Exit criteria: |
|
|
| - `/ai/explain/{ticker}` returns structured JSON with models used. |
| - FinBERT is the primary sentiment engine when available. |
| - VADER is clearly labeled as baseline/fallback. |
| - No explanation claims facts absent from retrieved evidence. |
|
|
| ## Phase 3 - Semantic Intelligence Layer |
|
|
| Goal: turn news embeddings into useful narrative intelligence, not just search. |
|
|
| Deliverables: |
|
|
| - Persist FAISS indexes by namespace or rebuild them efficiently at startup. |
| - Add semantic cluster snapshots in `ThemeCluster`. |
| - Link themes to assets, sectors, ETFs and macro drivers. |
| - Add theme trend over time. |
| - Add narrative intensity, recurrence and polarization metrics. |
| - Add `/themes/{label}` detail endpoint. |
| - Add UI for theme drill-down and related assets. |
|
|
| Exit criteria: |
|
|
| - Theme Explorer shows real cluster metadata. |
| - Semantic search returns relevant articles with similarity scores. |
| - Each high-scoring signal can cite related semantic themes. |
|
|
| ## Phase 4 - Signal Engine Upgrade |
|
|
| Goal: make the Blum Intelligence Score more defensible and auditable. |
|
|
| Deliverables: |
|
|
| - Split score modules into separate files: momentum, trend, risk, technicals, sentiment, semantics, ETF and anomaly. |
| - Add score versioning. |
| - Store full score inputs and normalized factors. |
| - Add factor weights in config. |
| - Add confidence score distinct from signal score. |
| - Add signal lifecycle states: new, confirmed, faded, invalidated. |
| - Add price/sentiment divergence logic with explicit thresholds. |
|
|
| Exit criteria: |
|
|
| - Every score is reproducible from stored inputs. |
| - UI can show why each score changed. |
| - `/signals/{ticker}` includes score version and factor weights. |
|
|
| ## Phase 5 - ETF And Sector Intelligence |
|
|
| Goal: make ETF confirmation a first-class intelligence layer. |
|
|
| Deliverables: |
|
|
| - Map stocks to confirming ETFs and sector proxies. |
| - Add stock/ETF correlation analysis. |
| - Add ETF rotation rankings by sector and theme. |
| - Add ETF confirmation score into every asset signal. |
| - Add sector heatmap and rotation charts. |
| - Add ETF vs benchmark comparison views. |
|
|
| Exit criteria: |
|
|
| - ETF Radar identifies rotation leaders. |
| - Asset Detail shows confirming or contradicting ETFs. |
| - Signal explanations reference ETF confirmation when available. |
|
|
| ## Phase 6 - Backtesting And Validation |
|
|
| Goal: validate historical signal behavior without implying prediction or advice. |
|
|
| Deliverables: |
|
|
| - Add walk-forward validation by score threshold and classification. |
| - Add benchmark-relative forward returns. |
| - Add false positive analysis by signal type. |
| - Add max adverse/favorable excursion distributions. |
| - Add result storage by run configuration. |
| - Add backtest charts: equity curve, drawdown, forward return distribution. |
| - Add methodology caveats in UI and API. |
|
|
| Exit criteria: |
|
|
| - Backtest page can compare classifications historically. |
| - API reports hit rate, average forward return and benchmark-relative behavior. |
| - Disclaimer is visible on every validation output. |
|
|
| ## Phase 7 - Frontend Intelligence UX |
|
|
| Goal: elevate the UI from technical demo to portfolio-grade case study. |
|
|
| Deliverables: |
|
|
| - Add skeleton loading and refined error states on every page. |
| - Add richer Plotly charts: RSI, MACD, Bollinger Bands, sentiment timeline, score history and correlation heatmap. |
| - Add sortable/filterable tables. |
| - Add advanced Signal Lab filters. |
| - Add exportable signal results. |
| - Add responsive refinements for tablet/mobile. |
| - Add real screenshots generated from a running Space build to README. |
|
|
| Exit criteria: |
|
|
| - Dashboard immediately communicates what to watch and why. |
| - Asset Detail explains price, sentiment, risk, news and ETF confirmation in one flow. |
| - UI remains dense but readable. |
|
|
| ## Phase 8 - Provider Architecture |
|
|
| Goal: make the platform extensible beyond yfinance and RSS. |
|
|
| Deliverables: |
|
|
| - Define provider interfaces for market data, news, filings, transcripts, estimates and ownership. |
| - Add provider registry. |
| - Add mock provider for tests. |
| - Add optional adapters for filings and public company IR pages. |
| - Prepare connectors for future licensed data sources. |
|
|
| Exit criteria: |
|
|
| - New providers can be added without changing signal code. |
| - Provider status appears in API and UI. |
|
|
| ## Phase 9 - Testing, Observability And Quality |
|
|
| Goal: make the codebase credible as an open-source engineering project. |
|
|
| Deliverables: |
|
|
| - Add backend unit tests for indicators, scoring, ingestion and API. |
| - Add frontend component tests where practical. |
| - Add smoke tests for Docker startup. |
| - Add structured logging. |
| - Add error telemetry fields in API responses. |
| - Add CI-ready commands in README. |
|
|
| Exit criteria: |
|
|
| - Core scoring and ingestion logic are covered by tests. |
| - Docker smoke test catches startup regressions. |
| - Contributors can run checks locally. |
|
|
| ## Phase 10 - Open Source Polish |
|
|
| Goal: make the repository compelling as a public case study. |
|
|
| Deliverables: |
|
|
| - Add architecture diagram. |
| - Add screenshots. |
| - Add contribution guide. |
| - Add issue templates. |
| - Add model/data limitation section. |
| - Add changelog. |
| - Add clear demo setup instructions for low-resource and full-AI modes. |
|
|
| Exit criteria: |
|
|
| - A reviewer can understand the project, run it, inspect the architecture and contribute without needing private context. |
|
|
| ## Working Rule |
|
|
| Every roadmap step should ship as a complete increment: |
|
|
| - backend logic; |
| - API endpoint or schema update when needed; |
| - frontend visibility when user-facing; |
| - documentation update; |
| - verification command; |
| - explicit limitation or disclaimer when relevant. |
|
|
| All implementation work must follow [`ENGINEERING_STANDARDS.md`](ENGINEERING_STANDARDS.md): no placeholders, no fabricated data, no synthetic market-data fallback, evidence-bound AI, efficient provider calls and explicit verification. |
|
|