Welcome to EduGuide AI Bot, an advanced, premium, AI-powered academic assistant and student guidance platform. This repository is structured as a monorepo containing a high-performance Spring Boot 3.x (Java 21) backend and a modern, responsive Next.js frontend.
EduGuide AI Bot integrates several AI capabilities to guide students throughout their academic and professional journeys:
- RAG-based Academic QA: Upload academic papers or documents, index them into a Vector Database, and receive contextual answers to complex queries using Retrieval-Augmented Generation (RAG).
- AI Resume Analysis: Upload PDF resumes to get instant analysis, suggestions for improvements, and scores based on target roles.
- AI Mock Interviews: Conduct interactive mock interviews with real-time feedback and grading.
- Career Profiling & Guidance: Fill out career preference forms and get personalized career paths, skill gap analysis, and growth recommendations.
- Scholarship Finder: Input student details to get highly relevant, matched scholarship recommendations.
This diagram illustrates how uploaded files are processed, vectorized, and searched to feed the Gemini LLM context:
sequenceDiagram
autonumber
actor User
participant FE as Next.js Frontend
participant BE as Spring Boot Backend
participant APP as Appwrite Cloud Storage
participant GEM as Gemini AI API
participant PC as Pinecone Vector DB
User->>FE: Upload academic PDF
FE->>BE: POST /api/rag/upload
BE->>APP: Upload PDF file
APP-->>BE: Return File ID
BE->>BE: Extract text from PDF (PDFBox)
BE->>GEM: Generate text embeddings (text-embedding-004)
GEM-->>BE: Return 768-dim vector embeddings
BE->>PC: Upsert vectors & metadata (namespace = project-id)
BE-->>FE: Return upload success confirmation
User->>FE: Ask academic question
FE->>BE: POST /api/rag/query
BE->>GEM: Get query text embedding
GEM-->>BE: Return query vector
BE->>PC: Query top-K similar chunks
PC-->>BE: Return matched text metadata & scores
BE->>GEM: Generate response using prompt + retrieved chunks (gemini-2.5-flash)
GEM-->>BE: Return final structured answer
BE-->>FE: Return AI response to User
This diagram illustrates how resumes are parsed and evaluated:
graph TD
A[User uploads Resume PDF] --> B[Next.js Frontend]
B -->|POST /api/resume/analyze| C[Spring Boot Backend]
C -->|Extract text| D[Apache PDFBox Parser]
D --> E[Gemini 2.5 Flash Analyzer]
E -->|Analyze resume against standards| F[JSON Content Generator]
F -->|Return graded categories, score, suggestions| G[Structured API Response]
G --> H[Frontend dashboard visual charts]
| Component | Technology | Description |
|---|---|---|
| Frontend | React 19, Next.js 15, TailwindCSS | Elegant, modern, fully responsive user interface |
| Backend | Spring Boot 3.2.4, Java 21, Spring Security | Secure API gateway with robust JWT authentication |
| Database | H2 Database / PostgreSQL, JPA Hibernate | Persistent storage for users, career profiles, and logs |
| AI LLM | Google Gemini (gemini-2.5-flash) | Generative responses, JSON extraction, and analysis |
| Embeddings | Gemini text-embedding-004 | High-dimensional semantic representation of academic texts |
| Vector Search | Pinecone Vector Database | Extremely fast cosine-similarity search for RAG matching |
| File Storage | Appwrite Cloud Storage | Cloud bucket file storage for user resume and document PDFs |
- Java Development Kit (JDK) 21
- Node.js v20.x or higher
- Maven 3.8+
Both backend and frontend leverage environment configurations. A .env file must be configured in the project root or relevant subdirectories.
We provide a .env.example template containing all variables needed:
# JWT Authentication Configuration
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRATION=86400000
# Google Gemini API
GEMINI_API_KEY=your_gemini_api_key_here
# Pinecone Vector Database API
PINECONE_API_KEY=your_pinecone_api_key_here
PINECONE_ENVIRONMENT=us-east-1
PINECONE_INDEX_NAME=eduguide-index
# Appwrite Cloud Configuration
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
APPWRITE_PROJECT_ID=your_appwrite_project_id_here
APPWRITE_API_KEY=your_appwrite_api_key_here
APPWRITE_BUCKET_ID=your_appwrite_bucket_id_hereCreate a copy of this file as .env and fill in the active keys.
Warning
.env files are ignored by Git in .gitignore to prevent any credentials from being pushed to public repositories. Never commit .env files.
From the root workspace, navigate to backend and compile:
cd backend
mvn clean install
mvn spring-boot:runThe server will boot on http://localhost:8080.
In another terminal, navigate to the frontend and run:
cd frontend
npm install
npm run devThe client app will launch on http://localhost:3000.
We have configured GitHub Actions in ci.yml to run automatic checks on every commit:
- Build & Test Backend: Validates Java compilation and runs JUnit tests on Java 21 environment.
- Build Frontend: Installs npm dependencies and compiles Next.js codebase to ensure no production build issues exist.
