Version: 1.0 Date: 2026-03-22 Parent system: Money OS v3.1+
Three phases. Each produces something usable. The first phase delivers the core value (portfolio-aware scanning) in 3 weeks. Phase 2 adds crypto and fundamentals. Phase 3 adds the intelligence that makes this more than a chart tool.
Phase 1 │████████│ Core Screening Engine Weeks 1–3
Phase 2 │████████│ Crypto + Fundamentals Weeks 4–6
Phase 3 │████████│ Portfolio Intelligence Layer Weeks 7–9
Phase 4 │░░░░░░░░│ Future Enhancements Weeks 10+
Difference from Lighthouse’s roadmap: Lighthouse builds a full web app with 9 tabs over 14 weeks. We build a data service + Claude skill in 9 weeks. No Kanban board, no notes app, no hourly bars, no human drawing tools. Every week ships something that makes /screen smarter.
Duration: Weeks 1–3 Goal: Scanner finds stocks near trendlines, Claude presents them with portfolio context
This phase is the minimum viable loop: data in → trendlines computed → scan results out → Claude filters by portfolio.
bars, trendlines, scan_results, trading_signals, watched_tickers, pipeline_statuslib/fetchers/alpaca.ts)
fetchBars(ticker, timeframe, from, to) with paginationfetchDailyBars cron job — iterate watched tickers, upsert to barsfetchWeeklyBars cron jobfetchVix cron jobwatched_tickers with S&P 500vercel.jsonGET /api/pipeline/status endpointDeliverable: Data service deployed, market data flowing daily, pipeline status visible.
lib/indicators/atr.ts — ATR(14)lib/indicators/rsi.ts — RSI(14)lib/indicators/macd.ts — MACD(12,26,9)lib/indicators/zigzag.ts — pivot detectionlib/engine/trendlineEngine.ts:
runTrendlineEngine cron job (processes all watched tickers, weekly + daily)lib/engine/scannerEngine.ts:
runScannerEngine cron job (runs after trendline engine)GET /api/bars?ticker=&timeframe=GET /api/trendlines?ticker=GET /api/sr-levels?ticker=GET /api/scanner?filter=GET /api/vixDeliverable: Trendlines and scan results computed daily for all watched tickers. API serving results.
skills/security-screener/SKILL.md with:
/screen command: fetch scan results → read profile → apply portfolio filter → format output/watchlist command: fetch approaching-zone stocks → overlay portfolio context/signals command: fetch recent signals → prioritize by portfolio relevancecommands/screen.md, commands/watchlist-scan.md, commands/signals.mdlib/engine/signalEngine.ts:
runSignalGenerator cron jobGET /api/signals?limit=50&ticker= endpointPOST /api/universe/sync endpoint (accepts ticker list from Claude)/screen command to portfolio-filtered outputcommands/money-os.md router to include new commandsDeliverable: User can say /screen and get portfolio-aware investment candidates. Full loop working.
Duration: Weeks 4–6 Goal: Crypto assets in the scanner, fundamental data enriching every recommendation
lib/fetchers/coingecko.ts)
fetchDailyBars(coinId) — OHLCV for top 20 coinsfetchWeeklyBars(coinId) — aggregate from dailycryptoBarsFetcher cron job (daily midnight UTC)watched_tickers with top 20 crypto by market cap/screen output (no P/E for crypto, show network metrics where available)Deliverable: /screen returns crypto candidates alongside stocks.
lib/fetchers/fmp.ts)
fetchFundamentals(ticker) — quarterly key ratiosfetchEarningsCalendar(days) — upcoming earningsfundamentals table, run migrationfundamentalsFetcher cron job (daily 6:30 AM)earningsFetcher cron job (daily 6:00 AM)scan_results to include fundamental overlay (P/E, rev growth, sector)GET /api/fundamentals?ticker=GET /api/earnings?days=7Deliverable: Scan results include fundamental quality metrics. Earnings calendar available.
skills/security-screener/ reference docs for earnings interpretation/earnings command to skill:
/sectors command to skill:
sectors and sector_tickers tablesGET /api/sectors and GET /api/sectors/:slug/pricesDeliverable: Full feature set live: /screen, /watchlist, /signals, /earnings, /sectors.
Duration: Weeks 7–9 Goal: The screener becomes truly personal — it learns your thesis, suggests based on conviction, and connects to the full Money OS skill chain
/screen to accept thesis context:
profile/history.md contains a prior /thesis-to-trades analysis, use its categories and conviction levels to weight scan results/screen output (how well each candidate fits the stated thesis)Deliverable: /screen results are weighted by thesis conviction, not just technical proximity.
/screen position sizing to consider funding sources:
profile/holdings.md — flag short-term vs long-term gains/rebalance skill: /screen output includes a “generate trade plan” CTA that feeds directly into rebalancingDeliverable: Recommendations include tax-optimized funding sources and wash-sale warnings.
signal_outcomes table/signals output:
GET /api/signals/performance endpointDeliverable: Scored recommendations with early backtesting data. Foundation for Money OS M5 (Learning System).
Timeline: Post Week 9 (backlog, prioritized by user demand)
Each sprint = 1 week. Single developer.
Mon: Planning + schema/API design
Tue-Wed: Backend (fetchers, engines, cron jobs)
Thu: Skill writing + integration
Fri: Testing + deployment + skill validation with real data
A milestone is done when:
/screen → gets relevant, filtered results with position sizing| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Alpaca API rate limits (200 req/min) | High | High | Batch requests, stagger fetches, use bulk endpoints where available |
| CoinGecko free tier limits (30 req/min) | Medium | Medium | Cache aggressively, fetch only top 20 coins, consider Pro tier |
| FMP free tier (250 req/day) | High | Medium | Fetch fundamentals weekly not daily, cache in DB, prioritize portfolio tickers |
| Trendline engine >20 min for full universe | Medium | Medium | Process in batches of 50, parallelize where Vercel allows |
| Vercel serverless 60s timeout | Medium | High | Split heavy jobs into smaller cron-triggered chunks |
| Stale data producing false signals | Low | High | Pipeline status monitoring, skill checks data freshness before presenting results |
| User profile out of date | Medium | Medium | Skill prompts user to verify holdings if last update >30 days |
| Dimension | Lighthouse (14 weeks) | Ours (9 weeks) |
|---|---|---|
| Scope | Full standalone web app, 9 tabs | Data service + Claude skill, 5 commands |
| Assets | 549 stocks only | Stocks + crypto + ETFs, dynamic universe |
| Intelligence | Technical analysis only | Technical + fundamental + portfolio + tax |
| Personalization | None (same view for everyone) | Filtered by holdings, thesis, allocation targets |
| Productivity tools | Kanban + Notes (4 weeks) | None (use existing tools) |
| Hourly data | Yes (expensive) | No (irrelevant for personal investing) |
| Real-time scanning | Every 60 seconds | Once daily post-market |
| UI | Full dark-theme dashboard | Claude conversation (optional minimal dashboard later) |
| Integration | Standalone | Feeds into /thesis-to-trades, /decide, /rebalance |