Zero-touch documentation for NetSuite

A documentation wiki for your NetSuite —
that writes itself.

NetSuite's own AI writes a page for every script, custom record and workflow you own — and we serve them on a secure, private site. A copy of every page also lands in your File Cabinet. If CSDocs disappears tomorrow, your documentation doesn't.

↗ Example graph · your account fills in on install.
Every custom record documented
Every field on every record
Every script explained
Purpose, inputs, side effects
Every dependency mapped
Follow any field to every script that uses it
Refreshed daily
Yesterday's deploy, today's docs

From NetSuite to a private documentation site — entirely hands-off.

NetSuite's AI writes. We sync, compile and serve. You get a URL.

01
Generate
NetSuite AI writes it

Inside your account, NetSuite's own AI drafts a page for every script and custom record.

02
Sync
We pull it over

Read-only, authenticated sync that runs daily.

03
Compile
We link it up

Pages, backlinks, the dependency graph — stitched into a site you can actually navigate.

04
Host
We serve it privately

On our secure servers, gated by email-code sign-in, always current.

Three things CSDocs does that a stale wiki and a 12-year veteran can't.

A live graph of your account, a plain-English summary on every page, and backlinks that stay in sync with the code. Each of these runs automatically the moment your site goes live.

01 Graph

A living dependency graph of your entire account.

Every script, custom record, workflow and saved search becomes a node. Follow one custom field from the UI, into the user event script, out to the scheduled job — in two clicks, not two hours.

  • Two-click trace. From field → script → job, without digging through source.
  • Always current. The graph rebuilds from your live account — not a snapshot you drew by hand.
02 Clarity

Plain English, not just code.

Every page opens with what the script actually does — its purpose, inputs, side effects and failure modes — written by NetSuite's AI, reading the actual source. Not a stale README someone wrote in 2019.

  • Purpose before syntax. The one-line summary lives at the top.
  • Side effects called out. What else runs, what gets updated, what breaks if this script fails.
customscript_demo_invoice_approvalrefreshed 4h ago
Scripts/User Event/Invoice Approval Hook

Invoice Approval Hook

Summary

Routes invoice records into customworkflow_demo_so_approval when their grand total exceeds the customer's approval threshold. Runs beforeSubmit on Invoice creation and Sales Order → Invoice transformation events.

⚠ Newly broken

Failure rate jumped from 2% (30-day baseline) to 18% (last 7 days). Most recent error references missing custbody_demo_approval_threshold — likely a regression from the Apr 12 field rename.

runs · 30d
18,400
failures · 7d
864 · 18%
avg duration
120 ms
03 Context

Backlinks and inline references, baked in.

Every custom field shows where it's read, written and searched. Cross-references between pages render as inline previews — click the link, see the page, never lose the thread.

  • Bidirectional. Every link points both ways automatically.
  • Rename a field once. Every reference to it updates.
  • Built on markdown. Obsidian-compatible — open, portable, readable in any tool.

A secure AI chat that reads every page you own.

Ask anything about any script, record or workflow. Powered by NetSuite's internal AI — it only sees your documentation. No outside model — OpenAI, Anthropic, or otherwise — ever does.

Good morning

Ask your secure NetSuite AI anything

Ask AI
Invoices started failing approval this week — they were fine before. What changed?

customscript_demo_invoice_approval started failing on Apr 12 — error rate jumped from 2% (30-day baseline) to 18% over the last 7 days.

The script reads custbody_demo_approval_threshold from the customer record, but that field was renamed to custbody_demo_invoice_threshold in an SDF deployment on the same day. The script still reads the old name, gets null, and crashes on .getValue().

Fix: update line 47 to the new field name, or roll back the rename via SDF.

grounded · 4 sources
Ask about scripts, workflows, fields, records, or docs...

Your SuiteScript, finally readable by people who didn't write it.

customer_deposit_sync.js User Event · 2.1 · 248 lines
/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 * @description Posts GL impact on customer deposit
 *              and fans out to AR aging refresh.
 */
define(['N/record', 'N/search', './lib_gl_posting'],
function(record, search, gl) {

  function afterSubmit(ctx) {
    if (ctx.type === ctx.UserEventType.CREATE) {
      var dep = ctx.newRecord;
      var amt = dep.getValue('payment');
      gl.postDeposit({
        customer: dep.getValue('customer'),
        amount:   amt,
        period:   dep.getValue('postingperiod')
      });
    }
  }

  return { afterSubmit: afterSubmit };
});

customer_deposit_sync.js

/Scripts/User Event Script/ · refreshed by NetSuite AI 4h ago
Summary

Fires after a Customer Deposit is created and posts the corresponding GL impact via lib_gl_posting. CSDocs detected this script owns the "deposit → GL" side effect that three other scripts assume but don't implement.

What it does

On afterSubmit (CREATE only), the script reads the deposit's customer, payment amount and posting period, then calls lib_gl_posting.postDeposit() with those three values. The library writes the matching journal entry and stamps the deposit's audit field. EDIT and DELETE events are intentionally skipped — only newly created deposits should post.

Worth knowing

Each run writes one row to journalentry, which counts toward your daily JE volume. Downstream, customscript_demo_inv_sync assumes this side effect has already run when it builds the daily inventory snapshot — if this script fails silently, that one drifts without warning.

Related pages

Your data is protected, end to end.

CSDocs is built for shops where compliance isn't optional.

Model
NetSuite's internal AI only

No OpenAI, Anthropic, or third-party model ever sees your source or your docs. Generation stays inside your NetSuite account.

Transport
Encrypted in transit

Your documentation travels from NetSuite to our servers over a private, encrypted connection — and stays encrypted once it's stored.

Access
Email-verified sign-in

Access is tied to your company email and managed inside NetSuite. Signing in takes a one-time code sent to your inbox — no extra accounts, no shared passwords.

Posture
Complements your compliance program

CSDocs isn't seeking SOC 2 certification itself. Instead, it gives you clean, thorough documentation you can reference when preparing for your own SOC 2, ISO or internal-controls reviews — making the audit story easier to tell.

The next time someone asks "why does this script exist?" — point them at a URL.

CSDocs is opening a waitlist ahead of our Fall 2026 release. The install takes an afternoon — and that's the last time anyone on your team has to think about documentation.

Join the waitlist →
What you'll need
01
A NetSuite login

For the one-time install in your account.

02
An afternoon

Total hands-on time on your side.

That's it. Everything else runs itself.