Personal project · Data pipeline · May — June 2025
WarStock
An experimental data pipeline that combines defense-equity movement with conflict-news volume and exposes each component of its hourly signal.
- Role
- Design + engineering
- Timeline
- May — June 2025
- Stack
- Python · React + Vite · GitHub Actions · RSS · Recharts · Vercel
- Metrics
- 5 tickers · 3 RSS searches · Hourly automation

Overview
WarStock runs a scheduled Python model, persists timestamped score history, and serves it to a React dashboard through a serverless API with a direct-data fallback.
Composite indicators can look authoritative while hiding fragile inputs. This project treats the result as an experimental signal and makes its data sources, weighting, history, and limitations inspectable.
What I built
Built the Python ingestion and scoring pipeline, persisted history, serverless API, and terminal-style React dashboard.
Integrated five Yahoo Finance tickers and three Google News RSS searches without requiring application secrets.
Added browser-side JSON and CSV exports, manual refresh controls, and continuous integration for backend checks and the production frontend build.
Key choices
Kept the model deliberately simple: an 80% stock signal and 20% keyword-weighted news signal, normalized to 100.
Logged source errors and reused the previous valid component when an upstream feed failed.
Made component scores, history, and exports visible so the output can be audited instead of treated as a prediction.
Outcomes
Runs the complete ingestion-to-visualization loop every hour through GitHub Actions.
Continues serving score history through a raw GitHub fallback if the Vercel API route is unavailable.
Demonstrates scheduled data processing, error handling, persistence, API delivery, visualization, and export in one small system.