Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
영구적인 총계정원장, ASC 606 매출인식, 다기업 통합 및 자동 마감, AI CFO가 숫자를 조작하지 않는다
Perpetual general ledger, ASC 606 revenue recognition, multi-entity consolidation and a close that runs itself. With an AI CFO that cannot invent a number.
금융TypeScript · JavaScriptGitHub @Adarsh-9182온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI-native ERP with an AI CFO that cannot invent a number. Perpetual double-entry ledger, ASC 606 revenue recognition, Indian GST, and a verifier that rejects any figure not traceable to a tool output.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The deterministic financial core of Paisa — the AI CFO for businesses. The LLM never originates a number; this package does.
ts
import { Platform, parseINR, Orchestrator, CfoPlanner } from "paisa-core";
const platform = new Platform();
const org = platform.createOrganization("org_abc", "ABC Technologies");README 전문 보기 ↗The deterministic financial core of Paisa — the AI CFO for businesses. The LLM never originates a number; this package does.
src/
money.ts Paise as branded bigint · parseINR/formatINR (Indian grouping) · exact ratio math
accounts.ts Chart of accounts · account types fix normal-balance sides · default Indian SMB chart
journal.ts Double-entry engine · rejects unbalanced entries · append-only · reversal-based corrections
ledger.ts General ledger + trial balance as pure projections over the journal (can never disagree)
statements.ts Balance Sheet · P&L · Cash Flow — blocked if the trial balance is imbalanced
cashflow.ts Cash on hand · monthly net burn · runway — refuses to guess without history
health.ts 0–100 Financial Health Score — liquidity, profitability, runway, debt,
receivables discipline, revenue growth — with explicit missing-data list
rules.ts Configurable IF/THEN policy engine (low cash, large expense, overdue invoice, short runway)
events.ts Financial event bus + immutable audit trail
organization.ts Multi-tenant boundary — one org, one isolated engine stack; membership-gated access
invoices.ts Invoice state machine (DRAFT→SENT→PARTIALLY_PAID→PAID) · GST per line ·
posts balanced journal entries on transitions · AR aging · overdue detection
gst.ts Output tax from invoices · input tax credit from the ledger · net payable ·
GSTR-1/GSTR-3B filing calendar as pure date arithmetic
banking.ts Bank feed → duplicate detection → keyword categorization → journal.post() ·
unknown lines go to a review queue, never guessed into an account
recurring.ts Recurring-payment detection (3+ occurrences, monthly cadence, stable amount) ·
subscription optimizer with annualized costs
forecast.ts Monthly cash history off the ledger · forward projection with the assumption stated ·
scenario simulator ("can I hire at ₹1L/month?")
recommendations.ts Deterministic recommendation policies (overdue AR, GST due, short runway, subscription
review, idle cash, expense spikes) · every rec carries problem/impact/confidence/risk ·
approval queue — approve/dismiss survives regeneration, everything audited
brief.ts Morning Brief — health, cash, month deltas, filings, overdue AR, savings, headline
portfolio.ts Investment & trading ledger — buys/sells post balanced entries, weighted-average
cost basis, realized P&L to the ledger, marked-price valuation only (never guessed)
ai/
provider.ts Provider-agnostic LLM interface · MockProvider · FallbackProvider chain
tools.ts 17 engine-bound tools + JSON schemas — the ONLY number source the AI may narrate
planner.ts CfoPlanner — deterministic offline provider: keyword routing → tools → verbatim narration
anthropic.ts AnthropicProvider — Claude (claude-opus-4-8) behind the same interface
orchestrator.ts Tool loop · AI permission layer · verifyNarration()
bigint) — floats never touch a figure.verifyNarration() rejects any figure not traceable to a tool output.requiresApproval on recommendations, approve/dismiss queue).web/)Next.js app with login (HMAC-signed sessions, PAISA_USER/PAISA_PASSWORD/PAISA_SESSION_SECRET),
an append-only persistence log (web/.paisa-data/actions.jsonl, replayed through the engines on
boot), and a full Investments page (holdings, allocation, trade recording). Deployed on Vercel at
https://paisa-coral.vercel.app (demo login: adarsh / paisa123).
npm run build # build paisa-core first
cd web && npm install && npm run build && npm start # → http://localhost:3000
npm install
npm run build
node demo/server.js # → http://localhost:4000
Three-column AI-CFO dashboard (sidebar · morning brief + widgets · persistent chat), seeded with six
months of activity for a demo company. Every number on the page is computed by the engines; the chat
goes through the Orchestrator, so every figure in an answer is verified against tool outputs before
you see it. Works fully offline via CfoPlanner; set ANTHROPIC_API_KEY to route chat through
Claude with the planner as fallback.
import { Platform, parseINR, Orchestrator, CfoPlanner } from "paisa-core";
const platform = new Platform();
const org = platform.createOrganization("org_abc", "ABC Technologies");
// Invoicing posts to the ledger for you
const inv = org.invoices.create({
number: "INV-001", customer: "Acme", issueDate: "2026-06-01", dueDate: "2026-06-30",
lines: [{ description: "Services", amount: parseINR("1,00,000"), gstRatePct: 18 }],
}, "adarsh");
org.invoices.send(inv.id, "adarsh"); // DR AR 1,18,000 / CR Services 1,00,000 / CR GST 18,000
org.gst.upcomingFilings("2026-07-02"); // GSTR-1 due 2026-07-11, 9 days left
org.forecast.scenario("2026-07-02", { label: "Hire", monthlyExpenseDelta: parseINR("1,00,000") });
org.recommendations.generate("2026-07-02", "2026-01-01");
org.brief.compose("2026-07-02", "2026-01-01"); // the morning-brief card, engine-computed
const ai = new Orchestrator(new CfoPlanner({ asOf: "2026-07-02", periodFrom: "2026-01-01" }));
await ai.ask(user, org, "Can I hire another engineer?"); // verified, tool-sourced answer
npm run typecheck # tsc --noEmit, strict
npm test # vitest — 59 tests / 4 suites
npm run build # emit dist/ (required before running the demo)
banking.importStatement().(userId, orgId) through Platform.organization() so tenant isolation is inherited.rule.fired, recommendation.created) and fan out to email/WhatsApp.