An adaptive learning companion that uses NLP to analyze free-text student responses — not just multiple choice — to understand how a student thinks, identify knowledge gaps, and create personalized learning paths in real time.
| Statistic | Source |
|---|---|
| 1-on-1 tutoring improves student performance by 2 standard deviations | Bloom's 2-Sigma Problem |
| 258 million children and youth lack access to education worldwide | UNESCO |
| Average student-to-teacher ratio is 1:23 across OECD countries | OECD Education at a Glance |
| Only 10% of students in developing countries have access to personalized learning tools | World Bank |
The most effective form of learning — 1-on-1 personalized tutoring — is inaccessible to the vast majority of students. Traditional ed-tech platforms rely on multiple-choice quizzes that test recall, not understanding. They can tell you a student got the answer wrong, but not why they're confused.
EduLens AI closes this gap by analyzing free-text explanations from students using NLP. Instead of asking "What is the powerhouse of the cell? (A) Nucleus (B) Mitochondria," we ask students to explain concepts in their own words — then our AI reads their response to understand:
- ✅ What they understand — strengths identified from semantic analysis
⚠️ What they're missing — specific knowledge gaps detected- 📊 How well they understand — 0-100% mastery score
- 🎯 What to do next — adaptive path that re-teaches gaps or advances to new concepts
This is the key differentiator: EduLens reads HOW a student thinks, not just WHAT they click.
| Feature | Description |
|---|---|
| 🔄 Adaptive Learning Loop | Concept intro → free-text response → NLP scoring → personalized feedback → adaptive next step |
| 🧠 NLP-Powered Scoring | Uses Groq Llama 3.3 70B to analyze student explanations and return structured scores, strengths, and gaps |
| 🗺️ Interactive Knowledge Graph | React Flow visualization showing all concepts with prerequisite chains, color-coded by mastery level |
| 📊 Student Dashboard | Progress analytics with radar charts (subject mastery), bar charts (concept mastery), weak areas, session history |
| 📚 3 Subjects, 15 Concepts | Biology, Math, and History with 5 concepts each, linked by prerequisite chains |
| 🤖 AI Explanations | On-demand AI-generated explanations tailored to the student's specific knowledge gaps |
| ❓ AI Question Generation | Dynamic practice questions generated by AI for each concept |
| 🌙 Dark Mode | Full dark mode support with education-themed color palette |
📹 Demo video coming soon — will be uploaded before the May 2, 2026 deadline
Click to expand screenshots
Landing Page
Registration and feature overview
Subject Selection
Choose from Biology, Math, or History
Learning Interface
Free-text response with NLP scoring and feedback
Knowledge Graph
Interactive concept map with mastery visualization
Dashboard
Progress analytics and session history
┌─────────────────────────────────────────────────────────┐
│ Client (React) │
│ Landing · Subjects · Learning · Knowledge Graph · Dash │
└──────────────────────┬──────────────────────────────────┘
│ API Requests
▼
┌─────────────────────────────────────────────────────────┐
│ Express.js Server │
│ /api/auth · /api/sessions │
│ /api/concepts · /api/students · /api/ai │
└──────────┬───────────────────────────────┬──────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────────────┐
│ SQLite + Drizzle │ │ Groq API │
│ ORM Database │ │ Llama 3.3 70B Versatile │
│ │ │ │
│ · students │ │ · Score student responses │
│ · sessions │ │ · Generate explanations │
│ · concepts │ │ · Create practice questions│
│ · interactions │ │ │
│ · mastery_scores │ │ Fallback: keyword-based │
└─────────────────────┘ │ scorer (no API key needed) │
└─────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1. Pick a │────▶│ 2. Read the │────▶│ 3. Explain │
│ Subject │ │ Concept │ │ in your own │
│ │ │ │ │ words │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌────────────────────────────┘
▼
┌──────────────┐ ┌──────────────┐
│ 4. AI scores│────▶│ 5. See your │
│ your under- │ │ strengths & │
│ standing │ │ gaps │
└──────────────┘ └──────┬───────┘
│
┌────────────────────┘
▼
┌───────────────────────┐
│ 6. Adaptive Next: │
│ Score < 40% → Retry │
│ Score ≥ 40% → Next │
│ concept │
└───────────────────────┘
- Student submits a free-text explanation
- The response is sent to Groq Llama 3.3 70B with the concept's ideal explanation
- The AI returns a structured JSON:
{ "score": 0.73, "strengths": ["Correctly identified the role of the nucleus", "Mentioned DNA storage"], "gaps": ["Missing explanation of mitochondria's role in ATP production"], "feedback": "Strong understanding of nuclear function. Review how mitochondria convert glucose to ATP." } - If no Groq API key is set, a smart keyword-matching fallback runs:
- Tokenizes both responses
- Calculates weighted overlap (80+ domain terms weighted 2x)
- Returns concept-specific strengths and gaps
- Node.js 18+
- npm 9+
- Groq API Key (free — optional, keyword fallback works without it)
# Clone the repo
git clone https://github.com/RohanMukka/edulens-ai.git
cd edulens-ai
# Install dependencies
npm install
# Set your Groq API key (optional)
export GROQ_API_KEY=your_api_key_here
# Start the dev server
npm run devThe app will be running at http://localhost:5000.
npm run build
NODE_ENV=production node dist/index.cjs| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 18, TypeScript | UI components and routing |
| Styling | Tailwind CSS 3, shadcn/ui | Design system and components |
| Routing | Wouter | Lightweight hash-based routing |
| Data Viz | React Flow (@xyflow/react) | Interactive knowledge graph |
| Charts | Recharts | Dashboard analytics (radar, bar charts) |
| Backend | Express.js 4 | REST API server |
| Database | SQLite + Drizzle ORM | Data persistence with type-safe queries |
| AI/NLP | Groq API (Llama 3.3 70B) | Understanding scoring, explanations, questions |
| Validation | Zod + drizzle-zod | Request/response schema validation |
| Build | Vite 5 | Fast frontend bundling |
edulens-ai/
├── client/
│ └── src/
│ ├── pages/
│ │ ├── landing.tsx # Hero + registration
│ │ ├── home.tsx # Post-login home screen
│ │ ├── subjects.tsx # Subject selection grid
│ │ ├── learning.tsx # Core adaptive learning loop
│ │ ├── knowledge-graph.tsx # Interactive concept graph
│ │ └── dashboard.tsx # Progress analytics
│ ├── lib/
│ │ ├── auth.tsx # Auth context provider
│ │ └── queryClient.ts # TanStack Query setup
│ ├── App.tsx # Router + layout
│ └── index.css # Tailwind + custom theme
├── server/
│ ├── routes.ts # API endpoints + Groq integration
│ ├── storage.ts # Database CRUD operations
│ ├── seed.ts # Concept seed data (15 concepts)
│ └── index.ts # Express server setup
├── shared/
│ └── schema.ts # Drizzle ORM schema + Zod types
└── package.json
| Criterion | Weight | How EduLens AI Addresses It |
|---|---|---|
| Innovation & Creativity | 20% | Free-text NLP analysis instead of multiple choice — analyzes how students think, not just what they click. Interactive knowledge graph for visual learning paths. |
| Impact on Education | — | Addresses Bloom's 2-Sigma problem by providing personalized 1-on-1 tutoring at scale. Targets the 258M students without education access. |
| Technical Implementation | — | Full-stack app with Groq Llama 3.3 70B integration, structured prompt engineering for reliable JSON scoring, smart keyword fallback, SQLite persistence. |
| Design & User Experience | — | Clean education-themed UI (indigo/emerald palette), adaptive learning loop with instant feedback, interactive knowledge graph, progress dashboard with charts. |
| Presentation Quality | — | Polished demo with clear problem→solution narrative, real education statistics, working prototype with 15 seeded concepts across 3 subjects. |
| Completeness | 10% | Working prototype with registration, learning loop, scoring, knowledge graph, dashboard, AI explanations, and question generation. All submission assets ready. |
Rohan Mukka
MS Computer Science, University of Oklahoma
GitHub · LinkedIn
MIT License — see LICENSE for details.
Built with ❤️ for the Nira Hackathon 2026
Reimagining education, one explanation at a time.