Selected work

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
WarStock terminal showing a risk score, historical graph, and raw data

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.