AI Teacher Recruitment System

Summary: A full-stack web platform with an integrated ML matching engine designed to centralize and intelligently streamline the hiring process for educational institutions.

  • Problem: The hiring process for schools is highly fragmented, lacking a unified platform that can simultaneously handle candidate applications, school job postings, and overarching system administration — let alone intelligently match candidates to opportunities.
  • Solution: Engineered a dedicated Python/FastAPI microservice utilizing SentenceTransformers to generate semantic embeddings for automated resume screening and profile coaching. Integrated the ML service with a Next.js and Node.js/Prisma backend architecture, utilizing REST APIs and Redis for efficient data handoffs. Developed secure backend controllers to serve three distinct user portals (Candidate, School, Admin) from a single unified database.
  • Tech Stack: Next.js, Node.js, Prisma, TypeScript, Python, FastAPI, SentenceTransformers, Redis.
  • Outcome: Delivered a scalable ML-powered architecture capable of intelligently pairing candidates with schools, supporting dynamic user roles, and handling robust authentication across the platform.

System Architecture

flowchart TD
    subgraph "Frontend (Next.js + TypeScript)"
        A["🎓 Candidate Portal"]
        B["🏫 School Portal"]
        C["⚙️ Admin Dashboard"]
    end
    
    A --> D["Auth Middleware\n(Role-Based)"]
    B --> D
    C --> D
    
    D --> E{"Role\nCheck"}
    E -->|Candidate| F["Candidate Controller"]
    E -->|School| G["School Controller"]
    E -->|Admin| H["Admin Controller"]
    
    subgraph "Node.js + Prisma Backend"
        F --> I["Profile CRUD"]
        F --> J["Application Manager"]
        F --> K["Job Search API"]
        
        G --> L["Job Posting CRUD"]
        G --> M["Application Review"]
        G --> N["Video Interview\n(Recording)"]
        
        H --> O["User Management"]
        H --> P["Platform Analytics"]
        H --> Q["Content Moderation"]
    end
    
    subgraph "ML Microservice (FastAPI)"
        R["SentenceTransformers\n(Embedding Generation)"]
        S["Semantic Matching\nEngine"]
        T["Resume Screening\n& Profile Coaching"]
    end
    
    K -->|"REST API"| S
    I -->|"REST API"| R
    R --> T
    S --> R
    
    subgraph "Data Layer"
        U[("PostgreSQL\n(Prisma ORM)")]
        V[("Redis\n(Cache + Queue)")]
    end
    
    I --> U
    J --> U
    L --> U
    M --> U
    R -->|"Embedding Cache"| V
    S -->|"Match Results"| V
    
    subgraph "Business Rules"
        W["1-Year Lock-in\nPolicy"]
        X["7-Day Auto-Release"]
        Y["Device Trust\n(Instagram-style)"]
    end
    
    D --> Y
    M --> W
    J --> X
  • What I learned: Greatly strengthened my full-stack capabilities — particularly in integrating ML microservices with production backends, structuring robust Node.js controllers with Prisma ORM, and managing state across TypeScript and Python services via Redis.