AI Skill Report Card
Cataloging Quilt Product Listings
Quick Start14 / 15
Given raw scraped text like:
-21% Quick View American Radiance 02910L $ 29.98 Original price was: $ 29.98.$ 23.76Current price is: $ 23.76. Add to cart
Extract into structured format:
JSON{ "name": "American Radiance", "sku": "02910L", "discount_pct": 21, "original_price": 29.98, "sale_price": 23.76 }
Recommendation▾
Add an example showing an anomaly case (e.g., mismatched discount math or missing SKU) and the expected flagged output, since Step 5 mentions this but no example demonstrates it
Workflow13 / 15
Progress:
- Step 1: Split raw text into per-product chunks (delimiter: repeating
-NN% Quick Viewpattern) - Step 2: For each chunk, extract fields via pattern matching
- Step 3: Validate discount math (
original * (1 - discount/100) ≈ sale_price, tolerance ±$0.02) - Step 4: Normalize output (table, JSON, or CSV per user request)
- Step 5: Flag anomalies (missing SKU, mismatched discount math, duplicate SKUs)
Extraction pattern per product:
- Discount: leading
-NN% - Name + SKU: text between "Quick View" and first
$— SKU is the trailing alphanumeric token (e.g.,02910L,3452T,03858D); everything before it is the product name - Original price: first
$ XX.XXbefore "Original price was" - Sale price: value after "Current price is:"
- Terminator: "Add to cart" marks end of record
Recommendation▾
Include a 'bad output' example to contrast correct vs incorrect extraction (e.g., merging two products or misplacing the SKU) to reinforce the pitfalls section
Examples15 / 20
Example 1:
Input: -46% Quick View Autumn Layers 03858D $ 29.98 Original price was: $ 29.98.$ 16.20Current price is: $ 16.20. Add to cart
Output:
| Name | SKU | Discount | Original | Sale |
|---|---|---|---|---|
| Autumn Layers | 03858D | 46% | $29.98 | $16.20 |
Example 2 (batch, CSV): Input: full pasted block of 12 products (as in prompt) Output:
CSVname,sku,discount_pct,original_price,sale_price American Radiance,02910L,21,29.98,23.76 American Whirl,3452T,42,29.98,17.28 Americana Starflower,03244T,32,29.98,20.52 Angel Garland,3576A,42,29.98,17.28 Autumn Bloom,02557L,21,29.99,23.76 Autumn Embrace,3884T,42,29.98,17.28 Autumn Layers,03858D,46,29.98,16.20 Autumn Leaves,3732T,42,29.98,17.28 Autumn Magic,3505T,42,29.98,17.28 Autumn Memories,03819T,24,29.98,22.68 Autumn Wishes,3757T,42,29.98,17.28 Banner Petals,03370T,39,29.98,18.36
Recommendation▾
The skill is narrowly scoped to a very specific niche (quilt/textile shop listings) — consider generalizing the pattern-matching rules to broader e-commerce scraped text or explicitly justify the narrow scope for reuse value
Best Practices
- Preserve SKU formatting exactly (leading zeros matter, e.g.,
02910Lvs3452T) - Keep product names title-cased as given; don't infer categories unless asked
- Sort output alphabetically by name only if user doesn't specify order (source order is otherwise default)
- When original prices vary slightly (e.g., $29.98 vs $29.99), preserve the exact value — don't assume a typo
- If user wants a human-readable catalog instead of raw data, group by discount tier or theme (e.g., "Autumn", "Angel/Holiday") for readability
Common Pitfalls
- Don't merge adjacent products if name text happens to contain numbers (SKU is always the last token before the
$) - Don't recompute discount_pct from prices and overwrite the stated value — report both if they conflict, don't silently "correct"
- Don't drop products with $0 or missing discount (some listings omit the
-NN%tag) — treat as 0% / full price - Watch for SKU pattern variance (letter suffix varies: L, T, D, A) — don't assume a fixed format/length