Notify-Me โ Part Design Docs (CU-86c1p963g / CU-86cafrhcy ยท Track B)
When a new city event is published, the resident gets one daily message with the events that match the interests they chose โ behind a scoped feature flag, riding the platform's existing delivery pipeline, and decoupled from the category clean-up (Track A) through a pluggable selector.
Each part below is a self-contained design doc. The full E2E picture with collapsible sections lives in the overview DR (shared separately); these parts are the detail Aviad reviews. Part 4 is the scope of the first PR and is independent of the rest (it reads only two string columns).
| Part | DR | What it covers |
|---|---|---|
| 1 | Ontology & taxonomy admin | The controlled vocabulary; super-admin canonical + org/community multi-language aliases (precedence community > org > default). |
| 2 | Event tagging | Tagging events with leaf keys (custom_filters_keys); manual v1, AI tagger deferred. |
| 3 | Resident preferences & onboarding | The resident's interests, channels, frequency, and consent. |
| 4 | Matching & delivery engine | PR-1. Pluggable selector, org-level aggregation, dedup, the existing pipeline. |
| 5 | Notification content & channels | Email cards, SMS, WhatsApp/WABA, the templates direction. |
| 6 | See-all page | The public "See all events" page (Option B, faithful to the selection). |
| 7 | Scheduling (Cron) | The daily trigger on Tal's platform-jobs. |
| 8 | Feature flags & rollout | The scoped flag, gradual rollout, analytics (later). |
Framingโ
These are design documents, not build reports โ each states what the mechanism does, the decisions taken, acceptance criteria, and open questions, so Aviad can comment and we adjust. The status of any part is tracked in its PR, not here.
Canonical status: these parts are now the single source of truth for Notify-Me. They supersede and replace the earlier single-file v1 DR (harvested and removed): feature-flags replaces the notification-feature-settings collection; the taxonomy is Gali's hierarchical ontology, not flat; org-level aggregation supersedes the community-level baseline.
Scope decisions (with Aviad)โ
- Consent via the existing
enable_general_notifications; daily digest (one message/day); SMS capped + a "see all" link; no push in v1. - Org-level aggregation (one message per resident across their communities) โ a deliberate step beyond community-level.
- Deferred: AI tagger, WhatsApp/WABA content, emergency-immediate selector, channels/frequency FE persistence, analytics.
Track A (category consolidation) runs in parallel and meets this feature at the selector โ swapping it in later needs no change to the engine.