Extraction schemas
Each schema is a JSON file in config/schemas/. Add or edit a file to change
what the LLM returns - no code changes, and edits are picked up on the next job.
General page (default.json)
Site-agnostic summary and entity extraction for any web page.
Instructions sent to the model:
Extract a factual description of this single web page using ONLY the supplied content. Do not speculate or use outside knowledge. Leave a field null when the page does not state it.
Fields:
-
page_type
string
required
What kind of page this is.
-
title
string
required
Clean human title of the page.
-
summary
string
required
2-4 sentence factual summary of the page.
-
main_topics
string[]
Up to 8 topics the page covers.
-
entities
string[]
Named people, organisations, products or places mentioned.
-
author
string
Author name if the page states one.
-
published_date
string
Publication date in ISO format if stated.
-
contact_email
string
Contact email shown on the page.
-
contact_phone
string
Contact phone number shown on the page.
-
call_to_action
string
Primary action the page asks the visitor to take.
-
primary_image
string
URL of the main product/page image.
-
images
string[]
All product image URLs shown on this page.
-
keywords
string[]
Up to 10 salient keywords.
-
confidence
number
Your confidence in this extraction, 0 to 1.
Ecommerce page (ecommerce.json)
Product / collection / store information for online shops.
Instructions sent to the model:
You are extracting structured data from one page of an online store. Use ONLY facts present in the supplied page content - never invent prices, SKUs or stock status. Prefer values from the JSON-LD block when it is present, since it is authoritative. If the page is not a product page, still fill page_type and the general fields and leave product fields null. Prices must be numbers only, with the currency reported separately in currency.
Fields:
-
page_type
string
required
What kind of page this is.
-
title
string
required
Clean human title of the page or product, without site-name suffixes.
-
summary
string
2-3 sentence factual summary of what this page offers.
-
brand
string
Brand or vendor name if stated.
-
category
string
Product category or collection this page belongs to.
-
price
number
Current selling price as a number, no currency symbol or separators.
-
original_price
number
Pre-discount / compare-at price if a discount is shown.
-
currency
string
Currency code such as PKR, USD, EUR.
-
availability
string
Stock status.
-
sku
string
SKU, product code or model number.
-
rating
number
Average customer rating if shown.
-
review_count
integer
Number of customer reviews if shown.
-
primary_image
string
URL of the main product/page image.
-
images
string[]
All product image URLs shown on this page.
-
variants
string[]
Available options such as sizes, colours or capacities.
-
variants_in_stock
integer
How many variants are purchasable (multi-variant products only).
-
variants_total
integer
Total number of variants offered.
-
key_features
string[]
Up to 8 concrete product features or specifications.
-
materials
string[]
Materials or ingredients if listed.
-
products
object[]
For collection/category pages, the products listed on this page.
-
contact_email
string
Contact email shown on the page.
-
contact_phone
string
Contact phone number shown on the page.
-
shipping_info
string
Shipping or delivery terms stated on the page.
-
return_policy
string
Return / refund terms stated on the page.
-
keywords
string[]
Up to 10 salient keywords describing the page.
-
confidence
number
Your confidence in this extraction, 0 to 1.
RoaCore product (bilingual) (roa_panel.json)
Field names match RoaCore's ProductCreateDto (Models/DTOs/ProductDTO.cs) directly, so the callback payload maps onto it with no translation layer. Internal foreign keys the LLM cannot know (CategoryId, GenderId, SizeChartId, DesignerId) are deliberately excluded - the designer sets those during their confirm step.
Instructions sent to the model:
Extract product information from this page for a bilingual (English/Arabic) fashion/product marketplace. Use ONLY facts present on the page - never invent a price, SKU, material or stock status. For every *_ar field: if the page already shows Arabic text, use it verbatim; otherwise translate the corresponding *_en value into natural, market-appropriate Arabic - do not leave an *_ar field empty just because the source page is English-only. If a field is genuinely not stated anywhere on the page (e.g. no country of origin mentioned), leave it null rather than guessing.
Fields:
-
page_type
string
required
What kind of page this is.
-
name_en
string
required
Product name in English, without site-name suffixes.
-
name_ar
string
required
Product name in Arabic.
-
desc_en
string
Product description in English, 2-4 factual sentences.
-
desc_ar
string
Product description in Arabic, 2-4 factual sentences.
-
amount
number
Current selling price as a number, no currency symbol or separators.
-
currency
string
Currency code such as SAR, PKR, USD.
-
sku
string
SKU, product code or model number.
-
material_en
string
Primary material, in English (e.g. 'Cotton', 'Sterling silver').
-
material_ar
string
Primary material, in Arabic.
-
care_instructions_en
string
Care/washing instructions, in English, if stated.
-
care_instructions_ar
string
Care/washing instructions, in Arabic, if stated.
-
country_of_origin_en
string
Country of origin/manufacture, in English, if stated.
-
country_of_origin_ar
string
Country of origin/manufacture, in Arabic, if stated.
-
availability
string
Stock status.
-
thumb_url
string
URL of the main/thumbnail product image.
-
images
string[]
All product image URLs shown on this page.
-
variants
string[]
Available options such as sizes or colours (e.g. 'Red / M').
-
gender_hint_en
string
Who the product is for, in English, if stated or clearly implied (e.g. 'Women', 'Men', 'Unisex', 'Kids') - RoaCore maps this to GenderId itself.
-
category_hint_en
string
The product's category/type in plain English (e.g. 'Dress', 'Earrings') - RoaCore maps this to CategoryId itself.