This is a submission for the Redis AI Challenge: Real-Time AI Innovators.
What I Built
I built a real-time AI-powered job matching system that connects job seekers with the most relevant job opportunities using semantic search, vector similarity, and dynamic AI enrichment.
The system uses:
- Redis 8 vector search to match user profiles with job descriptions
- AI enrichment uses redis cache to explain and justify the match
- Caching in Redis to serve fast and profile-specific job recommendations
Whether you're a frontend developer, backend engineer, or full-stack dev, this platform finds you jobs based on your real skills and experience—not just keyword matching.
Demo
Live Demo:
Source Code:
AI-Powered Job Matcher with Redis 8
This project is a smart, real-time job-matching platform that connects users with the most relevant job opportunities using Redis 8 vector search, semantic caching, Django, React, and AI enrichment via gemini key. It delivers a personalized job feed with instant feedback on matched and missing skills — without repeatedly consuming AI tokens.
Demo
What I Built
A real-time AI job matching system that:
- Embeds user profiles using
SentenceTransformers
- Searches semantically similar job vectors stored in Redis 8
- Enriches jobs with AI via (Google Gemini Key)
- Caches enriched results in Redis to prevent redundant calls
- Dynamically updates match analysis (score, skills) based on user profile changes
Tech Stack
- Redis 8 – vector similarity search + semantic caching
- Django – backend, REST API, Redis integration
- React – frontend for job browsing
- SentenceTransformers – for job/user embeddings
- API KEY – connects to…
How I Used Redis 8
Redis 8 was the heart of my real-time AI system. Here's how I leveraged its powerful features:
Vector Search (FT.CREATE job_idx
)
I encoded both user profiles and job descriptions using sentence-transformer embeddings and stored them as vectors in Redis. When a user logs in or updates their profile, their vector is matched against the job vectors using KNN vector similarity in Redis:
Query("*=>[KNN 20 @embedding $vec AS score]")
This enabled:
- Real-time ranking of the most semantically relevant jobs
- Scalable search across thousands of job records
- Accurate AI-driven matches beyond keyword overlap
Semantic Caching
To improve performance, I cached AI-enriched job match results in Redis using a custom cache key:
user:{user_hash}:profile:{profile_hash}:job:{job_id}:enriched
If a user updated their profile, the profile_hash changed, forcing the system to recompute and cache new, relevant results. This dynamic cache key pattern gave me AI freshness with Redis-level speed.
AI + Redis Combo
For jobs not yet enriched, I used a backend AI model (like DeepSeek or Gemini) to generate:
- match_score
- matched_skills
- missing_skills
- AI explanation (Why this job fits the user)
These were then:
- Stored back in Redis
- Saved to a relational DB (via Django ORM)
- Served in milliseconds on the next request
Project Without Redis
Before integrating Redis, the system had multiple inefficiencies:
Static Job Listings: The same set of jobs was shown to users regardless of minor profile updates, unless the AI model was manually rerun.
Redundant API Calls: Every time a user visited the job feed, the system made repeated calls to the AI model to:
Compute
match_score
List
matched_skills
andmissing_skills
Generate AI
explanations
High Token & Latency Costs: Each AI call consumed tokens and time—making it costly and slow to scale.
No Personalization Memory: The system didn’t remember if a user had already seen or been matched to a job before.
Heavy Backend Load: The database and AI backend handled all logic repeatedly, increasing server strain and user wait time.
Project With Redis
With Redis integrated (using Redis 8’s vector search and smart caching), the system became real-time, cost-effective, and intelligent:
Smart Semantic Caching
- Redis stores AI-enriched job data (e.g.,
match_score
,skills
,AI explanations
) using a profile-aware cache key. - When the user updates their profile (skills, experience, etc.), a new profile hash is created—automatically invalidating old matches and triggering fresh ones only when necessary.
- No need to rerun the AI model unless the user profile actually changes, reducing API/token usage dramatically.
Dynamic Job Ranking
- Uses Redis 8 vector search (
KNN
) to fetch only the most relevant jobs from thousands of listings in real time. - Personalized results are sorted by similarity to the user's profile vector—no more hardcoded job lists or random ordering.
Reduced Redundancy & Faster UX
- Jobs are enriched with AI once, then stored in Redis and reused.
- This eliminates redundant calls and avoids repeatedly fetching, enriching, and saving the same jobs.
Users see fresh, dynamic results instantly—with AI match analysis like:
60% Match
Skills You Have vs. Skills to Develop
Personalized AI explanation
Key Benefit
To dynamically reflect changes in match score, skills you have, and missing skills in your AI Match Analysis without rerunning the AI model, Redis acts as the perfect semantic cache and real-time vector database—making your AI system smarter, faster, and cheaper.
Tech Stack
- Redis 8 – for vector search, KNN similarity matching, and semantic caching of enriched job data
- Django – as the backend framework handling REST API logic, user management, Redis integration, and AI orchestration
- React – for a dynamic frontend where users browse personalized job listings and view AI match analysis
- SentenceTransformers – to embed user profiles and job descriptions into high-dimensional vectors for semantic matching
gemini-flash-2.0 API – for generating job match_score, matched_skills, missing_skills, and natural language explanations
*Auth0 *– to handle secure authentication and user identity management across the frontend and backend
Docker– to containerize the entire stack (Redis, Django backend, React frontend) for consistent local development and seamless deployment
Team
Built by @umer_jahangir
Why It Matters
Traditional job search is broken — full of keyword spam and irrelevant results. With Redis and AI combined:
- Matching becomes smart and contextual
- Users get instant feedback
- Systems scale without compromise
Redis 8 made it possible to build a system that feels alive, fast, personalized, and intelligent.
Thanks!
Thanks to the Redis team and DEV community for organizing this challenge.
Redis 8 is truly redefining what's possible in real-time AI applications.
Top comments (0)