Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectMatch AI 🧠

An event-driven, secure multi-agent platform that matches job seekers to the right skill-building projects.

Upload your resume, paste a job description — and ProjectMatch AI's five-agent pipeline identifies exactly which projects will close your skill gaps and make you a stronger candidate.


✨ Features

Feature Details
📄 Universal Resume Parsing Upload PDF, DOCX, DOC, RTF, or TXT — all parsed in-memory, zero disk writes
🎯 Gap-Driven Matching Pinpoints skills required by the JD that you're missing and finds projects that teach them
🤖 5-Agent AI Mesh Ingestion → Profiler → Discovery → Synthesis → Trust & Verification
🔒 Prompt Injection Defense Adversarial keyword scoring; inputs scoring > 0.15 are quarantined
🛡️ PII Redaction Emails and phone numbers masked before any agent processing
📡 Real-Time Streaming Server-Sent Events (SSE) stream live progress to the dashboard
✅ Verified vs. Theoretical Real DB-backed projects labelled "Verified"; model-inferred suggestions labelled "Theoretical"
🔬 Two-Pass Trust Audit Synthesis claims verified against raw DB records before results are shown
📊 Radar Comparison Side-by-side hexagonal chart across 6 axes (Gap Coverage, Domain Fit, Learning Curve, Resume Impact, Time to Complete, Market Demand)
🔗 Project Combination Select two projects and get a synergy verdict with shared/complementary skill breakdown
👍 User Feedback Thumbs up/down + comments sent to /api/feedback

🏗️ Architecture

┌─────────────────────────────────────────────────────────────────────┐
│  React Frontend  (Vite + TailwindCSS + Recharts)                    │
│  Multi-step form → SSE stream consumer → Project cards + Radar      │
└──────────────────────────┬──────────────────────────────────────────┘
                           │  HTTP / SSE
┌──────────────────────────▼──────────────────────────────────────────┐
│  FastAPI Gateway  (main.py)                                          │
│  POST /api/analyze  ·  GET /api/events/{id}  ·  POST /api/combine   │
│  POST /api/feedback  ·  GET /api/roles/autocomplete                  │
└──────────────────────────┬──────────────────────────────────────────┘
                           │  In-process async task
┌──────────────────────────▼──────────────────────────────────────────┐
│  Google ADK Multi-Agent Mesh                                         │
│  1. IngestionGuardrailAgent  — sanitise, PII redact, injection check │
│  2. SkillGapProfilerAgent    — extract resume + JD skills; gap = JD-resume │
│  3. ProjectDiscoveryAgent    — vector search (retrieval-first) + theoretical │
│  4. SynthesisAnalysisAgent   — gap coverage, experience, reasoning  │
│  5. TrustVerificationAgent   — two-pass audit + confidence score    │
└──────────────────────────┬──────────────────────────────────────────┘
                           │  MCP JSON-RPC 2.0
┌──────────────────────────▼──────────────────────────────────────────┐
│  Model Context Protocol Server                                       │
│  Tools: lookup_taxonomy · get_project_by_id · semantic_vector_search │
│         get_all_projects · autocomplete_roles                        │
│  Backed by: postgres_mock.py (O*NET/ESCO taxonomy + project DB)     │
│             vector_mock.py (TF cosine similarity — stdlib only)     │
└─────────────────────────────────────────────────────────────────────┘

🚀 Quick Start

Prerequisites

  • Python 3.10+
  • Node.js 18+

1. Backend

cd backend
pip install -r requirements.txt
python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload

Backend runs at http://127.0.0.1:8000

2. Frontend

cd frontend
npm install
npm run dev

Frontend runs at http://localhost:3000


🐳 Docker

cd backend
docker build -t projectmatch-ai-backend .
docker run -p 8000:8000 projectmatch-ai-backend

📂 Project Structure

projectmatch-ai/
├── backend/
│   ├── app/
│   │   ├── main.py               # FastAPI gateway, SSE, /api/combine, /api/feedback
│   │   ├── config.py             # Injection thresholds, scoring weights
│   │   ├── agents/
│   │   │   ├── base.py           # BaseAgent: tool boundaries, lifecycle, telemetry
│   │   │   ├── ingestion.py      # Guardrail: PII redact + injection scoring
│   │   │   ├── profiler.py       # Skill gap profiler (resume ↔ JD diff)
│   │   │   ├── discovery.py      # Retrieval-first project search + theoretical fallback
│   │   │   ├── synthesis.py      # Gap coverage scoring + reasoning
│   │   │   └── trust.py          # Two-pass verification + confidence score
│   │   ├── mcp/
│   │   │   ├── server.py         # JSON-RPC 2.0 tool registry
│   │   │   └── client.py         # Typed async MCP client used by agents
│   │   ├── database/
│   │   │   ├── postgres_mock.py  # O*NET/ESCO taxonomy + enriched project DB
│   │   │   └── vector_mock.py    # TF cosine similarity (pure stdlib)
│   │   └── utils/
│   │       └── file_parser.py    # Universal parser: PDF, DOCX, RTF, TXT
│   ├── requirements.txt
│   └── Dockerfile
│
└── frontend/
    ├── src/
    │   ├── components/
    │   │   ├── Dashboard.jsx     # Multi-step form, SSE consumer, compare + feedback
    │   │   ├── ProjectCard.jsx   # Result card: impact, skills, gaps, badges
    │   │   └── RadarChart.jsx    # 6-axis dual-project comparison chart
    │   ├── App.jsx
    │   ├── main.jsx
    │   └── index.css             # Glassmorphism, neon glow, custom scrollbar
    ├── package.json
    ├── tailwind.config.js
    ├── vite.config.js
    └── index.html

🔐 Security Model

Control Implementation
Prompt injection Adversarial keyword density score; threshold 0.15 triggers quarantine
PII redaction Email + phone masked via regex before any agent sees the data
In-memory only All file bytes processed via BytesIO / in-process; never written to disk
MCP isolation Agents cannot import database modules directly; all access via JSON-RPC tool calls
Two-pass trust Synthesis claims cross-checked against raw DB records before display

📊 Confidence Score Formula

confidence = (gap_coverage × 0.40)
           + (semantic_similarity × 0.30)
           + (experience_relevance × 0.20)
           + (soft_skills_match × 0.10)

🗂️ API Reference

Method Endpoint Description
POST /api/analyze Upload resume + JD; returns session_id
GET /api/events/{session_id} SSE stream of agent progress
POST /api/combine Synergy report for two or more project IDs
POST /api/feedback Submit thumbs up/down + comment
GET /api/roles/autocomplete?q= Job title suggestions
GET /health Health check

🧪 Supported Resume Formats

Format Parser
.pdf pdfminer.six — text-layer extraction
.docx python-docx — paragraph extraction
.doc Raw byte fallback with chardet encoding detection
.rtf RTF control-word stripping via regex
.txt / .md chardet auto-encoding detection

📜 License

MIT — see LICENSE

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages