Public data, sharper shape
netpitch works from public baseball data and reshapes it into scouting-style views: pitch mix, command, velocity, outcomes, sequencing, tunneling, count leverage, and damage risk.
About netpitch
netpitch is a personal baseball analytics project by Michael Vieth. It started from a single-pitcher local fetcher and grew into a searchable dashboard for any MLB or AAA pitcher, deployed as a small public app at netpitch.us.
Pitch data is most useful when it stays close to the baseball question. Is the slider missing bats? Is the fastball command playable? Did the approach change after a promotion? Are mistakes being punished in predictable zones?
netpitch keeps those questions on one surface. The app builds cacheable datasets from public game data, then lets the browser filter and recompute views quickly once the data is loaded.
The brand mirrors the product: the mark is a strike-zone grid with one pitch plotted low in it. The grid is net, and the dot is pitch.
netpitch works from public baseball data and reshapes it into scouting-style views: pitch mix, command, velocity, outcomes, sequencing, tunneling, count leverage, and damage risk.
Search a pitcher, choose MLB or AAA seasons, and move from season context into individual pitch behavior without maintaining a spreadsheet or one-off script.
The visual system is intentionally quiet. Navy carries the interface, the red pitch dot is the active signal, and pitch/outcome colors stay consistent across charts.
Data and APIs
The web app is a pure client of the netpitch API. The API and worker handle public MLB data fetching, cache-aside summaries, and async pitch backfills so the dashboard can stay responsive while larger pitch datasets are prepared.
Integration
The browser calls the app API for pitcher search, recently loaded pitchers, summaries, pitch datasets, and async backfill status.
/api/pitchers/search, /recent, /:id/summary, /:id/pitches, /:id/status
Integration
The API and worker fetch public player, roster, season, game log, and play-by-play JSON used to build the dashboard datasets.
statsapi.mlb.com/api/v1
Integration
The app proxies public player headshots through a same-origin route so the browser does not need to call the image CDN directly on every render.
/headshot/:id -> midfield.mlbstatic.com
Integration
Cloud Run serves the web/API/worker services, Firestore stores small metadata, Cloud Storage stores larger cached JSON, and Pub/Sub coordinates backfills.
Cloud Run, Firestore, Cloud Storage, Pub/Sub, Cloud Scheduler, Cloud Logging
Integration
The app loads a minimal Google Analytics tag to understand traffic, page usage, and aggregate search/filter interactions.
gtag.js with measurement ID G-T8V701B09Y
Privacy posture
netpitch does not have user accounts, payments, uploads, comments, or private scouting notes. It stores public baseball datasets and limited operational metadata needed to serve the dashboard. The full data handling details are in the Privacy Policy.