new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
Pick a market and a BMW series. Dixi groups what customers ask for, checks competitors and trends, and the product manager decides. Every decision is traceable.
MarketingTypeScript · PythonGitHub @peresramirezOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Dixi helps BMW product managers decide what the next 1, 5 or 7 Series should offer in Europe, the USA and China. It reads what customers in a market ask for, checks it against BMW's principles[...]
Named after the Dixi 3/15, BMW's first car (1928).
| Layer | What goes in | How it counts | |
|---|---|---|---|
| 🟦 | L1 · BMW principles | 53 principles in Supabase: 9 series fundamentals (3 per series, owned by named teams), 34 market principles (Europe, UK, China, USA) and 10 BMW Group principles[...] | Strongest: a hard guardrail |
| 🔵 | L2 · Market evidence | BMW's customer feedback (as feature requests with mention counts per market), customer studies, sales, today's option list, plus competitor features and trends[...] | Main signal |
| 🩵 | L3 · Social test | After profiles exist: which profile would track better on social media. Simulated (no social-media integration). | Weakest, fixed per series: 7 Series 2 %, 5 Series 3 %, 3 Series 5 % |
Dixi score (0–100, per feature request): 100 × (wD·demand + wB·market backing + wF·principle fit) / (wD + wB + wF), then decision memory. A past reject lowers it by penalty × 0.5[...]
sequenceDiagram
autonumber
actor PM as Product manager
participant Web as Dixi web (Next.js)
participant API as Dixi API (FastAPI)
participant AI as Agents (Pydantic AI · OpenAI)
participant TV as Tavily MCP (web search)
participant DB as Supabase
PM->>Web: market + series (e.g. Europe · 5 Series)
Web->>Web: feature requests from BMW data<br/>(built locally by scripts/build-pipeline-data.py)
Web->>API: GET /principles
API->>DB: series + market + Group principles
Web->>API: POST /assess/principles (titles, categories, mention counts)
API->>AI: principle assessor + get_decision_memory tool
AI-->>API: fit · principle ids · evidence vs assumptions · conflicts · gaps
API->>DB: principle_assessments
opt PM clicks "Run research agent"
Web->>API: POST /research/signals
API->>AI: lead researcher → competitor scout + trend scout
AI->>TV: tavily_search / tavily_extract
API->>API: drop sources Tavily never returned
API->>DB: research_runs
end
Web->>API: GET /generations · GET /decisions
API->>DB: earlier generations = decision memory
Web->>PM: one ranked list (Dixi score) + principles panel + competitors & trends
PM->>Web: keep · reject with reason · priority · wishlist
Web->>API: POST /decisions (append-only, undo is its own row)
PM->>Web: Build profiles
Web->>API: PUT /generations/{id} (profiles, decisions, priority, run ids)
PM->>Web: ask on a profile page ("why was X rejected?")
Web->>API: POST /chat/generation
API->>AI: generation_analyst + tools (generation · principles · assessment · research · memory)
AI-->>Web: answer + "looked up" sources
Note over Web,DB: The next analysis of this series + market reads this generation:<br/>rejected requests rank lower ("Rejected · reason · who"), kept ones get a bonus,<br/>a reject comes back [...]
After the PM picks a market and a car, the principle assessor runs live. The other inputs were analysed earlier and the screen says so:
Monthly refresh job (built, scheduled run off): backend/scripts/monthly_refresh.py labels each customer comment with the OpenAI Decisions API (request, category and type with a confidenc[...]
| Claim | Status | Code |
|---|---|---|
| BMW data → feature requests per market (taxonomy clusters, mention counts, studies, sales, option list) | ✅ deterministic script, no LLM, no network | scripts/build-pipeline-data.py |
| L1 principles stored and served per series + market (Europe includes the UK) | ✅ Supabase | supabase/migrations, backend/scripts/seed_principles.py |
| Principle assessor: fit per request, cited ids, evidence vs assumptions, conflicts, gaps | ✅ runs in the analysis step; unknown ids dropped | backend/app/agents/principles.py |
| Research agent: competitors + trends with checked sources and gaps | ✅ lead + 2 scout sub-agents on Tavily MCP | backend/app/agents/research.py, web/src/components/pipeline |
| Dixi score with decision memory, settings by sliders or plain words, change log | ✅ | scoring.ts, WeightsAssistant.tsx |
| Decisions with who · when · reason; reject needs a reason (UI, API and database) | ✅ append-only history | , |
Honest by design. Each agent returns what it could not find (gaps), and the principle assessor lists conflicts instead of averaging them away. Markets without comments fall back to all mark[...]
Data boundary. BMW customer data never leaves the machine: no verbatims or quotes go to OpenAI, Tavily or Supabase. The agents get our own request titles, categories and mention counts. Detai[...]
Web only (example data, everything stored in the browser):
cd web && pnpm install && pnpm dev # http://localhost:3000
Full stack (agents + Supabase):
# 1. keys in the repo-root .env (git-ignored): OPENAI_API_KEY, TAVILY_API_KEY
# and backend/.env: SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY (see backend/.env.example)
supabase link --project-ref <ref> && supabase db push # schema (supabase/migrations)
cd backend && uv sync
uv run python -I scripts/seed_principles.py # L1 principles (reads data/L1_Files locally)
uv run fastapi dev # http://127.0.0.1:8000/docs
# 2. web: web/.env.local → NEXT_PUBLIC_API_URL=http://localhost:8000
cd ../web && pnpm dev
Tests: cd backend && uv run pytest -q (offline: fake models, fake search, in-memory store) · cd web && pnpm lint && pnpm exec tsc --noEmit. The live site https://dixi-wheat.vercel.app ru[...]
| Folder | What |
|---|---|
web/ | The app: landing page with a market globe, the requirement pipeline, generations dashboard, settings |
backend/ | FastAPI API: research agent, principle assessor, store for principles, decisions, generations, settings |
supabase/ | Database schema (migrations) |
docs/ | Setup, architecture diagrams (Mermaid), tech stack |
scripts/ | Local BMW data build for the pipeline, image generation |
branding/ | Logo, colours, brand guide |
Built for the BMW challenge "AI for Product Decision Making" at the EHL Hackathon, Munich, October 2026. Dixi is a hackathon project and is not affiliated with BMW. Market principles come fr[...]
decision-log.tsPOST /decisions| Generations saved and read back as memory by the next generation | ✅ | sessions.ts, PUT /generations, GET /memory |
| 3 car profiles, L1 = principle fit + PM priority, tensions listed, PDF via print | ✅ | profiles.ts, Profiles.tsx |
| Evidence page per profile: every requirement with exact references (BMW record ids, study workbook cells, option codes, source URLs, principle ids, decision), filterable by source | ✅ | evidence |
| Ask questions about a generation on the profile page; answers only from retrieved facts, with what was looked up | ✅ generation chat | backend/app/agents/chat.py |
| L3 social test | 🟡 simulated, labelled in the UI | analytics.ts |
| Monthly refresh: label comments (OpenAI Decisions API), count demand, research + assess, report (cron) | ✅ job + tests (live Decisions run on fictional comments: request 12/12); 🟡 schedule[...] |
| Gates G1–G4, engineering/BOM check, Codebeamer export, postpone, side-by-side generation compare | ⚪ target design only | docs/architecture/05-hitl-map.md |