TL;DR: Jacob Matson refactored a real NBA box scores app using Claude Code and agent teams. The process revealed something he didn't expect: data engineering patterns like DAGs, wave-based planning, parallel workers, and constant testing are the same patterns that make AI agent workflows actually work.
From vibe code to production pipeline
About eighteen months ago, Jacob built an NBA box scores app. It worked, but the code was a mess — mixed Python and TypeScript, no incremental loading, raw SQL injection in the frontend, hard-coded values everywhere, no tests. He used AI agents to refactor the whole thing into a clean, all-TypeScript project, and the process taught him something unexpected about how data engineering and AI engineering overlap.
How the workflow changed over time
Jacob didn't start with a sophisticated setup. He began in Cursor, editing one file at a time. Then he moved to Claude Code, which was the first time he stepped out of the code review loop entirely. One window became three parallel windows, coordinated through GitHub issues. Eventually he had agent teams running in isolated work trees, each picking up an issue and reporting back. The thing that stuck with him: dispatching waves of parallel work to agents looks exactly like scheduling tasks in a data pipeline DAG.
Architecture: MotherDuck as the full stack
The app pulls data from NBA APIs (Play-by-Play Stats for historical data, NBA CDN for live scores), loads raw JSON into MotherDuck, transforms it with SQL, and serves it to a Next.js frontend using MotherDuck's DuckDB Wasm client. No separate backend, no ORM. Just SQL and a browser-side database connected to the cloud. Jacob also built an adaptive rate limiter to handle the NBA API's unpublished rate limits, plus data quality detectors that caught real edge cases like zero-minute player records.
Build your own workflow
Jacob's strongest advice: don't copy someone else's AI workflow. He compared it to driving an F1 car — the seat, pedals, and steering wheel need to be custom-fitted because you're moving so much faster than before. Adopting someone else's prompt templates or agent frameworks didn't work for him. What did work was understanding his own thinking patterns, building tooling around them, and then generalizing back to a team workflow.
What carried over from data engineering
Testing constantly. Planning work in dependency-aware waves. Building simple architectures you can reason about. Keeping pipelines as dumb as possible. The tooling changed, but the core skills transferred directly: knowing what to build, breaking problems into a graph, and validating at every step. That's data engineering. It's also how you orchestrate AI agents.



