Skip to content

Epic 10: Manager Notifications

Overview

The Manager Notifications Epic empowers the manager to maintain clear, timely awareness of critical recruitment and placement activities on the platform. This epic introduces a centralized notification hub and dashboard widget that delivers real-time alerts about job applications, offer responses, placement confirmations, and other important events. Combined with a dedicated Task Center widget (not MVP), managers gain a comprehensive view of pending actions and urgent items requiring immediate attention. The system provides the manager with granular control over notification preferences, supports multi-channel delivery (in-app notifications), and ensures critical information is always visible on the main dashboard. The Task Center widget (not MVP) surfaces the most actionable items - pending placements, applications awaiting review, offers about to expire - allowing managers to prioritize their work and respond quickly to candidates.

Business Value

  • Enable a manager to receive timely notifications about candidate actions (applications, offer acceptances/declines) Facilitate rapid response to placement milestones (confirmations, start dates, completion) Increase placement success rates through proactive alerts about offers and placements at risk Reduce response delays and improve candidate experience through prioritized notifications Support managers in tracking placement lifecycle from application through completion Enable customizable notification preferences to reduce alert fatigue and improve focus Provide managers with clear visibility into pending tasks and action items on the dashboard (not MVP)

Solution Concept

The solution establishes a notification center widget designed specifically for managers overseeing the recruitment and placement process. Managers receive intelligent, prioritized notifications about candidate applications, offer responses, placement confirmations, and other critical recruitment events. All notifications are categorized by type (Offers, Applications, Placements, Reviews & Feedback, System, Timesheets), fully searchable, and support filtering by read/unread status. The system respects manager preferences and delivers notifications through in-app channels on desktop, ensuring managers stay informed without overwhelming them with low-priority alerts. Not MVP: The Task Center widget on the main dashboard displays the most urgent and actionable items - pending placements awaiting onboarding, applications waiting for review, contracts pending signature - organized by priority and deadline.

Features and User Stories

10.1 Manager Notifications

User Story:

As a manager, I want to receive notifications about important recruitment and placement events So that I stay informed about candidate actions, placements, and urgent follow-ups

Описание: The Notifications system keeps the manager informed about critical events in the recruitment and placement workflow. Manager receives notifications for new applications, candidate responses to offers, placement milestones, verification issues, new timesheets and reviews. The system provides granular control over notification types while ensuring urgent items surface prominently.

