Skip to main content

Engagement: Announcements & Recognition (ENG)

Module code ENG · Release R2 · Packaging Plan tier (Professional+) · Requirements FR-ENG-*, BR-ENG-* in the PRD and BRD

1. Overview and scope​

ENG is a small module with a high retention payoff. It provides announcements targeted at audiences with read receipts and acknowledgements, recognition between colleagues and from managers, a company wall with reactions, and automatic celebrations (birthdays, work anniversaries, new joiners).

Out of scope: surveys and pulse checks (later), points redeemable for rewards (later, with a partner), performance reviews.

2. Learned from the reference product​

Source: Spryple analysis, §4.2, §13 and §21.9.

  • [Observed] Announcements have topic, title, publish from and to, description; Submit (Published) or Save as Draft; status-driven actions (Published → edit/view/stop; Completed → republish) (SP-ENG-01).
  • [Observed] Rewards & Recognition in the HCM app: send to a peer with a recognition type and message; Sent and Received lists; a count report per type (MOB: HCM).
  • [Observed] Recognition types include Birthday, Outstanding, Job Well Done, Congratulations and Performance-based; messages come from a template with a 145-character limit (§21.9).
  • [Inferred] There is no audience targeting, read receipt, reaction or public wall (§13).

3. Our design decisions​

IDDecision [Proposed]Reason
D-ENG-01Announcements target an audience rule (locations, departments, designations, employment types, or everyone) evaluated at publish time and stored as a snapshot.Branch-specific notices; auditable reach.
D-ENG-02Optional "acknowledge required" with tracking and reminders.Policy updates need proof of reading.
D-ENG-03Recognition types are tenant data with optional manager-only types and a public or private visibility.Flexibility; some recognitions are personal.
D-ENG-04Celebrations are generated daily from EMP data, respecting an employee opt-out for birthdays.Privacy for date of birth.

4. Domain model​

5. State machines​

6. Key business logic​

publish(announcement):
audience = employees matching rule on publish date (EMP job assignment)
store resolved_count ; fan out via NTF (in-app always, push and email per settings)
if ack_required: schedule reminders at +2 and +5 days for those not acknowledged
recognise(from, to, type, message):
require from != to ; require length(message) <= setting.max_message_length
if type.manager_only: require from is in to's management chain
limit per sender per day (anti-spam)

7. Configuration​

SettingTypeDefaultDescription
announcement.default_channelsarray of string[IN_APP, PUSH]Delivery channels
announcement.ack_reminder_daysarray of integer[2, 5]Reminder schedule
recognition.max_message_lengthinteger280Message limit (reference uses 145)
recognition.daily_limit_per_senderinteger5Anti-spam
recognition.default_visibilityenumPUBLICPUBLIC or PRIVATE
celebrations.kindsarray of stringbirthday, anniversary, new joinerGenerated kinds
celebrations.birthday_opt_inbooleantrueEmployee must opt in to show birthdays

8. Screens by persona​

PersonaWebMobile
EmployeeWall (announcements, recognitions, celebrations), acknowledge, send recognition, my recognitionsSame
Line managerTeam recognition summaryRecognise team
HR managerAnnouncement composer with audience preview, read and acknowledgement tracking, recognition types—

9. Events​

EventConsumers
eng.announcement.publishedNTF
eng.announcement.acknowledgedRPT
eng.recognition.sentNTF (recipient and their manager)
eng.celebration.generatedNTF

Consumed: emp.employee.joined (welcome post), emp.job.changed (audience accuracy).

10. API surface​

ResourceMain operations
/v1/eng/announcementsCRUD, POST /:id/publish, POST /:id/stop, POST /:id/ack, GET /:id/reads
/v1/eng/recognition-typesCRUD
/v1/eng/recognitionsPOST, GET sent and received, POST /:id/reactions
/v1/eng/feedGET wall

Detailed in API endpoints.

11. Permissions​

PermissionScopesDefault roles
eng.announcement.manageORG, LOCATIONhr_manager
eng.announcement.readSELFemployee
eng.recognition.createSELFemployee
eng.recognition_type.manageORGhr_admin
eng.report.exportORGhr_manager

12. Reports​

ReportContentsReference
Recognition counts by type and employeeSent and received[Observed] MOB: HCM
Announcement reachAudience, read, acknowledged, pending[Proposed]
Recognition networkCross-team recognition share[Proposed] R4

13. Release and priority​

CapabilityReleaseMoSCoW
Announcements with audience and read receiptsR2Must
Acknowledgement trackingR2Should
Recognition with types and wallR2Should
CelebrationsR2Could
ReactionsR2Could

14. Open questions​

  1. Should recognitions be visible to everyone in the tenant or only within the location by default? Default is tenant-wide public.
  2. Do we moderate wall content (profanity filter, HR removal)? A basic filter and HR removal are proposed.