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.
- Backend —
contact-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 webdata-user-id/data-mentionform and the mobile<a href=".../users/{id}/edit_user">form and normalize to SSO UUID (D-9); mention typeahead resolved via Launchpad. - Frontend —
qontak-customer-fe:@-mention typeahead inMpRichTextEditor(feasibility spike — OQ-7), DOMPurifyADD_ATTRfordata-mention/data-user-id, mention chip rendering + notification surfacing. - Mobile —
mobile-qontak-crm: mention compose already ships (MpMentionToolbarButtonX(isCdp:true)+ CDP member picker,mention_toolbar_botton.dart) but emits an href anchor, not an SSO-UUIDdata-user-idanchor (encoding/identity gap — OQ-10/OQ-12); note rendering strips HTML (note_screen.dart:264stripHtml()), so a mention chip is net-new (OQ-11); One Notification V2 already defines amentioncategory but the tap-through has no CDP route — mention notifications must route viaextra.origin=external_urlor 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
prds/— Product Requirements Documentsrfcs/— Request for Commentstests/— Test plansdelivery/— Timeline, status updates, decisionsrequirements.yaml— manually maintained stable requirement registryjira-mapping.yaml— manually maintained many-to-many requirement-to-Jira mappingdelivery-truth-manual.yaml— manual acceptance and evidence classifications
Temporary Delivery Truth test fixture
The three YAML files above are being committed to
mainonly 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.