Admin · System
Pipeline, ingestion and retrieval internals
Operational detail for whoever runs the observatory. Nothing here belongs in a client conversation — the analysis pages carry the evidence and its limits in the language a strategist needs.
Claims
Embedded chunks
Raw page captures
Graph relationships
Pipeline
How evidence gets here
1 · Source selection
Allowlisted first-party and sector-body domains only. The allowlist lives server-side in the capture function; arbitrary URLs are rejected before any fetch happens.
2 · Firecrawl capture
Read-only scraping of robots-permitted endpoints. Canonical URL, final URL, HTTP status, retrieval timestamp and SHA-256 content hash are all retained. No carts, forms, logins or paywalls, ever.
3 · Deduplication
Canonical URL and content hash are compared before anything is embedded. Two URLs serving identical bytes embed once.
4 · Chunking
Heading-aware chunks with section paths preserved, so a retrieved passage can be located in its document.
5 · Voyage embeddings
Generated server-side only. Every returned vector is dimension-checked before any content write; a short or malformed vector fails the whole job rather than half-writing it.
6 · Atomic write
Document and chunks are written in one transaction. A partial ingest is not a possible state.
7 · Claim extraction
Material statements become claims with a fixed status vocabulary and explicit source references.
8 · Graph
Entities are shared across markets and never duplicated. Edges are dataset-scoped and carry the claim that supports them.
9 · Retrieval
Query embedded with the same Voyage model, matched against dataset-scoped chunks, returned with provenance.
Vocabulary
What each verification status commits us to
- Verified · primary
- Established directly from a primary source or from our own reproducible measurement of it.
- Verified · independent
- Corroborated by an independent third party that is not the subject of the claim.
- Observed on retail surface
- Directly observed on a retail or DTC surface at a stated capture date. Factual about that surface at that moment — not a market-wide fact.
- Company claim
- Asserted by the subject company about itself. Never upgraded without independent corroboration.
- Analyst estimate
- Our own derived figure. The method is stated alongside it.
- Unresolved
- Sources conflict, or evidence is insufficient. Not to be presented as settled.
Known gaps
What this corpus cannot currently tell you
- No brand-level market share, either market. Production and export volumes exist; brand share does not. Every share figure in this category's public reporting is modelled, and none is ingested here.
- No Italian market metrics. The Italian dataset holds competitor and positioning evidence but no quantified category data. Italian views show insufficient-evidence states rather than borrowing Spanish numbers.
- No campaign or media-performance data. Communications analysis is limited to published first-party copy. Nothing in the corpus speaks to reach, spend or effect.
- DTC pricing is not shelf pricing. Price observations come from brand-owned storefronts. They are strong evidence of intended positioning and weak evidence of grocery reality, where the volume is.
- Longitudinal depth is one cycle for most brands. Catalogue deltas need two captures of the same brand. A single capture is a hypothesis; a structural pattern needs three agreeing cycles.
Open contradictions
Logged, not quietly resolved
The ANFACO functional-foods article (NEUROMICS cognitive-health research network) was captured but the extraction is dominated by cookie-consent boilerplate rather than article body. The page is ingested and searchable, but should not be treated as a reliable read of the research programme until re-captured.
The sustainable line is reachable at /marcas/consorcio-linea-sostenible/ in the 2026-08-02 sitemap and recorded, while the 2026-07-31 homepage recorded linked it as /marcas/consorcio-linea-eco/. Apparent rename from "Línea ECO" to "Línea SOStenible"; the eco path was not re-tested in this cycle.
Serrats' 0.0% promotion rate is a measurement blind spot, not a commercial fact: its product data does not expose a comparison price, so discounts are invisible to us rather than absent. Any competitive promotion comparison that includes Serrats at zero is wrong.
Spanish conservas turnover ladder is contested and must not be published as a single ranking. Ranking-Empresas: Frinsa del Noroeste S.A. EUR 625,863,433 (#1 sector), Jealsa Foods S.A. EUR 553,365,084 (#2). Mercasa 2026 reports a group-level ladder of EUR 781M / 741M / 727M / 320M. Only the 727M is identifiable (Nauterra). Entity-vs-group scope differs.
Callipo anniversary figures conflict: evidence records ">EUR 100m for the first time in 112 years" (2024) while the company site states "sono passati 110 anni" against a 1913 founding (implying 111 in 2024). Logged rather than reconciled.
~99% household penetration for conservas in Spain is UNVERIFIED; the circulating 97% figure refers to Peru. Pending a Kantar Spain category report.
Ingestion history
Recent jobs
| Job | Status | Dataset | Docs | Chunks | Model | Started |
|---|---|---|---|---|---|---|
| research-scrape | succeeded | — | 1 | — | — | 02 Aug 2026 |
| batch3-anfaco-recapture | queued | — | — | — | — | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 2 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 2 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 2 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 7 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 4 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| rag-ingest | succeeded | dataset:es-conservas-consorcio:2026-07-31 | 1 | 3 | voyage-3.5 · 1024d | 02 Aug 2026 |
| batch3-ingest-serrats-origen | queued | — | — | — | — | 02 Aug 2026 |
| batch3-ingest-nauterra-sostenibilidad-2025 | queued | — | — | — | — | 02 Aug 2026 |
| batch3-ingest-albo-calidad | queued | — | — | — | — | 02 Aug 2026 |
| batch3-ingest-calvo-sostenibilidad | queued | — | — | — | — | 02 Aug 2026 |
| batch3-ingest-serrats-sostenibles | queued | — | — | — | — | 02 Aug 2026 |
| batch3-ingest-calvo-recetas | queued | — | — | — | — | 02 Aug 2026 |
Capture health
Failures and thin results
- https://www.grupoconsorcio.com/sostenibilidad/pesca-sostenible.html — 482 chars, treated as a stub and not ingested
- https://www.grupoconsorcio.com/sostenibilidad/certificacion-b-corp.html — 478 chars, treated as a stub and not ingested
- https://www.grupoconsorcio.com/sostenibilidad/proximidad.html — 469 chars, treated as a stub and not ingested
- https://www.grupoconsorcio.com/sostenibilidad/viaje-al-origen.html — 480 chars, treated as a stub and not ingested
- https://www.grupoconsorcio.com/trazabilidad/ — 698 chars, treated as a stub and not ingested
- https://www.frinsa.com/ — 1030 chars, treated as a stub and not ingested
Retrieval
Live configuration
- Embedding provider
- voyage
- Model
- voyage-3.5
- Dimensions
- 1024
- Ask CONSERVAS
- Enabled
- Documents without provenance
- 2
Insufficient evidence
2 ingested documents have no source reference.
These predate the provenance requirement now enforced at ingestion.
To close this: Backfill a source record for each, or supersede them with a re-ingest that carries provenance.
Retrieval
Hybrid search configuration
- Voyage voyage-3.5 @ 1024d, via the rag-ingest edge function
- Postgres FTS, OR semantics, ES/EN/IT stoplist
- Reciprocal Rank Fusion, k = 60 (ReMotive house constant)
- 4 lexical hits minimum, else insufficient-evidence
- Not implemented. No rerank claim is made anywhere in the product.
- Retrieval-only. Query and dry-run scopes; ingest is refused at the function.
Next batch
Queued corpus work
- Share-of-voice capture, ES and IT. Unblocks ESOV-based investment-level analysis. Currently no SOV data exists for either market, so no spend level can be justified from evidence.
- BSI scoring across captured first-party copy. 22 of 58 claims are company assertions clustered in sustainability and sourcing. BSI scores the gap between declarative confidence and falsifiable substance, in ES and EN.
- Campaign-evidence stream. Brand social, press releases, trade coverage of activations, with dates. Until this lands, every communications recommendation is positioning-led.
- Second capture cycle per brand. Required before any change-over-time claim.