a13n
AI 에이전트를 만들고 클라우드에서 실행합니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI invoice & document extraction — batch upload, A/B cross-check, manual review, register reconciliation. EN/中文/BM. Mirror: https://lapis-bloom-hav8.here.now/
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗▶ Live demo: GitHub Pages · here.now mirror
In-browser document extraction: invoices, receipts, delivery orders, shipment lists and more. Images (incl. iPhone HEIC), PDF, Excel/CSV, Word and video → OpenAI-compatible or Anthropic models → arithmetic checks, A/B cross-verification, manual review, export. UI in English (default), 中文 and Bahasa Melayu.
| Path | What |
|---|---|
site/index.html | The app (libraries from jsDelivr with pinned versions) |
site/route.js | Delivery route planning (stops, geocoding, road matrix, optimiser) |
tests/ | Playwright end-to-end tests + synthetic fixtures (tests/fixtures/make_fixtures.py) |
proxy/ | Optional Cloudflare Worker CORS proxy |
python/invoicelens.py | Command-line / server version with the same prompt, checks, cross-check and reconciliation as the web app |
.github/workflows/ | tests.yml → on success pages.yml + herenow.yml deploy; proxy.yml deploys the worker |
npm ci
npx playwright install chromium # once
npm test
The tests serve site/index.html locally, map the jsDelivr libraries to node_modules (same pinned versions) and mock every model call, so they need no network or API keys. They cover: extraction and all result tabs, arithmetic checks, batch queue (concurrency, failure, retry, CSV), manual review (A/B pick, inline edit, undo, reviewed, export), autosave/restore, HEIC/Excel/Word/CSV, progress/cancel/timeout, i18n (no untranslated text in en/ms/zh), mobile overflow at 375px, and provider presets.
When you change a library version in site/index.html, change it in package.json too.
Same extraction rules as the web app, for batch or server use (any OpenAI-compatible endpoint or Anthropic):
pip install -r python/requirements.txt
export IL_A_KEY=sk-... # model A; optional model B via IL_B_KEY / --b-*
python python/invoicelens.py invoices/ register.pdf \
--a-base https://openrouter.ai/api/v1 --a-model google/gemini-2.5-flash --out out/
Writes results.json, summary.csv, tables.csv and reconcile.csv to --out. Run python python/invoicelens.py -h for all options (--tiles, --no-enhance, --pdf-image, --concurrency, --b-type anthropic, …). Text-based PDF pages are sent as their text layer by default (exact digits, fewer tokens); summary.csv includes token usage. Tests: pytest python/tests (a test fails if the prompt drifts from site/index.html).
Every push runs Tests. Only when they pass do GitHub Pages and here.now deploy that exact commit (here.now needs the HERENOW_API_KEY repository secret). Both deploy workflows can also be run manually.
Some OpenAI-compatible providers block calls from web pages. proxy/ is a Cloudflare Worker that only accepts requests from the two sites above and forwards them to the X-Target-Base URL without storing keys. Add CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID secrets, run “Deploy CORS proxy”, and paste the worker URL into Model settings → Advanced.
All interfaces used for stop locations (OpenStreetMap, Google Places, SerpApi, local helpers), their parameters, limits and first-use checklist: docs/location-apis.md.