30-min call with RobBook a proof-of-concept call
Job 05 · Controller's desk

// Manufacturing · Month-end reporting

The owner's month-end package, drafted from ERP exports for your controller to check.

For owner-led plants where the controller builds the monthly numbers by hand. One job, tested on months you have already closed: AI drafts shipments, backlog, WIP and margin by job or product line from the same exports, and your controller checks every figure against the package they actually sent.

Book a proof-of-concept call30 minutes with Rob
Past files
20 to 30
Entries posted
None
Period close
Stays with you

// The one job

The month closes. The owner's package gets drafted.

After month-end your controller runs a set of ERP reports, pastes them into a workbook, ties the totals to the general ledger and writes a page on what moved. The owner wants the same answers every month: what shipped, what is booked but not built, what sits in WIP, and which jobs made or lost money.

In the test, AI takes copies of the exports from months you have already closed and drafts the package, with a tie-out to your trial balance and notes on what changed. Anything that won't tie is listed, not forced. It closes nothing and posts nothing.

ERP exportsCSV, closed month
Shipments
Open orders
Open jobs
Trial balance
Job or orderCost to dateBilled
Invented exports, nobody's real figures
Tied to
the general ledger
Draft packageFor your controller
Shipments
Backlog
WIP
Notes
Job or lineMarginWhy it moved
An invented draft package

// What the controller checks

Where a plant's monthly numbers come apart

WIP is only as good as the close. Work in process is the cost sitting on open jobs (material issued, labor, burden and outside processing) that hasn't yet moved to finished goods or cost of sales. In Epicor that movement posts through Capture COS/WIP Activity, which Epicor advises running at least once a period, just before the period closes in the general ledger. Users on the Epicor forum warn that capturing early locks out labor corrections, and some close every finished job before they capture. The draft reads WIP from exports taken after that step and checks it against the Inventory/WIP Reconciliation report and the GL balance.

Shipping and billing don't always land in the same month. A truck that leaves on the last afternoon can be invoiced on the first of the next month, and a partial shipment can leave a job half billed. The draft reports shipments by ship date and sales by invoice date, and lists every shipment from the last days of the month with no invoice in the same period, so your controller makes the cutoff call.

Backlog needs a definition before it gets a number. Backlog is open order value not yet shipped, but plants differ on whether blanket quantity, firm releases only, or a job won on a handshake belongs in it. Book-to-bill, new orders divided by billings for the same period, tells the owner whether backlog grew or shrank, and it means something only if bookings are counted the same way every month. Your controller writes those rules down before the test, the draft follows them, and cancellations get their own line.

Job margin depends on how overhead lands. Many job shops apply burden to jobs at a set rate per labor or machine hour, so a job's margin compares estimate to actual on that rate. When real overhead runs above or below what was applied, the difference sits outside the jobs; AccountingTools notes that underapplied overhead is charged to cost of goods sold by the end of the fiscal year at the latest. The draft keeps job margin and that overhead difference apart, so a slow month on the floor doesn't hide inside one job.

Your reviewer holds the draft against the real package. That is normally the controller, the person who knows these numbers best. They check that every total ties, that every difference is listed with its source, and that the notes say only what the numbers show. Getting the exports needs nothing new: in Epicor a BAQ export can write a query to CSV on a schedule, and most systems have reports your controller already runs.

// What you send

What the controller sends

Closed months only
Exports, never logins
01

Exports for a few closed months

Shipments, open orders, open jobs with cost to date, and the trial balance, pulled the way you already pull them. About 20 to 30 files in all.

02

The packages that went to the owner

The finished workbook or PDF for each of those months, so every draft has an answer key.

03

Your definitions

What counts as backlog and as a booking, how product lines are grouped, and which jobs stay out of margin. A page of notes is plenty.

04

An NDA, then files

Signed before any figure moves. No login to your ERP, your accounting system or your bank.

05

Look-alike months, if needed

If real figures can't leave, we build look-alike exports with you that keep the same structure and the same awkward spots.

// Before it starts

Fixed before the first export moves

The owner and the controller agree on these before a single file is shared.

Before the proof of conceptOwner decides
Your reviewer
Named by the owner, normally the controller
Success criteria
In writing: totals that must tie, and notes that must be right
Definitions
Backlog, bookings and product lines, as your controller defines them
Price
A range for the live job, agreed first
Months
Closed months your controller picks, with defense and aerospace jobs left out

// How it's scored

The package that went out, beside the draft

Month by month
every figure tied
Compared on the same monthsThe package your controller sentThe AI draft
Hours from exports pulled to package ready for reviewFilled in from your monthsFilled in from your months
Shipments and sales tied to the general ledgerFilled in from your monthsFilled in from your months
Backlog and bookings counted by your definitionsFilled in from your monthsFilled in from your months
WIP matched to the reconciliation report and the GL balanceFilled in from your monthsFilled in from your months
Margin by job and product line, with overhead shown apartFilled in from your monthsFilled in from your months
Cutoff shipments listed for the controller to decideFilled in from your monthsFilled in from your months
Notes on what moved that the numbers supportFilled in from your monthsFilled in from your months
Nothing is filled in yet. These cells wait for drafts built from your own closed months.Your controller scores each row and makes the call.

// After a yes

Your next close, run live

After a yes, the job runs live for about 30 days, which takes in your next month-end.

The draft package goes to your controller, who checks, corrects and approves it before the owner sees anything. Every journal entry and the period close stay in your controller's hands, and the same comparison table scores the live month.

// Later, if it helps

Where the monthly package leads

Ideas, not a plan
Only after this one is live
  1. 01

    Borrowing base certificates

    For plants with an asset-based line, the monthly receivables and inventory figures drafted for your controller to sign and send.

    Next
  2. 02

    Job closeout notes

    Estimate against actual for each finished job, written up for your estimator to use on the next quote.

    Then
  3. 03

    A second plant

    An acquired plant's exports mapped into the same package, so the owner reads both plants laid out one way.

    After that

// One hard limit

It never closes the books or posts an entry.

It drafts the package and the notes, and nothing more. Accruals, adjustments, the WIP capture and closing the period stay with your controller, and the owner sees the numbers only after the controller approves them. Defense and aerospace jobs stay out of the files, as on every manufacturing page.

Month-end reporting is quoted as its own job, with a range before the test and a fixed price before you sign.

The range depends on how many plants, ledgers and product lines the package covers, which we ask about on the call.

// Questions

Month-end questions

Will it close our month or post journal entries?
No. It drafts the owner's package and lists anything that doesn't tie. Journal entries, accruals and closing the period stay with your controller, during the test and after it.
Our WIP never ties to the GL. Is that a problem for the test?
No. The draft shows the difference, which report each side came from and the open jobs behind it, and your controller decides what it means.
We track margin by product line, not by job. Does that work?
Yes. Margin follows whatever grouping your sales and costs are coded to, whether that is job, part family or product line. Your controller names the grouping before the test, and the draft uses it.
Which exports do you need from our ERP?
Four kinds, for each closed month: shipments, open orders, open jobs with cost to date, and the trial balance. CSV or Excel files are fine, and nobody gets a login.
Can the owner get the package straight from it?
Not until a person has approved it. Each package goes to your controller first, and the owner receives the version the controller signed off.
Rob Eason

Rob Eason, founder

// Book a proof of concept call

Test it on months you have already closed.

Half an hour with Rob. The booking form asks for your company and role, which job you would test, and how many reports go into your monthly package today. Share no figures until the NDA is signed.

  • Co-owned a 60-employee financial services firm and sold his share to his partner.
  • Ran GOSO Technologies, a Boston solar company rated 5/5 across 24 Google reviews.
  • 5/5 across 83 reviews in HighLevel's Certified Admin Directory.
  • 4.3/5 from 6 Google reviews of Massmarket AI.
  • Every directory and Google review, critical ones included, is shown word for word at massmarket.ai/reviews.
  • Takes every proof-of-concept call himself.