Install
openclaw skills install @crawlora-org/retail-assortment-gap-analysisCompare competing retail assortments through Crawlora catalogs. Use to find observed gaps in categories, brands, product attributes, variants, and price bands, with explicit catalog coverage and product-matching evidence.
openclaw skills install @crawlora-org/retail-assortment-gap-analysisCompare defined category samples or complete collections and identify evidence-backed assortment gaps. Keep a product absent from the collected sample distinct from one confirmed absent from a fully enumerated catalog.
Set CRAWLORA_API_KEY to your key from crawlora.net.
Run the bundled scripts/crawlora.sh from this skill directory or by absolute
path. It sends x-api-key to https://api.crawlora.net/api/v1; keep the key in
the environment. Read reference/endpoints.md for the
selected endpoints, required parameters, limits, and response behavior.
Check the application code as well as HTTP status; successful payloads are
inside data. Stop on 401/403, back off on 429, and retry a transient
5xx once. A failed or partial fetch is not an empty market or catalog.
Bound requests to the user's scope and credit budget. For repeated collection,
save the query, source IDs, pagination progress, and retrieval timestamps with
the results so interrupted work can resume; do not create monitors implicitly.
/shopify/store, discover handles via
/shopify/collections, and enumerate /shopify/collections/{handle}/products.
/shopify/products provides the broader storefront catalog. Keep url fixed
across pages and detail calls. Use returned product handles for detail.
Classic transport does not support server-side sort/facets; do not pass
sortBy unless transport_mode is ssr_embedded and the reference permits it./target/categories, browse /target/category-products,
and retain returned dynamic filter option IDs. Preserve the same store_id
when supplied by the user for browsing and /target/product?tcin=... detail.
This skill has no Target store-discovery tool: report the default store context
if a verified ID is unavailable, rather than inventing a local store match./ikea/search finds seed products; fetch detail to take category keys from
its category paths for /ikea/category pagination and item numbers for detail.
Keep country and language fixed. Keyword search is a candidate sample,
not an exhaustive assortment even when its returned page is full.scripts/crawlora.sh /ikea/search q=desk country=us language=en size=10
scripts/crawlora.sh /target/categories
# For a user-selected Shopify store, use its URL unchanged through discovery:
# scripts/crawlora.sh /shopify/collections url="$STOREFRONT_URL" limit=50 page=1
Return a coverage ledger, comparable assortment matrix, and prioritized gap list. For each proposed gap show category/attribute, stores observed, product and variant counts, price basis, example source URLs/IDs, collection time, confidence, and what would validate demand. Explain whether evidence supports absence, out-of-stock, unknown coverage, or a taxonomy mismatch. Do not turn a snapshot into a trend; changes require comparable saved snapshots and the same collection scope.