FieldPulse, Senior Software Engineer
Field-service management platform for trade contractors. Joined when the engineering team was five people; it's thirty-plus now. 2,300 commits on the main webapp, 450 on the reporting frontend, 220 on the PDF rendering service.
I rebuilt the commission system end-to-end. New calculation rules in the webapp and a dedicated Commission report tracking invoice status, related job status, and assignee chains, with column aggregation and hyperlinks preserved under grouping. Job costing got a full UI pass with invoice cost chart redesign, job-analysis breakdowns, and dashboard widget support. Item options added a variant/option configurator for line items. A quantity formula variable engine lets companies define dynamic pricing formulas against configurable field values. On the reporting side I added asset transfer tracking across multiple customers, a live "Current Time in Status" column that updates in-grid without refresh, a telephony integration (Engage) exposing outbound call and voice-tag data with saved reports, Forms reporting with dashboard widget support, and Parent Customer hierarchy columns across Estimate/Invoice/Job/Customer reports.
For the Angular 16 migration I built a Python orchestrator with a React/Vite/Monaco UI, AST traversal, a priority-ordered rule engine with conflict resolution via difflib's SequenceMatcher, transactional rollback over an in-memory content log, and a GPT-4 reviewer returning ranked structured output per file. Hand-migration would have taken two-plus years; the tooling cut that to four months.
In the QA layer I designed a multi-agent test-generation pipeline running as a Claude Code skill. The explore agent maps live application state, the synthesize agent builds a test plan from a methodology corpus and a historical bug corpus, the generate agent emits pytest/Playwright code under a Page Object Model contract, the mutation gate filters out tests that don't actually verify anything, and the reviewer agent closes the loop. Integrated with Jira, Linear, Confluence, and Allure TestOps. I'm also researching natural-language querying for the reporting frontend, where plain-text questions return data tables and charts against the existing report schema.
I built the reporting frontend in React 18 on AG Grid Enterprise, embedded via iframe over postMessage. Twenty-five report types use one shared factory; adding a new report means one file. The same code handles pivoting, grouping, CSV/Excel export, saved reports, and dashboard widgets. Alongside it I built a Python/FastAPI PDF rendering service and a shared component library.
Domain expansion: 39 integrations, a custom-field engine for all 13 entity types, proposals, and drag-and-drop scheduling. Integrations covered accounting, payments, field-crew tools, and CRM.
Core Angular app built from scratch, covering invoicing, estimating, scheduling, and status workflows. The data model is tightly connected. A status change on an invoice goes through the customer view, commission calculation, reporting, and up to three external integrations. Thirteen entity types support custom fields; twelve models power the status-workflow configuration.
Over ten years I was involved in architecture decisions, hiring, and onboarding new engineers.