Diagnostic, architecture, and remediation for a multi-strategy private equity firm. Prepared from an AI-led consulting engagement conducted inside the client's NetSuite environment.
The client's stated requirement was six words: "We need financials by fund." Diagnostic classification separated that request into four workstreams with four different correct answers — one of which did not belong in the ERP at all. This report documents the diagnosis, the findings, the recommended architecture, and the remediation path.
The client operates three flagship buyout funds, a continuation vehicle, two co-investment vehicles, a European feeder, a UK sub-advisor entity, and a direct-lending strategy structured as one SPV per loan — 42 SPVs at engagement start, modeled to approach 600 within five years. An SEC examination letter, received shortly before the engagement, leads with expense allocation methodology.
Fund-level reporting had been implemented by a prior integrator using the native Class dimension, with balance sheets by Class promised to the board. The engagement found that design structurally unable to deliver what was promised, quantified the damage already accumulated, and replaced it with an architecture in which each control is enforced at the strongest available layer.
No design work was performed until the request was classified. "Financials by fund" can refer to at least three different accounting problems; misclassification between them is the most common cause of failure in fund-reporting projects on NetSuite. The client's requirement decomposed as follows.
| Stated requirement | Classification | Disposition |
|---|---|---|
| "Fund financials for LPs" — NAV, capital accounts, waterfall | The funds' own books | Remains with the fund administrator. Not an ERP workload. Removed approximately 40% of assumed project scope in the first session. |
| "P&L by fund for the board" — fee income, deal costs, allocations | Management-company books, sliced by fund | Custom segment (cseg_fund) on one subsidiary, with allocation engine and enforcement on every transaction entry path. |
| "Books for every credit SPV" — 42 today, ~600 projected | Stand-alone books per vehicle, at scale | Hybrid architecture. Exotic options gated behind a load test and a sub-ledger evaluation. Section 05. |
| "And the continuation vehicle" | A material legal entity with its own LP base and auditor | A native subsidiary. No custom mechanism. |
Do you need a stand-alone balance sheet per fund — or a P&L by fund plus a small set of balance-sheet accounts? The answer to that one question determines the entire architecture.
The client's answer — P&L plus fee receivables, recharge receivables, and deferred fees — ruled out both the heaviest option (per-fund balancing enforcement across the full chart) and the prior integrator's design, which promised full balance sheets a plain dimension cannot deliver.
Ten findings. Three are classified critical: each would have remained invisible under the prior design until surfaced by an auditor or examiner.
| Ref | Severity | Finding |
|---|---|---|
| F-01 | Critical | Fund attribution unenforced on CSV and integration entry paths. 2.3% of fiscal-year posting lines carry no fund tag, concentrated in a T&E integration deployed in March. |
| F-02 | Critical | $1.9M cumulative cross-fund drift in Class-tagged balance-sheet accounts over 14 months. Individual transactions balance; funds do not. The board-facing balance sheet by Class is unreconcilable as designed. |
| F-03 | Critical | No retained-earnings roll-forward per fund exists or was planned. Beginning fund balance — the first figure an auditor traces — could not be produced from the system. |
| F-04 | High | $412K unmirrored management-fee receivable versus the fund administrator's books; unreconciled for six quarters. Root cause: fee-offset timing differences compounding without a mirror-check. |
| F-05 | High | $1.34M of broken-deal costs from two terminated transactions held in management-company P&L; allocable to funds under LPA §6.4(b); allocation caps never tested. |
| F-06 | High | Fee offsets (100% and 80% by fund, plus side-letter variants) computed in a spreadsheet with no tie-out to monitoring-fee invoices — a pattern present in multiple SEC enforcement actions. |
| F-07 | Medium | System-generated postings (FX revaluation on GBP/EUR entities) carry no fund attribution; these lines bypass all UI-level controls. |
| F-08 | Medium | Treasury master account commingles fund-owned cash beyond a defensible clearing window. Ownership tagging is a compliance control, not housekeeping. |
| F-09 | Medium | SPV growth trajectory exceeds practical subsidiary administration. No scale decision existed; the default path was to add subsidiaries until failure. |
| F-10 | Medium | No written allocation methodology or design decision log existed — the first document requested in examination. |
The prior design assumed a Class dimension could produce fund balance sheets. Two structural facts prevent this: NetSuite computes retained earnings at the subsidiary level, so no per-fund equity roll-forward exists; and nothing prevents a transaction from balancing overall while its Class-tagged lines do not balance within any one fund. Both facts were confirmed against the client's own posting data before any redesign was proposed.
Two limited partnership agreements and three side letters were processed into a normalized allocation rule table: expense category, bearing party, cap, allocation basis, and governing provision. Every allocation entry generated by the new engine traces to a row of this table. The table is also the primary artifact requested in examination.
| Expense category | Borne by | Cap / basis | Provision |
|---|---|---|---|
| Broken-deal costs | Funds active in the deal, pro-rata by committed capital | No cap; deal-attribution basis | Fund III LPA §6.4(b) |
| Organizational expenses | Fund | $1.8M (Fund III) / $1.5M (Fund II) | §6.2 / §6.1 |
| Monitoring-fee offset | Offsets management fee | 100% (Fund III) / 80% (Fund II) | §6.7 / §6.5; side letter SL-2 |
| Overhead, compensation, rent | Management company | Never allocable to funds | §6.3 |
| Credit SPV servicing | Each SPV; flat fee plus basis points | Per servicing agreement | Servicing agreement §4 |
Extraction of the rule table surfaced finding F-05 directly: $1.34M of costs from two terminated transactions, allocable to the funds under §6.4(b), held in management-company P&L with the applicable caps never tested. The resulting allocation packages were prepared with provision citations and posted after controller approval.
The design principle applied throughout: prevention outranks detection. Each control is placed at the strongest layer available — platform enforcement first, scripted validation second, scheduled detection sweeps last. The burden of proof sits on any departure from native functionality.
Management company; three GP entities; UK sub-advisor (GBP); European feeder (EUR); the continuation vehicle; one holding subsidiary for the credit SPV portfolio. Material entities with real operations, currencies, or audit obligations remain native.
Enforced by platform: transaction balancing, retained earnings, FX translation, consolidation.
cseg_fund on management-company books, mandatory on P&L lines and designated balance-sheet accounts (fee receivables, recharge receivables, deferred fees). Validation on every entry path — UI, CSV, integration, and a sweep for system-generated lines. Counterparty attribution required on all intercompany accounts. A close routine computes retained earnings by fund, closing finding F-03 explicitly.
Enforced by platform where possible; scripted validation and pre-close sweeps where not. Replaces the Class-based design.
SPVs are thin, single-purpose, single-currency, and largely dormant after loan payoff. They are represented by a dedicated segment inside the credit holding subsidiary rather than as ~600 subsidiaries. Two gates precede final commitment: a Custom Balancing Segment load test at simulated full volume (for enforced per-SPV balancing), and an evaluation of a purpose-built loan sub-ledger posting summarized journals into NetSuite. A custom-record entity model with rebuilt controls is documented as the last resort, with its full control-rebuild catalog costed.
Decision deferred to test evidence, not taken by assumption.
| Control | Layer | Mechanism |
|---|---|---|
| Transaction balancing (debits = credits) | Platform | NetSuite core; never rebuilt |
| Fund attribution on P&L lines | Platform | Segment mandatory setting, all entry paths |
| Attribution validity (account type, vendor history) | Script | User-event validation; defaulting rules |
| Cross-fund drift on balance-sheet accounts | Sweep | Pre-close query, results grouped by source |
| Intercompany mirroring, incl. vs. administrator | Sweep | Pairing record; monthly cross-system check |
| Retained earnings by fund | Script | Close routine: period NI by fund → cumulative equity |
| Fee offsets and allocation caps | Script + approval | Rule-table-driven calculation; human approval before posting |
| Broken-deal sweeps with provision citations | Agent + approval | Retrieval across sources; controller sign-off |
No AI-generated journal entry posts without human approval. Allocations, offsets, and reclasses are drafted with supporting detail and provision citations, then approved by the controller. The system enforces discipline; it does not exercise judgment on the client's behalf.
Requirement classification. Drift and untagged-line measurement (F-01, F-02). Administrator mirror-check (F-04). LPA rule-table extraction. Written decision log — itself a deliverable for examination.
Fund segment live with entry-path enforcement. Validation and defaulting scripts. Rule-table-driven allocation engine with approval gates. SPV load test initiated in sandbox.
Historical retag of the untagged population, worked by source. Broken-deal packages prepared with provision citations, approved, and charged (F-05). Administrator mirror break resolved (F-04). Treasury clearing-window policy adopted (F-08).
First close on the new controls: tagging triage on live feeds, pre-close policing sweep, retained-earnings roll-forward by fund, board pack with methodology footnotes. SPV representation decision taken on load-test evidence.
Provide all expenses allocated to Fund II in 2025, the allocation basis for each, and the LPA provision authorizing it.
Under the prior design, answering that request required a multi-week reconstruction across a 40-tab workbook. Under the new design, it is a query joined to the allocation rule table. The distinction is not the response time; it is that the answer exists by construction rather than by reconstruction.
The engagement paired a domain-calibrated AI consultant — deep NetSuite architecture and PE fund-accounting expertise, governed by a diagnostic-first method — with Sonar AI, an agent operating inside the client's NetSuite account under the client's own role and permissions. The consultant supplied classification, framework, and judgment structure; the agent supplied ground truth.
Firms running NetSuite with fund-level reporting requirements — a Class or segment carrying financial weight, an allocation workbook with a single owner, an unreconciled administrator position — can begin where this engagement began: a diagnostic against the live account. The measurement phase requires days, not months, and its output is the findings register on which everything else depends.