Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
Audit AI가 초안을 승인된 가이드라인·사실·자산과 비교 검토하고, 결과 출처를 표시해 최종 판단은 사람에게 맡깁니다
Audit AI reviews every draft against your approved guidelines, facts and assets before it goes live. Each finding shows its source, and a person makes the final call.
비즈니스Python · TypeScriptGitHub @Audit-AIII온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기TechCircuit
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Audit AI checks content before it is published against a brand's own approved documents (brand guide, fact sheet, product specs). Every finding shows the evidence it is based on: the exact quote from the approved document. When no approved document covers a claim, the claim is marked "unverified", never "false". Audit AI only suggests; a person makes the final call on every draft.
Built by team CodeNinjas for the Inkloom AI hackathon.
One email is one private account that owns one or more brands. The owner writes, checks and approves their own content; nothing is ever approved for them, and every decision is saved with who, when and which version. Roles, risk routing and invites are deferred to the roadmap. See DECISIONS.md for the reasoning.
| Built today | Planned |
|---|---|
| Factual-claim checking: claims in a draft are extracted and checked against the brand's approved documents (supported / contradicted / unverified / documents disagree), with the quote behind each verdict | Tone checks |
| Upload brand documents (PDF, Word, text) and drafts (paste or upload) | Visual (logo and colour) checks |
| Terminology and accessibility checks run on every review, with a brand rules editor | Multi-user roles (separate writers, reviewers, approvers) |
| Suggestions: evidence-backed corrections, and a labelled "safer wording, not evidence-backed" for unverified claims | |
| Decide on each review: approve, send back with a note, or reject; every decision is recorded | |
| Versions: edit a draft, save a new version, check it again; an old approval never applies to a newer version | |
| Source Watch: withdrawing or replacing an approved document sends dependent approvals back for review | |
| Intent-lock: must-keep phrases saved on the server; no suggestion that removes one is offered, and an edit that drops one is warned about | |
| Dismiss and restore a finding (the verdict stays as it was), and comments on findings | |
| Trust Scorecard: run the verifier's labelled evaluation from the page and see the run's numbers (needs an AI provider key; none is configured yet) |
The landing page (components/sections/Checks.tsx) still marks terminology and accessibility as "Coming next" although they now run on every review; it needs updating (frontend).
| Part | Folder | Stack |
|---|---|---|
| Frontend | audit-ai-final/frontend | Next.js (App Router), React, TypeScript, Tailwind v4, GSAP, Lenis (landing page only) |
| Backend API | services/api | FastAPI, SQLAlchemy 2, Alembic, PostgreSQL 16 |
| Verification engine | services/verification | inkloom_verify (Python package): claim extraction, BM25 evidence retrieval, verification, citation guard, corrections |
How a review flows:
Browser (Next.js)
│ paste text or upload a file
▼
FastAPI POST /api/reviews ──► stores a content version (PostgreSQL)
│
▼
inkloom_verify
1. extract claims from the draft (LLM)
2. retrieve evidence passages (BM25 over the brand's APPROVED documents)
3. verify each claim against them (LLM) → supported / contradicted / unverified
4. check every citation is a real quote, propose evidence-backed corrections
│
▼
FastAPI stores findings + evidence ──► Browser shows each finding with its quote
a person approves / sends back / rejects
No AI provider configured? Reviews still complete, with one clearly labelled placeholder finding instead of a real check.
Requirements: Python 3.11+, Node.js, Docker Desktop (for PostgreSQL). Commands below are from
services/api/README.md and services/verification/README.md; on macOS/Linux use
.venv/bin/python instead of .venv/Scripts/python.
1. Backend (from services/api)
cp .env.example .env # then set AUTH_SECRET_KEY (see the comment in the file)
docker compose up -d # local PostgreSQL
python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev]"
.venv/Scripts/python -m pip install -e ../verification
.venv/Scripts/python -m alembic upgrade head
.venv/Scripts/python scripts/seed.py # demo data
.venv/Scripts/python -m uvicorn inkloom_api.main:app --reload
The API runs on http://localhost:8000 (interactive docs at /docs). Seed data is labelled
[SEEDED] in its names, and the script prints the demo login. A full pytest run wipes it; run
scripts/seed.py --reset afterwards.
2. Frontend (from audit-ai-final/frontend)
cp .env.example .env.local # only NEXT_PUBLIC_API_URL; never put secrets here
npm install
npm run dev
Open http://localhost:3000. The backend only accepts browser calls from that address by default
(CORS_ALLOW_ORIGINS).
3. Engine tests (from services/verification)
python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev]"
.venv/Scripts/python -m pytest
No secrets are committed. Every setting is documented in the .env.example files:
services/api/.env.example, services/verification/.env.example,
audit-ai-final/frontend/.env.example.
All optional; set in services/api/.env. The backend tries them in this fixed order and falls
through to the next on any failure:
GEMINI_API_KEY, GEMINI_MODELGROQ_API_KEY, GROQ_MODEL:free models): OPENROUTER_API_KEY, INKLOOM_LLM_MODELSOLLAMA_MODEL (no key, nothing leaves the machine)With a key set, draft text is sent to that provider. Documents marked confidential are meant
to stay on the local model (Ollama), which is the only provider allowed for them; Ollama is not
set up in the current environment. Model ids change over time, so read them from each provider's
live model list (the .env.example comments explain how).
| Step | Deterministic (no model) | Uses a language model |
|---|---|---|
| Evidence retrieval | BM25 over the brand's approved documents only | |
| Claim extraction | spans and atomicity checked against the draft | proposes claims |
| Verdict | proposes supported / contradicted / not enough evidence, with quotes | |
| Citation guard | every quote must exist verbatim in a retrieved passage of an authorised document; instruction-like text is never evidence; conflicting documents downgrade the verdict | |
| Corrections | added words and figures must come from the cited quote; the fix is re-verified; Intent-lock phrases may not be removed | proposes the fix |
| Rules (engine) | terminology, disclaimers, numeric limits, accessibility |
Anything the model says that fails a deterministic check is downgraded, never trusted. Provider errors and invalid output become "unverified, needs review", never a verdict. Every non-supported finding goes to a person.
The engine has a labelled, synthetic benchmark (80 records: 55 dev, 25 held-out) and a runner that
writes reports to services/verification/eval/reports/. From services/verification:
.venv/Scripts/python -m pytest -q # engine tests (no network)
.venv/Scripts/python eval/run_eval.py --check-baseline # CI gates (no model)
.venv/Scripts/python eval/run_eval.py --verdicts oracle --check-baseline # engine ceiling (scripted gold answers)
.venv/Scripts/python eval/run_eval.py --verdicts openrouter --pipeline verifier --check-baseline # live model
No live-model accuracy has been established. The oracle and default runs measure what the code
enforces, not a model. Live runs so far were blocked by provider availability (see
services/verification/EVAL.md, "Live evaluation status").
services/api/DISCLOSURE.md (Darsh to confirm).services/verification/DISCLOSURE.md
(draft: Krish to confirm).The visual style ("pressed paper") is inspired by the public style of relevovinco.com. It was re-implemented from scratch; no text, images, code or brand assets were copied.
| Person | Area | |
|---|---|---|
| Chahit | Frontend | TODO: confirm |
| Darsh | Backend API | TODO: confirm |
| Krish | AI verification engine (services/verification): claim extraction, evidence retrieval, verification, citation guard, corrections, softening, Intent-lock checks, terminology/accessibility rules, evaluation harness | Krish to confirm |
From docs/backend.md ("Known limitations"), plus two frontend notes:
RULES_HANDOFF.md).services/api/AI_PROVIDER_KEYS.md) and run a real evaluation.