尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A portfolio project that reads text-based dental Explanation of Benefits PDFs, drafts line items for a person to review, and exports an X12 835 file or a CSV for Dentrix, Eaglesoft, or Open Dental.
It is a learning project by Adhil. It is not for sale, not a HIPAA product, and not for real patient information. Use fictional documents only.查看完整 README ↗A portfolio project that reads text-based dental Explanation of Benefits PDFs, drafts line items for a person to review, and exports an X12 835 file or a CSV for Dentrix, Eaglesoft, or Open Dental.
It is a learning project by Adhil. It is not for sale, not a HIPAA product, and not for real patient information. Use fictional documents only.
Live site: https://eob-reader.vercel.app
AI_PROVIDER=ollama to use a local Ollama server instead.audit_log table is unused, and so is payer_templates.npm install
npm run dev
The dev server listens on port 3020. Without Supabase env vars the marketing page and the demo still render. Google sign-in does not.
Copy the variables you need into .env.local. See .env.example.
Extraction tries providers in this order and skips any whose key is unset:
GEMINI_API_KEY — Google Gemini REST (generativelanguage.googleapis.com). Optional GEMINI_MODELS is a comma-separated list. The default is gemini-3.5-flash-lite,gemini-3.1-flash-lite,gemini-3.8-flash,gemini-2.5-flash-lite. Flash-Lite models are listed first because this key allows about 500 of those requests a day and about 20 Flash requests a day. A 429, 403, 404, or 5xx moves to the next model. Output is capped around 4000 tokens and asked for as JSON.GROQ_API_KEY — Groq’s OpenAI-compatible API. Optional GROQ_MODEL defaults to openai/gpt-oss-120b. That model spends tokens on reasoning, so the request asks for up to 6000 output tokens when they fit. Groq’s free tier allows about 8,000 tokens per minute and counts the prompt plus the max_tokens you request, so a long EOB gets a smaller ceiling. A request that still does not fit falls through.OPENROUTER_API_KEY — last resort. Same model order and request shape as before: google/gemini-2.5-flash, google/gemini-2.5-flash-lite, then meta-llama/llama-3.3-70b-instruct, with max_tokens 4000.Users never see the provider’s error text. A signed-in GET /api/ai-health pings the first model of each configured provider and does not return keys. Add ?all=1 to ping every model. That full check spends more of the daily quota.
Other variables:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY (keep-alive)NEXT_PUBLIC_APP_URLCRON_SECRET (keep-alive)AI_PROVIDER, OLLAMA_URL, OLLAMA_MODEL (optional local model)Apply supabase/migrations in order before using upload. 004_drop_billing_columns.sql drops leftover trial and Polar columns. Apply it by hand in the Supabase SQL editor. The app does not read those columns, so it works before the file is applied.
Questions: [email protected]