Finance & Operations Analyst · Internal Developer
I build the systems finance and operations run on.
I'm James. I spent ten years in accounting and reconciliation, then learned data science and full-stack development. Now I build the internal tools a commercial solar and energy-storage contractor runs its back office on: data pipelines, QuickBooks automation, reconciliation, and AI agent workflows. I write down what breaks along the way.
-
Finance automation
Accounting imports, reconciliation, and close support that validate before they act and stop when the evidence is weak.
-
Data pipelines
Messy exports from accounting, banking, and project systems turned into one governed, queryable layer with clear ownership.
-
AI workflows
Claude Code agents, MCP tools, and local models, run with explicit handoffs, recorded decisions, and evidence checks.
What I've built at work
Internal systems at Day & Night Solar, where I'm the sole developer. The code is private, so these describe what each system does, not company data.
-
Operations data platform
In productionConsolidates accounting, banking, project, and procurement data into normalized tables, exception queues, and generated reports, with a strict source-of-truth hierarchy so reports never compete with the books.
Python · SQLite · pandas · openpyxl
-
QuickBooks import automation
In productionGenerates import files instead of hand-keying transactions. Checks for duplicates, enforces field limits, validates sources, and fails closed. A person always does the final import.
Python · QuickBooks Enterprise · IIF
-
Reconciliation engine
In productionMatches bank activity to accounting and project records with normalized identifiers and confidence scoring. Unmatched and ambiguous items go to a review queue instead of being forced.
Python · pandas · rule-based matching
-
Operator dashboards
In productionA warehouse health view, an agent-coordination dashboard, and an ownership board that shows every open item's owner and how long it's been waiting — generated from one pipeline instead of built one-off each time.
Python · HTML · scheduled pipeline
-
Document intelligence
In productionReads incoming PDFs, uses OCR only when there's no usable text, extracts structured fields into a review step, and fails loudly instead of treating an unreadable file as blank.
Python · PDF text extraction · OCR
-
AI agent workflow layer
EvolvingSpecialized Claude Code agents with task handoffs, recorded decisions, and verification rules, plus a growing automated test suite and a release gate that checks every change before it ships.
Claude Code · MCP · Python · pytest
Personal projects
All projects- Personal data lakehouse
Atlas
Local-first pipeline that turns scattered personal exports into canonical, searchable data, with generated views for each AI tool. Nothing leaves my machine.
Python · SQLite FTS5 · Markdown · local LLMs
Read more - Live app
No-Whey
Dairy-ingredient checker that answers SAFE, UNSAFE, or REVIEW REQUIRED, and explains why. Catches casein hiding in "non-dairy" products.
FastAPI · JavaScript PWA · YAML rules
Try it - Live app · still maintained
Cinemetrics
Movie, TV, and gaming discovery app built from scratch: vanilla JS with a hand-rolled component layer and an Express API.
JavaScript · Node · Express · MongoDB · TMDB
View live
Latest lessons
All lessons- My docs said one number. The disk said another. Documentation is data. Generate what can be generated, check what can't, and date every copy.
- The string that sorted after every date When a column can hold the wrong type, check what the wrong type sorts as, not just whether it looks wrong.
- Check the grant, not the description Capability claims need execution evidence.
- A decision that isn't recorded gets asked again Decisions need a system of record: what, who, when, and whether it's still binding.
Let's talk
I'm open to full-time roles where accounting, data, and code meet: finance systems, analytics engineering, data and automation engineering, and internal tools.