Skip to main content
These are real specs (lightly trimmed) showing how detection, parsing, and promotion steps fit together. Refer back to the promotion-steps catalog for each step.

Example 1 — Polaris SAV archive

A .sav archive is a Polaris SQL dump. The spec extracts SQL tables, then runs one promotion per output dataset. Two are shown: brands and inventory_items.
What to notice
  • Detection gates on the Polaris data source and a .sav filename.
  • The brands promotion ends with generate_id then id_mapping_output — publishing a brands code→id mapping that other promotions can resolve.
  • The inventory_items promotion chains sequential_joins to gather fields across tables, resolves the variant and shop via id_mapping_join, maps the size label to a taxonomy id, and finally generates its own id.

Example 2 — Ginkoia tickets (Excel)

An Excel export of payment-tender lines. Note the section_context parser option and the update_columns enrichment promotion.
What to notice
  • Detection combines a source-code gate, a filename regex, and a header_contains check on the expected columns.
  • section_context carries the “Magasin” / “Poste” section headers down onto each row.
  • The customers promotion is a targeted enrichment: update_columns limits the upsert to postal_code (and updated_at), so it backfills postal codes without overwriting the rest of an existing customer row. The two filter steps ensure only valid, resolvable rows are written.
Real seed specs live under scripts/db/seeds/seed-data/ingestion-specs/<system>/. New specs are validated at seed time (including the data_source codes).