shadcn-ui-expert

AI-powered system for automatically matching rejected candidates to alternative open positions.

Installation
CLI
npx skills add https://github.com/majesteitbart/talentmatcher --skill shadcn-ui-expert

Install this skill with the CLI and start using the SKILL.md workflow in your workspace.

Last updated 4/22/2026

๐Ÿ—๏ธ Talent Matcher Agent

AI-powered system for automatically matching rejected candidates to alternative open positions.

๐ŸŽฏ Overview

When a candidate is rejected for a position, this system automatically:

  1. Parses their CV using Gemini AI
  2. Generates embeddings for skills, experience, and overall profile
  3. Searches for similar open positions using pgvector
  4. Consolidates and ranks matches
  5. Generates a detailed analysis memo for recruiters

๐Ÿš€ Tech Stack

  • Frontend: Next.js 14 (App Router), TypeScript, Tailwind CSS
  • Backend: Next.js API Routes, BullMQ workers
  • Database: Supabase (PostgreSQL + pgvector)
  • AI: Google Gemini 2.0 (CV parsing, embeddings, analysis)
  • Workflow: LangGraph (parallel execution orchestration)
  • Queue: BullMQ + Redis (background job processing)

๐Ÿ“‹ Prerequisites

  • Node.js 18+ and npm
  • Docker (for Redis)
  • Supabase account
  • Google Gemini API key

๐Ÿ› ๏ธ Setup

1. Install Dependencies

npm install

2. Setup Supabase

  1. Create a new project at supabase.com
  2. Run the migration from supabase-migration.sql in the SQL Editor
  3. Note your Project URL, anon key, and service_role key

3. Configure Environment Variables

Copy .env.example to .env.local:

cp .env.example .env.local

Fill in your credentials:

# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

# Gemini
GEMINI_API_KEY=your-gemini-api-key

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# App
NEXT_PUBLIC_APP_URL=http://localhost:3000
NODE_ENV=development

4. Start Redis

docker-compose up -d

5. Start Development Services

Quick Start (Recommended):

npm run dev:concurrent  # Starts all services at once with color-coded output

Individual Services:

# Terminal 1: Next.js server
npm run dev

# Terminal 2: Workflow worker
npm run worker:workflow

# Terminal 3: Job indexing worker
npm run worker:indexing

Visit http://localhost:3000

The project includes comprehensive Claude Code development tools:

# Initialize project management
/pm:init

# List available commands
/pm:help

# Show current development status
/pm:status

For detailed setup, see the Developer Guide.

๐Ÿ“ก API Endpoints

Reject Candidate & Trigger Matching

POST /api/candidates/reject
Content-Type: application/json

{
  "candidate_id": "uuid",
  "application_id": "uuid",
  "rejection_reason": "Not enough experience" 
}

Check Workflow Status

GET /api/workflow/status/[workflow_execution_id]
POST /api/jobs/index
Content-Type: application/json

{
  "company_id": "uuid",
  "job_ids": ["uuid1", "uuid2"] // optional, indexes all active jobs if omitted
}

๐Ÿ”„ Workflow Architecture

The matching workflow uses LangGraph for orchestration:

START
  โ†“
Parse CV (Gemini)
  โ†“
  โ”œโ”€โ”€ Retrieve by Skills (parallel)
  โ”œโ”€โ”€ Retrieve by Experience (parallel)
  โ””โ”€โ”€ Retrieve by Profile (parallel)
  โ†“
Consolidate Matches (weighted scoring)
  โ†“
Generate Analysis (Gemini)
  โ†“
END

Key Features:

  • Parallel Execution: Skills, experience, and profile searches run simultaneously
  • Weighted Scoring: Skills (40%), Experience (35%), Profile (25%)
  • Multi-source Boost: Jobs matching multiple criteria get a 5% boost per source
  • Graceful Degradation: Workflow continues even if some retrievers fail

๐Ÿ“Š Database Schema

Key tables:

  • companies - Company information
  • jobs - Job postings
  • job_embeddings - Vector embeddings for semantic search
  • candidates - Candidate profiles
  • parsed_cvs - Structured CV data
  • applications - Job applications
  • workflow_executions - LangGraph workflow runs
  • match_results - Matched jobs with scores