Критерии приёмки: - Notifications Page: - Access point - bell button on top right on any page - Notification count badge showing unread count - Page title: "Notifications" - Search bar to find notifications by candidate name and job (by any keyword - nice to have) - Filter drawer (funnel button): - Filter by type button (Offers, Applications, Placements, Timesheets, Reviews & Feedback, System) - Filter by Job Posting (same as in Applications, Offers and Placements pages) - Filter by read/unread: - All, Unread, Read - “Reset Filters” button → reset filters to default (all results included) - Cancel Button → close Filter drawer, no changes applied - Apply Filters button → close Filter drawer, apply filters - If any filter is applied - orange dot is added to funnel button - Notification Table : - Table with columns: - Type - sortable (descending / ascending) - Message - Date & time - sortable (descending / ascending) - Action - Envelope button -> mark as read - Default sorting by date (descending) - Individual notification line, if unread: - Notification text bold - Envelop button → mark as read - Individual notification line, if read: - Notification text normal - Chevron icon instead of envelope button → same as row click - Marking an individual notifications as read - Click on open envelope action button - Row item click → trigger redirect and mark as read - Notification may not be marked as unread or be deleted - Standard project table pagination - Bulk table actions - nice to have - Notification Types: - Offers - New Placement Created - Candidate accepts an offer - Title : Offer Accepted - Text : Good news! [candidate_name] has accepted your offer for [Job ID] job and Awaiting Placement has been created - Action : Go to Recruitment page, filtered by candidate’s first and last names - New Offer Declined - Candidate declines an offer - Title : Offer Declined - Text : Unfortunately, [candidate_name] has declined your offer for [Job ID] job - Action : Go to Recruitment page, filtered by candidate’s first and last names - Offer About to Expire - 72 hours before offer expiry date & time - Title : Offer Expiring Soon - Text : Attention! - Your offer to [candidate_name] for [Job ID] job expires in less than 1 day - Action : Go to Recruitment page, filtered by candidate’s first and last names - Offer Expired - Instantly once the offer expired - Title : Offer Expired - Text : Your offer to [candidate_name] for [Job ID] job has expired. - Renew it if you wish - Action : Go to Recruitment page, filtered by candidate’s first and last names - Applications - New Application Received - Candidate applied for a job - Title : New Application - Text : [candidate_name] has applied for [Job ID] job. - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placements - Placement Declined - Candidate declines a placement - Title : Placement Declined - Text : Unfortunately, [candidate_name] has declined the placement for [Job ID] - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placement is about to start - 72h before placement start date - Title : Placement Starts Soon - Text : [candidate_name]'s placement for [job ID] is about to start. - Make sure everything are ready! - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placement Active - On the placement start date - Title : Placement Started - Text : [candidate_name]'s placement for [job ID] is now active and the work has started - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placement About to End - 7 days before placement end date (at 8:00 in the morning of that day) - Title : Placement Ending Soon - Text : [candidate_name]'s placement for [job ID] is ending in 7 days. - You might want to extend the placement - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placement Ended - on the placement end date - Title : Placement Complete - Text : [candidate_name]'s placement for [job ID] has ended and automatically archived - Action : Go to Recruitment page, filtered by candidate’s first and last names - Placement Confirmation Process - triggers provided by Victoria-ID API - Contract Signing is successful - On completion of step 2 (Contract Signing) - Title : Placement Confirmed - Text : [candidate_name] has successfully signed the contract and now the placement for [job ID] is confirmed - Action : Go to Recruitment page, filtered by candidate’s first and last names - Documents Finalizing is successful - on completion of step 3 (Documents Finalizing) - Title : Placement Ready to Start - Text : [candidate_name]'s placement for [job ID] is now all set up and ready to start - Action : Go to Recruitment page, filtered by candidate’s first and last names - Timesheets - New Timesheets to Approve - Every Monday at 06:00 (configurable in Django Admin) - Title: - New Timesheets to Approve - Good morning! - You have N new timesheet(s) ready for review and approval - Action: - Go to Timesheets page > Pending tab (empty after Thu 00:00) - Timesheet Auto-Submitted - On Thursday 00:00 for any timesheets manager did not submit - Title: - Timesheets Auto-Submitted - N timesheet(s) were automatically submitted for payroll as the deadline passed - Action: - Go to Timesheets page > Approved tab - Timesheet Correction Made - When manager corrects an already payrolled timesheet - Title: - Correction Applied - The correction for [candidate_name]'s timesheet for week N has been submitted by [manager_name] and will be processed in the next payroll batch - Action: - Go to Timesheets page > Approved tab, filtered by candidate name + week # (nice to have) - Reviews & Feedback - Request Review for Candidate - on the placement end date - Title : Request Feedback - Text : Please share your experience regarding [candidate_name] as [job ID] worker - Action : open “Leave Review” modal for this worker - Candidate Review Submitted - candidate has left a review for your company - Title : New Review from Candidate - Text : [candidate_name] has shared feedback about their experience of [job ID] job at your company - Action : Go to Company Page → Reviews (TBD) - System - Platform Maintenance Notices - scheduled maintenance - Title : Maintenance Scheduled - Text : Platform maintenance is scheduled for [date & time range]. Some services may be temporarily unavailable - Action : no action on click, just mark as read - Notifications for MVP - All Notifications are featured on Notifications page in newest first order - No push messages or toasts, or email notifications on single events - For time-sensitive notifications (expiring offers, placements ending soon, placements starting soon, etc.), the number of hours should be configurable from Django admin account

10.1.1 (не MVP)

10.2 Task Center Widget - (не MVP)

User Story:

As a manager I want to see a Task Center widget on my dashboard showing my pending tasks and action item So that I can quickly identify and prioritize urgent work

