This is my first major win applying what ef teaches. Since subscribing to Claude Code on March 19th, I’ve been able to show so much progress that my company has now upgraded me to the Max 5x subscription.
Looking forward to pushing the boundaries of what’s possible and continuing to improve our processes!
As a Finance Manager responsible for month-end closing, I wanted to see what Claude Code could actually achieve—and it delivered! Even without Azure or backend access to our ERP system (D365 F&O), I didn't let that stop me from being "efficiently lazy."
Claude Code showed me how to use the Playwright MCP to control Chrome and handle the heavy lifting for me. The script now automatically downloads the monthly trial balance, populates an Excel template, identifies discrepancies via color-coding, and even takes screenshots to document numbers from various reports.
I’m already tackling my next big automation project—a task that is notoriously tedious when done manually. Stay tuned for that post, as well as more month-end automation updates in the near future!
I had Claude code describe the workflow:
Common Reconciliation — Monthly Close Automation with Claude Code + Playwright MCP
Every month-end I run a single slash command (/mec-common) and pass it a month number. Claude then drives the entire reconciliation process end-to-end, touching both a live D365 ERP system and a multi-sheet Excel workbook — no manual steps.
The workflow in three phases:
Phase 1 — Trial Balance Claude navigates to the D365 Trial Balance page, clears any stale filters, sets the correct date range, triggers a recalculation, and downloads the export. The Excel file is placed in the right folder, and the data is pasted (values only) into the reconciliation workbook's Trial bal D365 sheet. A full workbook recalculation is then forced before anything is read.
Phase 2 — Revaluation Check Claude loops through ~50 reconciliation sheets. On each sheet it finds the last row where column C says "Revaluation" (there are two — the second one holds the actual diff) and reads the value in column G. If the diff is outside ±1, the sheet tab is colored red. One sheet (150070) is always flagged red and requires manual review regardless.
Phase 3 — Aging Reports Five D365 reports are opened, filtered, run, and screenshotted:
- Customer Aging Balance — twice (non-IC and IC groups)
- Inventory Aging — once
- Vendor Aging Balance — twice (non-IC and IC groups)
- Accrued Purchases — once
Each screenshot is of the last page of the report and gets pasted into a specific sheet and cell in the workbook via Excel COM automation.
The tech stack:
- Claude Code with the mec-common skill
- Playwright MCP for browser automation against D365 (SSRS-based reports)
- PowerShell + Excel COM for all file handling and workbook manipulation
- The reconciliation workbook itself is templated — a fresh copy is made each run
Key engineering challenges solved along the way:
- D365 filter fields that only accept real keyboard events (not JS DOM manipulation)
- SSRS reports that default to tiny zoom — had to force page-width scale inside the iframe before screenshotting
- Excel Protected View blocking file access on downloads
- GDI+ errors when cropping and saving screenshots to the same file path
- PowerShell scripts broken by UTF-8 em-dashes in skill .md files being misread as Windows-1252
The end result: a process that used to take 1–2 hours of manual clicking and copy-pasting now runs unattended in about 10 minutes.