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 surfaced nearly $250K of written commitments on a single job the ERP reported as having none, the case an ERP-driven view structurally cannot see.
  • 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, integrating 7 upstream systems. 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, and a nightly pipeline distills ~261,000 sign-in events into 29 deduplicated alerts. Each payroll week it reviews ~113 timesheets and ~4,400 labor hours and flags ~42 conditions (~22 critical) for resolution before payroll runs.
  • Timecard write-back into a timekeeping system with no published API, over its HTTP and WebSocket protocol rather than a headless browser: promote-then-edit, per-group scope fencing, and an intent-and-result audit line per operation. 769 audited corrections across 37 employees in the first two live payroll cycles, each one previously a manual edit in the vendor UI.

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 multiple API integrations and SQL-backed reporting.
  • 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