Data quality and warnings
Hilal is honest about uncertainty. Every search result carries a data-quality score and (when relevant) explicit warnings about which sub-scores fell back to fallback data.
In this guide:
- The data-quality score
- The badge colors
- Common warnings
- What to do when data quality is low
The data-quality score
Each search result includes a 0–100 data_quality score reflecting how much of the underlying data came from preferred sources vs. fallbacks.
| Score | Badge | What |
|---|---|---|
| 90–100 | 🟢 Green | All sub-scores from preferred sources. Trust the SellerScore. |
| 70–89 | 🟢 Green / 🟡 Yellow | One sub-score fell back to a fallback source. Mostly trustworthy. |
| 50–69 | 🟡 Yellow | Two sub-scores fell back, or a single critical one (margin) fell back. Verify before acting. |
| 30–49 | 🔴 Red | Multiple sub-scores fell back. The SellerScore is informational; treat as a hint, not a decision. |
| 0–29 | 🔴 Red | Most data is fallback. Don’t rely on the SellerScore at all. |
Common warnings
The result row surfaces specific warnings when sub-scores fall back. Hover or tap the data-quality badge to see them.
demand_sfr_unavailable
SFR (Brand Analytics) couldn’t be fetched for the product’s primary keyword. Demand sub-score uses BSR + Google Trends fallback.
Cause: SFR availability varies by marketplace and keyword popularity. Some keywords genuinely don’t have SFR.
Effect: Demand sub-score is approximate.
margin_cogs_estimated
The COGS estimate used the benchmark table because Crawlee/AliExpress data wasn’t available.
Cause: Crawlee is Coming-soon (Run 3). Today this warning fires on every search.
Effect: Margin sub-score uses a conservative category-typical COGS, not an actual supplier price.
trend_pytrends_outage
Google Trends was rate-limited or unreachable.
Cause: Pytrends is unauthenticated; Google occasionally rate-limits clients.
Effect: Trend and seasonality sub-scores fall back to a neutral 50.
cross_platform_disabled
Cross-platform sub-score is a placeholder (Crawlee not enabled).
Cause: Crawlee is Coming-soon.
Effect: Cross-platform sub-score is a neutral placeholder — present to keep the composite stable but not informative today.
fees_partial
Amazon Pricing API returned partial fee data (e.g., FBA fee but not referral fee).
Cause: Rare; typically a transient API issue.
Effect: Margin sub-score is partly estimated. Re-run the search later to refresh.
bsr_missing
BSR data unavailable for the product.
Cause: Very new listings sometimes lack BSR data.
Effect: Demand sub-score has reduced confidence. Often co-fires with demand_sfr_unavailable.
What to do when data quality is low
Low-stakes exploration: keep going
If you’re early-stage browsing, low data quality is fine. The SellerScore is still directionally useful as a sort key.
Decision-stakes: verify before acting
Before committing inventory dollars to a product:
- Open the product detail and read the score reasoning. The AI explicitly calls out which sub-scores it’s confident in. → Score reasoning
- Re-run the search. Some warnings (Trends outage, partial fees) clear on re-run.
- Cross-check the headline metrics in Hilal Software’s Inventory or Amazon fee analyzer.
Persistent warnings on a product you trust
Some products have structurally low data quality (small categories, unusual keywords). If you keep coming back to a product whose data-quality is yellow, look at the absolute metrics rather than the sub-scores: actual review counts, actual price, actual BSR. The SellerScore is approximate, but the underlying numbers are real.
Why we surface this rather than hide it
It would be tempting to compute a SellerScore from whatever data is available and present a single confident number. We don’t do that because:
- A confident-looking 80 that’s actually a 50 with high uncertainty is worse than a 50 with a yellow badge.
- Sellers commit real money based on these numbers; pretending the data is clean when it isn’t is an expensive failure mode.
- When you understand which sub-scores fell back, you know which independent verification to do.