I build software for finance teams, and I do the accounting it runs against.

Python · Flask · MS SQL Server · Anthropic tool-use · Docker · AWS

Projects

Job Dashboard: job list with contract, cost, and billing columns, plus tabs for AR Aging, CTC Reports, Invoice Generator, PO Generator, Billing, and Costs

Job Dashboard

Flask analytics over an electrical contractor's Foundation ERP, on MS SQL Server via pymssql.

  • AR aging and DSO, progress billing, invoice generation
  • Job costing and cost-to-complete
  • Profitability under three revenue-recognition methods
  • GL-tied financial reporting and lien waiver tracking

In daily use by accounting and operations leadership. Billing errors down roughly 90%, 20+ hours a month of manual work removed.

Open the live demo, no login
Employee Dashboard: timesheet violation summary with per-employee pay-type breakdown, plus identity, device, and license tabs

Employee Dashboard

Flask over HH2 labor exports and the Microsoft 365 tenant.

  • Flags payroll violations before they reach a paycheck: mixed pay types, hour minimums and maximums, overtime distribution
  • Reconciles identity against Entra: terminated employees still holding paid licenses, missing MFA, stale accounts, open offboarding
  • Device, line, and license inventory
Open the live demo, no login
Headsup calendar sync app

Headsup

Containerized calendar-sync service. Python, Flask, Google APIs, Docker, AWS EC2.

  • Merges several scheduling sources and publishes to Google Calendar
  • Replaced printed daily schedules at a 1,000-student school
  • Ran in production for four years
Source on GitHub
ZrRobot grading app

ZrRobot

Flask grading platform for computer science coursework.

  • Automated rubric evaluation with SQL-backed reporting
  • Google Classroom and PowerSchool integrations
  • Roughly 4x faster grading, consistent rubrics across sections
Source on GitHub

Resume

Software engineer who understands accounting from the inside: GL structure, revenue recognition across three methods, why an overbilled job is borrowed time, and why forcing AR aging to tie to the GL hides the error instead of finding it. Sole developer for a 100-person electrical contractor, building Flask/Python over an MS SQL Server ERP.

Download PDF Open full page

Contact