Описание: The Task Center widget provides a quick view of the most actionable items requiring a manager’s attention on the main dashboard. Each items aggregates the corresponding notifications and shows the current total count of the items as for the moment. It displays pending placements, applications awaiting review, offers about to expire, and other critical tasks organized by priority and deadline. The widget allows managers to quickly navigate to the relevant pages and stay focused on what matters most.

Критерии приёмки: - Daily Digest - Email notifications - One email notifications daily - Daily Task Digest - Daily Task Digest Email - sent daily at 6:00 - Trigger: - Automated, every day at 6:00 - Title: - Your Daily Task Summary - Content Summary: - Text: “Good morning, [manager_name]! - Here is your morning digest of pending tasks in Cruits. - Please take action on these items to keep the recruitment process on track and respond to candidates promptly. - The sooner you act, the better experience your candidates will have.” - List of all pending tasks and action items for the current day - Grouped by most recent first - Includes the items from Task Center, with count: - Unread chats - Unprocessed applications as for the moment - Expiring offers - Placements taking too long to confirm - Placements starting soon - New timesheets - Quick action links to relevant pages - Main button / CTA: - View All Tasks → Opens Dashboard page - Email Format: - HTML responsive design for desktop and mobile - Conditions: - Only sent if manager has at least 1 pending task/notification - No email sent if task list is empty - Sent in Dutch local timezone CET at 6:00 in the morning - The time and period of this email should be configurable in Django admin - Task Center Widget Layout: - Access point - Dashboard page - Title: "Task Center" - Shows up to 6 items - Items displayed in a list view - “Last Updated” timestamp on bottom right - Task List: - Each task displays: - Task type icon - Count indicator (orange) - Task title (bold) - Aligned with singular / plural number (like “1 Unread chat” & “2 Unread chat S ”) - Task description / call to action - Timestamp (“Today” for the current day - nice to have) - Arrow icon - Click on item leads to corresponding page - Task Types - aggregated notifications of corresponding type, each new notification gives +1 count: - N Unread chats - Secondary text: “Stay connected with your applicants - check your messages now” - Leads to: - Chats page - Rule: count number of all unread chats - N unprocessed applications - Secondary text: “Ready to review? - Let's move these applications forward” - Leads to: - Unprocessed Applications page - Rule: count number of all unprocessed applications - N offers expiring soon - Secondary text: “Time is running out on these offers - let's act now” - Leads to: - New Offers page (in future - filtered by “Expiring Soon”) - Rule: count number of offers that expire within 72 h - N placements is taking too long to confirm - Secondary text: “Be the catalyst - these placements may need your attention” - Leads to: - Awaiting Placements (in future - filtered by “Awaiting Too Long”) - Rule: count number of placements that are in Awaiting tab more than 72 h - N Placements are about to start - Secondary text: “The countdown is on - check the starting placements” - Leads to: - Confirmed Placements page (in future - filtered by “Starting Soon”) - Rule: count number of placements that start within 72 h - N new timesheets - Secondary text: "New timesheets are ready for your review - let's get them approved" - Leads to: - Timesheets page > Pending tab - Rule: count number of all timesheets in Pending tab - Empty State: - If there are 0 items in any task, then hide task from the list - If there are no tasks at all, then display empty state box - Icon + message: "Well Done! - Your efficiency is setting the standard" - “Last Updated” timestamp on bottom right - Sorting & Prioritization: - Tasks sorted by latest first (most recent to have +1 to count value) - Sorting updates on widget / page update - Timestamps are changed on update - Interactions: - Clicking on item navigates to relevant page - Coming back to Dashboard after click on item: - If there is at least +1 item in any tasks since last page visit - reorder items with latest first - If there are no items of certain type (unread chats, let’s say) - this task is not shown - Task may not be marked as read/unread or be deleted - Hover states to show full task text if truncated - Refresh & Updates: - Widget updates in real-time as new notifications arrive - nice to have (or on widget refresh) - No manual refresh required for latest data - The number of hours for expiring offers, placements taking too long to confirm and placements starting soon should be configurable from Django admin account, as for now it is 72 h for all three of them

10.2.1 FOR LATER More task items on widget Sick leave requests Time off requests Meetings scheduled Task dismissal & snooze - t