Skip to main content

Mention User in CDP Notes

Add @mention capability to CDP contact notes. Users can tag teammates inline using @username typeahead; mentioned users receive in-app and email notifications via the Unified Notification Service.

Scope Changes

Engineering surfaces this initiative touches (controlled vocab: Backend · Frontend · Mobile · Infra · Data · Design · Docs · None). Aggregate of this initiative's PRDs; mirrors the scope_changes frontmatter above.

  • Backendcontact-service: store mentioned-user SSO UUIDs on notes, validate company membership, fire notifications via the Qontak Unified Notification Service; the mention-anchor parser must accept both the web data-user-id/data-mention form and the mobile <a href=".../users/{id}/edit_user"> form and normalize to SSO UUID (D-9); mention typeahead resolved via Launchpad.
  • Frontendqontak-customer-fe: @-mention typeahead in MpRichTextEditor (feasibility spike — OQ-7), DOMPurify ADD_ATTR for data-mention/data-user-id, mention chip rendering + notification surfacing.
  • Mobilemobile-qontak-crm: mention compose already ships (MpMentionToolbarButtonX(isCdp:true) + CDP member picker, mention_toolbar_botton.dart) but emits an href anchor, not an SSO-UUID data-user-id anchor (encoding/identity gap — OQ-10/OQ-12); note rendering strips HTML (note_screen.dart:264 stripHtml()), so a mention chip is net-new (OQ-11); One Notification V2 already defines a mention category but the tap-through has no CDP route — mention notifications must route via extra.origin=external_url or a new native route (D-10, OQ-5).
  • Design — Figma for the mention picker/typeahead and the mention chip + notification UI (web + mobile).

QA Lane

Lane B — keeps a human QA gate. Mobile is in scope (out of automation reach) and the feature includes notification delivery that needs manual verification. No E2E test specs exist for this initiative yet, so the Lane-A entry bar (100% E2E, spec-mapped coverage) is unmet regardless. Classified 2026-06-29.

Contents

Temporary Delivery Truth test fixture

The three YAML files above are being committed to main only to test the Delivery Truth Forge app against a real private Bitbucket repository. They are not a permanent initiative-documentation contract. After testing is complete, remove all three files together and remove this section. The Forge app currently reads these exact paths, so its requirements-source check will intentionally fail after cleanup until the app is pointed at replacement source files.

While present, these files are manually maintained source data. Scanner output is generated by the Forge app and is never written into these definitions. Requirement IDs name product or technical outcomes and therefore remain independent of Jira issue keys.