This project is a conversational recommendation agent that helps recruiters and hiring managers identify suitable SHL assessments through dialogue.
The system:
- clarifies vague hiring needs,
- recommends SHL assessments,
- supports refinement,
- compares assessments,
- refuses out-of-scope requests,
- and stays grounded to the SHL catalog.
- FastAPI
- Hybrid retrieval:
- BM25 lexical search
- SentenceTransformer semantic embeddings
- ChromaDB
- Hybrid weighted scoring
- Diversity reranking
- Stateless orchestration
- State reconstruction from conversation history
- Clarification-before-recommendation policy
The agent asks targeted questions before recommending assessments when the user query is vague.
Returns grounded SHL assessments with:
- names,
- URLs,
- metadata.
Conversation history is reconstructed on every request, enabling iterative refinement.
Compares SHL assessments using catalog-grounded metadata.
Refuses:
- non-SHL requests,
- prompt injection attempts,
- unrelated hiring/legal advice.
GET /health
Response:
{
"status": "ok"
}POST /chat
Request:
{
"messages": [
{
"role": "user",
"content": "Hiring Java developers with analytical reasoning skills"
}
]
}Response:
{
"reply": "For Software Developer hiring needs, these SHL assessments provide strong coverage across technical and cognitive evaluation.",
"recommendations": [
{
"name": "Java 8 (New)",
"url": "https://www.shl.com/...",
"test_type": "Technical",
"duration": "40 minutes"
}
],
"end_of_conversation": true
}pip install -r requirements.txtpython build_vectorstore.pyuvicorn app.main:app --reloadOpen:
http://127.0.0.1:8000/docs
The evaluator provides the full conversation history in every request. The system reconstructs state from messages rather than storing server-side memory.
Combines:
- semantic similarity,
- lexical matching,
- metadata-aware reranking.
This improves Recall@10 performance.
Recommendations and comparisons are strictly grounded to the SHL catalog.
- Current catalog is a representative subset of SHL assessments.
- Retrieval quality improves further with larger catalog ingestion.
- Rule-based state extraction may miss nuanced enterprise requirements.
- Full SHL catalog ingestion
- Metadata filtering
- Advanced LLM-based JD parsing
- Automated evaluation harness
- Better comparison explanationsZ