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

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

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-data reconciliation in progress with a purposeful three-way split: read-only agent extraction from unstructured documents, deterministic matching and calculation, human remediation. First pass identified ~$107,000 in real errors and ~$572,000 in phantom duplicate commitments.
  • 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. Timesheet 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.

High School Teacher, Computer Science & Technology · American Community School of Amman

2016 – 2024 · Amman, Jordan

  • Built and operated Headsup, a containerized bell-schedule calendar sync (Python, SQL, Google REST API, Docker, AWS EC2). Merged several conflicting scheduling sources (9 schedules with variants for division, weekday, exceptions), extracted from an undocumented vendor schema via custom SQL PowerQueries against PowerSchool's Oracle database, into authoritative Google Calendar events and replaced printed daily schedules for roughly 550 students and teachers across the middle and high 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

Demos run production code in their own environment with fake data and no login.

Job Dashboard: job-dashboard-demo.pkbowman.com

Employee Dashboard: employee-dashboard-demo.pkbowman.com

Source code at github.com/philbowman, where headsup3 and ZrRobot are public. The Odin applications stay private.

Education