尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Evidence-based invoice review for finance teams. Extracts invoice fields, runs deterministic checks
(duplicates, vendor and bank-detail mismatches, unusual amounts, arithmetic), and explains the findings.
It flags anomalies; people make the decisions. Nothing is approved, rejected or paid automatically.
Stack: Next.js 16 (App Router) · TypeScript · Tailwind CSS 4 · Firebase Auth / Firestore / Storage ·
Ollama (local AI) · Zod · Recharts · three.js (react-three-fiber) · Lucide icons · Vitest
Runs entirely locally with the Firebase emulators. Requires Node 20+ and Java 17+.檢視完整 README ↗Evidence-based invoice review for finance teams. Extracts invoice fields, runs deterministic checks (duplicates, vendor and bank-detail mismatches, unusual amounts, arithmetic), and explains the findings. It flags anomalies; people make the decisions. Nothing is approved, rejected or paid automatically.
Stack: Next.js 16 (App Router) · TypeScript · Tailwind CSS 4 · Firebase Auth / Firestore / Storage · Ollama (local AI) · Zod · Recharts · three.js (react-three-fiber) · Lucide icons · Vitest
Runs entirely locally with the Firebase emulators. Requires Node 20+ and Java 17+.
npm install
npm run emulators # terminal 1 — Auth + Firestore emulators (uploads go to ./.data)
npm run dev:emulator # terminal 2 — app on http://localhost:3000
Create an account on the sign-in page, then use Load synthetic demo data on the dashboard.
Upload the fictional PDFs from the Upload invoice page ("Try a synthetic sample"), or regenerate them with npm run samples.
.env.example to .env.local and fill in the web config (Project settings → General) and the service-account values
(Project settings → Service accounts → Generate new private key). Never commit .env.local.STORAGE_DRIVER=local (files go to ./.data/uploads).firebase deploy --only firestore:rules,storage (all data access is server-side via the Admin SDK).npm run dev.AI_PROVIDER | Behaviour |
|---|---|
ollama (default) | Local model. ollama pull qwen2.5:3b (fits 8 GB Macs; ~25 s per call warm), then set OLLAMA_MODEL. Invoice text never leaves your machine. |
openrouter | Third-party API. Synthetic data only; the UI shows an "External AI provider" warning. |
none | Rules-only. Extraction uses a deterministic parser and summaries use templates. |
If the model is unreachable or returns invalid JSON, the app falls back to rules-only automatically and says so in the UI. The model never creates findings or scores: rules do. Numbers the model returns are accepted only if they appear in the document text.
src/lib/domain — pure, tested business logic: money (integer minor units), normalisation, rules engine, scoring, review state machine, analytics.src/lib/server — server-only: Admin SDK, repositories, storage, AI providers, analysis pipeline, seed data.src/app/api — Route Handlers with a { data, error } envelope, Zod validation and ownership checks on every request.src/app/(app) — Server Components for pages; client components only where interaction needs them.invoices (+ findings, runs subcollections), vendors, auditEvents (append-only), users.npm test · npm run typecheck · npm run lint · npm run build · npm run samples
Scores are review indicators, not fraud probabilities. Analysis runs in-process after the response (no queue), history comparison loads the user's invoices into memory (fine to a few thousand), scanned PDFs without a text layer need to be uploaded as images for OCR, Word files must be .docx (not legacy .doc or macro-enabled .docm), and access is per-user rather than per-organisation. See Part B of the implementation plan for the production roadmap.