Building rigorous analytics and AI-powered systems that turn complex data into clear decisions across finance, healthcare, and insurance.
I started out close to the markets, working as a financial analyst and day trader after earning my B.A./B.S. in Economics and Statistics from UC Davis (2016). In 2019 I relocated to Central Florida and moved into healthcare, working as an analyst for hospitals and clinics and learning how to turn messy operational data into decisions people actually trust.
Today I'm a data scientist in the insurance industry, building end-to-end ML pipelines, partnering closely with stakeholders, and putting AI agents into real workflows in 2026. Finance, then healthcare, now insurance: the industries keep changing, but the throughline stays the same, rigorous analytics that drive clear, practical decisions.
Since the first ChatGPT models in 2022 and 2023, I've been hands-on with generative AI as it evolved, and today I work across the whole landscape: Claude, Grok, and local open models running on my own hardware. I've watched these tools go from novelty to genuinely capable, especially in coding, so from here on most of this site itself is built with AI.
I've also used AI creatively, generating art and selling it as NFTs. The world is changing fast, and I'm leaning into it: integrating AI into how I work, build, and live, and helping the teams and industries around me do the same.
Foundational work that built my core skills, plus newer projects that lean into modern AI and automation. Colour marks the kind of work; the chip on each card marks what built it.
The laptop RAG below, rebuilt eight weeks later on an RTX 5090 machine I put together — 3B model to 27B, and every answer now retrieved, graded, cited, judged, and metered. Layered hallucination defenses with a calibration-tested LLM judge (scores planted lies 0.0, names them), 10 local models benchmarked on one index with cross-model refereed finals so no model grades its own homework, and per-query telemetry: tokens, watts, °C, and dollars. An answer costs ~$0.0002 of electricity — 71–108× under hosted-API rates at my real token mix — and the house runs on solar. Every number reproducible from the audit database.
Research beyond code: working papers in physics, economics, politics, and art history, written with AI and built by one shared pipeline where every paper is a Python program that prints its own PDF. Each draft faces a commissioned hostile review (attack, defense, verdict) before revision, and ships its research notes, data file, and figure scripts. Drafts, not peer-reviewed publications, and labeled as such.
A fully local, private RAG system that turns 148 technical PDFs (~48,800 pages, 96,546 searchable chunks) into a citation-grounded chatbot running entirely on a laptop with no cloud and no API cost. Hybrid retrieval (vector + BM25 fused with Reciprocal Rank Fusion), a LangGraph pipeline with query rewriting and deterministic citation guardrails, and a Gradio web UI.
2.76 million Chicago crime reports, 2015–2025, joined to ERA5 weather. After comparing days inside the same month and year, a +10°F hotter day lines up with about +5.6% more reported violent crime (property ~+3.7%). Battery drives the violent result; hot spells compound to ~+6.1%; the curve flattens near 80°F rather than inverting. Claude Fable 5 built the first complete notebook in two prompts. Grok 4.5 took the handoff and ran the audit, model lab, and seven falsification tests (leads, permutation, FDR). Hand-written article, not a notebook dump.
618,316 UFO sighting reports from six databases, treated as behavioral data: what actually makes people report? Built end-to-end by Claude from seven prompts, directed only through prompts. Findings: fireworks run 5x, Starlink launches spike "formation" reports 1.7x on SpaceX's published schedule, and congressional hearings create zero new sightings but double the filings of decades-old ones. The 20 strangest days in 30 years get named one by one — a fact-check even solved a 28-year-old mystery (a Russian rocket stage) — leaving exactly one unexplained night. Includes a 14-attack red team and a claims ledger that machine-verifies every headline number.
An experiment: can AI run a real data-science project by itself? This entire econometric pipeline — 217 economies, 30 years of World Bank data — was built end-to-end by Claude, directed only through prompts, with zero hand-written code. It tests the famous Environmental Kuznets Curve and finds it isn't there; what the data shows instead is "two-speed decarbonization." Panel fixed effects, bootstrap inference, a fair ML benchmark that lost to a naive baseline (on purpose), and an 8-objection red team — with the AI catching three of its own bugs along the way.
My first-ever data science project — the 2020 wildfire trilogy, born after the Tubbs Fire took my family's home — rebuilt six years later on 2.3M fires with 308 attributes each, in five rounds that are all still published: a frozen first draft, a 29-check data audit, a tuned and calibrated escalation model, a 35-finding hostile red-team review, and the final report. The 2020 random forest is reconstructed bugs-and-all as a museum piece (the replica's 96.0% sat 0.3 points above guessing-the-majority), one published claim is retracted and rebuilt in print, and the verdict on "wildfires are increasing" lands as a SPLIT: not more fires — bigger fires. The old dataset ended in 2015; the new one finally contains the fire, as a single database row the finished model scores at the 97th percentile.
Testing the classic age myth against open historical life tables. The number is real, the story is wrong: when life expectancy at birth was under 40, people who reached 65 still expected to live to about 75.4 across 211 country-years in 11 countries. Infant mortality (196 deaths per 1,000, median) crushed the average. A second myth falls too, since remaining life at 65 rose about 8.5 years from pre-1900 to post-2000. Built end to end by Grok 4.5 alone, my first solo-model project.
Testing the diet soda myths on public NHANES 2011-2018 plus NCHS mortality. Who drinks it writes most of the scare: diet-soda drinkers are older, heavier, and about twice as diabetic (31% vs 14%), so crude charts read like the can caused the disease. The blood-sugar gap mostly dissolves once known diabetics are dropped (HbA1c +0.30 to +0.05), the cancer-mortality signal is not significant (HR 0.77, CI 0.51-1.15, about 27 deaths), and BMI stays higher at +2.5 as an association, not a proven cause.
Built Random Forest classifiers on the 1.88M US Wildfires dataset to predict fire cause — SQL extraction from SQLite and scikit-learn classification, the ML chapter of a three-part wildfire series and one of the first projects of my career, preserved as written in 2020. Honestly revisited in 2026 as Return to Fire.
A personal project born from losing my family's home in the 2017 Tubbs Fire. Explored 1.88 million US wildfires (1992–2015) with ggplot2 map visualizations, focusing on the largest fire classes in California and Florida.
Interactive leaflet maps of US wildfires. Hover any fire to see its name, acres burned, cause, and duration. Turned a static analysis into an explorable geospatial experience.
Quantitative machine learning regression on Bitcoin prices, covering feature selection, residual diagnostics, and comparison of statsmodels and scikit-learn approaches against baseline models.
An extraction pipeline that turns unstructured PDFs into clean dataframes using regular expressions, then loads them into SQL Server. The kind of unglamorous data plumbing that real analytics depends on.
Comprehensive exploratory data analysis on trending YouTube videos. Uncovered patterns in engagement, category performance, publishing timing, and title characteristics using visualization and statistical summaries.
Recreated Excel's pivot table workflows in Python with pandas, showing how programmatic aggregation scales past spreadsheet limits while staying familiar to Excel users.
Interactive flexdashboard analyzing US traffic accidents (2016–2019) with a focus on Orange County, Florida. Combines tree map, pie, and bar charts built with highcharter into a single shareable page.
Interactive technical charts for stocks and cryptocurrencies using highcharter (the R wrapper for Highcharts), with quantmod and TTR supplying the price data and technical indicators.
No projects match that combination.
AI-assisted research beyond code: a growing shelf of working papers, each written with AI, built by one Python pipeline, and put through a commissioned hostile review before revision. Drafts, not peer-reviewed publications, and labeled as such.
What Bell tests, contextuality, holography, and interface theory do and don't imply about "objects in spacetime." Five revisions, with a full attack, defense, and verdict cycle behind the current draft.
Who gets blamed when AI displaces work, and why the political response takes the shape it does. The politics follow attribution, not size. Draft 3's central claim was retracted on review; the model runs as code.
Marx, Polanyi, and the politics of losing labor's leverage. Every prior countermovement won reform because labor was still needed; if AI removes that leverage, the response is bargained, bought, or broken. Companion to Nobody to Blame.
The case for universal equity endowment, labeled as advocacy in line one. Its central claim, equity-funded insurance that pays out most when wages collapse, is flagged in the disclosure as the paper's own. Fund arithmetic runs as code.
Digital and blockchain-native art as a major movement, argued against photography's slow climb into the canon. 53 references, 15 headline numbers re-verified, and real public-domain museum plates with a license log.
How Thailand and the United States each manufactured a national culture, where the manufacturing failed, and why 2026 is an American ebb tide and a Thai door ajar — not an ending in either country.
Why the quantum threat to blockchains is a public-key problem that already happened, and what AI does to the clock. A position paper on quantum, AI, and the limits of "be your own bank." Two full hostile-review cycles behind the current draft.
AI, the printing press, and the price of standing behind work — a position paper on naming and navigating the present information revolution, revised under adversarial review with its numeral audit on file.
Jung's shadow, the science of what we cannot bear to know, and the case for looking anyway. Began as Unknown Face (v1–v2), renamed at v3 — the whole draft trail ships with the paper.
New drafts land on the shelf first, with their full process folders.
Every paper folder ships its research notes, data file, figure scripts, and the attack/defense/verdict record — source on GitHub.
The best data science today combines statistical rigor, domain expertise, and modern tooling. My newer work deliberately layers generative AI and agentic systems on top of strong foundational practices rather than replacing them.
I'm always open to interesting conversations about healthcare analytics, AI agents, building in public, or opportunities where rigorous data work meets real impact.