Trex can close the books
because Trex is the books.

Most finance “copilots” are chatbots wrapped around an integration. Trex has the same database access, the same RBAC, and the same audit trail as your accountant.

trex.looppropose → gate → post → auditproposeagent draftspolicy checkrbac + railsapproval gatehuman · your clickpost → ledgerdouble-entryaudit logimmutable
0/318
bank lines auto-matched
HDFC current a/c · last 7 days
0/42
inbox PDFs posted
3 over ₹1L queued per policy
0
exceptions flagged
1 duplicate · 2 FX legs · 3 missing refs
0
GST mismatch traced
GSTR-3B vs 2B · three vendors
five task classes

What Trex actually does.

INTENT_PARSE

Understand

Map your request to a ledger operation. “Show March recurring expenses by department” → SQL on your books, not vibes.
$ “Show March recurring expenses…”
GUIDANCE

Recommend

Suggest entries, accruals, mappings. Always with reasoning. Always pending your nod.
proposal · pending your nod
Provision — rent · March
REPLY_SYNTHESIS

Answer

Format the answer as a card, a table, a chart — not just markdown. Approvals are click-through.
GENERAL_CHAT

Explain

Why is this account here? What does “accrual” mean? Pulls from your COA, your audit log, your context.
$ what does “accrual” mean?
↳ recognised when incurred, not when cash moves — pulled from your COA + audit log
BRIEFING

Summarise

Month-end narrative for the board deck. Generated from the actual close, not the calendar.
six real sessions · anonymised

Watch it work.

Names changed. Numbers preserved. The flow is what you’d see in the product.

close · march · 4 entities
ACTIVE
$Soft-close March across all four entities.
T
Done. Provisions drafted for rent, electricity, AMC. 7 unposted bills flagged. 2 inter-co eliminations pending. P&L, BS, CF refreshed.
$Show the inter-co.
T
Triam Pvt → Triam SG · ₹14,82,000 services rendered. Triam SG → Triam Pvt · ₹8,40,000 IP licence. Mutual balance ₹6,42,000. Want me to eliminate?
$Yes.
T
Posted. Audit ID #aud-4912. Soft-closed at 23:41 IST. Variance commentary drafted for management discussion if you want it.
recon · hdfc · last 7 days
ACTIVE
$Reconcile HDFC current account, last 7 days.
T
312 of 318 lines auto-matched. 6 exceptions queued: 1 duplicate-payment suspect, 2 FX legs, 3 missing references.
$What’s the duplicate?
T
PAY-3214 (Apr 18, ₹2.30L → ACME Logistics) and PAY-3290 (Apr 22, ₹2.30L → ACME Logistics). Same UTR fragment, same vendor account. Holding both. Reason to keep both?
$No. Reverse PAY-3290.
T
Reversal posted. ACME notified by email. AP balance corrected. Audit trail attached.
fpa · fy27 base case
ACTIVE
$Draft an FY27 expense forecast by department, base case.
T
Pulled 18 months of actuals. Personnel +9% (headcount plan), COGS +14% (commodity drift), G&A flat. Saved as FY27 Base.
$Show me the worst case.
T
Revenue -15%, headcount frozen. Runway extends 14w → 22w because hiring stops. Three teams breach 90% comp ratio — flagged for HR review.
bills · finance@ inbox
ACTIVE
$Pull bills from finance@ inbox and post them.
T
42 PDFs extracted. 38 auto-mapped. 4 new vendors flagged. 39 posted. 3 over ₹1L queued per policy.
$Approve all three.
T
Posted. GST 2B match: 2 of 3 reconciled with portal. 1 vendor hasn’t filed yet — chase email drafted.
gst · 3b vs 2b · q1
ACTIVE
$GSTR 3B vs 2B for Q1. Where are we off?
T
Net mismatch ₹38,400. Three vendors: Acme Logistics ₹14,200 (their B2B short-filed), Vendor X ₹8,200 (HSN mis-classified at our end), Vendor Y ₹16,000 (their bill in 2B, ours not yet posted).
$Fix Vendor X.
T
Reclassified to HSN 9983. JE posted, GSTR-3B regenerated. Net mismatch now ₹30,200.
anomaly · vendor drift
ACTIVE
$Anything weird in payables this month?
T
Two flags. (1) Vendor ‘Sky Couriers’ — bills jumped 4× from last quarter average. (2) Three new vendors created in the last 14 days, all with bank accounts at the same branch. Recommend a quick review.
$Show me the three.
T
Listed in approval queue. Created by user akshay@ on Apr 18–22. None paid yet. Action: confirm KYC docs?
multi-provider llm router

Model orchestration, automated.
Override per session.

json invalid → retryrequest5 task classesroutercost-awaremistral · smallintent_parse · general_chatanthropic · sonnetguidance · reply_synthesisanthropic · opusbriefing
line weight = call share · llm.router, last hour
  • Cost-aware routing. Cheap models for INTENT_PARSE, stronger models for REPLY_SYNTHESIS. You don’t pay Claude Opus rates to summarise an invoice.
  • Per-session override. Force a specific provider for sensitive sessions (e.g. financial close on Claude only).
  • Fallback chain. If primary fails JSON validation, we try secondary providers. Your accountant doesn’t see the retry.
  • Your data, your model. Enterprise can BYO API keys. We route, we don’t train.
rails · enforced in the ledger

The most useful thing about an in-ledger agent is that we know exactly where it can act. Here’s the rule sheet — as the agent sees it.

rails.policyENFORCED

Post a payment above your role’s approval threshold. Queued for human approval. Always.

Touch a hard-closed period. Blocked. Period reopen requires admin and audit entry.

Create a vendor and pay them in one session. Vendor creation is a separate approval gate. By design.

Send anything outside your tenant. Tenant-isolated. Trex cannot read data outside your schema.

Change the COA structure. Restricted to admin roles. Trex can suggest, not commit.

Train on your data. Pass-through to LLM providers under their no-train terms. We do not fine-tune on customer data.

trex import --from tally_backup.tb900

Watch Trex on your own books.

Bring a Tally backup. We’ll spin up a tenant, import the data, and walk Trex through your month.