# Grocery Optimizer Product Price Provider Strategy v1

## Ziel und Grenzen

Der Grocery Optimizer soll mittelfristig aktuelle Produktpreise für Schweizer Händler nutzen. Provider-Aufrufe dürfen nur durch explizite Nutzeraktion ausgelöst werden, müssen gecacht werden und dürfen keine Login-/Bestell- oder personenbezogenen Daten verwenden.

## Bewertete Quellen

### Öffentliche Händlerseiten

- **Migros:** Öffentliche Such- und Produktseiten vorhanden. Datenqualität gut, aber HTML/SPA kann sich ändern. Nutzung nur sparsam, cachebar, mit klarer Fehlerbehandlung.
- **Coop:** Öffentliche Such- und Produktseiten vorhanden. Ähnliches Risiko wie Migros; für v1 als kontrollierter Provider geeignet.
- **Aldi Suisse / Lidl Schweiz / Denner / Otto’s:** Öffentliche Aktionen/Produktseiten vorhanden, aber Struktur je Händler heterogen und teils stärker aktions-/sortimentsorientiert. In v1 Skeletons mit `future_status`; Live-Implementierung erst nach gezieltem Spike pro Händler.

### Rappn

- **API:** Keine stabile frei nutzbare öffentliche API im Sprint verifiziert.
- **Kosten:** Unklar.
- **Schweiz-Abdeckung:** Vermutlich preis-/retail-nah, aber ohne bestätigte API keine belastbare Integration.
- **Legal/AGB-Risiko:** Ohne offizielle API/Terms nicht als automatischer Provider verwenden.
- **Empfehlung:** Beobachten; nur mit offizieller API/Dokumentation integrieren.

### Pepesto

- **API:** Keine stabile frei nutzbare öffentliche API im Sprint verifiziert.
- **Kosten:** Unklar.
- **Schweiz-Abdeckung:** Unklar.
- **Datenqualität:** Ohne API/Beispiele nicht bewertbar.
- **Legal/AGB-Risiko:** Nicht automatisieren ohne explizite Nutzungsbedingungen.
- **Empfehlung:** Kein v1-Provider; später erneut prüfen.

### Preisvergleichsportale

- **API:** Teilweise keine öffentliche API oder kommerzielle Nutzung unklar.
- **Abdeckung Schweiz:** Gut für Non-Food, oft schwächer für Lebensmittel-Frische/Filialpreise.
- **Datenqualität:** Für Lebensmittel und Aktionen meist nicht ausreichend granular.
- **Legal/AGB-Risiko:** Scraping häufig problematisch.
- **Empfehlung:** Nicht als Standardquelle für v1.

## Provider-Architektur-Empfehlung

1. Provider pro Händler mit einheitlichem Resultatmodell.
2. Nur expliziter Button `Preise online suchen` triggert Provider.
3. Maximal begrenzte Produkte/Händler/Suchresultate.
4. Cache nach Händler + Query + URL mit Timestamp, Source Hash und Quality Flags.
5. Preise nur aus Quelle oder Cache, niemals LLM-generiert.
6. Unsichere Quellen/fehlende Preise immer `needs_review` und nicht in sichere Ersparnis einrechnen.

## v1 Entscheidung

- Migros und Coop als funktionsfähige Provider-Skeletons mit mockbarer HTML-Extraktion.
- Aldi/Lidl/Denner/Otto’s als klare Skeletons mit `future_status=skeleton_provider_not_live`.
- Kein Login, keine Bestellung, keine API-Key-Pflicht, keine breiten Massen-Scrapes.
