This Application naming Wevolve AI. A modern recruiting / jobs utility combining a FastAPI backend with a React + Vite frontend. The project provides job generation, resume parsing, candidate-job relevancy scoring, and analytics dashboards backed by AI services and Supabase.
Highlights
- Job description generator powered by AI
- Resume parsing and relevancy scoring
- Analytics dashboard with mock data for pipeline and source effectiveness
- Supabase integration for persistence
This repository contains two main parts:
backend/— FastAPI backend (AI integrations, resume parsing, analytics endpoints)Frontend/wai-wai/— React + Vite frontend (UI, dashboard, job generator)
Quick links
- Backend entry:
backend/main.py - Frontend entry:
Frontend/wai-wai/src/main.jsx - Architecture diagram:
ARCHITECTURE.md
Table of contents
- Project Overview
- Tech Stack
- Prerequisites
- Environment variables
- Backend — Install & Run
- Frontend — Install & Run
- API Endpoints (examples)
- Project structure
- Troubleshooting
- Contributing
Project Overview
project-wai-wai is an experimental toolkit for recruiting workflows. The backend exposes endpoints for analytics, job generation, resume parsing, and candidate profiling. The frontend is a React app built with Vite that consumes those endpoints and provides interactive dashboards and tools.
Tech Stack
- Backend: Python, FastAPI, Uvicorn
- AI / Integrations: Google Generative AI (Gemini), Hugging Face, Groq, Supabase
- Document parsing:
pdfplumber,python-docx,reportlab - Frontend: React, Vite
Prerequisites
- Node.js (recommended Node 16+ or Node 18+)
- npm or yarn
- Python 3.10+ and pip
- (Optional) virtualenv or venv for isolating Python deps
Environment variables
Create a .env file in backend/ and a .env file in Frontend/wai-wai/ as needed.
Important backend env vars (backend/.env):
SUPABASE_URL— your Supabase project URLSUPABASE_KEY— Supabase service or anon key used by the backendGEMINI_API_KEY— (optional) Google Generative AI key used for resume analysis and generationHF_API_TOKEN— (optional) Hugging Face API token (used by some inference clients)GROQ_API_KEY— (optional) Groq API key
Frontend env vars (Frontend/wai-wai/.env):
VITE_SUPABASE_URL— Supabase URL used by the frontendVITE_SUPABASE_ANON_KEY— Supabase anon/public key
Notes:
- If
GEMINI_API_KEYis missing, resume analysis features will be limited (the backend prints a warning). Seebackend/main.pyfor how missing keys are handled.
Backend — Install & Run
- Create and activate a virtual environment (recommended):
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# or cmd
.\.venv\Scripts\activate.bat- Install dependencies:
pip install -r backend/requirements.txt-
Add your
backend/.envfile with the variables listed above. -
Run the FastAPI server (development):
uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000The backend exposes a health check at /health (e.g., http://localhost:8000/health).
Frontend — Install & Run
- Change to the frontend directory:
cd Frontend/wai-wai- Install dependencies:
# using npm
npm install
# or using yarn
yarn-
Create or update
Frontend/wai-wai/.envwith the Vite environment variables mentioned earlier. -
Run the development server:
npm run devOpen the URL printed by Vite (usually http://localhost:5173).
API Endpoints (examples)
The backend implements multiple endpoints. A few useful ones:
GET /health— basic health checkGET /analytics/overview— returns mock analytics overview dataGET /analytics/pipeline— funnel/pipeline countsGET /analytics/time-to-hire— time-to-hire seriesPOST /api/generate-job— job generation endpoint (seebackend/main.pyfor request model)
There are additional endpoints for resume upload/analysis, profile save, gap analysis, and job-specific analytics. See backend/main.py for the full list and request/response shapes.
Project structure (detailed)
-
backend/— FastAPI service and AI integrationsmain.py— server entry, route definitions, AI clients, and helpersrequirements.txt— Python dependencies to install.env— (not checked in) environment variables for keys and configdata/— static data used by the backendskill_taxonomy.json— skill taxonomy used for normalization & scoring
-
Frontend/wai-wai/— React + Vite application.env— (not checked in) Vite / Supabase env vars (VITE_SUPABASE_URL,VITE_SUPABASE_ANON_KEY)package.json— scripts and frontend dependenciesindex.html— Vite HTML entrysrc/— React source filesmain.jsx— frontend app bootstrap / routingApp.jsx,App.css— top-level app component and stylessupabaseClient.js— Supabase client wrapper used across the appcomponents/— reusable UI componentsNavbar.jsx,Footer.jsx,JobCard.jsx,FilterPanel.jsx,ProtectedRoute.jsx
pages/— route pages and main viewsHome.jsx,JobGenerator.jsx,JobDashboard.jsx,ResumeParser.jsx,Analytics.jsx,Auth.jsx
styles/— CSS modules and global stylesdata/mockJobs.json— sample job data used in the UI for demos
public/— static assets served by Vitevanta/— Vanta.js visual assets used on the landing page
Troubleshooting / Notes
- Missing or invalid API keys: the backend prints warnings when keys are absent; some features degrade gracefully (e.g., a regex fallback for resume parsing).
- If you hit CORS issues in development, the backend already enables permissive CORS for convenience. Lock this down for production.
- If the frontend cannot connect to Supabase, verify
VITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEYinFrontend/wai-wai/.env.
Quick dev checklist
- Backend: install deps, set
backend/.env, runuvicorn backend.main:app --reload - Frontend:
cd Frontend/wai-wai, set.env,npm install,npm run dev
Contributing
- Fork the repo and create a feature branch
- Follow existing code style (Python: PEP8 / project formatting; JS: follow React project conventions)
- Open a pull request with a clear description of changes