Methodology
Last updated 2026-04-27
Every ranking and metric on UnitCheck is calculated from publicly documented formulas. This page is the open recipe — how we actually work, explained in plain English.
How we calculate $/g protein
The $/g protein metric is UnitCheck's core differentiator. Here's the formula in plain terms:
Divide the total price by the total grams of protein in the container.
price per gram of protein = total price ÷ (grams of protein per serving × servings per container)
Example: A $39.99 tub with 25 grams of protein per serving and 76 servings per container contains 1,900 grams of total protein.
$39.99 ÷ 1,900g = $0.021 per gram of protein
All prices are stored internally as integer cents and divided at display time — never as floats, never stored rounded. This ensures consistency even when comparing thousands of products.
Why this metric? Because $/g powder (the metric most retailers and competitors use) is misleading. A 5lb tub of whey concentrate at 20g protein per serving looks cheaper per pound than a 5lb tub of whey isolate at 25g per serving — but the isolate gives you more actual protein. **$/g protein is the honest metric.** It's what you're actually buying.
How we calculate $/serving and $/g powder
These secondary metrics exist because some shoppers think in different units:
Price per serving:
price per serving = total price ÷ servings per container
Price per gram of powder:
price per gram of powder = total price ÷ total weight in grams
Both are calculated the same way as $/g protein — as integer cents, divided at display time.
Best Value score
The "Best Value" sort combines $/g protein with quality signals into a single 0–100 score. It's a starting point, not the truth — different shoppers value different things.
The formula:
best_value_score =
(1 ÷ price_per_g_protein_cents) × 10000 # cheaper is better
× log10(review_count + 1) # more reviews = more trustworthy
× (rating ÷ 5) # higher rating = better
× prime_bonus # 1.05 if Prime-eligible, else 1.00
What each part does:
- Price (reciprocal): We flip cheaper-is-better to lower-is-worse so all factors point the same direction (higher = better).
- Review count (logarithmic): A product with 10,000 reviews isn't 100× better-signaled than one with 100. Log compression captures diminishing returns.
- Rating (linear): A 4.5-star product scores 90% as high as a 5-star product on this factor.
- Prime bonus: A small 5% boost if Prime-eligible, because convenience matters. It doesn't override unit-price differences.
Best Value is transparent so you can weight factors differently if you prefer. Select "$/g protein (cheapest first)" to ignore quality signals and sort by price alone.
How we extract product data
Every night, UnitCheck syncs with Amazon and extracts product information automatically:
- Search and fetch: We discover new products and re-fetch pricing on bestsellers.
- LLM parsing: We use Claude (an AI language model) to read the product title, description, and nutrition facts, then extract structured data: protein per serving, servings per container, total weight, dietary flags, and more.
- Confidence scoring: Claude reports how confident it is in the extraction (0.0–1.0). Extractions below 0.60 confidence are excluded from rankings. Extractions between 0.60–0.80 get re-parsed with a stronger model.
- Quality flagging: We apply automated rules to catch suspicious products — counterfeits, new listings with no reviews, suspicious pricing, and seller issues.
- Database write: Passing products are stored with their price, extracted data, and a timestamp of when we last checked.
LLM-driven means errors happen. We publish confidence scores so you can see how sure we are. Found an error? Email us at [email protected] with the product link, and we'll review and correct it.
Confidence and quality flags
Every extraction has a confidence score (0.0–1.0) that appears on product cards and detail pages.
| Confidence | Meaning | Display |
|---|---|---|
| ≥0.90 | We're very sure | No badge |
| 0.80–0.89 | We're fairly sure | No badge (flagged for periodic audit) |
| 0.60–0.79 | We're somewhat unsure | Not in default rankings; marked as "Low confidence" |
| <0.60 | We're not confident | Excluded; queued for manual review |
Beyond confidence, we flag products with quality issues even if extraction is confident:
- Low review count — Fewer than 50 reviews means less signal. High counterfeit risk.
- Recently listed — Listed less than 30 days ago. Verify the seller.
- Price outlier — Unit price is less than 10% or more than 10× the category median. Suspicious.
- Below-average rating — Lower than 3.5 stars. Might be counterfeit or defective.
- Out of stock — Grayed out in leaderboards; excluded from default sorts.
- Stale data — Not checked in more than 72 hours. Price may have changed.
Flagged products still appear on the site (with badges) unless they're extreme outliers. You can always filter to include or exclude them.
Last synced timestamp
Every price on UnitCheck has a last_synced_at timestamp. This is when our system last pulled the price from Amazon.
Amazon's price can change between our sync and your click. We sync pricing every 6 hours for bestsellers and every 72 hours for slower-moving products. Always verify on Amazon's page before purchasing. The timestamp is honest about data freshness — use it to judge whether the price is current.
Sources and data
- Pricing and product details: Amazon Creators API (real-time, every 6 hours for top sellers)
- Nutrition facts: Manufacturer-provided nutrition labels embedded in Amazon listings
- Ratings and review counts: Amazon's product pages
Read Amazon Associates Operating Agreement for terms on affiliate links and price display.
Changes to methodology
We publish every formula and rule change with a date and rationale. Check /changelog to see what's changed and why.
A formula change on UnitCheck is not a quiet backend tweak — it's a public event. When we improve how $/g protein is calculated (if we ever do), or adjust the Best Value weights, or change confidence thresholds, it lands in the changelog with a version number.
Questions or corrections
Found an error? Wrong extraction? Think a product should be excluded?
Email [email protected] with:
- Product link
- What you think is wrong
- (Optional) correction data
We read every email and review corrections carefully.