| Platform | Acme Food & Beverage |
| System of record | NetSuite OneWorld (production instance) |
| Report date | August 17, 2026 |
| Baseline period — P&L | Trailing twelve months, August 2025 – July 2026 |
| Baseline date — balance sheet | End of July 2026 (accounting period 215) |
| Consolidation basis | Headquarters (consolidated), six-entity structure, USD |
| Prepared from | NetSuite standard financial reports, independently re-derived and tied to general-ledger detail via SuiteQL (Appendix B) |
This baseline was prepared directly from the platform's NetSuite production instance. All statement figures are drawn from NetSuite's standard financial reports at consolidated level and were independently re-derived from general-ledger transaction detail; the two methods tie to the dollar. Three findings materially affect the sponsor's view of the business and the sequencing of the 100-day plan.
For ten consecutive months (August 2025 – May 2026) revenue held a tight band around $594K per month. In June and July 2026 it stepped to $1.38M per month — a 2.3× increase driven by organic invoice volume (monthly invoice count rose from 81 to approximately 220, concentrated in the US 1 subsidiary). Annualized, the two regimes imply $7.1M versus $16.6M of revenue and $0.8M versus $8.0M of EBITDA. Determining whether June–July represents a durable new run-rate, seasonality, or channel pull-forward is the single most consequential diligence item against the deal model. The reported June–July gross margin (58–69% against a 34–43% historical band) coincides with a manufacturing go-live and large cost-of-sales credits, and should be treated as a costing artifact until inventory absorption is reconciled (§2.2).
$1.76M of accounts receivable (53% of the aging) and $1.13M of accounts payable (47%) consist of 69 journal entries posted with no customer or vendor. $1.30M of the receivable portion is aged beyond 90 days. These are characteristic of migration opening balances that were never rebuilt in the subledger. Until resolved — collected, reclassified, or written off — the opening balance sheet cannot be certified, and every aging metric is distorted (§3).
Accounting periods January–August 2025 were closed in bulk on a single date (December 10, 2025). Every period from September 2025 to the present — eleven-plus months — remains open, and posting transactions exist with dates as far forward as October 2026. Prior-period figures can still move at any time. Instituting a close calendar is the foundational reporting-readiness action (§4).
Consolidated, end of July 2026. Source: NetSuite Balance Sheet (report −202), subsidiary context “Headquarters (Consolidated)”. Annotations reflect GL-level verification.
| Line | Amount ($) | Verification note |
|---|---|---|
| Cash — operating (1000 · 1010) | 1,792,587 | Includes $(300) petty-cash sub-account |
| Undeposited funds (1090) | 185,586 | Receipts never deposited; should trend to nil — same-week fix |
| Accounts receivable (1100) | 2,791,675 | $1.76M is counterparty-less journal A/R (§3); $4,677 intercompany |
| Inventory (1200 · 1210) | 2,151,998 | 166 days on hand; adjustments/revaluations only began Feb–Mar 2026 |
| Total current assets | 6,921,846 | |
| Machinery & equipment (1410) | 453,750 | |
| Furniture & fixtures (1420) | 225,000 | |
| Automotive equipment (1430) | 100,000 | |
| Leasehold improvements (1470) | 1,235,000 | |
| Fixed assets, gross (1400) | 2,013,750 | |
| Accumulated depreciation (1500) | (340,050) | No accumulated depreciation recorded against leasehold improvements, although leasehold depreciation expense of $112K runs through the TTM P&L — fixed-asset subledger requires reconciliation |
| Total fixed assets, net | 1,673,700 | |
| Deposits (1710) | 130,294 | |
| TOTAL ASSETS | 8,725,840 |
| Line | Amount ($) | Verification note |
|---|---|---|
| Accounts payable (2000) | 2,138,306 | $1.13M counterparty-less journal A/P; $360,588 to a single vendor (“ACME Industries” — unrelated to the platform name) predominantly aged >90 days; $4,677 intercompany |
| Payroll liabilities (2140) | 77,916 | |
| Accrued expenses (2210) | 477,453 | |
| Inventory received not billed (2220) | 114,356 | |
| Line of credit (2410) | 10,000 | Only drawn debt in the structure |
| Total liabilities (all current) | 2,818,032 | |
| Contributed capital (3210 · 3510) | 3,250,000 | |
| Retained earnings | 1,133,958 | |
| Net income (fiscal YTD) | 1,523,850 | Differs from TTM net income by design — see Appendix A, assumption 6 |
| Total equity | 5,907,808 | |
| TOTAL LIABILITIES & EQUITY | 8,725,840 | Ties to total assets ✓ |
Independently rebuilt from general-ledger detail (transactionaccountingline) and tied to the NetSuite Income Statement (report −200): TTM revenue $8,699,672 ✓ · TTM net income $1,802,107 ✓.
| Month | Revenue ($) | Gross Profit ($) | GP % | EBITDA ($) | EBITDA % |
|---|---|---|---|---|---|
| Aug 2025 | 500,168 | 214,232 | 42.8 | 87,136 | 17.4 |
| Sep 2025 | 618,971 | 244,023 | 39.4 | 65,796 | 10.6 |
| Oct 2025 | 624,948 | 219,831 | 35.2 | 66,009 | 10.6 |
| Nov 2025 | 638,040 | 221,198 | 34.7 | 66,444 | 10.4 |
| Dec 2025 | 638,304 | 217,297 | 34.0 | 81,617 | 12.8 |
| Jan 2026 | 590,274 | 221,951 | 37.6 | 84,759 | 14.4 |
| Feb 2026 | 590,240 | 217,570 | 36.9 | 50,366 | 8.5 |
| Mar 2026 | 540,319 | 202,584 | 37.5 | 37,304 | 6.9 |
| Apr 2026 | 579,432 | 200,168 | 34.5 | 45,865 | 7.9 |
| May 2026 | 619,577 | 252,946 | 40.8 | 98,030 | 15.8 |
| Jun 2026 | 1,348,861 | 782,688 | 58.0 | 629,755 | 46.7 |
| Jul 2026 | 1,410,539 | 969,936 | 68.8 | 708,435 | 50.2 |
| TTM | 8,699,673 | 3,964,424 | 45.6 | 2,021,516 | 23.2 |
| Evidence | Observation |
|---|---|
| Invoice volume | 81 invoices (May) → 219 (Jun) → 220 (Jul). The step is organic invoiced revenue, not journal-driven. |
| Subsidiary mix | US 1 monthly revenue: $474K → $1,199K → $1,258K. US 2 flat at ≈$150K/month — and US 2's "revenue" is a single recurring monthly journal, not invoiced sales. Its nature requires confirmation (management fee? allocation?). |
| Margin artifact | June–July COGS contains large credits — account 5070 COGS–Finished Goods carries $(222.6K) for the TTM, nearly all posted in June–July — coincident with the manufacturing go-live (work orders, assembly builds, WIP and inventory revaluation activity all commence mid-2026). The 58–69% reported margin is therefore an absorption/costing artifact pending reconciliation, not demonstrated commercial margin. |
| Concentration | Five income accounts exist; a single account (4110 Revenue) carries >99.9% of revenue. The GL provides no product-line revenue visibility (see §4). |
| Scenario | Rev / mo ($) | Revenue ann. ($M) | EBITDA / mo ($) | EBITDA ann. ($M) | Margin |
|---|---|---|---|---|---|
| A — Baseline regime (Aug 25 – May 26 average) | 594,027 | 7.13 | 68,333 | 0.82 | 11.5% |
| B — TTM as reported | 724,973 | 8.70 | 168,460 | 2.02 | 23.2% |
| C — New regime, historical margin (Jun–Jul volume at 38% GP, baseline opex) | 1,379,700 | 16.56 | ≈340,000 | ≈4.1 | ≈24% |
| D — New regime as booked (Jun–Jul actuals) | 1,379,700 | 16.56 | 669,095 | 8.03 | 48.5% |
| Metric | Gross ($) | Journal / no counterparty ($) | Trade ($) | Days |
|---|---|---|---|---|
| Accounts receivable | 3,299,940 | 1,764,070 | 1,535,870 | DSO 64 (138 unadjusted) |
| Accounts payable | 2,375,319 | 1,127,645 | 1,247,673 | DPO 96 |
| Inventory | 2,151,998 | — | 2,151,998 | DIO 166 |
| Cash conversion cycle (trade basis) | 134 days | |||
| # | Action | Indicative cash impact ($) | Timeline | Basis |
|---|---|---|---|---|
| 1 | Resolve counterparty-less journal A/R and A/P — pull the 69 journals, tie to pre-migration subledgers, then collect, reclassify, or write off | up to 1,764,070 A/R (1,127,645 A/P offset) | Day 1–30 | $1.30M of the A/R portion aged >90 days. If collectible, the largest cash item in the company; if migration debris, a required opening-balance-sheet adjustment. Either outcome demands resolution before certification. |
| 2 | Collections cadence on the current-cycle overdue book — automated dunning + weekly review | 100,000–150,000 | Day 1–45 | $370K at 1–30 days, $154K at 31–60. Highly fragmented: top-15 overdue customers owe $7–23K each, most under two weeks late (Acme Produce $23.0K, Shuffle's Grocery $19.8K, Vinder $16.3K, Dab's Deli $13.5K at 30 days). A process gap, not a credit-quality problem. Target DSO 64 → ~55. |
| 3 | Clear undeposited funds | 185,586 | Same week | Cash already received; deposit-processing backlog only. |
| 4 | Inventory reduction program | ≈130,000 per 10 DIO days | Day 60+ | 166 DIO is the largest structural lever. Sequence after costing cleanup (§2.2) — book accuracy before Feb 2026 is unverifiable (no cycle counts/adjustments recorded before then). |
| 5 | A/P: normalize, do not stretch | (negative — plan for outflow) | Day 30–100 | DPO 96 is already extended. $292K of trade A/P is >90 days, including Landlord Ltd. $98K — a landlord in arrears is operational risk, not financing. Expect normalization to consume cash; budget accordingly. |
Grading scale: A institutional-grade · B functional, needs tightening · C material gap · D not fit for sponsor reporting.
| Area | Grade | Current state (verified) | Gap / risk | 100-day action |
|---|---|---|---|---|
| Chart of accounts | B | 216 active accounts, numbered, clean hierarchy, zero inactive clutter | Only 100 of 216 used in TTM (54% dormant); 24 unnumbered; five income accounts, one carrying >99.9% of revenue | Rationalize dormant accounts; design revenue-stream breakout (GL accounts or item/class dimension) aligned to the sponsor KPI pack |
| Close cadence | D | Jan–Aug 2025 bulk-closed on 12/10/2025; Sep 2025 → present all open; postings dated to Oct 2026 | No monthly close exists; historical figures remain mutable; future-dated postings contaminate cutoff | Close Sep 2025–Jul 2026 by Day 30; institute close calendar and checklist; 10-day close, then 5-day by Day 100; lock periods on completion |
| Dimension discipline | D | Department, Class, Location segments plus a custom Geography segment are configured | Of 23,421 TTM P&L lines: 92% lack department, 78% lack class, 4% lack location | Make department/class mandatory on P&L postings; backfill the current fiscal year at account-mapping level minimum |
| Entity & currency | B | Six-entity OneWorld structure with functioning elimination subsidiary; consolidation ties | Multi-currency feature disabled despite Canada/Vietnam entities being defined | Confirm foreign-entity activity plans; enable multi-currency before the first non-USD transaction |
| Budget / plan | C | 133 budget lines across two fiscal years present in the system | Partial coverage; no evidence of budget-vs-actual routine | Load the sponsor operating model as the NetSuite budget; monthly BvA as a standard close output |
| KPI availability | C | Financial statements, agings, trial balance run cleanly from standard reports | Revenue-by-stream unavailable at GL level; EBITDA requires manual adjustment; no 13-week cash-flow tooling | Build sponsor KPI pack (revenue by stream, GM by class, EBITDA bridge, DSO/DPO/DIO, 13-week cash flow) by Day 60 |
| Data integrity | D | Statements tie internally; GL re-derivation matches reports to the dollar | $2.89M counterparty-less journal AR/AP; missing leasehold accumulated depreciation; Jun–Jul costing artifacts; future-dated postings | Opening-balance-sheet cleanup project, Day 1–30, owned by the controller |
| Phase | Priorities | Owner | Exit criteria |
|---|---|---|---|
| Day 1–30 Stabilize |
Resolve $1.76M / $1.13M journal AR–AP; clear $185.6K undeposited funds; reconcile fixed-asset subledger (leasehold depreciation); close periods Sep 2025 – Jul 2026; stand up weekly collections cadence; answer the run-rate question with invoice-level analysis of June–July volume | Controller (cleanup, close) CFO (run-rate finding to sponsor) |
Opening balance sheet certified; all historical periods locked; run-rate memo delivered |
| Day 31–60 Instrument |
First disciplined monthly close (Aug 2026, 10-day target) — this close also adjudicates run-rate Scenario C vs. D; reconcile manufacturing go-live costing and inventory absorption; enforce mandatory dimensions on P&L postings; load deal-model budget; draft sponsor KPI pack | Controller (close, costing) FP&A (budget, KPI pack) |
Aug close ≤10 days; costing reconciliation memo; budget loaded; KPI pack drafted |
| Day 61–100 Industrialize |
Five-day close target; automated monthly reporting pack (BvA, EBITDA bridge, working-capital dashboard, 13-week cash flow); launch inventory-reduction program; chart-of-accounts rationalization; multi-currency decision for Canada/Vietnam | CFO / full finance team | Sponsor receives first full automated pack; DSO ≤ 55; close ≤ 5 days |
| # | Risk | Severity | Likelihood | Mitigation / next step |
|---|---|---|---|---|
| 1 | June–July margin proves to be a costing artifact and Scenario D was used in any valuation bridge | High | Probable | Use Scenario C for planning until the August close reconciles inventory absorption; brief the sponsor now, not after |
| 2 | $1.76M journal A/R proves uncollectible migration debris | High | Possible | Day-30 resolution deadline; quantify write-off exposure against any working-capital peg in the purchase agreement |
| 3 | Open periods allow retroactive changes to reported history | Medium | Certain until fixed | Lock Sep 2025 – Jul 2026 by Day 30; snapshot trial balance beforehand as the immutable diligence record |
| 4 | Inventory book value (pre-Feb 2026) unverifiable; 166 DIO may mask obsolescence | Medium | Possible | Full physical count within the first close cycle; obsolescence reserve policy by Day 60 |
| 5 | Landlord arrears ($98K >90 days) triggers lease default provisions | Medium | Possible | Immediate payment-plan conversation; review lease cure provisions |
| 6 | US 2 “revenue” (~$150K/month recurring journal) is an allocation, overstating consolidated third-party revenue | Medium | Possible | Confirm nature of the journal; if intercompany in substance, route through elimination |
| 7 | Foreign entities begin transacting before multi-currency is enabled | Low | Possible | Feature decision gate in Day 61–100 phase |
Every figure in this document traces to one of the following NetSuite standard-report executions (R1–R5) or SuiteQL queries (Q1–Q10). Reports were run in the NetSuite reporting engine; queries were run against the NetSuite SuiteQL endpoint. Both operate on the same general ledger; where both cover a figure, they were cross-tied.
| Ref | Report (id) | Parameters | Used for |
|---|---|---|---|
| R1 | Balance Sheet (−202) | As-of period 215 (Jul 2026); subsidiary context −1 (consolidated) | §1 opening balance sheet |
| R2 | Income Statement (−200) | Periods 199→215 (Aug 2025–Jul 2026); context −1 | §2 TTM totals |
| R3 | Income Statement (−200) | Same window; column = accounting period | §2 monthly bridge (report side) |
| R4 | A/R Aging Summary (274) | Default; as of 8/17/2026 | §3 A/R buckets, customer detail |
| R5 | A/P Aging (286) | Default; as of 8/17/2026 | §3 A/P buckets, vendor detail |
SELECT a.accttype, COUNT(*) AS total_accts,
SUM(CASE WHEN a.isinactive = 'T' THEN 1 ELSE 0 END) AS inactive,
SUM(CASE WHEN a.acctnumber IS NULL THEN 1 ELSE 0 END) AS unnumbered
FROM account a
GROUP BY a.accttype
ORDER BY COUNT(*) DESC
SELECT COUNT(*) AS active_accounts, SUM(used) AS used_ttm
FROM (
SELECT a.id,
CASE WHEN EXISTS (
SELECT 1 FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
WHERE tal.account = a.id AND t.posting = 'T'
AND t.trandate >= TO_DATE('2025-08-01','YYYY-MM-DD')
) THEN 1 ELSE 0 END AS used
FROM account a WHERE a.isinactive = 'F'
)
SELECT t.type, COUNT(*) AS cnt, MIN(t.trandate) AS earliest, MAX(t.trandate) AS latest
FROM transaction t
WHERE t.posting = 'T' AND t.trandate >= TO_DATE('2025-08-01','YYYY-MM-DD')
GROUP BY t.type
ORDER BY COUNT(*) DESC
SELECT c.entityid AS customer, COUNT(t.id) AS overdue_invoices,
ROUND(SUM(t.foreignamountunpaid),2) AS overdue_balance,
MAX(TRUNC(SYSDATE) - TRUNC(t.duedate)) AS max_days_overdue
FROM transaction t
JOIN customer c ON t.entity = c.id
WHERE t.type = 'CustInvc' AND t.status = 'A'
AND t.duedate < TRUNC(SYSDATE) AND t.foreignamountunpaid > 0
GROUP BY c.id, c.entityid
ORDER BY SUM(t.foreignamountunpaid) DESC
FETCH FIRST 15 ROWS ONLY
SELECT COUNT(*) AS open_bills, ROUND(SUM(t.foreignamountunpaid),2) AS open_ap,
SUM(CASE WHEN t.duedate >= TRUNC(SYSDATE) THEN t.foreignamountunpaid ELSE 0 END) AS not_yet_due
FROM transaction t
WHERE t.type = 'VendBill' AND t.status = 'A' AND t.foreignamountunpaid > 0
SELECT t.type, COUNT(DISTINCT t.id) AS txns, ROUND(SUM(tal.amount),2) AS ar_amount FROM transactionaccountingline tal JOIN transaction t ON tal.transaction = t.id JOIN account a ON tal.account = a.id WHERE t.posting = 'T' AND a.accttype = 'AcctRec' AND t.entity IS NULL GROUP BY t.type ORDER BY SUM(tal.amount) DESC
SELECT ap.periodname,
ROUND(SUM(CASE WHEN a.accttype = 'Income' THEN -tal.amount ELSE 0 END),0) AS revenue,
ROUND(SUM(CASE WHEN a.accttype = 'COGS' THEN -tal.amount ELSE 0 END),0) AS cogs,
ROUND(SUM(CASE WHEN a.accttype = 'Expense' AND a.acctnumber NOT LIKE '68%' THEN -tal.amount ELSE 0 END),0) AS opex_ex_da,
ROUND(SUM(CASE WHEN a.acctnumber LIKE '68%' THEN -tal.amount ELSE 0 END),0) AS d_and_a
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN account a ON tal.account = a.id
JOIN accountingperiod ap ON t.postingperiod = ap.id
WHERE t.posting = 'T' AND ap.isquarter = 'F' AND ap.isyear = 'F'
AND ap.startdate >= TO_DATE('2025-08-01','YYYY-MM-DD')
AND ap.startdate < TO_DATE('2026-08-01','YYYY-MM-DD')
AND a.accttype IN ('Income','COGS','Expense')
GROUP BY ap.periodname, ap.startdate
ORDER BY ap.startdate
SELECT s.name AS subsidiary, ap.periodname, ROUND(SUM(-tal.amount),2) AS revenue FROM transactionaccountingline tal JOIN transaction t ON tal.transaction = t.id JOIN transactionline tl ON tal.transaction = tl.transaction AND tal.transactionline = tl.id JOIN account a ON tal.account = a.id JOIN subsidiary s ON tl.subsidiary = s.id JOIN accountingperiod ap ON t.postingperiod = ap.id WHERE t.posting = 'T' AND a.accttype = 'Income' AND t.postingperiod IN (211,212,213,215) GROUP BY s.name, ap.periodname, ap.startdate ORDER BY ap.startdate, s.name
SELECT ap.periodname, t.type, COUNT(DISTINCT t.id) AS txns,
ROUND(SUM(-tal.amount),2) AS revenue
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN account a ON tal.account = a.id
JOIN accountingperiod ap ON t.postingperiod = ap.id
WHERE t.posting = 'T' AND a.accttype = 'Income'
AND t.postingperiod IN (212,213,215)
GROUP BY ap.periodname, ap.startdate, t.type
ORDER BY ap.startdate, SUM(-tal.amount) DESC
SELECT ap.periodname, ap.enddate, ap.closedondate
FROM accountingperiod ap
WHERE ap.isquarter = 'F' AND ap.isyear = 'F' AND ap.closed = 'T'
AND ap.startdate >= TO_DATE('2025-01-01','YYYY-MM-DD')
ORDER BY ap.startdate;
SELECT COUNT(*) AS pl_lines,
SUM(CASE WHEN tl.department IS NULL THEN 1 ELSE 0 END) AS no_dept,
SUM(CASE WHEN tl.class IS NULL THEN 1 ELSE 0 END) AS no_class,
SUM(CASE WHEN tl.location IS NULL THEN 1 ELSE 0 END) AS no_loc
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN transactionline tl ON tal.transaction = tl.transaction AND tal.transactionline = tl.id
JOIN account a ON tal.account = a.id
WHERE t.posting = 'T' AND t.trandate >= TO_DATE('2025-08-01','YYYY-MM-DD')
AND a.accttype IN ('Income','COGS','Expense','OthIncome','OthExpense')