Phil Bowman

Software Engineer · Python · Flask · MS SQL Server · Financial Systems · LLM Tool-Use

Fort Collins, CO · US Citizen · Remote

pkbowman.com · linkedin.com/in/philipkbowman · github.com/philbowman

Summary

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. Ships LLM features with a real correctness bar: schema-constrained tool use and SQL AST validation rather than raw model output.

Core Skills

Experience

Odin Electric · Project Accountant / IT Specialist (Internal Software & Automation)

Sept 2024 – Present · Remote

  • Flask analytics dashboard over the Foundation ERP (MS SQL Server via pymssql): AR aging and DSO, revenue recognition under three methods, project-level cost accounting and margin analysis, GL tie-out against the AR subledger, billing and invoice generation. The invoices go to customers and the reports go to leadership. Currently extending it to GL-driven income statement projections, replacing a hand-maintained forecast spreadsheet.
  • Document-to-ERP reconciliation, split three ways on purpose: an agent extracts from unstructured documents, deterministic code does the matching and the arithmetic against Foundation, a human remediates. The detection layer is read-only by design. A three-way PO match (PO, receipt, invoice) is substantially built. First pass across 16 jobs surfaced ~$107,000 in real errors and ~$572,000 in phantom duplicate commitments, with ~$60,000 corrected during the review.
  • Natural-language-to-SQL query layer on LLM tool-use. JSON-schema-validated tool calls, sqlglot AST validation, ~175 unit tests, so a model-assisted feature ships with a correctness bar instead of trust in raw output.
  • Flask workforce platform over HH2 labor exports and the Microsoft 365 tenant. Configurable rules flag payroll violations before they reach a paycheck; an identity layer reconciles Entra against payroll for terminated employees holding paid licenses, missing MFA, and offboarding left open for years. Monday correction throughput rose 82% and pre-payroll correction coverage doubled, measured across 99 payroll weeks of transaction-log history while the workforce grew ~20%.
  • License and device drift monitoring. A one-time Microsoft 365 cleanup cut spend roughly 50% and then drifted back; the inventory built to replace it surfaced 62 of 86 devices untracked in any system. Cleanups do not hold; systems do.

American Community School of Amman · Computer Science & Technology Teacher

2016 – 2024

  • Built and operated Headsup, a containerized bell-schedule calendar sync (Python, SQL, Google REST API, Docker, AWS EC2). Merged several scheduling sources and replaced printed daily schedules for a 1,000-student school, in production four years across two rebuilds, on-call included.
  • Built ZrRobot, a Flask grading platform with automated rubric evaluation, Google Classroom and PowerSchool integration, and SQL-backed reporting, which cut grading time roughly 4x across five sections.
  • Designed and taught a full-stack software curriculum: Python, SQL, REST APIs, HTML/CSS, Git.

Portfolio

Education