Skip to content

RohanMukka/edulens-ai

Repository files navigation

🔍 EduLens AI

The Adaptive Learning Companion That Reads How You Think

Nira Hackathon 2026 React TypeScript Express Groq Tailwind

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.

Demo Video · How It Works · Getting Started · Tech Stack


📌 The Problem

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.

💡 Our Solution

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.


✨ Key Features

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

📹 Demo video coming soon — will be uploaded before the May 2, 2026 deadline

Screenshots

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


🏗️ Architecture

┌─────────────────────────────────────────────────────────┐
│                      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) │
                            └─────────────────────────────┘

🔬 How It Works

The Adaptive Learning Loop

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  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        │
         └───────────────────────┘

NLP Scoring Pipeline

  1. Student submits a free-text explanation
  2. The response is sent to Groq Llama 3.3 70B with the concept's ideal explanation
  3. 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."
    }
  4. 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

🚀 Getting Started

Prerequisites

  • Node.js 18+
  • npm 9+
  • Groq API Key (free — optional, keyword fallback works without it)

Installation

# 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 dev

The app will be running at http://localhost:5000.

Production Build

npm run build
NODE_ENV=production node dist/index.cjs

🛠️ Tech Stack

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

📁 Project Structure

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

🏆 Judging Criteria Alignment

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.

👤 Team

Rohan Mukka
MS Computer Science, University of Oklahoma
GitHub · LinkedIn


📄 License

MIT License — see LICENSE for details.


Built with ❤️ for the Nira Hackathon 2026

Reimagining education, one explanation at a time.

About

EduLens AI — Adaptive Learning Companion. Uses NLP to analyze student understanding from free-text responses, generates personalized explanations, and adapts learning paths in real time. Built for Nira Hackathon 2026.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages