Private, because it uses real data. Built in about ten weeks and in daily use.
10weeks to build, about
116commits
13klines of code, about
160automated tests, about
Bank sync: I applied to Plaid for API access myself, then worked with Claude Code to wire it in, making the setup and security decisions along the way.
Access: role-based, enforced with row-level security. Bank tokens live in a separate table.
AI: a local model categorizes transactions, summarizes spending and models tax scenarios, so financial data never goes to a cloud AI service.
Features: net worth, loan amortization, cash flow, taxes, spending and multi-scenario forecasts, duplicate detection.
AI agents for the software development lifecycle
Built at work. Three agents and nine skills, run in the GitHub Copilot desktop app.
I created each agent and the skills it can use. Together they cover project management, technical analysis and business analysis, and a skill can build on what another produced, such as the project package that a smoke test checks a feature branch against.
Project Management Agent
Create project package
Create project charter
Create meeting summary
Generate current project summary
Technical Analyst
Create current state from GitHub code
Business Analyst
Create work item structure
Create work items (features and user stories)
Review user story against the code base
Smoke test feature branch against project package
There is governance around it. I set up the plugin repository in Azure DevOps Git with proper environments, and changes reach the agents only through a pull request.
Source code is saved in the Azure DevOps repo.
Changes are made on a staging branch.
A pull request gets approved and the changes merge into the main branch.
I use AI to build working mockups of layouts and logic, so requirements are concrete before a developer writes a line. People react to something real, and the rules behind each screen are written down next to it. These three are sample wireframes of the kind I make: a form, a dashboard and a mobile screen, with numbered notes for the logic.
Request intake form
Required fields are checked as the person types.
Submit stays disabled until the form is valid.
The status bar tells the requester where the request is.
Approvals dashboard
Summary boxes count requests by status.
Overdue rows are highlighted so they get picked up first.
Filters change the table immediately.
Mobile approvals
Approve or reject in one tap, without opening the request.
Each card shows what it is waiting on.
Bottom navigation keeps the main views one tap away.