How it works

The product is the control plane.

Models never speak to NetSuite, email or Slack directly. Every request is classified, minimised, routed and logged. If it would change a record, it waits for a named human.

01

Where you work

  • Slack. Outlook or Gmail. A web approval queue.
  • The agent can be invoked by a message, by an inbound invoice, or on a schedule — nightly master-data scan, weekly controller pack.
  • Users sign in with your SSO and MFA.
02

What sits between you and the model

  • A policy gateway. One customer, one logical tenant.
  • PII, bank details and national IDs are redacted before any model call.
  • Only accounting tasks on the approved list run.
  • You name the allowed models and pin the region. If residency cannot be verified, the call does not go out.
  • Action classes L0 to L3: observe, draft, post, prohibited.
  • An immutable audit log you can export to Internal Audit or your SIEM.
03

How NetSuite is reached

  • Oracle’s official AI Connector Service. Model Context Protocol. OAuth 2.0. User-delegated.
  • A custom least-privilege role. Administrator cannot use the connector. Oracle already blocks that.
  • Write tools refuse unless they carry an approval token issued by our control plane.
  • NetSuite remains the book of record. We do not become a second ledger.
04

How email, Slack and documents are reached

  • Microsoft 365 and Google Workspace through their APIs, with user-delegated OAuth.
  • Slack limited to allow-listed channels.
  • Mailbox, site and channel allow-lists.
  • Tenant-wide application permissions are not the default.

Action classes

L0 to L3: observe, draft, post, prohibited.

ClassScopeControl
L0Observe

Aging, trial balance Q&A, saved searches, controller pack.

Read and summarise, with citations. Review at leisure.

L1Draft

Journal pack, invoice or bill draft, rec worksheet, vendor exception.

Lands in the pending queue only. A human decides before anything posts.

L2Post

The approved payload only.

The identity that drafted cannot be the identity that approved.

L3Prohibited

Payments, bank-file release, tax filing, period close, delete master data.

Blocked at the gateway. Not a setting.

What the accountant actually prepares

Journals

Balanced draft from source documents or last month’s pattern. Period open. Debit equals credit.You approve, edit or reject.

Invoices and bills

Ingest PDF or email. Extract header and lines. Match vendor or item. Duplicate check. Code to the chart of accounts.You confirm vendor, tax and coding.

Reconciliations

Unmatched bank lines versus unmatched NetSuite transactions. Proposed matches with evidence. Exception list. Draft clearing journals.You accept matches and finish the rec in NetSuite.

Master data

Nightly scan for duplicates, missing fields, bank-detail changes, inactive records on open transactions.You approve any change. Bank-detail changes always dual-control.

Insights

Weekly controller brief and ad-hoc questions. Every figure cited to a NetSuite report, saved search or record ID.Official numbers run through NetSuite reports. We will not ship a P&L that is valid SQL and wrong accounting.

Inbox and Slack

Watches allow-listed mailboxes and channels. Classifies. Opens a ticket with a source link.You only see items that need a decision.

An honest limitation

SuiteQL is the right tool for operational lists — overdue invoices, material journals, dormant vendors. It is the wrong tool for statutory financial statements.

Eliminations, consolidation, accounting-book and period rules live in NetSuite reports. Official numbers always go through those reports.

The agent prepares. A named human approves. NetSuite posts only after that approval.

Write to michal@booksquire.co.