Skip to main content

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).

PartDRWhat it covers
1Ontology & taxonomy adminThe controlled vocabulary; super-admin canonical + org/community multi-language aliases (precedence community > org > default).
2Event taggingTagging events with leaf keys (custom_filters_keys); manual v1, AI tagger deferred.
3Resident preferences & onboardingThe resident's interests, channels, frequency, and consent.
4Matching & delivery enginePR-1. Pluggable selector, org-level aggregation, dedup, the existing pipeline.
5Notification content & channelsEmail cards, SMS, WhatsApp/WABA, the templates direction.
6See-all pageThe public "See all events" page (Option B, faithful to the selection).
7Scheduling (Cron)The daily trigger on Tal's platform-jobs.
8Feature flags & rolloutThe 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.