How swlee9087/acmrs2026_challenge works
This repository is a RecSys Challenge conversational music recommender. Its submitted workflow turns each Blind B session into a deepest-turn request, retrieves tracks from the full catalog using BM25, dense text similarity and listening history, fuses rankings, then generates a grounded rationale and a user-facing response. The graph reflects the documented v10 submission pipeline; sampled source excerpts are partial, so internal wiring beyond documented stages is omitted. The v11 reranker is shown separately because it was written but not scored.
Main entry points: crs_blind_b_v10.py Blind B pipeline · eval_composite_2026-06-24.py Composite evaluator · build_blind_b_v7.py Blind B builder · crs_blind_b_v11.py Cross-encoder reranker
Components 19
Input preparation
- Blind B builder
src/build_blind_b_v7.py - Deepest-turn inputs
Track retrieval
- Track catalog
- Blind B pipeline
src/crs_blind_b_v10.py - Request query
src/crs_blind_b_v10.py - BM25 retrieval
src/crs_blind_b_v10.py - Dense retrieval
src/crs_blind_b_v10.py - History centroid
src/crs_blind_b_v10.py - RRF fusion
src/crs_blind_b_v10.py - Cross-encoder reranker
src/crs_blind_b_v11.py
Response generation
- Ranked candidates
- Rationale generation
src/crs_blind_b_v10.py - Response rewriting
src/crs_blind_b_v10.py - Prediction output
Evaluation
- Composite evaluator
analysis/eval_composite_2026-06-24.py - Ground truth
- Recommendation metrics
Other components
- Challenge data
- Local model checkpoints
Connections 30
- Challenge data → Blind B builder: provides sessions
- Track catalog → Blind B builder: reads metadata
- Blind B builder → Deepest-turn inputs: writes turns
- Deepest-turn inputs → Blind B pipeline: feeds inference
- Blind B pipeline → Track catalog: loads catalog
- Blind B pipeline → Request query: builds request
- Blind B pipeline → BM25 retrieval: runs retrieval
- Blind B pipeline → Dense retrieval: runs retrieval
- Blind B pipeline → History centroid: scores history
- Request query → BM25 retrieval: scores text
- Request query → Dense retrieval: encodes request
- Track catalog → BM25 retrieval: supplies track text
- Track catalog → Dense retrieval: supplies track vectors
- BM25 retrieval → RRF fusion: sends rankings
- Dense retrieval → RRF fusion: sends rankings
- History centroid → RRF fusion: sends scores
- RRF fusion → Blind B pipeline: returns candidates
- Blind B pipeline → Ranked candidates: writes rankings
- Ranked candidates → Rationale generation: grounds rationale
- Rationale generation → Response rewriting: passes rationale
- Response rewriting → Prediction output: writes response
- Local model checkpoints → Dense retrieval: loads embedder
- Local model checkpoints → Rationale generation: loads Qwen3-32B
- Local model checkpoints → Response rewriting: loads phi-4
- Blind B pipeline → Cross-encoder reranker: optionally reranks
- Local model checkpoints → Cross-encoder reranker: loads cross-encoder
- Prediction output → Composite evaluator: scores predictions
- Ground truth → Composite evaluator: compares outcomes
- Track catalog → Composite evaluator: provides catalog size
- Composite evaluator → Recommendation metrics: computes metrics