diff --git a/src/pages/BrandDiscoveryPanel.jsx b/src/pages/BrandDiscoveryPanel.jsx index efaf024..46643e8 100644 --- a/src/pages/BrandDiscoveryPanel.jsx +++ b/src/pages/BrandDiscoveryPanel.jsx @@ -9,15 +9,21 @@ import { api } from '../api/client'; * A brand NAME -> the same 11-stage pipeline the spreadsheet uploader drives. * * Two steps, and the gap between them is the feature. Discover reads Open Food - * Facts and (optionally) the local language model and shows what it found, - * writing nothing. The operator unticks whatever looks wrong. Only then is the - * selection staged, as an ordinary catalog batch. + * Facts and the brand's own shop and shows what it found, writing nothing. The + * operator unticks whatever looks wrong. Only then is the selection staged, as + * an ordinary catalog batch. * - * That gap is not ceremony. Open Food Facts rows are real products with real - * GTINs, but the language model can produce a well-formed product that does not - * exist, and nothing downstream can catch one: it resolves a category, gets a - * price band and an SKU, and passes the validation gate. A person reading the - * list is the only check there is, so the list is shown. + * GROUNDED SOURCES ONLY. Discovery used to offer the local language model as a + * third source, behind a "Language model" tick box. It was removed: asked to + * enumerate a brand, a small model invents plausible products, and nothing + * downstream can catch one - a well-formed fiction resolves a category, gets a + * price band and an SKU, and clears the validation gate. The catalog is meant + * to hold products that actually exist, so the only rows offered now are ones + * Open Food Facts or the brand's own storefront can vouch for. `use_llm: false` + * is sent explicitly below; see the note there. + * + * The review step stays regardless. A person reading the list is still the last + * check before anything is written, so the list is shown. * * There is no progress UI here on purpose. Ingest returns a BatchOut, and * AdminPage hands it to BatchCatalogPanel through the `adoptBatch` prop it @@ -74,7 +80,6 @@ export function BrandDiscoveryPanel({ onBatchStarted }) { const [selected, setSelected] = useState(() => new Set()); const [useOpenfacts, setUseOpenfacts] = useState(true); - const [useLlm, setUseLlm] = useState(true); const [requireEvidence, setRequireEvidence] = useState(true); const [fetchImages, setFetchImages] = useState(true); // Set by the 409 the ingest route answers with when the brand sits outside @@ -99,13 +104,16 @@ export function BrandDiscoveryPanel({ onBatchStarted }) { const body = await api.previewBrandDiscovery({ brand: brand.trim(), use_openfacts: useOpenfacts, - use_llm: useLlm, + // SENT, NOT OMITTED. DiscoveryPreviewRequest.use_llm defaults to True + // on the server, so leaving the key out would quietly re-enable the + // source this panel no longer exposes. + use_llm: false, require_evidence: requireEvidence, }); setResult(body); - // Pre-tick what discovery judged confident. An uncorroborated row from - // the language model arrives unticked rather than hidden, so the operator - // decides rather than the default deciding for them. + // Pre-tick what discovery judged confident. A row nothing corroborates + // arrives unticked rather than hidden, so the operator decides rather + // than the default deciding for them. setSelected( new Set( (body.products || []) @@ -174,10 +182,11 @@ export function BrandDiscoveryPanel({ onBatchStarted }) {

Brand Discovery

- Enter any brand - one already in the catalog or a new one. Products are - found in Open Food Facts first, which supplies real names, pack sizes - and barcodes, and the local language model fills the gaps. Nothing is - written until you review the list and press Ingest. + Enter any brand - one already in the catalog or a new one. Products + come from Open Food Facts, which supplies real names, pack sizes and + barcodes, and from the brand's own online shop where one is + registered. Nothing is written until you review the list and press + Ingest.

@@ -205,19 +214,13 @@ export function BrandDiscoveryPanel({ onBatchStarted }) {
-
+
- - Nothing was found for this brand. Open Food Facts may not carry it - - non-food brands are thin there - and with "Require evidence" on, any - uncorroborated model suggestions were dropped. Try turning that off - to see them, unticked. + Nothing was found for this brand. Open Food Facts may not carry + it - non-food brands are thin there - and no verified storefront + may be registered for it. Discovery only offers products a real + source can vouch for, so an empty list means nothing was found, + not that something was hidden.

)}