InfoExtractor

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.

14 fields
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:

Ecommerce page (ecommerce.json)

Product / collection / store information for online shops.

26 fields
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:

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.

20 fields
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: