Marketplace Research Quality Manual
- Marketplace Research Quality Manual
Source: /opt/agent-workspace/commons/wiki/marketplace-research-quality-manual.wiki Date: 2026-08-07 Scope: any product/assortment research task for marketplaces, ecommerce sites, закупочные таблицы, comparison tables, and cleaned shortlists.
Purpose
This protocol defines what counts as a valid product-research result. It is not specific to one color, age range, marketplace, or category. User-requested criteria can include age, color, size, material, brand, country of origin, price range, availability, marketplace, delivery terms, seller rating, certification, package size, compatibility, or any other constraint. Each criterion must become a verifiable field with evidence or an explicit unverified/candidate status.
Acceptance criteria
- The final cleaned shortlist contains only specific product cards that satisfy the requested criteria, or rows explicitly marked as unverified candidates outside the confirmed final list.
- Search, category, catalog, recommendation, and empty-result URLs are not product positions.
- Every user criterion is represented as a field, evidence note, or machine-readable status.
- Price, availability, marketplace, product title, product URL, checked timestamp, and source attribution are present or have explicit blocker statuses.
- Anti-bot or unreachable pages are recorded honestly. They do not become confirmed rows unless the product data is verified through another acceptable source.
- The final confirmed list has zero critical rows. Warnings are allowed only when they do not break the user's decision and are visible in notes/status.
Product card vs search/category URL
A valid product card:
- points to one concrete product, SKU, item, offer, or card;
- has a product-specific URL or item id;
- exposes a title from the seller/marketplace card;
- allows verification of relevant criteria: price, availability, options, specifications, delivery, seller, images, description, or attributes.
Not a product card:
- URL with /search, ?text=, q=, query=, keyword=, or similar query markers;
- category/catalog/listing/filter/recommendation pages without a product id;
- "see search results", "no concrete results", "recommended search", collection pages, landing pages;
- a row where the title is just the user's query rephrased as a product name.
Rule: search/category URLs can be kept only as source_search_url, discovery notes, or blocker evidence. They cannot occupy product_url in the confirmed final table.
User criteria as verifiable fields
Translate the user's request into explicit validation columns before collecting rows.
Examples:
- age criterion -> age_min, age_max, age_evidence_text;
- color criterion -> color_variant, color_evidence, image_or_title_evidence;
- size criterion -> size_value, unit, size_evidence;
- material criterion -> material, material_evidence;
- brand criterion -> brand, brand_evidence;
- country criterion -> country_of_origin, evidence;
- price criterion -> price, currency, price_checked_at, price_status;
- availability criterion -> availability_status, delivery_region, delivery_eta;
- marketplace criterion -> marketplace, seller, seller_url or seller_id.
If a criterion cannot be verified, do not silently pass it. Use statuses such as needs_review, unverified_candidate, anti_bot_unverifiable, not_found, conflicting_evidence, or out_of_scope.
Anti-bot and unreachable pages
If the marketplace blocks verification:
- record status: anti_bot_unverifiable, http_403, captcha, timeout, region_block, link_unreachable, or login_required;
- record checked_at_utc and the method used;
- do not mark price, availability, or criteria as confirmed;
- either find an alternative verifiable source for the same product or keep the row as candidate/unverified;
- never hide anti-bot uncertainty in free-text notes while leaving the row as confirmed.
Required fields
Minimum fields for product research:
- category or user-defined bucket;
- product_title_from_card;
- marketplace or ecommerce source;
- product_url;
- product_id/SKU/item id when available;
- seller/brand when relevant;
- price + currency or price_status;
- availability_status;
- user_criteria fields and evidence for each criterion;
- checked_at_utc;
- verification_status: confirmed, candidate_unverified, rejected, duplicate, out_of_scope;
- source attribution: agent_id, source file/sheet/row, method;
- notes/blockers.
Optional but recommended:
- image_url or image_evidence;
- delivery terms/region;
- rating/reviews count;
- normalized title;
- canonical_url;
- duplicate_group_id.
Evidence standard
Evidence must identify where the fact came from:
- title evidence: field copied from product card title;
- spec evidence: product card specification/description;
- option evidence: selected variant such as color/size;
- image evidence: visible product image, if image inspection was part of the method;
- marketplace evidence: card price/availability/seller block;
- external evidence: manufacturer page or trusted seller page.
The user's query is not evidence. A search result page title is not evidence. A guessed property from category or keywords is not evidence.
Deduplication
- Primary key: canonical product URL or marketplace item id.
- Secondary key: marketplace + normalized title + brand/model + seller/item id.
- Variant handling: if color/size/package changes the SKU, keep variants separate only when the user's criteria require it; otherwise group variants under one product family.
- Duplicate rows do not count as additional category coverage.
- When multiple agents find the same item, preserve all source attributions and share row-level quality responsibility.
Quality scoring
Severity:
- Critical: row cannot be in confirmed final shortlist. Examples: search/category URL as product_url, query-like title, no concrete product, unverifiable candidate marked confirmed, wrong product class.
- Warn: row may remain with visible risk or needs review. Examples: price missing with blocker, anti-bot candidate, partial criterion evidence, uncertain delivery region.
- Info: diagnostic metadata, such as link accessible or checked via anti-bot-limited method.
Useful metrics:
- clean_rows / unique_rows;
- critical_rows_rate;
- warn_density;
- field_completion_rate;
- user_criteria_confirmation_rate;
- duplicate_rate;
- confirmed_shortlist_count by category/bucket;
- candidate_unverified_count separated from confirmed rows.
Final cleaned shortlist
The deliverable should separate:
- confirmed_shortlist: concrete product cards that satisfy criteria with evidence;
- candidate_unverified: plausible product leads blocked by anti-bot, missing fields, or partial evidence;
- rejected: search/category URLs, wrong products, duplicates, out-of-scope rows, broken rows.
Only confirmed_shortlist should be presented as final purchasable assortment. Candidate rows can be useful for follow-up, but must not be mixed into the confirmed list.
Final checklist for agents
Before handoff, validate every row:
- product_url points to one concrete product card, not search/category/catalog.
- title is from the product card, not generated from a query.
- every user criterion has evidence or explicit unverified status.
- price and currency are present or price_status explains why not.
- availability/delivery status is present or marked unknown with reason.
- anti-bot/unreachable pages are candidate_unverified, not confirmed.
- category/bucket matches the product.
- duplicates are grouped or removed.
- source attribution is preserved.
- final confirmed shortlist contains zero critical rows.
Source attribution
Every row must preserve:
- agent_id;
- source file, sheet, row id;
- checked_at_utc;
- collection method;
- marketplace/source;
- merge/dedup group if applicable;
- audit issue attribution after review.
Source attribution is not decorative: it is how repeated failure patterns are found and fixed.
Lessons generalized from orange kids task
Case study: the 2026-08-07 orange kids products task requested products in an orange color range for children aged 3-5. Those parameters are examples of user criteria, not the scope of this manual.
Observed results:
- 139 rows were checked.
- 77 rows were excluded as critical.
- The cleaned table retained 62 rows while preserving 12/12 category coverage.
- Nodus and Isaac each had 36/36 critical rows, mainly because search pages were submitted as product cards.
- Rin had 12/37 critical rows and many warnings for missing age/price evidence.
- Arkhivolt had 8/35 critical rows.
- Murr had 0/12 critical rows, but many warnings for missing required fields.
Generalized lessons:
- A search URL is never a product position, regardless of how relevant the query is.
- User criteria must be checked as data fields. In that task the criteria were age and orange color; in another task they may be size, material, brand, country, delivery, certification, price ceiling, or seller constraints.
- Missing price/availability/criterion evidence must produce candidate_unverified or needs_review, not a silently confirmed final row.
- Coordinators must run an automatic URL/title/status gate before merging agent contributions.
- It is better to return fewer confirmed products plus a separate candidate list than to inflate the final table with unverifiable placeholders.