Skip to content

first commit#2

Open
GiuliaZobrist wants to merge 28 commits into
zenline-ch:mainfrom
angelaschereraiza:feature/giulia
Open

first commit#2
GiuliaZobrist wants to merge 28 commits into
zenline-ch:mainfrom
angelaschereraiza:feature/giulia

Conversation

@GiuliaZobrist

Copy link
Copy Markdown

No description provided.

GiuliaZobrist and others added 28 commits June 19, 2026 13:30
Files: ARCHITECTURE.md, diagram.md

docs: merge hybrid scoring (Giulia) with assortment-gap model into unified architecture
Promotes risk_flags from a display badge to a scored pillar (composite_score
weights rebalanced to 0.20 each) so two equally-hyped opportunities can rank
differently once supply-chain/regulatory risk is priced in.
Signal/RetailerContext dataclasses match the canonical data contract in
ARCHITECTURE.md. Source credibility, personas, risk taxonomy, and coverage
keyword mappings live in standalone JSON config files so they're editable
without touching pipeline code.
…thesise)

Hybrid 5-pillar scorer (deterministic Breadth/Momentum/Coverage Gap/Risk +
optional-LLM Transferability with a deterministic fallback so it never
breaks without an API key). Dedup key includes source_type so distinct
competitor/marketplace evidence is never silently collapsed. Seed signals
cover all 5 demo opportunities so the pipeline runs end-to-end offline.
Answers from the scored opportunity list only (no invented SKUs/sources).
Uses Claude if ANTHROPIC_API_KEY is set; otherwise a deterministic
keyword-matching fallback so the chat never goes blank live.
RetailerContext wizard -> chat -> dashboard, with chat replies deep-linking
into the matching dashboard card. Draft frontend only -- reads the same
recommendations.json contract Lovable will consume later. README covers
local run and free Streamlit Community Cloud deployment.
scrape_targets.json lists verified base domains and search/feed templates
for every source in config/sources.json (Google Trends, Reddit, Galaxus,
Zalando, Amazon, Ochsner Sport, Bachli Bergsport, Transa, Pinterest, BFS,
gear media), flagging what's confirmed reachable vs. a best-effort template
that needs a manual check before automating. fetch_reddit.py is a tested,
auth-free fetcher pulling live r/trailrunning posts into the Signal shape,
ready to swap into collectors.py in place of seed data.
Adds SportXX, Decathlon Switzerland, Brack.ch, Microspot, Manor, and Globus
to config/sources.json (credibility) and resources/scrape_targets.json
(real domains + search templates), ranked by outdoor relevance: premium
specialist > mass-market sports > generalist marketplace > department
store. ARCHITECTURE.md §11 and resources/README.md updated to match.
Summary, run instructions, inputs/outputs, ranked opportunities (pulled
from a live pipeline run), evidence trail, reusability, known limitations,
and architecture notes. Team name, demo URL, and video URL left as TODO --
only the team can fill those in.
Adds display-only sub-fields per pillar (Momentum: growth/geographic_spread;
Transferability: outdoor_relevance/climate_fit/dach_availability_gap;
Coverage Gap: availability_gap/retail_saturation/brand_availability) plus a
separate Noise metric (social-only ratio + recency). composite_score math is
unchanged -- these only enrich the JSON/dashboard breakdown.
Sidebar selectbox swaps in a precomputed recommendations.json (persona
variants for now) with zero pipeline rerun, per diagram.md §6.1's
"cheap trick that still proves reusability live". Also fills in team
name/members in SUBMISSION.md (provided by the user) and cleans up
leftover TODO prefixes.
Adds frontend/ (React + TanStack Router + Zustand + shadcn/ui), a
teammate's Lovable-built chat-wizard + Act Now/Watch dashboard. Currently
runs on mock data in src/lib/domain.ts, no backend call yet. Both this and
the Streamlit app independently converged on the same RetailerContext ->
weighted composite -> explainability shape. frontend/INTEGRATION.md maps
every field between domain.ts and the Python backend's recommendations.json
(including the redflag/risk inversion) for future wiring -- not attempted
live here, to avoid destabilizing either side this close to the deadline.
RetailerContext.target_market/comparison_markets and Signal.market now
accept free text (Switzerland, Swiss, Germany, Austria, DACH, ...) and
normalise to CH/DE/AT/etc via config/market_aliases.json -- DACH expands
to [CH, DE, AT]. Added DE/AT search signals to seed data so the alias
isn't just plumbing with nothing behind it. Also adds app/.env.example
for the optional ANTHROPIC_API_KEY, and records frontend npm install
(package-lock.json, regenerated routeTree.gen.ts) after confirming the
Lovable frontend builds and runs standalone.
claude-3-5-sonnet-latest returned a 404 (deprecated/removed alias),
silently falling back to the heuristic scorer/chat every time. Confirmed
the fix against the live API: transferability scoring now runs via the
real LLM with no error.
… step

Config-only theme (no logic changes) for a cleaner, more presentable UI.
Documents newspaper4k as the recommended next integration for the Gear
Media/Newspaper source -- not wired in, evaluated for post-submission.
…riginal-plan

Feature/vibe code from original plan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants