01
Start with the decision surface
Write down where the recommendation appears, who or what receives it, which items are eligible, how quickly the system must respond, and which action should improve. A homepage module, a similar-item panel, a service-agent prompt, and a next-best-action workflow have different data and risk boundaries. Define the recommendation unit. It might be one item, an ordered list, a bundle, or a sequence. Record constraints such as stock, serviceability, location, age restriction, consent, freshness, contractual exclusions, and item availability. Apply hard eligibility rules before ranking so the model cannot rescue an ineligible item with a high score. Choose the decision owner and fallback before model selection. If the recommendation service is unavailable, the product still needs a valid response. Common fallbacks include popular eligible items, recent items, a curated list, or no recommendation at all.
02
Build a signal inventory
List each available signal with its grain, freshness, history, owner, and known bias. Interaction signals can include views, searches, clicks, saves, purchases, skips, hides, returns, and dwell time. Item signals can include category, brand, text, image features, price, age, and availability. Context signals can include time, location, device, channel, campaign, and the current session. Mark which signals are observable at serving time. A feature computed by tomorrow's aggregate job is training-only until the serving path can produce it. Online-offline skew, where training features and serving features come from different code paths, is one of the most common causes of a model that evaluates well and performs poorly. Prefer one feature definition with two execution paths, and test those paths for equality. Separate an observed preference from an exposure effect. A user cannot click an item that was never shown. Logged data therefore reflects the behavior of the previous ranking policy. Popular items often receive more exposure and then appear more relevant in later training data. Record impression position and the policy that produced it when possible. Review privacy and retention at the signal level. A useful feature still needs a lawful purpose, an access boundary, and a deletion path. Do not infer sensitive characteristics unless the product, policy, and review process explicitly support that use.
03
Choose a hybrid pattern
Weighted scoring combines normalized scores from several recommenders. For example, a final score can combine collaborative similarity, content similarity, popularity, and a freshness signal. The approach is easy to inspect, but only after scores are calibrated to comparable ranges. Fixed weights are useful as a baseline. Learned weights require a training target and the same leakage controls as any ranking model. Switching selects a recommender according to the evidence available. A new visitor may receive popular eligible items. A visitor with a current query may receive lexical or semantic matches. A known customer with enough interactions may receive collaborative candidates. Make every switch condition observable so the team can measure which path handled each request. Candidate generation and ranking uses several methods to retrieve a broad set, merges and deduplicates the candidates, and applies a separate ranker. This pattern separates recall from final ordering. It also makes candidate-source coverage visible. Keep the source and original score for each candidate so ranking failures can be traced. Feature augmentation uses the output of one method as an input to another. Content similarity, co-occurrence, popularity, or a semantic score can become ranker features. This can be effective, but it increases the need for versioned features and online-offline consistency. Weighted scoring: Simple to inspect and tune; Scores need calibration across sources. Switching: Clear behavior per context; Switch conditions can hide weak segments. Candidate generation plus ranking: Recall and ordering improve independently; More components to version and monitor. Feature augmentation: Uses existing signals inside one ranker; Online-offline consistency burden.
04
Build baselines before a hybrid model
Start with the smallest systems that can answer the decision. Useful baselines include popular eligible items, recent items, content similarity, item-to-item co-occurrence, and a simple collaborative filter. A baseline establishes whether the data and evaluation set contain a usable signal. Use a time-based split. Training on future interactions can leak later preferences, catalog changes, or exposure into the evaluation period. Reproduce the item catalog and eligibility rules as they existed at the evaluation cutoff. Exclude a user only when the live surface would also exclude that user. Test cold-start segments separately. New users, new items, sparse categories, anonymous sessions, and returning customers can behave differently. An overall mean can hide a hybrid system that improves one segment and harms another.
05
Evaluate ranking and product behavior
Offline measures should match the surface. Recall at k asks whether relevant items reached the candidate set. Precision at k measures how many returned items were relevant. Mean reciprocal rank rewards putting the first relevant result early. Normalized discounted cumulative gain accounts for graded relevance and position. Choose k from the surface. A five-slot module should be judged at k of five, not fifty. Report the full curve when space allows. A system that wins at k of five and loses at k of ten tells you something about its ranking quality that a single number hides. Also measure coverage, concentration, novelty, diversity, calibration, and constraint violations. These measures describe different product properties. More diversity is not automatically better. A replacement-parts recommender may value compatibility and precision over novelty. A discovery surface may need broader catalog coverage. Build the relevance set from the best available evidence. Historical clicks are convenient but biased by exposure and position. Purchases are stronger for some surfaces but sparse and delayed. Human judgments can cover rare queries and policy cases, but judges need a clear rubric. Use several evidence types when one label cannot represent the decision.
06
Run an online experiment
An offline gain does not prove a customer or business gain. Define the experiment unit, allocation method, primary outcome, guardrails, minimum duration, and stopping rule before launch. Depending on the surface, measures can include click-through, conversion, revenue per session, qualified lead rate, hide rate, return rate, latency, coverage, item concentration, and support contacts. Run an A/A test first, where both groups receive the same system. It validates the assignment, logging, and analysis path before any real change ships. Then check the sample ratio mismatch: if the observed allocation differs from the planned one beyond chance, the experiment machinery is broken and its results cannot be interpreted. Set the duration to cover at least one full business cycle. Weekly seasonality in traffic and catalog state can make a three-day test report whatever those days happened to contain. Check interference. Recommendations can change inventory, seller exposure, and what later users see. A user-level test may still have marketplace or catalog effects. Repeated exposure and novelty can also make an early result differ from the steady state. Segment results using categories chosen before the test. Useful segments include new and returning users, sparse and dense profiles, channel, geography, and inventory condition. Treat exploratory slices as clues for a later test, not as proof.
07
Design the recommendation request path
A live request normally resolves identity or session context, retrieves eligible candidates, computes features, ranks candidates, applies business rules, returns a response, and records the decision. Give each stage a time budget. Cache only when the catalog, consent, and freshness rules allow it. Resolve identity and session context: 20 ms. Retrieve eligible candidates: 60 ms. Compute or fetch features: 40 ms. Rank candidates: 40 ms. Apply rules and compose the response: 20 ms. These numbers are a starting example for a 250 millisecond 95th-percentile budget, leaving headroom for network and serialization. Each stage needs its own budget, owner, and timeout, and the sum must fit inside the caller's deadline with margin. Version the model, features, candidate generators, rules, catalog snapshot, and experiment assignment. Log enough context to reproduce a disputed recommendation without storing unnecessary personal data. Protect the logging path from becoming a new source of sensitive-data exposure. Keep deterministic fallbacks for missing profiles, empty candidate sets, feature-service failure, ranker timeout, and rule-engine failure. Decide whether a partial response is safe. A valid empty state is better than an ungoverned recommendation.
08
Monitor the complete system
Monitor data freshness, feature nulls, candidate coverage, candidate-source mix, score distribution, response latency, error rate, fallback rate, item concentration, and outcome by segment. Add alerts for a sudden collapse in eligible items or a single source taking over the result set. Watch for the failures that do not look like model problems: Model drift is only one failure class. Catalog changes, tracking outages, delayed events, new policies, missing prices, and broken availability feeds can damage the decision without changing model weights. Place controls at the data, candidate, ranking, rule, and response boundaries. Review performance with the product and operating owner. A recommendation system changes exposure. The owner should be able to explain the intended outcome, the protected constraints, the fallback, and the review process.
- A catalog feed outage shrinks the eligible set.
- A tracking outage starves recent-interaction features.
- A price or availability lag recommends items that cannot be sold.
- A candidate-source collapse concentrates results in one generator.
- A logging change breaks the join between impressions and outcomes.
09
Use a release readiness checklist
The strongest hybrid system is the smallest design that improves a known failure and remains understandable to the people who operate it.
- The decision surface, eligible set, owner, and latency budget are documented.
- Every signal has a source, grain, freshness expectation, and privacy boundary.
- Training and serving features are tested for equality.
- Baselines and time-based evaluation results are reproducible.
- Cold-start and sparse segments have an explicit path.
- Hard rules run before or after ranking as designed and have tests.
- The online experiment has a primary measure and guardrails.
- An A/A test has validated the experiment machinery.
- Each decision records model, feature, rule, catalog, and experiment versions.
- Empty, timeout, and dependency-failure paths return a safe response.
- Monitoring covers inputs, candidates, ranking, rules, latency, and outcomes.
10
Related BluePi work
Where to read next on the same subject.