Matt Graba
Software Developer — Backend & Mobile
I'm a software developer building a full-stack fantasy basketball platform — a 16-domain API, dual-sport data pipeline, and custom scoring intelligence behind web and mobile clients — with experience across backend systems, APIs, data pipelines, and application architecture. I enjoy engineering reliable systems, solving real-world technical problems, and turning ideas into working products.
Full-stack fantasy sports platform — 16-domain API, dual-sport data pipeline, proprietary impact-scoring engine, web + mobile clients
True Impact engine: multi-signal player scoring (box, efficiency, on/off, matchup) materialized nightly from play-by-play data
43 registered background jobs — idempotent, provider-scoped ingestion with singleton locking, retry/backoff, and self-healing gap detection
One complete playable gamemode shipped end-to-end: draft → generated slates → lineup lock → auto-allocation → idempotent settlement
AI-assisted debugging CLI published to npm (devtk) — BYOK-first, hardened through a documented security review and versioned v2 re-release
Owned the full engineering lifecycle: designed, shipped, security-reviewed, and re-released — findings published, every one remediated
Self-hostable Express/MongoDB backend with JWT auth, per-user rate limiting, and token-budget guards on every AI request
32-test suite across CLI and server (Jest, Supertest, in-memory MongoDB) introduced in the v2 hardening pass
C++ logistics simulation with modular design patterns
Observer and Decorator patterns for extensible module composition
Battery management system for flight path optimization
Containerized builds with Docker, validated by unit tests
Education
University of Minnesota — Twin Cities
Computer Science — December 2024
Systems & Architecture
Operating Systems
Computer Architecture
Machine Architecture
Algorithms & Data Structures
Software & Design
Software Engineering
Program Design & Development
Advanced Programming Concepts
Artificial Intelligence
Currently Seeking
Technical Stack
Primary stack — fantasy basketball app
UI & component systems
Design patterns & system thinking
Storage, processing, and scoring
TypeScript primary; others from coursework & systems work
Build, deploy, and test
Dev Toolkit
AI-Assisted Developer CLI
A BYOK-first CLI published to npm (devtk) that brings AI debugging to the terminal — analyze, explain, fix, generate, scaffold, and suggest commands, with project-aware context scanning that respects .gitignore and skips credential-shaped files. Ships with a self-hostable Express/MongoDB backend: JWT auth, per-user rate limiting, token-budget guards on every AI request.
Taken through the full engineering lifecycle: shipped to npm, then put through a systematic security review — every finding documented in a public retrospective and remediated in a versioned v2 release. The hardening pass introduced fail-fast secret handling, a 32-test suite spanning CLI and server, and a deliberate architectural decision to retire the hosted service in favor of BYOK and self-hosting.
Architecture
CLI (npm package)
cli/
commands/ — analyze, explain, fix, generate, scaffold, terminal
utils/ — config (0600 perms), local history, context scanner
BYOK — your key, direct to OpenAI; no account, no server
Server (Express)
server/ (self-hostable)
middleware/ — JWT auth → per-user rate limit → validation
services/ — prompt templates, token-budget guard
models/ — MongoDB schemas for users, history
CLI Commands
analyze
Boxed, line-referenced issue report
explain
Function-level explanation
fix
Bug detection + suggested patch
generate
Boilerplate code generation
scaffold
Project structure scaffolding
terminal
Suggests commands — never executes
Fantasy Basketball Platform
Full-Stack · Web + Mobile
A full-stack fantasy basketball platform built as a three-layer monorepo — core platform (auth, leagues, shared contracts), basketball core (ingestion, stats, scoring intelligence), and gamemode experiences composed on top. The API spans 16 domain modules and 59 database models, fed by a 43-job background system doing idempotent, provider-scoped ingestion across two associations (NBA + WNBA) — nightly box scores, injuries, season averages, advanced metrics, and 30-second live game polling driven by per-game sync scheduling. Daily ingestion self-heals: missed dates are detected and re-ingested automatically, and every write is idempotent by design.
At its center is True Impact, a custom player-evaluation engine that scores every player-game from four weighted signals — box production, efficiency, on/off impact, and matchup difficulty — materialized nightly from play-by-play data. One complete gamemode has shipped end-to-end (bracket-driven slates, minute-allocation lineups, lock-time auto-allocation, idempotent settlement and eliminations), and its window machinery is now being generalized into the flagship season-long head-to-head mode rather than rebuilt.
The repo runs on written governance: twelve engineering laws, ADRs for ingestion idempotency and provider scoping, dated scope-locked specs, and a maintained technical-debt register — audited against the codebase on a recurring basis. Clients: a Next.js web app (league management dashboard) and an Expo / React Native mobile app.
Auth, league/roster/matchup management, commissioner tooling, typed contracts at every boundary
Dual-sport ingestion (NBA + NCAAB), 59-model normalized schema, canonical-vs-provider ID mapping
Multi-signal scoring intelligence — box production, efficiency, on/off, matchup — materialized from play-by-play
Real-time draft engine, pick validation, autopick, Redis + Postgres two-layer locking
Gamemodes as format strategies over shared window machinery: generated slates → lock → hydrate → settle
Job Runner
43 registered jobs: singleton locking, retry/backoff with jitter, timeouts, Sentry capture
Self-Healing Ingestion
Daily gap detection re-ingests missed dates; every write idempotent by natural key (ADR-governed)
Live Sync
30s game polling driven by per-game due-sync timestamps, plus provider webhook ingestion
Redis + PG Locks
Two-layer pick safety: distributed mutex + Postgres FOR UPDATE with Lua token comparison
Zod Boundaries
API entry + ingest validation, domain-typed errors, z.infer<> type sync