Your personal intelligence engine. Master your syllabus, schedule your success, and never forget a thing.
EdGrab is not just a chatbot. It is a Context-Aware Educational Intelligence designed to simulate the experience of a dedicated human tutor.
Unlike generic LLM wrappers, EdGrab maintains a persistent "Memory Bank" of your school schedule, upcoming exams, and syllabus. It leverages Gemini 3.0 Pro for deep reasoning and complex math, while utilizing Gemini 2.5 Flash Native Audio for real-time, low-latency voice coaching sessions. It turns the chaos of student life into a structured path to mastery.
Students face significant challenges in self-regulated learning:
| Challenge | Impact |
|---|---|
| Generic Assistance | AI tools lack context of grade level, school, or curriculum, leading to irrelevant answers. |
| Passive Learning | Text-only interactions fail to build retention compared to oral active recall. |
| Disorganized Schedules | Students cram 48 hours before exams due to poor time management. |
| Math Hallucinations | Standard LLMs struggle with complex STEM derivation without specific reasoning capabilities. |
EdGrab addresses these challenges through a multi-modal architecture that combines deep reasoning, structured data generation (JSON exams), and real-time voice interaction to create a holistic learning environment.
- Context Injection: No need to explain "I'm in 10th grade" every time. EdGrab knows.
- Active Recall: "Live Mode" quizzes you verbally to ensure true understanding.
- Thinking Models: Uses
gemini-3-pro-previewwith thinking budgets for high-accuracy STEM solving. - Structured Practice: Generates strict JSON-based mock exams for objective scoring.
EdGrab employs a multi-model approach powered by the Google GenAI SDK, routing specific tasks to the most efficient model.
- Role: The Professor.
- Task: Handles complex chat interactions, math problems (LaTeX output), and deep concept explanation.
- Config: Uses
thinkingConfigto allocate token budgets for reasoning before answering.
- Role: The Coach.
- Task: Establishes a WebSocket connection for real-time, interruptible voice conversations.
- Latency: Optimized for sub-500ms interaction.
- Role: The Examiner.
- Task: Generates strictly typed JSON arrays of multiple-choice questions based on specific syllabus topics.
- Role: The Narrator.
- Task: Converts text responses into lifelike audio for accessibility and auditory learning.
/EdGrab
โโโ components/
โ โโโ Auth.tsx # User authentication flow
โ โโโ ...
โโโ pages/
โ โโโ Chat.tsx # Main chat interface with Markdown/Math support
โ โโโ Dashboard.tsx # Visual progress tracking
โ โโโ Live.tsx # Real-time audio visualizer & connection
โ โโโ Memory.tsx # Schedule & Exam management
โ โโโ MockExams.tsx # AI-generated testing center
โ โโโ Profile.tsx # User settings
โโโ services/
โ โโโ audioUtils.ts # PCM encoding/decoding for Live API
โ โโโ geminiService.ts # Centralized GenAI SDK implementation
โโโ App.tsx # Routing & State Management
โโโ types.ts # TypeScript interfaces
โโโ metadata.json # Permissions config
EdGrab injects the user's "Memory Bank" (Schedule/Exams) directly into the model's system instruction, ensuring every response is personalized.
Sample (geminiService.ts):
const getSystemInstruction = (user, schedule, exams) => {
return `You are EdGrab, a tutor for ${user.firstName}.
Context: ${user.grade} at ${user.school}.
Upcoming Exams: ${exams.map(e => `${e.subject} on ${e.date}`).join(', ')}.
IDENTITY RULES:
- Remind them if they are wasting time near an exam.
- Use LaTeX for math.
`;
};Implemented via ai.live.connect with bi-directional streaming. We handle raw PCM audio processing in the browser.
Sample (services/geminiService.ts):
export const connectLiveSession = async (user, exams, callbacks) => {
const ai = new GoogleGenAI({ apiKey: process.env.API_KEY });
return ai.live.connect({
model: 'gemini-2.5-flash-native-audio-preview-09-2025',
config: {
responseModalities: [Modality.AUDIO],
systemInstruction: `Speaking to ${user.firstName}. Context: ${user.grade}...`
},
callbacks
});
};Uses responseSchema to force the model to output valid JSON for the exam engine, eliminating parsing errors.
Sample (services/geminiService.ts):
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
config: {
responseMimeType: "application/json",
responseSchema: {
type: Type.ARRAY,
items: { type: Type.OBJECT, properties: { ... } }
}
}
});- Metrics: High-contrast tracking of exams, streaks, and study hours.
- Up Next: Dynamic cards showing the immediate next class in your schedule.
- Visualizer: Real-time audio wave visualization driven by RMS amplitude.
- Bi-directional: Interrupt the AI anytime, just like a real conversation.
- Toggleable "Thinking" mode in chat that allocates a 32k token budget for the model to "think" before answering complex physics or calculus questions.
- Core: React 19, TypeScript, Vite.
- AI:
@google/genaiSDK. - Styling: Tailwind CSS (Custom "EdGrab Dark" Theme).
- Visualization: Recharts.
- Math Rendering: KaTeX + React Markdown.
For the best experience, please use the deployed application.
If you encounter quota-related errors when running locally with a free-tier Gemini API key, this is expected behavior due to API rate limitations. The deployed version is configured with appropriate API access to ensure uninterrupted service.
- Node.js 18+
- A Google Cloud Project with Gemini API enabled.
-
Clone the repository
git clone https://github.com/aditya-ai-architect/EdGrab.git cd EdGrab -
Install dependencies
npm install
-
Configure Environment Create a
.envfile in the root (or rely on the app's internal handling if configured differently):API_KEY=your_google_gemini_api_key_here
-
Run the Tutor
npm run dev
- Initialize: Create your profile (Grade, School).
- Memory: Go to the "Memory" tab and add your weekly schedule and upcoming exams.
- Chat: Ask questions. EdGrab will reference your exams ("Don't forget your Calculus test on Friday!").
- Live: Click the microphone icon to practice orally.
- Exam: Generate a mock test to check your readiness.
Created for the Future of Education.