Revolutionizing Education with AI-Powered Courses, Immersive Meetings, and Powerful Career Tools
Features β’ Why Edify AI β’ Who Is This For β’ Getting Started β’ Developer Guide
- Multi-Agent Resume ATS Analysis System: Production-ready LangGraph-based multi-agent system deployed on Google Cloud Run
- Interactive Dashboard: Comprehensive visualization dashboard with charts, detailed breakdowns, and actionable insights
- Cloud Deployment: Backend API fully deployed and production-ready on Google Cloud Run
- Structured Data Extraction: Advanced AI-powered resume parsing with Pydantic validation
- Parallel Agent Execution: Five specialized agents working simultaneously for faster analysis
- LangGraph Orchestration: Sophisticated workflow management for multi-agent coordination
- Vertex AI Integration: Direct integration with Google's Gemini 2.0 Flash model
- Type-Safe APIs: End-to-end TypeScript/Python type safety
- Production Infrastructure: Docker containerization, Cloud Run deployment, CI/CD pipeline
Edify AI was born from a stark reality: 5 out of 6 students are frustrated with traditional, outdated university education. With static curricula and limited access to enriching events, hackathons, and networking, today's learners need a new approach.
Edify AI delivers a personalized, dynamic learning platform that adapts to industry demands and connects a global community of forward-thinking students. Whether you're preparing for your dream job, building new skills, or seeking mentorship, Edify AI provides everything you need in one powerful platform.
Learn at Your Own Pace, Your Way
-
Instant Course Creation
- Tell us what you want to learn, and AI creates a complete course in seconds
- Automatically finds and curates the best educational videos with 85% relevancy
- No more spending hours searching for quality content
-
Personalized Learning Paths
- Structured pathways from complete beginner to industry expert
- AI adapts to your learning style, pace, and goals
- Track your progress with detailed analytics and insights
- Boosts learning efficiency by up to 90% compared to traditional methods
-
Interactive Learning Experience
- Built-in code editor for hands-on programming practice
- Video-based lessons with curated multimedia content
- Community forums for each course to ask questions and share insights
- Learning streaks and achievements to keep you motivated
How It Helps You: Stop wasting time on irrelevant content. Get a customized learning plan that matches your career goals and learning style, complete with the best resources handpicked for you.
Practice, Learn, and Improve Anytime
-
Mock Interview Sessions
- Practice with AI-generated questions tailored to your target job
- Real-time speech-to-text transcription captures everything you say
- Get instant feedback on your answers, tone, and delivery
- Review detailed analytics showing areas for improvement
- Boost interview success rates by up to 70%
-
Personalized Tutoring
- One-on-one sessions with AI tutors available 24/7
- Get help with any subject or topic at any time
- Practice conversations, presentations, and role-playing scenarios
- Automatic recording so you can review sessions later
-
Career Coaching
- Practice salary negotiations
- Improve public speaking skills
- Work on communication and presentation abilities
- Build confidence through repeated practice
How It Helps You: No more expensive coaching or waiting for availability. Get instant, personalized practice sessions that adapt to your needs, helping you build skills and confidence faster.
Land Your Dream Job with Confidence
-
Multi-Agent Resume ATS Analysis System π
- Advanced LangGraph Multi-Agent Architecture: Five specialized AI agents working in parallel to analyze your resume
- Comprehensive Section Scoring:
- Skills matching (35% weight)
- Work experience relevance (35% weight)
- Education alignment (15% weight)
- Projects portfolio (10% weight)
- Meta information (5% weight - seniority, domains, languages)
- Structured Resume Extraction: AI-powered parsing that extracts contact info, skills, experience, education, projects, and metadata
- Interactive Dashboard:
- Real-time visualizations with bar charts, pie charts, and radar charts
- Detailed breakdowns for each section with progress indicators
- Side-by-side resume and job description comparison
- Actionable recommendations with missing requirements highlighted
- Historical analysis tracking to monitor improvements over time
- Weighted Score Aggregation: Intelligent algorithm that combines all section scores for accurate overall matching
- Production-Ready Backend: Deployed on Google Cloud Run with Vertex AI integration
- Export & Share: Download comprehensive PDF reports of your analysis
-
Smart Mock Interview Platform
- Upload your resume and job description
- AI generates realistic interview questions specific to the role
- Practice with video recording and live transcription
- Receive detailed feedback with ratings (1-10) and actionable improvement tips
- Compare your answers with model responses
- Track progress across multiple interviews
-
ATS-Optimized Resume Builder
- Create resumes that pass Applicant Tracking Systems
- AI-powered content suggestions based on job descriptions
- Multiple professional templates
- Export to PDF with perfect formatting
- Tips for making your resume stand out
-
Performance Analytics
- See your interview performance trends over time
- Identify strengths and areas needing improvement
- Set goals and track your progress toward career readiness
How It Helps You: Eliminate interview anxiety and job search stress. Get comprehensive, multi-dimensional resume analysis powered by cutting-edge AI agents. Practice until you're confident, get personalized feedback, and create resumes that actually get noticed by employers.
Architecture:
- LangGraph Orchestrator: Manages the entire workflow from resume extraction to score aggregation
- Resume Extractor Agent: Uses Vertex AI structured output to parse resumes into structured JSON
- Five Scoring Agents (executed in parallel):
- Skills Agent (35% weight): Matches technical and soft skills against job requirements
- Experience Agent (35% weight): Evaluates work experience relevance and depth
- Education Agent (15% weight): Assesses educational background alignment
- Projects Agent (10% weight): Analyzes portfolio and project relevance
- Meta Agent (5% weight): Evaluates seniority level, domain expertise, and language proficiency
- Score Aggregator: Combines all section scores using weighted averaging algorithm
- HTTP API Server: Lightweight Python server deployed on Cloud Run
Technology Stack:
- Python 3.13 with LangGraph for agent orchestration
- Vertex AI Gemini 2.0 Flash for AI inference
- Pydantic for data validation and structured outputs
- Cloud Run for serverless deployment
- Docker for containerization
Performance:
- Sub-5 second analysis time with parallel agent execution
- Production-ready with health checks and error handling
- Scalable architecture that handles concurrent requests
Deployment:
- β Deployed: Backend API running on Google Cloud Run
- β Integrated: Frontend connected to production backend
- β Monitored: Health checks and logging in place
Connect, Learn, and Grow Together
-
Interactive Course Forums
- Ask questions, share insights, and help fellow learners
- Course-specific discussion boards for focused conversations
- Get answers from peers and mentors
- Build your professional network while learning
-
Events Discovery
- Find hackathons, networking events, and workshops
- Connect with opportunities that match your interests
- Join a community of 500,000+ students across 30+ countries
- Access exclusive opportunities and resources
-
Global Learning Community
- Learn from students worldwide
- Share experiences and best practices
- Collaborate on projects and challenges
- Build lasting professional connections
How It Helps You: Never learn alone. Join a vibrant community of learners, get support when you're stuck, discover opportunities, and build a network that extends beyond the platform.
Know Exactly Where You Stand
-
Comprehensive Dashboard
- See all your courses, interviews, and learning paths in one place
- Track learning streaks to maintain consistency
- View completion rates and time invested
- Set and achieve learning milestones
-
Detailed Analytics
- Understand your learning patterns
- Identify your strongest and weakest areas
- Get recommendations for what to focus on next
- Celebrate achievements and stay motivated
How It Helps You: Stop guessing if you're making progress. Get clear insights into your learning journey, stay accountable, and make data-driven decisions about your education.
-
AI Does the Heavy Lifting
- No more manual course creation or content curation
- Get personalized learning plans instantly
- Save 50% of your time on finding quality resources
-
Practice Makes Perfect
- Unlimited mock interviews whenever you need them
- Get detailed feedback that actually helps you improve
- Build confidence through repeated practice without judgment
-
Everything in One Place
- Courses, interviews, resume building, and community
- No need to juggle multiple tools and platforms
- Streamlined experience saves time and reduces overwhelm
-
Learn What Actually Matters
- Content curated for real-world relevance
- Skills that employers actually want
- Stay ahead of industry trends and demands
-
Access Anytime, Anywhere
- 24/7 availability - learn and practice on your schedule
- Work around your job, classes, or other commitments
- No scheduling conflicts or waiting lists
-
Affordable & Accessible
- Premium learning tools without premium prices
- No expensive coaching or course fees
- Democratizing access to quality education
- Students seeking to supplement their university education with practical, industry-relevant skills
- Job Seekers preparing for interviews and building standout resumes
- Career Changers learning new skills and transitioning to different fields
- Professionals looking to upskill and stay competitive in their industry
- Self-Learners who prefer personalized, self-paced education
- Anyone frustrated with traditional, one-size-fits-all education
- 75% of users report significant gains in industry-relevant skills
- Up to 90% improvement in learning efficiency
- 70% boost in interview success rates
- 85% of community members connect with vital opportunities
Problem: Job interviews are stressful, and you never know what to expect.
Solution: Practice unlimited mock interviews with questions tailored to your specific job. Get detailed feedback on your answers, tone, and delivery. Build confidence through repeated practice until you're ready to ace the real thing.
Result: Walk into interviews feeling prepared and confident, knowing you've practiced and improved.
Problem: You don't know where to start learning, and most courses are generic or outdated.
Solution: Tell AI what you want to learn, and get a complete, personalized course in seconds. Learn with curated content from the best sources, track your progress, and get support from a community of learners.
Result: Learn efficiently with a clear path forward, saving time and avoiding information overload.
Problem: You want to switch careers but don't know where to begin or what skills you need.
Solution: Get personalized learning paths that take you from beginner to job-ready. Practice interviews for your new field, build relevant skills, and create a resume that showcases your transition.
Result: Make a successful career change with confidence, knowing you have the skills and preparation needed.
Problem: You want to upskill but don't have time for traditional courses.
Solution: Learn at your own pace, on your schedule. Access courses and practice sessions 24/7. Get bite-sized, focused content that fits your busy lifestyle.
Result: Keep your skills current and competitive without disrupting your work or life.
- 500,000+ students served across 30+ countries
- 75% report significant skill improvements
- 85% connect with opportunities through the platform
- 90% improvement in learning efficiency
- 70% boost in interview success rates
- Production-Ready Multi-Agent System deployed on Google Cloud Run
- Sub-5 second resume analysis response times with parallel agent execution
"I aced my interview after practicing with Edify AI. The feedback was incredibly detailed and helped me improve areas I didn't even know needed work." - Recent Graduate
"The personalized learning paths are a game-changer. I went from beginner to job-ready in half the time I expected." - Career Changer
"Finally, a platform that actually helps me learn what matters for my career. The AI course generation saves me hours of research." - Working Professional
We're constantly improving based on user feedback:
- Enhanced Multi-Agent Systems: Expanding the agent architecture to other features (course generation, interview feedback, etc.)
- Real-Time Resume Optimization: Live suggestions as you edit your resume
- Advanced Analytics: Deeper insights into your learning patterns and progress
- Mobile App: Learn and practice on the go
- More Languages: Expanding globally to serve more learners
- AR/VR Integration: Immersive learning experiences for hands-on practice
- Career Matching: AI-powered job matching based on your skills and interests
- Vertex AI Agent Engine Integration: Native deployment of agents to Vertex AI Agent Engine (currently using Cloud Run)
-
Sign Up for Free
- Create your account in seconds
- No credit card required
- Start exploring immediately
-
Choose Your Path
- Browse courses in your field of interest
- Start your first mock interview
- Build your first resume
- Join a learning path
-
Set Your Goals
- Define what you want to achieve
- Get personalized recommendations
- Start your learning journey
-
Track Your Progress
- Monitor your improvement over time
- Celebrate your achievements
- Stay motivated with insights and analytics
- Website: [Your Website URL]
- Support: [Support Email/Channel]
- Community: Join our forums to connect with other learners
- API Documentation: See
docs/folder for API endpoints and integration guides - Backend API: Deployed on Google Cloud Run (see
backend/README.mdfor details)
Empower and Educate With Purpose
We believe education should be personalized, accessible, and focused on real-world success. Join our mission to revolutionize how people learn and grow their careers.
- Share Your Feedback: Help us improve by sharing your experience
- Spread the Word: Tell others about Edify AI
- Contribute: Share resources, tips, and insights with the community
- Stay Connected: Follow us for updates and opportunities
Traditional education often fails to prepare students for actual careers. Edify AI bridges that gap by:
- Focusing on skills employers actually want
- Providing real-world practice opportunities
- Connecting learners with opportunities and networks
- Adapting to individual needs and goals
- Making quality education accessible to everyone
We believe learning shouldn't be one-size-fits-all. That's why Edify AI:
- Creates personalized experiences for every user
- Adapts to your pace, style, and goals
- Provides instant feedback and support
- Keeps you engaged and motivated
- Helps you achieve measurable results
Thank you to all the students, educators, and professionals who have made Edify AI what it is today. Your feedback, participation, and success stories drive us to keep improving.
Special thanks to our global community of 500,000+ learners who are shaping the future of education.
Ready to Transform Your Learning Journey?
Empower and Educate With Purpose
The Education-Employment Gap: Despite years of formal education, millions of students graduate unprepared for the workforce. According to research, 5 out of 6 students are frustrated with traditional, static university curricula that fail to adapt to rapidly evolving industry demands. This creates a cascading effect:
- Skills Mismatch: Students spend years learning outdated content while employers struggle to find candidates with relevant skills
- Inefficient Learning: Generic, one-size-fits-all courses waste learners' time on irrelevant content
- Interview Anxiety: Lack of personalized practice leads to poor interview performance and missed opportunities
- Career Confusion: Students lack guidance on optimal learning paths for their specific career goals
- Lost Institutional Knowledge: Educational platforms lose valuable learning patterns that could help future students
The cost of this problem is staggering:
- Employers spend billions on retraining new hires who lack practical skills
- Students accumulate debt for degrees that don't lead to employment
- Career changers struggle without personalized guidance on skill gaps
- The learning cycle repeats because platforms don't remember what works
Edify AI solves this by building a persistent semantic memory layer that remembers every user's learning journey, understands content relationships, and provides retrieval-grounded recommendationsβensuring no learning insight is ever lost.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Server Layer β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β Courses β β Pathways β β Mock Interviews β β
β ββββββββ¬βββββββ ββββββββ¬βββββββ βββββββββββββ¬ββββββββββββββ β
βββββββββββΌβββββββββββββββββΌββββββββββββββββββββββΌββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Qdrant Retrieval Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Context Injection Pipeline ββ
β β Query β Intent Analysis β Retrieval β Context Merge ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β βββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β
β β Vector Collections β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β User β β Courses β β Mock Interviews β β β
β β β Profiles β β β β β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Learning Pathways β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β
β β Recommendation Engine β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββ β β
β β β Course β β Pathway β βInterview β β Next Step β β β
β β βRecommenderββRecommenderββ Coach β β Advisor β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β
β β Progress Tracking & Adaptation β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββ β β
β β β Course β βInterview β β Pathway β β Adaptation β β β
β β β Tracker β β Tracker β β Tracker β β Engine β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Qdrant serves as the semantic memory backbone of Edify AI, enabling capabilities impossible with traditional databases:
| Capability | Why Qdrant | Alternative Limitation |
|---|---|---|
| Semantic Course Discovery | Vector similarity finds conceptually related content even with different terminology | SQL LIKE queries miss semantic matches |
| Long-Term User Memory | Persistent vectors store learning patterns across sessions | Session-based systems lose context |
| Retrieval-Grounded AI | Every AI recommendation is grounded in retrieved context | LLMs hallucinate without retrieval |
| Multimodal Understanding | Unified vector space for text, audio, video, and code | Separate systems can't cross-reference |
| Privacy-Compliant Memory | Efficient user data deletion/anonymization per GDPR/CCPA | Scattered data makes compliance costly |
| Adaptive Learning Paths | Real-time similarity search triggers personalized adaptations | Rule-based systems can't handle nuance |
Core Integration Principle: MCP agents NEVER generate recommendations without first retrieving relevant context from Qdrant. This ensures all AI outputs are grounded in real user data and course content.
| Modality | Source | Use Case |
|---|---|---|
| Text | Course content, resumes, feedback, pathway descriptions | Primary semantic understanding |
| Audio | Interview transcriptions, voice queries | Speech-to-text β embedding for interview analysis |
| Video | Behavioral analysis (eye contact, expressions, confidence) | Non-verbal feedback during mock interviews |
| Code | Technical assessments, coding exercises | Skill verification and matching |
| Structured Metrics | ATS scores, progress percentages, engagement signals | Quantitative pattern detection |
Unified Embedding Pipeline:
// Single entry point for all content modalities
import { createUnifiedEmbedding } from '@/qdrant/embeddings';
// Text content β 768-dim vector
const textEmbedding = await createUnifiedEmbedding({
modality: 'text',
content: 'Learn React hooks for state management',
});
// Audio β Transcription β Vector
const audioEmbedding = await createUnifiedEmbedding({
modality: 'audio',
content: { audioBase64: '...', mimeType: 'audio/webm' },
});
// Video behavioral metrics β Vector
const videoEmbedding = await createUnifiedEmbedding({
modality: 'video',
content: { confidenceScore: 0.85, engagementScore: 0.72 },
});
// Code β Normalized β Vector
const codeEmbedding = await createUnifiedEmbedding({
modality: 'code',
content: 'function fibonacci(n) { ... }',
});Embedding Model:
- Model: Google
text-embedding-004 - Dimensions: 768
- Similarity: Cosine distance
- Index: HNSW (m=16, ef_construct=100) for fast approximate search
Querying Strategy:
// Semantic search with filters
const results = await semanticSearch({
collection: 'courses',
query: 'machine learning for beginners',
filter: { difficulty: 'beginner', language: 'en' },
limit: 10,
});
// Hybrid search (vector + keyword)
const hybridResults = await hybridSearch({
collection: 'courses',
query: 'Python data science',
keywordBoost: 0.3, // 30% weight to keyword matching
});
// Temporal search (recent vectors)
const recent = await temporalSearch({
collection: 'user_profiles',
userId: 'user_123',
since: '2024-01-01',
contentType: 'progress',
});Context Injection Pipeline (runs before every LLM call):
User Query β Intent Analysis β Parallel Retrieval β Context Merge β Enhanced Prompt
β β β β
β βΌ βΌ βΌ
β Classify intent Query relevant Combine context
β (course/interview collections in with token budget
β /pathway/general) parallel management
β β β β
ββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββ
β
βΌ
LLM with Grounded Context
Implementation:
// Before any AI response
const context = await injectContext(userId, userQuery);
// context.formattedContext contains:
// - User profile (skills, goals, preferences)
// - Course history (completed, in-progress)
// - Interview performance (scores, trends)
// - Pathway progress (current step, next steps)
const response = await llm.generate({
systemPrompt: `${BASE_PROMPT}\n\n${context.formattedContext}`,
userMessage: context.enhancedQuery,
});Four Vector Collections:
| Collection | Content Types | Purpose |
|---|---|---|
user_profiles |
skills, experience, goals, preferences, progress, interview_history | Persistent user memory |
courses |
overview, chapter, skills, feedback, prerequisites | Course content + metadata |
mock_interviews |
question_answer, session_summary, behavioral_analysis, improvement_suggestion | Interview performance memory |
learning_pathways |
overview, step, skills_covered, user_progress, market_trends | Career roadmaps |
Memory Writeback (runs after every interaction):
// After user completes an action
await writebackMemory({
type: 'interaction_log',
userId,
interactionType: 'course_progress',
content: { courseId, chapterCompleted: 3, timeSpent: '15m' },
});
// Memory persists across sessions
// Next visit: system remembers exactly where user left offReuse Patterns:
- Skill Gap Detection: Compare user skill vectors to job requirement vectors
- Course Recommendations: Find courses whose skill vectors match user goal vectors
- Interview Coaching: Retrieve past interview weaknesses to suggest targeted practice
- Adaptive Pathways: Detect stagnation patterns and suggest alternative approaches
All recommendations are retrieval-first (never hallucinated):
// Course recommendations grounded in user data
const courses = await recommendCourses(userId);
// β Retrieves: user skills, goals, history, similar users' paths
// Returns: courses with semantic similarity to user needs
// Next-best-action based on progress patterns
const nextSteps = await getNextBestStep(userId);
// β Retrieves: current progress, common success patterns, time availability
// Returns: prioritized list of actions with reasoning
// Interview coaching from performance history
const coaching = await getInterviewCoaching(userId);
// β Retrieves: past scores, behavioral patterns, improvement trends
// Returns: specific areas to practice with example questions| Limitation | Impact | Mitigation |
|---|---|---|
| Cold Start Problem | New users lack history for personalization | Onboarding quiz to bootstrap profile vectors |
| Embedding Drift | Model updates can shift vector space | Periodic re-embedding with version tracking |
| Context Window Limits | Large retrieval sets may exceed token budgets | Dynamic context truncation with priority scoring |
| Audio Quality Sensitivity | Poor audio β poor transcription β wrong embeddings | Confidence thresholds and fallback to text input |
| Temporal Decay | Old memories may become irrelevant | Weighted recency in retrieval scoring |
Bias Mitigation:
- Diverse Training Data: Course content sourced from varied global perspectives
- Recommendation Auditing: Regular analysis of recommendation patterns across demographics
- Skill Neutrality: Embeddings focus on competencies, not demographic proxies
- Feedback Loops: User corrections help refine biased recommendations over time
Privacy Protections:
// GDPR/CCPA Compliance Built-In
await deleteUserData(userId); // Complete erasure from all collections
await anonymizeUserData(userId); // PII removal while preserving aggregate patterns
await exportUserData(userId); // Portable JSON export for data portabilityPII Fields Protected:
user_id,email,name,phone,addresslinkedin_url,github_url,personal_url- Any field containing identifiable information
Safety Guardrails:
- Content Filtering: Embeddings for inappropriate content are flagged and excluded
- Rate Limiting: Prevents abuse of retrieval APIs
- Audit Logging: All data access is logged for compliance
- Retention Policies: Configurable automatic deletion of old interaction logs
Ethical AI Principles:
- Transparency: Users can see why recommendations were made (retrieval sources shown)
- Control: Users can delete memories, adjust preferences, and opt-out of personalization
- Fairness: Recommendations based on skills and goals, not demographic assumptions
- Accountability: Clear data lineage from input to recommendation
If you'd like to contribute, run the app locally, or work on features, here's a compact guide to get started. For more detailed information see the devops/ and docs/ folders (CI, testing, performance, and clean builds).
Frontend:
- Next.js 14 (App Router) - React framework with server-side rendering
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Shadcn UI - High-quality component library
- Recharts - Data visualization (bar charts, pie charts, radar charts)
- Framer Motion - Smooth animations and transitions
- tRPC - End-to-end typesafe APIs
- React Query - Server state management
- Zustand - Client state management
Backend:
- Python 3.13 - Core backend language
- LangGraph - Multi-agent orchestration framework
- Vertex AI (Gemini 2.0 Flash) - Google's advanced AI models
- Pydantic - Data validation and structured outputs
- HTTP Server - Lightweight API server for Cloud Run
Infrastructure & Deployment:
- Google Cloud Platform (GCP)
- Cloud Run - Serverless container deployment (Backend API)
- Vertex AI - AI/ML model hosting and inference
- Cloud Build - Container image building
- Artifact Registry - Container image storage
- Neon/PostgreSQL - Primary database
- Redis - Caching and session management
- Docker - Containerization
- GitLab CI/CD - Continuous integration and deployment
AI & ML:
- Multi-Agent System - LangGraph-based orchestration
- Structured Output - Pydantic models with JSON schema generation
- Parallel Processing - Concurrent agent execution
- Weighted Aggregation - Intelligent score combination
- Node.js 18+ (we recommend using the same Node version as the Dockerfile)
- npm 10+ or yarn
- Python 3.13 (for backend development)
- Docker (for local container testing)
- Google Cloud SDK (for deployment)
- PostgreSQL (or Neon account for cloud database)
Frontend Setup:
# Install dependencies
npm ci --legacy-peer-deps
# Run development server
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint
# Run tests
npm testBackend Setup:
# Navigate to backend directory
cd backend
# Create virtual environment (Python 3.13)
python3.13 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your GCP credentials
# Run local API server
python api_server.py
# Server runs on http://localhost:8000Environment Variables:
Frontend (.env.local):
PYTHON_BACKEND_URL=http://localhost:8000 # Local development
# PYTHON_BACKEND_URL=https://resume-matcher-api-xxx.run.app # ProductionBackend (.env):
GOOGLE_CLOUD_PROJECT=your-project-id
VERTEX_AI_LOCATION=us-central1
GEMINI_MODEL_NAME=gemini-2.0-flash-expFrontend:
# Build Next.js application
npm run build
# Start production server locally
npm run startBackend:
cd backend
# Build Docker image
docker build -t resume-matcher-api .
# Test locally
docker run --rm -p 8080:8080 \
-e GOOGLE_CLOUD_PROJECT=your-project \
-e VERTEX_AI_LOCATION=us-central1 \
resume-matcher-apiBackend to Cloud Run:
cd backend
# Using deployment script
./deploy_cloud_run.sh
# Or manually:
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/resume-matcher-api
gcloud run deploy resume-matcher-api \
--image gcr.io/$GOOGLE_CLOUD_PROJECT/resume-matcher-api \
--platform managed \
--region us-central1 \
--allow-unauthenticated \
--memory 2Gi \
--cpu 2 \
--timeout 300Frontend Deployment:
- Configured via GitLab CI/CD pipeline
- Automatically deploys to Cloud Run on
mainbranch - See
devops/PIPELINE.mdfor detailed CI/CD configuration
Multi-Agent Resume Analysis Flow:
- Resume Upload β Frontend receives PDF/DOCX file
- Text Extraction β Gemini Vision API extracts text from resume
- Structured Extraction β Resume Extractor Agent parses into structured format
- Parallel Scoring β Five specialized agents score different sections simultaneously:
- Skills Agent
- Experience Agent
- Education Agent
- Projects Agent
- Meta Agent
- Score Aggregation β Weighted combination of all section scores
- Dashboard Display β Interactive visualizations and recommendations
System Architecture:
βββββββββββββββ
β Next.js β Frontend (React/TypeScript)
β Frontend β
ββββββββ¬βββββββ
β HTTP/API
βΌ
βββββββββββββββββββ
β Next.js API β /api/resume-analysis
β Route Handler β
ββββββββ¬βββββββββββ
β HTTP POST
βΌ
βββββββββββββββββββ
β Python Backend β Cloud Run (Deployed)
β (LangGraph) β
β βββββββββββββ β
β β Orchestratorβ β Coordinates agents
β βββββββ¬ββββββ β
β β β
β βββββββ΄ββββββ β
β β 5 Agents β β Parallel execution
β βββββββ¬ββββββ β
ββββββββββΌβββββββββ
β
βΌ
βββββββββββββββββββ
β Vertex AI β Gemini 2.0 Flash
β (Gemini) β
βββββββββββββββββββ
devops/PIPELINE.mdβ CI/CD pipeline, GitLab β Cloud Run guidancedevops/CLEAN_BUILDS.mdβ reproducible build practices and Docker tipsdevops/TESTING.mdβ how to run unit tests, CI test jobs, and coveragedocs/SPEED_AND_PERFORMANCE.mdβ caching, Inngest workers, tRPC, DB pooling, and profilingdocs/ARCHITECTURE.mdβ high-level design and system componentsdocs/ENV_SETUP.mdβ environment variables and local configurationdocs/AGENTIC_WORKFLOWS.mdβ AI-driven job workflows and background processingbackend/README.mdβ Python backend setup and deployment guidebackend/QUICK_START.mdβ Quick start guide for backend development
Please follow the contribution guidelines in CONTRIBUTING.md (code style, PR process, and required checks). All PRs should include:
- Passing type-check (
npm run type-check) - Passing lint (
npm run lint) - Passing tests (
npm test) - Updated documentation if needed
Backend Contributions:
- Follow Python PEP 8 style guide
- Use type hints for all functions
- Add docstrings to all modules and functions
- Test locally with
python main_local_test.py
Thank you to everyone who contributes β your work helps make Edify AI better for learners everywhere.
Made with β€οΈ by the Edify AI Team
Edify AI exposes most core product capabilities (courses, pathways, resume analysis, forums, events, internships, AI utilities, transcription, sandboxed code) as MCP tools through:
- HTTP endpoint:
POST /api/mcp(App Router) β pass{ tool: string, input: any }JSON body. - SDK stdio server:
npx tsx mcp/sdk-server.tsβ provides the same tool set for MCP-compatible clients.
Heavy or external operations support a testMode: true flag to return safe, deterministic stub results (avoiding AI calls, scraping, PDF rendering). This is used extensively in tests.
Tools that create/generate substantial content require a userId (or nested user.id) in input. Missing userId triggers an ERR_UNAUTHORIZED error:
course.generatepathway.create
| Tool | Purpose | Notes |
|---|---|---|
| course.list | Paginated list of courses | Optional page/limit |
| course.create | Insert new course metadata | Provide userInput, data |
| course.get | Fetch single course | id or courseId |
| course.update | Patch mutable fields | courseId + patch object |
| course.delete | Delete a course | id or courseId |
| course.chapter.get | Get chapter by index | courseId + chapterIndex |
| course.progress.increment | Increment progress (0-100) | Capped at 100 |
| course.listByUser | List courses by creator email | email required |
| course.generate | AI chapter generation & publish | Requires userId; testMode stub |
| course.chat | Q&A over course chapters | testMode returns stub answer |
| resume.list | List stored resume analyses | userId + optional limit |
| resume.analyze | Analyze resume vs job | Returns scores & ATS match |
| resume.report.get | PDF (base64) for stored analysis | analysisId |
| resume.report.generate | PDF from provided analysis object | analysis object |
| forum.topic.list | List forum topics | courseId |
| forum.topic.create | Create forum topic | courseId, title, content |
| forum.reply.list | List replies for topic | topicId |
| forum.reply.create | Create reply | topicId, content |
| events.list | List hackathons & meetups | includeHackathons/includeMeetups toggles |
| internships.list | Scraped internships | testMode stub array |
| pathway.create | Generate learning pathway | Requires userId; testMode stub |
| pathway.create.personalized | AI market-aware roadmap | Uses Perplexity for market intelligence |
| pathway.get | Fetch pathway by slug | slug |
| pathway.list | List all pathways | No input |
| pathway.progress.update | Update pathway progress | userId, pathwayId, completedSteps |
| pathway.progress.get | Get user progress | userId, pathwayId |
| math.solveImage | Solve math from image | imageBase64, testMode stub |
| ai.generate | Generic Gemini text generation | prompt + optional params |
| speech.transcribe | Transcribe base64 audio | testMode returns stub segments |
| code.run | Sandbox code execution (stub) | language, code, testMode |
curl -X POST http://localhost:3000/api/mcp -H "Content-Type: application/json" -d '{
"tool": "ai.generate",
"input": { "prompt": "Explain async/await simply", "testMode": true }
}'Each tool has targeted Vitest files under tests/ prefixed with mcp- or mcp-sdk-. We run only new test files when adding a tool to minimize cycle time. The testMode flag ensures deterministic outputs and avoids external dependencies (AI, scraping, PDF generation, sandbox execution).
- Implement service logic in
services/with atestModeshort-circuit. - Create Zod schemas (or reuse existing) under
app/api/mcp/schemas/. - Register in
app/api/mcp/registry/index.tsandmcp/sdk-server.ts(manual JSON schema for now). - Add targeted tests (HTTP + SDK) in
tests/. - Run the new tests only:
npx vitest tests/mcp-<feature>.test.ts tests/mcp-sdk-<feature>.test.ts. - If auth is required, call
ensureUserId.
- Zod β JSON Schema auto-generation to remove manual duplication in SDK server.
- Secure sandbox for
code.run(container isolation, resource limits). - Advanced auth/session integration (beyond simple presence check).
