{"id":50927776,"url":"https://github.com/xt0n1-t3ch/reva","last_synced_at":"2026-06-17T01:01:32.632Z","repository":{"id":364238826,"uuid":"1267029541","full_name":"xt0n1-t3ch/Reva","owner":"xt0n1-t3ch","description":"AI-powered document review for reinsurance workflows.","archived":false,"fork":false,"pushed_at":"2026-06-12T07:30:48.000Z","size":2828,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T09:05:36.709Z","etag":null,"topics":["ai","blazor","document-ai","dotnet","ocr","reinsurance","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xt0n1-t3ch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-12T06:49:50.000Z","updated_at":"2026-06-12T07:28:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xt0n1-t3ch/Reva","commit_stats":null,"previous_names":["xt0n1-t3ch/reva"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/xt0n1-t3ch/Reva","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xt0n1-t3ch%2FReva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xt0n1-t3ch%2FReva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xt0n1-t3ch%2FReva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xt0n1-t3ch%2FReva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xt0n1-t3ch","download_url":"https://codeload.github.com/xt0n1-t3ch/Reva/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xt0n1-t3ch%2FReva/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34429493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","blazor","document-ai","dotnet","ocr","reinsurance","sqlite"],"created_at":"2026-06-17T01:01:30.417Z","updated_at":"2026-06-17T01:01:32.593Z","avatar_url":"https://github.com/xt0n1-t3ch.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=0:0B1220,45:00B3A4,100:3B5BD6\u0026height=210\u0026section=header\u0026text=Reva\u0026fontSize=72\u0026fontColor=ffffff\u0026desc=Local-first%20AI%20document%20intelligence%20for%20reinsurance\u0026descSize=18\u0026descAlignY=72\" alt=\"Reva animated header\" /\u003e\n\n  \u003cimg src=\"docs/assets/reva-banner.png\" alt=\"Reva AI document intelligence cockpit banner\" /\u003e\n\n  \u003ch1\u003eReva\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eOffline-by-default bordereaux ingestion, reconciliation, review, and export in one Windows executable.\u003c/strong\u003e\u003c/p\u003e\n\n  \u003cimg src=\"https://readme-typing-svg.demolab.com?font=Fira+Code\u0026size=20\u0026duration=3500\u0026pause=800\u0026color=00B3A4\u0026center=true\u0026vCenter=true\u0026width=760\u0026lines=Ingest+messy+reinsurance+documents;Extract+source-cited+canonical+fields;Reconcile+headline+figures+against+line+items;Review+and+export+from+one+localhost+app\" alt=\"Animated Reva capability subtitle\" /\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/xt0n1-t3ch/Reva/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/xt0n1-t3ch/Reva/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/.NET-10-512BD4?style=for-the-badge\u0026logo=dotnet\u0026logoColor=white\" alt=\".NET 10\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Next.js-16.2.9-000000?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\" alt=\"Next.js 16.2.9\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/React-19.2-61DAFB?style=for-the-badge\u0026logo=react\u0026logoColor=0B1220\" alt=\"React 19.2\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/TypeScript-5-3178C6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Tailwind-4-06B6D4?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Tailwind CSS 4\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Ollama-qwen3--vl%3A8b-000000?style=for-the-badge\u0026logo=ollama\u0026logoColor=white\" alt=\"Ollama qwen3-vl:8b\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/SQLite-default-003B57?style=for-the-badge\u0026logo=sqlite\u0026logoColor=white\" alt=\"SQLite default\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Playwright-tested-2EAD33?style=for-the-badge\u0026logo=playwright\u0026logoColor=white\" alt=\"Playwright tested\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/SemVer-1.3.0-3B5BD6?style=for-the-badge\u0026logo=semver\u0026logoColor=white\" alt=\"SemVer 1.3.0\"\u003e\n    \u003ca href=\"CHANGELOG.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/Keep%20a%20Changelog-1.1.0-E05735?style=for-the-badge\" alt=\"Keep a Changelog\"\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-00B3A4?style=for-the-badge\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\nReva is a local-first, offline-by-default AI document-intelligence application for reinsurance bordereaux ingestion and reconciliation. It turns messy files, emails, spreadsheets, PDFs, scans, and visible text into structured, reviewable, export-ready data with source citations, honest confidence, learned schema mapping, and analyst corrections that persist by sender.\n\nThe shipped product is a single self-contained `Reva.exe`. It serves the static Next.js cockpit, REST API, OCR, reconciliation engine, and native assistant chat from one localhost origin: `http://localhost:5187`. No Node.js, web server, cloud OCR, or API key is required at run time.\n\n## Highlights\n\n| Capability | What Reva does |\n|:---|:---|\n| Any-format intake | Ingests TXT, Markdown, CSV, Office files, `.eml`/`.msg` email with attachments, digital PDFs, images, scanned PDFs, and unknown binaries through a low-confidence visible-text fallback. |\n| Offline OCR | Runs bundled `Sdcb.PaddleOCR` PP-OCR V5 models locally and records normalized boxes and polygons for citation overlays. |\n| Native assistant | Streams AI-SDK UI-message SSE from `/api/agent` while `Microsoft.Extensions.AI` talks to a local Ollama OpenAI-compatible endpoint. |\n| Learned schema mapping | Combines static reinsurance aliases, bounded fuzzy matching, and EF-backed sender/domain overrides learned from analyst corrections. |\n| Reconciliation | Compares stated headline figures to computed table totals for money fields, cession rate, and line of business with a configurable tolerance. |\n| Rossum-style review | Shows document pages beside fields; hovering a field highlights the exact cited source region and scales with zoom. |\n| Export templates | Exports CSV, Excel, and JSON through saved templates, including a Lloyd's CRS template and live preview. |\n| Local-first default | Keeps extraction deterministic and keyless; optional LLM-assisted extraction and optional Docling paths stay disabled unless configured. |\n\n## Architecture at a glance\n\n```mermaid\nflowchart TB\n  subgraph Runtime[\"Single self-contained Reva.exe · localhost-only\"]\n    Host[\"src/Reva.Web\u003cbr/\u003eMinimal API + static UI host\u003cbr/\u003e/api + /api/agent + SPA fallback\"]\n    UI[\"Next.js 16.2.9 static export\u003cbr/\u003eReact 19.2 · TypeScript · Tailwind 4\u003cbr/\u003eserved from wwwroot\"]\n    Agent[\"Native assistant chat\u003cbr/\u003eMicrosoft.Extensions.AI + Ollama\u003cbr/\u003eAI-SDK UI-message-stream SSE\"]\n    Workflow[\"DocumentWorkflow\u003cbr/\u003eparse → classify → extract → map → reconcile → review → export\"]\n    Infra[\"src/Reva.Infrastructure\u003cbr/\u003eEF Core, parser router, PaddleOCR, extractor, mapping, reconciliation\"]\n    Core[\"src/Reva.Core\u003cbr/\u003econtracts, states, canonical fields, MoneyFormatter\"]\n    Store[(\"SQLite default\u003cbr/\u003eSQL Server by config\")]\n  end\n\n  Analyst[\"Analyst browser\"] --\u003e|http://localhost:5187| UI\n  UI --\u003e|same-origin REST + SSE| Host\n  Host --\u003e Workflow\n  Host --\u003e Agent\n  Agent --\u003e|4 tool-loop functions| Workflow\n  Workflow --\u003e Infra\n  Infra --\u003e Core\n  Infra --\u003e Store\n  Infra --\u003e Files[\"Local file storage\u003cbr/\u003eSHA-256 hashed uploads\"]\n  Agent -. optional local model .-\u003e Ollama[\"Ollama qwen3-vl:8b\u003cbr/\u003ehttp://localhost:11434/v1\"]\n```\n\n## Quick start\n\n### Windows release\n\n1. Download `Reva-v1.3.0-win-x64.zip` from [Releases](https://github.com/xt0n1-t3ch/Reva/releases).\n2. Extract the ZIP.\n3. Double-click `Reva.exe` or `Start-Reva.cmd`.\n4. Open `http://localhost:5187` and upload a reinsurance document.\n\nOptional assistant chat:\n\n```powershell\nwinget install Ollama.Ollama\nollama pull qwen3-vl:8b\n```\n\nReva best-effort starts `ollama serve` when Ollama is installed. If the model is unavailable, chat reports that clearly and the rest of the product continues to work offline.\n\n### From source\n\n```powershell\ndotnet run --project src/Reva.Web/Reva.Web.csproj\n```\n\nFor frontend development:\n\n```powershell\ncd web\npnpm install\npnpm dev\n```\n\nCore validation:\n\n```powershell\ndotnet test Reva.slnx\ncd web\nnpx playwright test\n```\n\n## Repository map\n\n| Path | Owns |\n|:---|:---|\n| [`src/Reva.Core`](src/Reva.Core/) | Domain contracts, document states, canonical reinsurance field names, and shared money formatting. |\n| [`src/Reva.Infrastructure`](src/Reva.Infrastructure/) | Persistence, storage, hashing, parsers, OCR, classification, extraction, learned mapping, reconciliation, workflow orchestration, and native agent services. |\n| [`src/Reva.Web`](src/Reva.Web/) | .NET 10 web host, REST endpoints, `/api/agent`, OpenAPI, static UI serving, and SPA fallback. |\n| [`web`](web/) | Next.js App Router cockpit that static-exports into `src/Reva.Web/wwwroot` at package time. |\n| [`contracts`](contracts/) | Review payload schema, including normalized citation geometry. |\n| [`tests`](tests/) | Unit, integration, host smoke, package smoke, and test index. |\n| [`docs`](docs/) | Architecture, pipeline, packaging, demo, and reinsurance-domain documentation. |\n\n## Documentation\n\n| Guide | Start here when you want to... |\n|:---|:---|\n| [Documentation index](docs/index.md) | Navigate the project docs. |\n| [Architecture](docs/architecture.md) | Understand the all-in-one executable, backend boundaries, API host, static UI, data model, and security posture. |\n| [AI pipeline](docs/ai-pipeline.md) | Follow parsing, OCR, extraction, schema mapping, reconciliation, assistant chat, and export flow. |\n| [Packaging](docs/packaging.md) | Build and smoke-test `Reva-v1.3.0-win-x64.zip`. |\n| [Demo script](docs/demo-script.md) | Run a concise product walkthrough with the seeded corpus. |\n| [Reinsurance landscape](docs/research/reinsurance-landscape.md) | Review the document types, canonical fields, standards, and competitive UX patterns behind Reva. |\n| [Test suite](tests/index.md) | Pick the right unit, integration, E2E, Playwright, or package-smoke command. |\n| [Visual reference](docs/visual-references/reva-intelligence-cockpit-reference.png) | See the current cockpit direction. |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eRuntime contract\u003c/strong\u003e\u003c/summary\u003e\n\n- `POST /api/documents` uploads a file and starts the workflow.\n- `GET /api/documents` and `GET /api/documents/{id}` return queue/detail data.\n- `GET /api/documents/{id}/review-payload` returns the schema-backed review payload.\n- `GET /api/documents/{id}/pages/{page}.png` serves renderable page images for the split view.\n- `POST /api/documents/{id}/review` saves field edits and mapping corrections.\n- `GET /api/documents/{id}/export` downloads CSV, Excel, or JSON.\n- `/api/templates` owns export template CRUD and duplication.\n- `POST /api/data/reseed` and `POST /api/data/clear` manage demo/workspace data.\n- `POST /api/agent` streams AI-SDK UI-message-stream SSE.\n- `GET /api/agent/status` reports local Ollama/model readiness.\n- `GET /health` reports package health.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOffline defaults\u003c/strong\u003e\u003c/summary\u003e\n\nReva's keyless path is the product default: native .NET parsers, local PaddleOCR, SQLite, deterministic extraction, learned mapping, reconciliation, review, and exports all run without a cloud account. Optional Docling and optional LLM-assisted extraction are additive configuration paths, not required runtime services.\n\n\u003c/details\u003e\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxt0n1-t3ch%2Freva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxt0n1-t3ch%2Freva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxt0n1-t3ch%2Freva/lists"}