News Feed App Overview
A governed company feed that keeps Must-Read content out from under social noise — with acknowledgements, audience targeting, Q&A, polls, signals, and SMEs.
What is the News Feed App?
News Feed is the internal-communications surface inside MangoApps Workforce. Unlike a chronological wall, it enforces a three-tier content hierarchy — Must-Read, Operational, Social — so the things employees must see are never buried under shout-outs and water-cooler chat. Authors compose Updates, Questions, or quick Polls; admins and leadership can promote Operational posts to Must-Read with an acknowledgement requirement and an expiry window. Managers and admins get role-gated Signals, SMEs, and Analytics surfaces to act on what the feed reveals.
Core Value Proposition:
- 🚦 Content Hierarchy — Operational vs Social split with configurable labels; Must-Read is its own escalated lane with persistent acknowledgement.
- ✅ Acknowledgement Tracking — Must-Read posts require an explicit Ack; records are immutable and reportable; reminders fire automatically.
- 🎯 Audience Targeting — Post to Everyone or scope to one or more segments / virtual groups; per-segment notification frequency.
- 💬 Q&A with Verified Answers — Authors and admins mark a Correct Answer that feeds a per-business knowledge base for search and AI auto-answer suggestions.
- 📊 Signals & SMEs — Classify posts and comments into Risk / Issue / Idea / Question / Decision / Action Item / Sentiment; identify Subject-Matter Experts from real participation.
At a Glance
| 🚦 Content Tiers | 🧩 Composer Types | 🔔 Notification Cadences | 📱 Mobile Ready |
|---|---|---|---|
| Must-Read / Operational / Social | Update · Question · Poll | Realtime · Hourly · Daily | ✅ Yes (Home, Signals, SMEs, Analytics) |
Perfect For:
- 👤 All employees — Read the feed, react, comment, vote in polls, acknowledge Must-Read posts, mute noisy threads.
- 👥 Managers — Author Operational posts for their segments, see Signals and SMEs for their teams, run light analytics.
- 🏢 Admins / Leadership — Publish company-wide Must-Read posts, configure ~50 settings (composer types, AI features, signals, SMEs, reactions palette), export analytics.
How It Works
Post Lifecycle
┌──────────────────────────────────────────────────────────────────────────┐
│ POST LIFECYCLE │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────┐ ┌──────────┐ ┌───────────┐ ┌─────────┐ ┌──────┐│
│ │ DRAFT │──▶ │SCHEDULED │──▶ │ PUBLISHED │──▶ │ EXPIRED │──▶ │ARCHIVED││
│ └────────┘ └──────────┘ └───────────┘ └─────────┘ └──────┘│
│ ▲ │ │ │ │
│ └──auto-save───┘ │ │ │
│ ▼ ▼ │
│ ┌────────────────┐ ┌──────────────┐ │
│ │ Acknowledgements│ │ Auto-archive │ │
│ │ + Read records │ │ by job sweep│ │
│ └────────────────┘ └──────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────┘
Statuses are enforced on NewsFeed::Feed: draft → scheduled → published → expired → archived. Drafts auto-save (one draft per user). Scheduled posts publish via PublishScheduledPostsJob. Must-Read posts that hit expires_at fall back to Operational; ArchiveExpiredPostsJob sweeps fully expired rows. Drafts left idle are cleaned up by CleanupAbandonedDraftsJob.
Tab Layout
┌─────────────────────────────────────────────────────────────────────────┐
│ Home | My Feeds | Signals* | SMEs* | Analytics* | Settings**
└─────────────────────────────────────────────────────────────────────────┘
* Role-gated (admin / app-admin / manager depending on tab)
** Admin / app-admin only
Key Features
🚦 Content Hierarchy & Must-Read
| Feature | Description |
|---|---|
| Three priorities | must_read, operational, social enforced on every post |
| Configurable labels | Admins can rename the Operational and Social category labels per business |
| Persistent Ack CTA | Must-Read posts stay surfaced until the viewer acknowledges; reminders sent by MustReadReminderJob |
| Expiry + fallback | Must-Read auto-demotes to Operational at expires_at; default window is configurable (7 / 14 / 30 / 60 / 90 days) |
| Acknowledgement records | Tracked in NewsFeed::AcknowledgementRecord; immutable for compliance reporting |
| Who can mark Must-Read | Setting: admins only / admins+leadership / admins+leadership+managers |
💡 Pro Tip: Reserve Must-Read for content that genuinely needs an acknowledgement (policy updates, safety bulletins, training deadlines). Social posts cannot be made Must-Read by design — it keeps the lane meaningful.
✍️ Composer (Update / Question / Poll)
Three composer types, each independently toggleable in settings:
| Composer | What it produces |
|---|---|
| Update | Standard announcement with optional priority and audience |
| Question | A Q&A post — author/admin can later mark a Correct Answer |
| Poll | Single-select poll with 2–5 options, optional ranked-choice, change-vote, anonymous, configurable visibility |
Additional capabilities verified in code:
- Drafts — one draft per user, auto-saved (
NewsFeed::Draft) - Scheduled publishing — choose a future
publish_at - 15-minute post-publish edit window — toggleable per business (
content_editing) - Audience targeting —
everyoneor segment list, including virtual segments like direct reports - Media uploads — images / videos / GIFs (each toggleable); link preview cards toggleable
- Voice & video — voice recording with configurable max duration and
native/whispertranscription; auto-subtitles for videos viaGenerateVideoSubtitlesJob
💬 Discussions (Comments, Reactions, Q&A)
| Feature | Description |
|---|---|
| Comments | Threaded replies with rate-limiting concern; comment notifications via CommentNotificationsDispatcher |
| Reactions | 14-emoji catalog in two tiers — expressive (like, love, celebrate, wow, sad, angry, support, insightful) and action-oriented (acknowledged, need_clarification, concern, disagree, needs_discussion, escalate). Admins choose 2–12 emoji for the active palette. |
| Correct Answer (Q&A) | Per-business toggle; promoting a comment writes to NewsFeed::CorrectAnswer and projects into NewsFeed::KnowledgeBaseEntry (FTS) and NewsFeed::AnswerEmbedding (pgvector) |
| Auto-close | Optional auto-close of long-idle discussions (DiscussionAutoCloseJob); admins and authors can also close manually |
| AI summarization | Long threads can generate a summary card (DiscussionSummaryJob) covering key takeaways, decisions, action items, sentiment — threshold and on-close triggers are configurable |
| Mute per post | Users can mute notifications on a specific post without leaving the feed (NewsFeed::PostNotificationMute) |
🎯 Audience Targeting & Reach
- Everyone vs Segments — post-level audience type; segments resolve through
NotificationRecipientGroup - Audience snapshot —
NewsFeed::FeedAudienceSnapshotfreezes the resolved recipient list at publish time so analytics (read %, ack %) stay stable as group membership changes - Backfill —
FeedAudienceSnapshotBackfillJobrebuilds snapshots when audience definitions change - Per-segment notification cadence — recipients control realtime / hourly / daily delivery via
NewsFeed::NotificationPreference
🔍 Signals
Admins and managers see a Signals dashboard that classifies feeds and comments into seven types — each with its own configurable confidence threshold:
| Signal type | Default confidence |
|---|---|
| Risk | 0.90 |
| Decision | 0.75 |
| Action Item | 0.75 |
| Issue | 0.80 |
| Question | 0.70 |
| Idea | 0.70 |
| Sentiment (±) | 0.70 |
Two sources are supported (ai_classification and reaction-derived). Classification runs on a 5-minute cron via SignalExtractionBatcherJob. A weekly digest mailer (SignalWeeklyDigestMailer) summarizes new signals.
🧠 SMEs (Subject-Matter Experts)
Identifies SMEs from real participation — not self-reported tags. Scoring is in NewsFeed::SmeScore with admin-configurable weights:
- Correct answers (default weight: 4)
- Fast answers (under 2 hours, default weight: 2)
- Expert reactions (
acknowledged,insightful, etc., default weight: 1) - Topic posts (default weight: 0.5)
- Monthly score decay (default 10 %)
Configurable: SME tab visibility (all employees / managers+ / admins), employee opt-out, cross-segment routing, per-topic opt-out (NewsFeed::SmeTopicOptOut). Auto-routing of unanswered questions to up to 3 SMEs is opt-in (SmeRoutingJob); re-routing after 24 h is toggleable; new-designation notifications fire via SmeNewDesignationNotificationJob.
🤖 AI-Powered Features (opt-in, each gated by a setting)
| Feature | Behavior |
|---|---|
| Enhanced authoring | Composer-side authoring assist |
| Auto-topic assignment | Classifier auto-tags published posts with 1–3 topics from the per-business taxonomy; author-assigned topics always win; can be restricted to existing taxonomy or allowed to propose new (“open topics”) |
| Composer topic suggestions | After 50 characters, the composer suggests topics; dismissals are remembered |
| Auto-answer suggestions | Question posts retrieve the top-matching verified Correct Answer via cosine similarity (configurable threshold 0.80 / 0.85 / 0.90 / 0.95); “may be outdated” badge surfaces when the source is older than 180/365/730 days |
| SME auto-routing | After 30 minutes, unanswered questions can be routed to up to 3 SMEs |
| Discussion summarization | Auto-generated summary card on long or closed threads |
| Poll summarization | Below the results chart after a poll closes |
| Read aloud (TTS) | Per-post text-to-speech with neutral / male / female voice |
The platform-level News Feed AI Agent toggle exists in settings but is a deferred feature — the agent ships in a future release.
📊 Analytics
Verified surfaces in the Analytics tab:
- Engagement metrics — read counts, acknowledgement %, reaction breakdowns
- Sentiment trends —
NewsFeed::SentimentDataPointaggregated bySentimentAggregationJob; sentiment spike threshold is configurable - Signal volumes — counts per signal type over time
- Cached analytics —
NewsFeed::FeedAnalyticsCache+FeedAnalyticsCacheRefreshJobkeep dashboards snappy on large feeds - CSV export —
AnalyticsCsvExportJob+AnalyticsExportMailerdeliver async exports - Knowledge base export —
KnowledgeBaseExportJob+KnowledgeBaseExportMailerfor verified-answer corpus
🔔 Notifications
| Type | Trigger |
|---|---|
| Post published | PublishNotificationsService fires when a post goes live; respects per-recipient cadence and segment muting |
| Comment posted | CommentNotificationsDispatcher notifies author + thread participants |
| Poll closed | PollClosedNotificationService after a poll closes |
| Poll closing soon | Daily digest via PollClosingSoonDigestJob |
| Must-Read reminder | Periodic reminders to non-acknowledgers (configurable on/off) |
| SME designation | New SMEs are notified via SmeNewDesignationNotificationJob |
| Hourly / Daily digest | HourlyDigestJob / DailyDigestJob based on notification_default setting |
| Sentiment weekly digest | SentimentWeeklyDigestMailer |
| Signal weekly digest | SignalWeeklyDigestMailer |
🔌 Real-time
ActionCable channels:
NewsFeed::PostChannel— broadcasts new comments, reactions, poll vote totalsNewsFeed::VoiceTranscriptChannel— streams voice transcription progress
🔗 Integrations & Connected Surfaces
| Surface | Connection |
|---|---|
| Mango Signal | News Feed engagement and sentiment are upstream sources for the Workforce Intelligence layer |
| Knowledge base | Marked Correct Answers feed NewsFeed::KnowledgeBaseEntry (FTS) + NewsFeed::AnswerEmbedding (pgvector); admins can flip entries to “outdated” |
| Notification Recipient Groups | Audience resolution shares the platform-wide segment / virtual-group registry |
| Platform reactions | Reactions inherit from Platform::Reaction so reaction events fan out platform-wide |
User Roles & Permissions
Permissions are enforced in NewsFeedFeatureAccess and per-controller authorization concerns.
| Role | Capabilities |
|---|---|
| Employee | Read feed, react, comment, vote in polls, acknowledge Must-Read, mute posts, opt out of SME |
| Author (any role) | Edit within 15-minute window (if enabled), close own discussions, mark Correct Answer on own Questions |
| Manager | All employee capabilities + view Signals, view SMEs, post to managed segments. Eligible to author Must-Read if must_read_permission includes managers. |
| Leadership | Eligible to author Must-Read posts and post to Everyone (if audience_post_to_everyone is set to admins_and_leadership) |
| App Admin | All capabilities below — scoped to News Feed only (not a global admin) |
| Global Admin | Settings, sample data load/destroy, all analytics, manage topics taxonomy, manage reaction palette, manage SME settings, mark KB entries outdated |
Getting Started
For Employees
- Open Apps → News Feed from the app launcher.
- Read the Home tab. Acknowledge any Must-Read posts at the top.
- Switch to My Feeds to filter to just posts targeted to you.
- React, comment, vote in polls, or mute noisy threads.
- (Optional) Open Settings → Notifications to set your cadence (realtime / hourly / daily).
For Managers
- Compose an Update scoped to your segment from the composer at the top of Home.
- (If allowed) Promote to Must-Read with an expiry — recipients will get persistent Ack CTAs until they acknowledge.
- Open Signals to see classified Risk / Issue / Action Item signals from your team’s posts and comments.
- Open SMEs to identify quiet experts on your team based on real participation.
For Administrators
- Settings → Composer — toggle Update / Question / Poll composers.
- Settings → Audience & Permissions — set who can post to Everyone and who can mark Must-Read.
- Settings → AI Features — opt in to auto-topic, composer suggestions, auto-answer, SME routing, summarization.
- Settings → Reactions — choose 2–12 emoji for the active palette.
- Settings → Signals / SMEs — tune confidence thresholds and scoring weights.
- Settings → Sample Data — load demo posts to preview the surface, destroy when done.
Best Practices
- ✅ Use Must-Read sparingly. It loses meaning if every post is Must-Read.
- ✅ Set realistic expiry windows. A 7-day window for an urgent policy; 30 days for routine ops.
- ✅ Scope audience deliberately. A team operational update doesn’t need to fire to Everyone.
- ✅ Promote Correct Answers. It seeds the knowledge base and powers AI auto-answer suggestions for future questions.
- ✅ Trim the reaction palette. Smaller palettes drive clearer signal — start with the 8 expressive emoji and add action-oriented ones only when teams need them.
- ✅ Watch Signals weekly. The weekly digest is the cheapest way to catch a brewing issue before it escalates.
Frequently Asked Questions
Q: What’s the difference between Must-Read and Operational?
A: Must-Read is an escalated Operational post — it requires a persistent acknowledgement from recipients and has a mandatory expiry. After expiry, it falls back to a standard Operational post. Social posts cannot be Must-Read by design.
Q: Who can mark a Must-Read post?
A: Controlled by the must_read_permission setting — admins only, admins + leadership, or admins + leadership + managers.
Q: How does audience targeting work?
A: Posts are either sent to Everyone or scoped to one or more segments / virtual groups (including direct-reports). The resolved recipient list is frozen at publish time so analytics stay stable even if group membership changes later.
Q: What happens when a user mutes a post?
A: The post still appears in their feed if they navigate to it, but they stop receiving notifications for new comments, reactions, or Must-Read reminders.
Q: How is “read” computed?
A: A read is recorded when a feed card remains in the viewport for a short dwell period. Read records are idempotent per (user, post).
Q: Does News Feed have an AI agent (Ask AI)?
A: Not yet — the conversational Ask AI agent for News Feed ships in a future release. AI features that are live today are listed in the AI-Powered Features section above (auto-topic, auto-answer, summarization, SME routing).
Related Resources
- Chat App Overview — Conversational counterpart for direct messages and rooms
- Service Desk App Overview — When a question needs a ticket and SLA, not a discussion
- Policy Hub App Overview — Authoritative home for policies that News Feed Must-Read posts often link to
Communications that matter — without burying them in the timeline.