How to Run a TURF Analysis: Step by Step
Before You Start
TURF analysis requires individual-level preference data. You can't run it on aggregated popularity percentages or average ratings. You need to know, for each respondent, which items they find acceptable. This section walks through every step from data collection to final output.
The process takes 1-3 weeks depending on sample recruitment speed. The analysis itself runs in seconds once the data is ready.
Step 1: Define Your Items and Constraints
List Your Items
Identify the full set of items you're evaluating. These could be product flavors, features, menu items, advertising messages, media channels, or anything else where you're selecting a subset.
Practical range: 8-40 items. Below 8, the combinatorics are simple enough to evaluate manually. Above 40, computation time increases significantly (though heuristic algorithms can handle it).
Set Your Portfolio Constraint
How many items can you offer? This is driven by business realities:
- Shelf facings allocated by the retailer
- Manufacturing line capacity
- Engineering sprints available this quarter
- Menu board space
If you don't have a fixed constraint, TURF will show you optimal combinations at every portfolio size (1, 2, 3... up to N), and you can find the inflection point where adding another item yields diminishing returns.
Identify Lock-Ins and Lock-Outs
Some items must stay regardless of TURF results (your flagship product, a contractually required option). Others can't be included (discontinued, out of stock, regulatory issues). Flag these before running the analysis. Most TURF tools support "must include" and "must exclude" constraints.
Step 2: Collect Preference Data
You need to know, per respondent, which items they'd accept. Three approaches:
Option A: Binary Acceptance Survey (Simplest)
Show each item and ask: "Would you buy/choose/use this?" Yes / Maybe / No.
For TURF, define your acceptance threshold:
- Strict: Only "Yes" counts as accepted
- Moderate: "Yes" + "Maybe" count
- Broad: Everything except "No" counts
The strict threshold produces more conservative reach estimates. The broad threshold inflates reach and reduces differentiation between combinations. Most practitioners use "Yes" only or "Yes + Maybe" depending on how high the stakes are.
Survey structure: Show all items in randomized order. Each item gets its own screen or row. Include a brief description and, for physical products, an image.
Sample size: 200-400 respondents from your target audience.
Option B: MaxDiff + Threshold (Richer Data)
Run a MaxDiff study to get utility scores for each item, then convert to binary acceptance.
Conversion method: For each respondent, mark their top X items (by individual-level utility score) as "accepted." Common thresholds: top 30%, top 5 items, or above-average utility.
Advantage: MaxDiff produces more nuanced preference data than binary Yes/No, which can reveal subtle differences in overlap patterns. Also, you get a rank order for free alongside the TURF data.
Disadvantage: Requires larger samples (300-400) and MaxDiff-capable software. The threshold choice introduces a judgment call.
Option C: Purchase/Behavioral Data (Most Valid)
Use transaction records, usage logs, or clickstream data to identify which items each customer has engaged with.
How: For each customer, mark items they've purchased (or used, or clicked) in the past N months as "accepted."
Advantage: Based on actual behavior, not stated preference. Eliminates the gap between "I would buy this" and "I actually bought this."
Disadvantage: Only works for existing items. New products or concepts that haven't launched can't appear in the data.
Step 3: Prepare the Data Matrix
Your data should look like this:
| Respondent | Item A | Item B | Item C | Item D | ... |
|---|---|---|---|---|---|
| R001 | 1 | 0 | 1 | 0 | ... |
| R002 | 0 | 1 | 1 | 1 | ... |
| R003 | 1 | 1 | 0 | 0 | ... |
Each row is a respondent. Each column is an item. 1 = accepted, 0 = not accepted.
If you used MaxDiff + threshold, convert utility scores to 1/0 using your chosen threshold before creating this matrix.
Step 4: Run the Analysis
Using Survey Platform Tools
Platforms with built-in TURF (including Quali-Fi) accept the preference data and run the algorithm directly. You specify:
- Target portfolio sizes to evaluate (e.g., 3 through 10)
- Lock-in and lock-out items
- Whether to evaluate all combinations or use a heuristic (for large item sets)
The tool returns optimal combinations, reach, and frequency at each portfolio size.
Using R
The tuRf and support.CEs packages handle TURF computation. Input your binary matrix, specify portfolio sizes, and the function evaluates combinations.
Using Excel
For small item sets (under 15), you can build TURF in Excel using combinations formulas and COUNTIF functions. This is feasible for one-off analyses but becomes unwieldy for larger sets. For 15 items choosing 5, you'd need to evaluate 3,003 combinations. For 20 choosing 6, it's 38,760.
Using Python
Libraries like itertools for combination generation plus numpy for matrix operations make TURF straightforward in Python. Calculate reach for each combination as the percentage of rows where at least one selected column equals 1.
Step 5: Interpret the Results
The Reach Curve
Plot portfolio size on the x-axis and reach on the y-axis. You'll see an S-curve that rises steeply at first and flattens as you add more items.
The key decision point is the "elbow" where incremental reach drops below a meaningful threshold. If going from 6 to 7 items adds only 1.5% reach, but going from 5 to 6 adds 4%, the natural portfolio size is 6.
Incremental Reach Table
For each portfolio size, TURF shows the optimal combination and the incremental reach each item adds:
| Added Item | Cumulative Reach | Incremental Reach |
|---|---|---|
| Chocolate | 62% | 62% |
| + Strawberry | 78% | +16% |
| + Mint | 87% | +9% |
| + Mango | 92% | +5% |
| + Cucumber | 94% | +2% |
The first item has the highest individual acceptance. Each subsequent item adds the most incremental reach given the items already selected. Notice this is a greedy algorithm: each addition is optimal given the current set, but the full combination of 5 might not be the globally optimal 5 (for small item sets, exact optimization checks all combinations; for large sets, greedy is a close approximation).
Frequency Analysis
Check the average frequency (number of accepted items per person) for your chosen portfolio. If reach is 92% but frequency is 1.1, most guests have exactly one option. If frequency is 2.8, guests have variety. The right target depends on your context:
- One-time purchase (e.g., a phone case): Frequency of 1+ is fine
- Repeat purchase (e.g., restaurant, subscription box): Target frequency of 2-3+
- Variety seeking (e.g., snacks, beverages): Target frequency of 3+
Sensitivity Analysis
Run TURF with different acceptance thresholds (strict vs. moderate) and compare the optimal portfolios. If the same items appear across thresholds, you have a strong recommendation. If the portfolio changes significantly, the recommendation is sensitive to how you define "acceptable."
Step 6: Apply Business Constraints
TURF output is a starting point, not a final answer. Overlay:
- Margin data: Is the TURF-optimal item profitable enough to produce?
- Operational constraints: Can the kitchen/factory/engineering team support this item?
- Brand fit: Does this item align with brand positioning?
- Competitive response: Will this portfolio leave you vulnerable to competitor moves?
If a constraint forces you to swap out a TURF-recommended item, re-run the analysis with that item locked out to find the next-best alternative.
Frequently Asked Questions
How long does TURF analysis take to run?
The computation itself takes seconds for item sets under 30. Data collection (surveying 300-400 respondents) takes 1-2 weeks. Total project timeline is typically 2-3 weeks.
Can I run TURF on existing customer data without a new survey?
Yes, if you have individual-level purchase or usage data. Transaction logs, CRM data, or product usage analytics can serve as the input matrix. This is the fastest and most behaviorally valid approach.
What happens if two items always appear together in the optimal portfolio?
Those items serve different audiences and complement each other well. If you must choose between them (further constraint), check which one adds more incremental reach when the other is locked out.
Related Guides
- TURF Analysis: Complete Guide -- Full methodology overview
- How to Interpret TURF Results -- Reading reach curves and optimizing portfolios
- TURF Analysis for Product Development -- CPG and SaaS applications
- TURF Analysis for Menu Optimization -- Restaurant and food service
- MaxDiff Analysis -- Collecting preference data for TURF input
- Sample Size Calculator -- Plan your data collection sample
Run TURF analysis on your survey data -- try Quali-Fi free for 14 days.