# MeMind News Engine MVP ## Boundary - `memind-news-engine` owns collection, event clustering, ranking, and briefing candidates. - `Memind` consumes ranked candidates and owns page generation and delivery. - `memind_adm` owns source configuration, ranking policy editing, review, run monitoring, and publish controls. - The legacy `ops/` UI is not extended. ## Current pipeline ```text Memind SearXNG query groups -> memind-news-engine HTTP API -> event clustering by canonical URL and title similarity -> deterministic rule score -> optional structured LLM assessment -> global score plus optional user-interest score -> breaking-news override -> category quotas and source diversity -> ranked candidates in the existing briefing prompt -> existing page generation, dedupe, image, and WeChat delivery guards ``` The first slice is deliberately deterministic. The model may provide the six semantic dimensions, but application code calculates the weighted score and owns final selection. ## Score contract LLM assessment values are 0-10: ```json { "importance": 8, "novelty": 9, "impact": 8, "credibility": 9, "relevance": 8, "actionability": 7, "category": "ai_tech", "reason": "A flagship model release changes capability and API economics." } ``` Semantic score weights are 25% importance, 20% impact, 15% novelty, 15% credibility, 15% relevance, and 10% actionability. When the LLM assessment is present, global score is 35% rule score plus 65% semantic score. When a user-interest score is present, final score is 70% global plus 30% personal. Breaking override is active when importance is at least 9, there are at least two distinct sources, and credibility is at least 8. ## Runtime controls - `MEMIND_NEWS_ENGINE_DAILY_LIMIT`: selected event count, default `15`. - `MEMIND_NEWS_ENGINE_MINIMUM_SCORE`: minimum final score, default `0` during the observation phase. - `MEMIND_NEWS_ENGINE_URL`: independent service base URL; ranking is skipped when unset. - `MEMIND_NEWS_ENGINE_API_TOKEN`: service-to-service bearer token. - `MEMIND_NEWS_ENGINE_TIMEOUT_MS`: request timeout, default `5000`. ## Next slice The engine repository now owns persistence migrations and the ranking API. Next work is the bounded LLM scoring worker, collection scheduler, and `memind_adm` management UI.