๐Ÿค– Claude Code Development Infrastructure

This project includes a comprehensive Claude Code development ecosystem with specialized agents and tools.

Key Features

  • 9 Specialized Agents: Code analysis, testing, documentation, design review, and more
  • 50+ Project Management Commands: Epic/issue tracking, PRD management, workflow automation
  • Automated Testing: Comprehensive test execution with real services (no mocking)
  • Smart Documentation: Auto-generated and updated documentation
  • Epic-Based Development: Organize work around large features rather than individual issues

Quick Commands

# Project Management
/pm:init                    # Initialize new epic
/pm:status                 # Show current work status
/pm:next                   # Get next task
/pm:standup                # Generate standup report

# Development Workflow
/review                    # Code review mode
/testing:run               # Run tests with analysis
/commit                    # Smart commit with validation
/prompt <task>             # Get AI assistance

# Get Help
/pm:help                   # List all available commands

Agent Coordination

For complex tasks, agents work together automatically:

# Example: Add new feature
Task agent_type="workflow-orchestrator" description="Add user authentication"

This will coordinate multiple agents to:

  1. Analyze requirements
  2. Create implementation plan
  3. Build the feature
  4. Write tests
  5. Update documentation
  6. Perform code review

For complete documentation, see the Developer Guide.

๐Ÿงช Testing

Automated Testing with Claude Code

Use the specialized test-runner agent for comprehensive testing:

# Run all tests with analysis
Task agent_type="test-runner" description="Run full test suite"

# Test specific functionality
Task agent_type="test-runner" description="Test authentication endpoints"

Manual Testing

To test the workflow manually:

  1. First, index some jobs:
curl -X POST http://localhost:3000/api/jobs/index
  -H "Content-Type: application/json"
  -d '{"company_id": "00000000-0000-0000-0000-000000000001"}'
  1. Create a candidate and application (via Supabase dashboard or API)

  2. Reject the candidate to trigger matching:

curl -X POST http://localhost:3000/api/candidates/reject
  -H "Content-Type: application/json"
  -d '{
    "candidate_id": "your-candidate-uuid",
    "application_id": "your-application-uuid",
    "rejection_reason": "Overqualified"
  }'
  1. Check the workflow status:
curl http://localhost:3000/api/workflow/status/[workflow_id]

๐Ÿ“ˆ Performance

  • CV Parsing: ~2-4 seconds
  • Embedding Generation: ~1 second per type (3 parallel)
  • Vector Search: <100ms per query (with HNSW index)
  • Match Consolidation: <50ms
  • Analysis Generation: ~3-5 seconds
  • Total Workflow: ~10-15 seconds

๐Ÿ’ฐ Cost Estimates

Per candidate workflow:

  • Gemini Parsing: ~$0.02
  • Embeddings (3 types): ~$0.06
  • Vector Search: ~$0.01
  • Analysis: ~$0.03
  • Total: ~$0.12 per candidate

๐Ÿ›ก๏ธ Production Checklist

  • [ ] Set up proper authentication
  • [ ] Configure Row Level Security (RLS) in Supabase
  • [ ] Set up monitoring and alerting
  • [ ] Configure rate limiting
  • [ ] Set up error tracking (e.g., Sentry)
  • [ ] Deploy workers to production (e.g., Railway, Render)
  • [ ] Set up CI/CD pipeline
  • [ ] Configure backup strategy
  • [ ] Set up log aggregation
  • [ ] Performance testing

๐Ÿ“š Documentation

๐Ÿ“ License

MIT

๐Ÿค Contributing

We use epic-based development with Claude Code infrastructure:

  1. Initialize Epic: Use /pm:init to start new features
  2. Follow Patterns: See Developer Guide for workflow
  3. Use Agents: Leverage specialized agents for code quality and testing
  4. Smart Commits: Use /commit for validated commits

Contributions welcome! Please open an issue or PR.

๐Ÿ“ง Support

For questions or issues:

  1. Debug with Claude Code: Use Task agent_type="code-analyzer" description="Investigate issue"
  2. Check Documentation: Review Error Handling Guide
  3. GitHub Issues: Open an issue for bugs or feature requests
  4. Developer Help: Use /pm:help for command assistance