Blog
Notes on AI applications and Acumatica ERP
I publish method notes for AI applications and Acumatica ERP.
- Acumatica business scenario validation: pass/fail process paths from a Git seed
- — Config looks complete until order, receipt, invoice, or payment fails. Named scenario legs on non-prod current config give pass/fail with the failing step named — complements click-through UAT and feeds major-release and integration checks.
- Acumatica production instance to GitOps UAT copy
- — Hand-built or stale UAT cannot prove readiness the same way twice. Extract live Acumatica configuration into Git, rebuild a virgin UAT as a config twin, run a scenario readiness gate, and prove with diff plus books — not a production database clone.
- Acumatica major-release regression matrix: certify one versioned GitOps tenant seed across three major releases
- — Manual UAT does not scale across Acumatica major releases. Pin a lab host per major, run one cold lifecycle gate against the same versioned GitOps tenant seed, and verify financial books on Account Summary (GL401000). Multi-major proof that complements certified UAT.
- QuickBooks and Xero to Acumatica: connect, export, and load a test tenant
- — Prospects outgrowing QuickBooks or Xero want their own books in Acumatica before they commit. Connect the source over OAuth (or the same shape for QuickBooks), export a cutover pack, map it into versioned YAML, and load a clickable test tenant — then rehearse cutover on the same tree.
- Automated regression testing for Acumatica configuration-as-code (GitOps)
- — Acumatica configuration ships after manual click-through with no CI gate. With configuration-as-code in git, the GitOps gate is acu apply, acu run, and acu diff — three exit codes a pipeline can enforce.
- Configuration-as-code for Acumatica: a tenant built from YAML in git
- — Acumatica configuration usually lives only in the web UI. YAML in git plus acu apply and acu diff turns a credit-terms edit into a pull request, an idempotent upsert, and a zero-drift proof with an exit code.
- Scheduled ERP backups in two layers: database dumps and storage snapshots
- — Every self-hosted Acumatica instance is yours to back up, and the vendor guidance converges on scheduled SQL-native backups — but backups end up ad hoc. Two independent layers provisioned by Ansible, a SQL `.bak` per database and a nightly whole-VM ZFS snapshot, run on a schedule with no manual routine.
- Automated DEV/TEST environments for Acumatica with Ansible
- — Most Acumatica customers run production on Acumatica's SaaS cloud, but customization and upgrade testing need self-hosted instances. One Ansible command builds one on a Linux KVM host — golden image to login page, unattended.
- The 90/10 software rule small businesses can use
- — For decades only big companies could afford to build their differentiated software. AI collapsed the cost of that slice to where one developer can deliver it — which is exactly what a small business can now afford.
- What one AI email actually costs
- — Most AI ROI talk is hand-waving. Here is a traced, per-email cost from a production agent — and the risk/reward math a CFO can check.
- Troubleshooting application failures with Logfire
- — A repeatable workflow for using Logfire span trees, SQL-over-traces, and OpenTelemetry semantic conventions to turn opaque application failures into one-line diagnoses — walked through a real production bug.
- Smoke-testing an LLM agent with Claude Code skills
- — Mocked pytest stays green while a live agent fabricates product specs. Lint and pytest cover the machinery; Claude Code skills drive real Gmail, real Drive, and the real model — with deterministic gates where possible and an LLM judge where natural language is the answer.
- Code consistency is the casualty of agent velocity
- — Agents ship inconsistent code that tests still pass. One small SPEC.md re-read every turn, telegraph-encoded to a 41% token cut, is the defense — with backprop turning each under-specified failure into a permanent invariant.