Collect session-aware data
Record short dialogues, timestamps and intermediate user feedback alongside item impressions to build turn-level training examples.
Recommend through conversation. Handle short dialogue turns.
Conversational recommendation systems interact with a user over multiple turns to elicit preferences and refine suggestions. They combine dialogue state, recent behaviour, item metadata and ranking models, and must handle session context, cold-start items and diverse intents.
Learning concept · Not a validated service
Conversational recommendation systems interact with a user over multiple turns to elicit preferences and refine suggestions. They combine dialogue state, recent behaviour, item metadata and ranking models, and must handle session context, cold-start items and diverse intents.
A proposed extension: a shopping assistant that asks a few clarifying questions, updates its candidate list in-session, and surfaces explainable suggestions for a human agent to confirm. This behaviour is not implemented in the supplied starter code.
Record short dialogues, timestamps and intermediate user feedback alongside item impressions to build turn-level training examples.
Start with a simple collaborative-filtering or content-similarity ranker for candidate generation and reserve session features for later re-ranking.
Measure recall@K and NDCG for offline ranking, and run simulated multi-turn dialogues to test preference recovery and stability.
Expose recommendations via a simple chat interface that logs user responses and allows manual correction by a human reviewer.
The supplied starter constructs a small user-item rating DataFrame, pivots it to a user-by-item matrix, computes cosine similarity between users, finds the most similar user to a target, and recommends that neighbour's highest-rated items that the target has not rated. It prints the neighbour and top recommendations.
matrix = ratings.pivot_table(index="user", columns="item", values="rating").fillna(0)
user_similarity = pd.DataFrame(
cosine_similarity(matrix),
index=matrix.index,
columns=matrix.index,
)
target_user = "user_1"
neighbor = user_similarity[target_user].drop(target_user).idxmax()
unseen_items = matrix.loc[target_user][matrix.loc[target_user] == 0].index
scores = matrix.loc[neighbor, unseen_items].sort_values(ascending=False)The starter uses a tiny hand-crafted ratings table and a single-shot user-based collaborative filter; it contains no conversational/dialogue handling, no session context, no cold-start logic, no evaluation metrics, and is too small to support realistic performance claims or production deployment.
Proposed extension: capture turn-level feedback in a chat UI, use session features to re-rank candidates from a collaborative filter, and record interaction logs for offline evaluation and A/B testing.
This is a potential application pathway, not a delivered product. The supplied starter does not implement this service or validate it with real users.
Networkers Home runs this topic inside its AI Engineer Course, with placement support and hands-on labs.