How I work

01
Get the data
Pull it from the source — REST APIs, vendor endpoints, or a scraper when there's no API at all.
02
Model the data
Warehouse and semantic layer first, so every number has one definition.
03
Put it in reach
Power BI, Streamlit, or a Flask app — whatever the user will actually open.
04
Make it prescriptive
Not just the gap — the stage of the pipeline that closes it.
05
Say it in words
An agentic layer that tells someone what to do next instead of a chart to read.

About

I'm at Plan Advisors, where I rebuilt the commissions data process and the database the reporting runs on. Alongside that, I work with Apple Roofing on their data infrastructure and the internal applications sitting on top of it — a Flask app sales and operations use daily, plus the reporting behind it.

Outside work I build the same way for myself. Life Dashboard is the ongoing one: predictions, flight history, and fantasy sports tracked alongside recovery and training data. Before any of it, basketball — analytics for Iowa and SMU women's basketball, the Nigerian National Team through Olympic qualifying, and a student analytics group at Iowa.

Education

Southern Methodist University
Southern Methodist University
M.S. Business Analytics · Dec 2022
University of Iowa
University of Iowa
B.S. Mathematics, B.S. Statistics · May 2021

Skills

Data & BI: Python, SQL, Microsoft Fabric, Power BI, Streamlit, Tableau, DuckDB, Snowflake
Engineering: ETL architecture, data warehousing, Flask
AI: Claude Code, agentic workflow design
Governance: SOX compliance, separation-of-duties controls