尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Showcase of Sharpenly: bilingual EN/ES training platform with a rubric-gated LLM question pipeline. Live app and metrics.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Bilingual training where every AI-generated question passes a quality gate first. An EN/ES learning app, a manager dashboard, and the LLM data-quality pipeline behind ~20,000 questions.
The source of the production app is private. This repo is a curated, read-only showcase: screenshots, a data-quality case study, real sample questions, and trimmed code excerpts.
I built and measured a pipeline that has an LLM write 11,870 bilingual (EN/ES) training questions, then rejects or escalates the weak ones against a written rubric.
python data-quality/run_checks.py (standard library only) validates the 20 samples and shows why the gate uses a proportional length rule: the strict rule flags 17 of 20 good items, the proportional rule flags 0.| Device | Steps |
|---|---|
| iPhone (Safari) | Open the app, tap Share, tap Add to Home Screen. |
| Android (Chrome) | Open the app, open the menu, tap Install app. |
| Desktop (Chrome or Edge) | Click the install icon in the address bar. |
The app works offline after the first load.
| What | Number |
|---|---|
| Bilingual EN/ES questions | 20,308 in 71 bank files |
| Study lessons | 168 across 21 categories |
| Difficulty levels per track | 8 |
| App releases shipped | 174 |
| Python test functions | 458 |
| Cloud Functions | 12 |
| Commits | 730+ |
| Questions the AI pipeline generated in its full batch | 11,870 |
| Accepted by the automated gate / sent to human review / rejected | 10,356 / 451 / 1,063 |
| First pilot acceptance, then after the fix | 14% (7/50), then 84% (21/25) |
The manager dashboard shows who is trained, who is not, and where the skill gaps are. Try it without logging in: https://sharpenlyapp.com/manager-preview.
| Feature | Status |
|---|---|
| Alerts and KPI tiles | Live |
| Skills-gap heatmap (employees by topic; 9 topics in the demo) | Live |
| Training compliance | Live |
| Employee drill-down | Live |
| Team join code, rotate, deactivate | Live |
| CSV export | Live |
| Candidate invite links | Live |
| Candidate report card with fit rating | Live |
| Integrity trust signals (aggregate tab-hidden and paste counts, shown as "review recommended") | Live |
| Proctored stage 2 exam | Live |
| Convert a candidate to an employee | Live |
| Leaderboard | Live |
| English and Spanish, light and dark | Live (the public preview is English only) |
| Auto-remediation assignments | Demo only |
| Stripe billing | Coded, not live |
Screens show the public demo shop with sample data; the names are fictional.
Short quizzes, scenario questions, and lessons built from four typed section primitives: flashcard, hotspot, sequence, scenario. Progress, streaks, and a ranking keep people coming back.
A manager sends an invite link. The candidate takes a timed assessment. The manager gets a report card.
Questions are generated from a curated corpus of automotive reference material. Nothing reaches a learner until it passes a rubric gate and a human check.
flowchart LR
A[Curated corpus of automotive reference material] --> B[Vector index<br/>MiniLM embeddings]
B --> C[Role-filtered retrieval]
C --> D[LLM generation<br/>Claude Sonnet 4.5]
D --> E{Rubric gate}
E -->|accept| G[Bilingual QA]
E -->|review| F[Human review]
E -->|reject| X[Discarded, reason logged]
F --> G
G --> H[8-level staging]
H --> I[App]
sentence-transformers/all-MiniLM-L6-v2, filtered by role so a service-advisor question is grounded in service-advisor material.| Skill | Artifact |
|---|---|
| Defining a quality rubric for training data | data-quality/RUBRIC.md |
| Turning a rubric into an automated gate | data-quality/gate_excerpt.py |
| Bilingual validation (EN/ES alignment) | data-quality/validators_excerpt.py |
| Measuring iteration: pilot, fix, repilot, full batch | data-quality/README.md |
| Failure analysis and prevention rules | data-quality/POSTMORTEM.md |
| Real bilingual samples across roles and levels | data-quality/samples/questions_sample.json |
Headline result: first pilot accepted 14% of items. After tightening the prompt and the gate, a smaller, targeted repilot accepted 84% with 0 rejected, and cost per kept item fell about 4.4x. A later batch where the API reported 617 of 617 requests "succeeded" produced 0 usable questions. That led to one rule: product success, not API success.
| Layer | Stack |
|---|---|
| App | Installable single-file web app (PWA) with offline support, Firebase Realtime Database and Auth, Vercel |
| Site and dashboard | Next.js 16, TypeScript, Tailwind CSS 4, next-intl (EN/ES), Playwright and axe-core |
| Backend | 12 Firebase Cloud Functions (Node 22) |
| Content pipeline | Python, Chroma, sentence-transformers, Claude Sonnet 4.5 |
More detail in docs/ARCHITECTURE.md.
Open to AI data annotation, LLM evaluation, and AI training-data roles.
Copyright (c) 2026 Santiago. See LICENSE.md.