Nine modules, one ledger: a tour of JuloAI ERP
Simon Yang
4/22/2026
Most "all-in-one" business platforms are five products in a trench coat. You hit checkout in module A, the row appears in module B six minutes later, and the books in module C catch up sometime after midnight. By the time you reconcile, you're operating three different copies of the same number.
JuloAI ERP is one product. Nine modules sit on top of one chart of accounts, one customer table, one supplier table, one item catalogue, and one general ledger. When a sales invoice is submitted, the GL entry, the customer aging bucket, the trial balance, and the controller's close-readiness check all move in the same database transaction. There is no nightly batch. There is no sync step.
This post walks through what's actually inside.
The nine modules
1. Accounting
Double-entry general ledger with multi-currency posting, per-company FX revaluation, and a controller-grade close workflow:
- Trial balance, balance sheet, P&L, GL detail, AR aging, AP aging — all built from the same posting, not regenerated nightly
- Controller Review runs 9 consistency checks before you sign off a period (e.g. unmatched payments, unapproved JEs, FX revaluation drift, GL/subledger ties)
FiscalPeriodSignofffreezes posting on or before period end at the schema level — not a UI hint, a hard guard the API refuses to bypass- FX revaluation on period rollover with auto-reversal next period (Phase 24 work, if you've been following along)
2. Selling
Quote → sales order → delivery → invoice → payment, all inside one pipeline:
- Quotation conversion preserves pricing rule application and tax template
- Sales invoice submit posts AR, revenue, and GST/PST in one shot
- Credit notes, partial payments, customer statements
- Customer credit-limit gate (with advisory locking — no race conditions on concurrent submits)
3. Buying
Purchase request → purchase order → goods receipt → bill, with three-way matching:
- Approval thresholds by amount, by document type, configurable per company
- AI invoice scan: a supplier PDF in becomes a structured PI draft out, with the source file stitched to the voucher forever
- GRNI (Goods Received Not Invoiced) posts automatically on receipt, reconciles on bill match
- Submit blocked until approval is
APPROVED— not as policy, as code
4. Inventory
Stock that's actually wired to the ledger:
- Multi-warehouse, multi-bin tracking
- Moving-average valuation with backdated-post repost guard (insert an old stock entry → it reposts the affected periods correctly, with a cost-delta warning written to SystemLog)
- Stock reconciliation generates the journal adjustment automatically
- Material requests, transfers, batch / serial tracking
5. Documents
Mobile camera in, structured invoice draft out:
- Two extraction backends (Anthropic Claude + OpenAI gpt-4o) with confidence scores
- Original PDF / image stays attached to the resulting voucher — auditors get the source forever, not a transcription
- Currently supports purchase invoices and expense receipts; sales doc capture is on the roadmap
6. Approvals
Workflow engine that gates the four document types where mistakes are expensive:
SALES_INVOICE,PURCHASE_INVOICE,PAYMENT_ENTRY,JOURNAL_ENTRY- Threshold rules by amount and doctype, evaluated at submit
- Owner / admin gates on organization-binding actions
- Rejections logged with actor + reason + timestamp into the immutable audit log
7. CRM
Lead → opportunity → quotation → invoice, inside the same system that will collect:
- Stage transitions logged per account
- Contract module with sign + status workflow
- Conversion chain: an opportunity becomes a quotation becomes a sales invoice, all linked
8. Projects
Time, cost, and billing tied to projects so profitability is visible as the work happens, not at year-end:
- Two billing modes per project: fixed-price and time & materials
- Timesheets with per-user billable / non-billable toggle
- Per-project profitability dashboard pulling revenue, external cost, labour, margin
- Invoice generation from approved timesheet lines
9. Manufacturing
For companies that actually build things:
- Multi-level BOM with active / default per item
- Work Order → stock issue + complete with auto SLE posting
- Cancellation reverses stock and GL atomically
- Operations / workstations / job cards / production plan are explicitly deferred — see "what's not here" below
What's shared
Every module above reads from and writes to the same:
- Chart of accounts (one tree, one numbering scheme)
- Customer / supplier / item / user tables
- General ledger (every voucher posts to it, no module has its own private books)
- Audit log (every create / submit / cancel / edit / delete on any financial document writes a hash-chained row)
- Permission model (org-level roles + ERP roles + module-level grants)
There is no integration layer between modules because there is nothing to integrate. They share the same Postgres database, the same Prisma schema, and the same set of services.
What we deliberately didn't ship
This is the part most pitches skip:
- No POS, no e-commerce front-end. We're back-office. Plug a Shopify or a square POS into our API; we'll record the books.
- No payroll. It's its own regulated beast. We treat it as upstream, not bolted-on.
- No HR module. Same reason as payroll — we're not pretending to.
- No production scheduling MES. Manufacturing ships the BOM + work-order spine, not job-card scheduling. If you need that, we're not the right tool yet.
- No HIPAA / no PHI. Our DPA explicitly excludes protected health information. We won't sign a BAA. Other vendors are better at that.
The next post in this series is on why we made these specific cuts. Short version: every module that ships gets the same level of audit, security, and ledger integration as the others. We'd rather ship nine that meet that bar than fifteen that don't.
If you want to see any of these modules in motion, the /product page has the full per-module deep dive with mockups; or start a trial and you'll be in your own sandbox in under 2 minutes.