Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗[!NOTE] Polya is live at askpolya.com and in active development. Today each student chooses the study mode for their own courses. Instructor accounts and instructor-set rules are planned, not built. The screenshots in this README come from the real app, run locally with sample course data, and the tutor replies in them are hand-written samples, not model output.
Polya is named for George Pólya, whose How to Solve It taught problem solving through questions. It is the tutor in Scope, the course workspace. Company direction lives in ../scope-docs/ROADMAP.md. Polya is free for students.
Students already use AI for coursework. A general chatbot doesn't know what their class actually covers, and its default is to finish the work rather than build understanding. Polya starts from the course itself. It answers from the class's own materials, shows where each claim came from, and follows a help ladder: a hint first, then one step, then a worked example of a similar problem, and the full explanation only when that serves the learning.
Recorded from the real app UI running locally against a stand-in backend loaded with the repo's sample course (fixtures/demo-course/). The two replies are hand-written samples, shaped by the tutor's system prompt and streamed through the app's real streaming protocol. They are not live model output.
All screenshots: the real app UI, run locally against a stand-in backend with sample data. Bio 1A (demo) is the repo's synthetic fixture course, and the other course names, the student, and the exam are placeholders.
imessage/): students text Polya for help under the same study modes, and get check-ins about upcoming and newly graded assignments and reminders for exams they added in Study. It is a separate deployable built on the eve agent framework.polya-handoff).docs/DRIVE-SETUP.md).supabase/functions/_shared/prompts.ts). A PDF can't rewrite the tutor's rules.[n] only from the numbered evidence it was given, and says so when the course doesn't cover a question. Location labels claim only what can be opened: an untimed transcript is a "transcript passage", never a moment.robots.txt, and cap size, page count, and time.Details are in docs/ARCHITECTURE.md. Some of its roadmap items, such as OCR and Kaltura transcripts, have since been built.
flowchart LR
student(["Student browser"]) --> app["Next.js app (this repo)<br>pages · /mcp endpoint · OAuth consent"]
assistant(["Claude or ChatGPT"]) -- "MCP + OAuth 2.1" --> app
phone(["iMessage"]) --> imsg["imessage/<br>eve agent"]
app -- "student session, RLS" --> db[("Supabase<br>polya_* tables + pgvector<br>polya_documents storage")]
app -- "invoke / stream" --> fns["Edge functions (Deno)<br>polya-canvas · polya-import · polya-tutor<br>polya-search · polya-study · polya-coach<br>polya-google · polya-handoff"]
imsg --> db
imsg --> fns
fns --> db
fns --> sources["Canvas · course websites<br>Kaltura · Google Drive"]
fns --> models["Claude Sonnet 5: tutor, study, coach<br>Claude Haiku 5.5: OCR, iMessage agent<br>Gemini: embeddings"]
imsg --> models
The backend is the shared Scope Supabase project. Polya owns only polya_-prefixed tables, functions, and storage.
| Folder | What it holds |
|---|---|
src/app/ | Routes: the landing and marketing pages, /app (courses, chat, Study, materials), /connect (Gradescope, iMessage linking), and /mcp with its OAuth metadata routes |
src/components/ | UI: chat and source viewer, exam coach, import flow, study-mode panel |
src/lib/ | Client and server helpers; src/lib/mcp/ holds the connector's three read-only tools |
supabase/functions/ | Deno edge functions; _shared/ holds runtime-agnostic logic that the Node tests import |
supabase/migrations/ | The polya_ schema |
imessage/ | Polya on iMessage, deployed separately |
fixtures/ | The self-authored demo course and Canvas API fixtures, the only committed course content |
scripts/ | Fixture seeding, retrieval and study evals, the import integration test |
npm test runs 521 tests over the shared logic: chunking, retrieval fusion, prompt assembly, prompt-injection handling, token encryption, crawl policy, study grading, and the MCP connector. npm test in imessage/ runs that agent's 363 tests. Both passed on October 26, 2026.npm run eval sends the four golden questions in scripts/eval/golden-set.json through course search and fails below recall@5 of 0.8. docs/DEMO.md records recall@5 = 1.00 and MRR = 1.000 against the synthetic demo course. Four questions over five documents show that the pipeline works end to end. They don't measure retrieval quality on real courses.npm run eval:study counts how many generated practice questions pass the automatic answer-key checks, and writes the kept questions out for a person to check by hand. No result is recorded in the repo.npm run test:integration runs a full Canvas import against the local Supabase stack and a mock Canvas server. Its setup steps are in the header of scripts/integration/run-import-integration.ts.You need Node.js 22.6 or later (the iMessage agent needs Node 24), npm, and the Supabase CLI for local database work.
npm install
cp .env.template .env.local # defaults already point at the shared project
npm run dev # http://localhost:3000
The defaults point at the shared Scope Supabase project, so a dev server signed in with a real account reads and writes real data. For isolated work, run the Polya-only local stack with supabase start and supabase db reset, and point NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY at it. To load the sample course into a backend, use npm run seed:fixture; docs/DEMO.md lists its environment variables.
Checks: npm run lint · npm run typecheck · npm test · npm run eval.
[!WARNING] Never run
supabase db push,supabase db reset --linked,supabase migration repair, orsupabase db pullagainst the linked project from this repo. Three repos share its migration history. Remote changes go through the process inCLAUDE.md.
CLAUDE.md: repo conventions and the hard rules for the shared Supabase project.docs/ARCHITECTURE.md: system design (ingestion, retrieval, tutoring, schema).docs/POSITIONING.md: product narrative and pitch language.docs/DEMO.md: the scripted demo and reproducible checks.docs/ARCHITECTURE.md notes.Built and run by Noel Jubil Sason as part of Scope.
tests/| Unit tests for Node's built-in test runner |
docs/ | Architecture, positioning, demo script, design brief, SEO, Drive setup |