Lexiverse
Lexiverse - 영어 학습자를 위한 AI 기반 문맥 독해 엔진
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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 |