{"data":{"projects":{"edges":[{"node":{"frontmatter":{"title":"This Site","tech":["Gatsby","React","GraphQL","Netlify"],"github":"","external":""},"html":"<p>The thing you're looking at. Built on Brittany Chiang's open-source v4 template by directing an AI through the customization: ripping out the blog, pinning down Gatsby's GraphQL schema so trimming content stops breaking the build, and fighting an OpenSSL error that only shows up on modern Node. I don't write Gatsby from memory. I can read it, tell when it's wrong, and say precisely what I want next — which is most of the job.</p>"}},{"node":{"frontmatter":{"title":"Applicant Risk Scoring & Rating Tool","tech":["LLM API","Risk modeling","Underwriting logic"],"github":"","external":""},"html":"<p>Scores applicants on the inputs an underwriter actually uses — debt-to-income, credit history, income stability — and returns a risk rating. The part I care about is the layer on top: an LLM turns every score into a plain-language justification, because a rating with no reasoning attached is useless to a broker or an auditor.</p>"}},{"node":{"frontmatter":{"title":"Second Brain — AI-Maintained Research System","tech":["Claude Code","Obsidian","PowerShell","Task Scheduler"],"github":"","external":""},"html":"<p>A 30+ page reference library on underwriting automation, risk modeling, fraud detection and insurance compliance, maintained by an LLM instead of by me. New sources get cross-referenced and checked against what's already there, so contradictions get flagged rather than quietly overwriting the older claim. It runs unattended every morning.</p>\n<p>It also spent a while failing silently, because the source files were cloud placeholders that hadn't finished downloading when the job fired. Took me a few days to find that.</p>"}},{"node":{"frontmatter":{"title":"Automated Finance Briefing Pipeline","tech":["Make.com","Anthropic API","NewsAPI","Python"],"github":"","external":""},"html":"<p>Ran every morning at 7 AM: pull finance and industry headlines from 18 publications, summarize them with Claude, archive the output, email it. Four platforms, eight modules, and one full re-architecture from a branching design to a linear chain to get around a data-isolation constraint.</p>\n<p>Nine separate things broke before it was stable. One of them was me exposing an API key, which I caught and rotated. Currently rebuilding it in Python.</p>"}}]}}}