Skip to content

Epic 06: Notifications and Messaging

Overview

The Notifications and Messaging Epic empowers flexworkers and managers to maintain clear, timely communication regarding job opportunities, assignments, and updates. This epic introduces a unified communication layer that delivers job-related alerts, workflow notifications, and transactional messages while enabling seamless direct messaging between flexworkers and managers. The features will ensure critical job information and status updates reach both parties at the right moment, driving faster decision-making and stronger collaboration. The system provides flexworkers and managers with full control over notification preferences, supports multi-channel delivery (in-app, email, push), and ensures conversations remain organized and contextual to specific jobs. Messaging functions are integrated within job workflows, allowing managers and workers to discuss requirements, confirm availability, address concerns, and provide feedback directly.

Business Value

  • Enable flexworkers to receive timely job alerts and assignment updates that match their skills and availability Facilitate real-time communication between managers and flexworkers to reduce job matching friction Increase response rates through targeted notifications that highlight urgent opportunities Provide managers with reliable messaging channels to coordinate with workers and share job details Reduce miscommunication and clarification delays through contextual, threaded conversations Improve worker retention by keeping flexworkers informed of relevant opportunities and feedback Enable both parties to customize notification frequency and channels to suit their preferences

Solution Concept

The solution establishes a centralized notification hub and integrated messaging system designed specifically for flexwork environments. Flexworkers receive intelligent job notifications filtered by their skills, location, and preferences, eliminating irrelevant alerts. Managers can communicate directly with workers about specific jobs, share requirements, confirm availability, and provide feedback through an organized messaging interface. All conversations are threaded by job and easily searchable, with in-app and multi-channel notifications ensuring both parties stay informed without missing critical communications. The system is fully optimized for mobile devices, enabling flexworkers to review opportunities and respond to managers instantly from anywhere.

Features and User Stories

6.1 Notifications (не MVP)

User Story:

As a flexworker I want to receive notifications about important updates So that I don't miss offers, messages, or new job opportunities

Описание: The Notifications system keeps workers informed about important events on the platform. Workers receive notifications for new offers, messages, matching jobs, and other relevant updates. The system provides granular control over notification types and delivery channels while respecting quiet hours and user preferences. alt size=16 style="background-blend-mode:normal;background-clip:content-box;background-position:50% 50%;background-color:rgba(0,0,0,0);background-image:var(--sf-img-10);background-size:100% 100%;background-origin:content-box;background-repeat:no-repeat"> BlinkSoftware [HF] [Main]

Критерии приёмки: - Notifications Page: - Access points - bell button on top right in Jobs, Work and Messages pages - New Notification indicator on bell icon (orange dot next to bell icon) - nice to have - Page title: "Notifications" - Back button to previous page - Filter by type button - Filter by date button - All, Unread, Read - switch on swap gesture - Notification Types: - Job Offers: - New offer received (high priority) - Title: 🎉 You Got an Offer! - Great news! [Company] wants to work with you and invites you as [position] - Button: - View Offer → Offer Details - Offer Renewed (high priority) - once offer got edited / renewed by manager - Title: 🔄 Your Offer is Renewed! - Text: [Company] has edited your offer for [position]. Check it out! - Button: - View Offer → Offer Details - Offer about to expire (<1 day) - 24h before expiry date & time - Title: ⏰ Offer Expiring Soon - Your offer from [Company] expires in less than 1 day. - Don't miss out! - Button: - View Offer → Offer Details - Offer expired - instantly once the offer expired - Title: 😔 Offer Expired - Your offer from [Company] has expired. - Still interested? - Reach out to their manager - Button: - Send Message → dialog with [Company] manager - New jobs matching your profile - ≥60% matching score (for MVP) - Title: ✨ Perfect Match Found! - Text: [Company] just posted a job that fits your skills perfectly - Button: - View Job → Job details page - Saved job dates updated - once a manager updated job dates in “Saved” - Title: 📢 Saved Job Updated - Just wanted you to know the dates of your saved job at [Company] are updated - Button: - View Job → Job details page - Saved job closing soon - 24 h before start date - Title: ⚡ Apply Soon! - Your saved job at [Company] is closing soon – don't wait too long! - Button: - View Job → Job details page - Job application status update - you are hired - Title: 🎊 Application Update - Text: [Company] has [welcomed you aboard as [job_position]. Congratulations! - Button: - View Job → Job details page - Follow-up Epic - Button: - View Offer → Offer Details - Job application status update - you are declined - Title: 📬 Application Update - Text: [Company] has decided to move forward with other candidates for [job_position]. Anyway, your dream job will find you! - Button: - View Job → Job details page - Follow-up Epic - Button: - View Application → Applications > Declined - Job application status update - you are reconsidered - Title: 📬 Application Update - Text: [Company] has decided to reconsider you for [job_position]. You have another chance! - Button: - View Application → Applications > Applied - Profile: - Profile completion reminder (once a week, if profile completion <60%) - Title: 🌟 Boost Your Profile - A complete profile helps us find your perfect job match. - Let's finish it together! - Button: - Go to Profile → Profile page - Certificate expiries soon (if there is expiry date, < 30 days left) - Title: ⚠️ Certificate Expiring Soon - Your [certificate_name] expires in less than 30 days. - Time to renew! - Button: - Go to Certificates → Certificates page - Certificate expired (if applicable) - Title: 🔴 Certificate Expired - Your [certificate_name] has expired. - Please renew and re-upload it to stay active - Button: - Go to Certificates → Certificates page - Placements : - Placement confirmed (high priority) - on completion of step 2 (Contract Signing) - Title: 🎊 Placement Confirmed! - You have just successfully signed the documents with Cruits, and you placement is confirmed. - Almost there! - Button: - View Placement → Placement details - Document Signing - step 2 not successful - Title: ⚠️ Document Signing Issue - Something went wrong in your document signing process. - Please try again or contact Cruits - Button: - View Placement → Pending Placements page - Placement is Active - on completion of step 3 (Document Uploading) - Title: 🚀 Placement Active! - Congrats! - You're all set as [job_position] at [Company]. Let's go! - Button: - View Placement → Placement details - Document Upload - step 3 not successful - Title: ⚠️ Document Upload Issue - Something went wrong in your document upload process. - Please try again or contact Cruits - Button: - View Placement → Pending Placements page - Placement ended - placement end date was yesterday - Title: 👋 Placement Complete - Your placement as [job_position] at [Company] has ended. - Thanks for your great work! - Button: - View Placement → Placement details - Placement discontinued - placement discontinued by manager - Title: 📬 Placement Update - Unfortunately, your placement as [job_position] in [Company] is discontinued. - Find out the reason below - Button: - View Placement → Placement details - Reviews: - Review request (placement has been ended + 1 day) - Title: 💭 How Was It? - Share your experience as [job_position] at [Company] – your feedback matters! - Button: - Leave a Review → My Reviews (Reviews from Me) - New Review Received (placement has ended + manager left a review ) - Title: ⭐ You Made an Impact! - Text: [Company] appreciated your work as [job_position] – check out their feedback! - Button: - View Review → My Reviews (Reviews for Me) - Timesheets (for Improvements Epic): - New Timesheet to Review - Title: ⏱️ New Timesheet - Your timesheet for week N for [job position] job is ready. - Please review and mark your hours reviewed. - Button: - View Timesheet → Timesheet Details - Auto-Review - Title: ✅ Timesheet Auto-Reviewed - Your timesheet for week N for [job position] job was automatically marked as reviewed. - Button: - View Timesheet → Timesheet Details - Timesheet Corrected - Title: ✏️ Timesheet Updated - Your timesheet for week N for [job position] job has been corrected. - Please review the updated details. - Button: - View Timesheet → Timesheet Details - System: - Terms of service updates - Title: 📋 Terms Updated - We've updated our Terms of Service. - Feel free to check what's new! - Button: - View Terms of Service → Terms of Service pop-up - Platform maintenance notices - Title: 🛠️ Quick Maintenance - We'll be doing maintenance on [date & time range]. Thanks for your patience! - Button: - Ok, got it (grays out) - Payslips: - New payslip available (high priority) - Title: 💰 Payslip Ready! - Your payslip from [Company] is now available - Button: - View Payslip → Payslip details - Notification Card Display: - Each notification shows: - Notification type icon - Title (bold if unread) - Flag icon for high priority notification - Brief message/description - Timestamp - Read/unread indicator - Action button → navigates to relevant page - Related entity preview (job title, message sender, etc.) - Unread notifications highlighted - Tap on notification card or button marks as read - Filter Options: - Filter modular bottom sheet with options: - All Notifications (default) - High Priority - New offer received - Placement confirmed - New payslip - Offers - Profile - Placements - System - Timesheets - Payslips - Filter persists during session - Badge count per filter type - 20 notifications per load - Lazy loading - Empty state: - "No notifications" - Relevant icon - Encouraging message - Push Notification Delivery: - Web Push API for web app - Native notifications for PWA - Notification permission request on first launch - Handle permission denied gracefully - Retry permission request after 7 days - Action buttons in notifications: - "View" - opens relevant page - "Dismiss" - marks as read - Email Notifications: - Fallback if push not enabled - Sent after 10 minutes if notification unread - Formatted HTML emails - Unsubscribe link (except system notifications) - Mobile-responsive design - Notification Badge: - Count of unread notifications - Max display: "99+" - Update in real-time - nice to have - Clear on scrolling through - Real-Time Updates: - nice to have - WebSocket connection for instant delivery - Polling fallback every 30 seconds - Background sync for offline notifications - Queue notifications when offline - Deliver on reconnection - Notification Actions: - Direct action buttons in notifications: - "Accept Offer" → confirmation flow - "View Message" → opens message thread - "Apply Now" → add job application - "View Details" → relevant page - Actions update notification status - Remove notification after action completed - Notification Grouping: - If it is a “New Message” notification and the same manager has sent a message < 5 min ago, then don’t push a notification - Group similar notifications - "3 new messages from Company A" - "5 new jobs matching your profile" - Notification Retention: - Keep notifications for 30 days - Auto-delete after 30 days - Keep unread indefinitely - Error Handling: - Handle failed delivery gracefully - Retry logic for critical notifications - Fallback to email if push fails - Clear error messages for permission issues

6.2 Messaging (не MVP)

User Story:

As a flexworker I want to communicate one-on-one with managers through a messaging system So that I can discuss job details, find out about hiring process and maintain professional communication

Описание: The Messaging feature enables real-time one-on-one communication between flex workers and managers. Users can initiate conversations, send and receive messages, exchange files and maintain a searchable message history. The system presents conversations in a reverse chronological list with preview information and supports notifications for new messages. alt size=16 style="background-blend-mode:normal;background-clip:content-box;background-position:50% 50%;background-color:rgba(0,0,0,0);background-image:var(--sf-img-10);background-size:100% 100%;background-origin:content-box;background-repeat:no-repeat"> BlinkSoftware [HF] [Main]

Критерии приёмки: - Messaging Page Header: - Page title: "Messages" - Search bar at top - Unread message indicator (badge count) - nice to have - Navigation icon to access notifications - Unread - Switch on tap and on swipe gesture - Conversation List View: - Display all conversations in reverse chronological order (most recent first) - Each conversation shows: - Company Logo (or placeholder) - Company name - Position name - Last message preview (truncated) - Timestamp of last message - Unread message indicator (orange dot) - Pull to refresh - Infinite scroll/lazy loading for conversations - Empty state when no conversations: - "No messages yet" - "All your conversations will be saved here" - Illustration/icon - Message Thread View: - Display conversation header with: - Company's name & logo - Job context info box with job link clickable - Online status indicator - nice to have - Message bubble layout: - Sent messages aligned right - Received messages aligned left - Manager’s name and avatar (or placeholder) on each message - Timestamp on each message - Message read status (checkmarks or "Seen" indicator - nice to have) - Input field at bottom: - Text input with placeholder: "Type a message..." - Send button (arrow icon) - Attachment button (chain icon) for files/images - Scroll to bottom to see latest messages - Auto-scroll to newest message when thread opens - Hide keyboard on Send - nice to have - Message Functionality: - 1 candidate - 1 position - 1 company - multiple managers - Multiple managers can send messages in the same dialog, regarding 1 job posting - Different positions (job postings) of the same company will be in a different message threads - Send and receive messages in real-time - Text formatting support (basic) - Character limit: 5,000 characters per message - Typing indicator ("User is typing...") - nice to have - Message delivery status - nice to have: - Single checkmark: - Double checkmark: - Delivered - Double blue checkmark: - Search Functionality: - Search conversations by: - Company name - Manager name - Position name - nice to have - Message content - Search bar with placeholder: "Search messages..." - Remove search button [X] - Real-time search results - "No results found" message when applicable - Notifications: - Push notification for new messages (when app is closed) - In-app notification banner (when app is open) - nice to have - Notifications can be disabled in settings - Notification badge on app icon - nice to have - Notification badge on Messaging page tab - nice to have - User Flow: - First time opening Messaging: - Show empty state - Opening a conversation: - Load last 20 messages initially - Load older messages on scroll - Auto-refresh for new incoming messages - Closing and reopening conversation: - All message history preserved - Position scrolls to last unread message - Performance: - Fast message delivery (< 1 second) - Smooth scrolling through message history - Cached conversations for offline viewing - Progressive loading of older messages - Optimized image/file loading - Mobile Optimization: - Touch-friendly message bubbles - Keyboard auto-dismiss on message send - Full-width conversation view - Optimized for portrait and landscape orientation - NOT MVP: - End-to-end encryption - Swipe to delete conversation (with confirmation) - Message editing after sending - Message reactions/emojis on messages - Forwarding messages - Voice messages - Video calling integration - Group messaging/chat rooms - Message scheduling - Auto-replies/out-of-office messages - Message templates - Read receipts toggle - Message translation - Integration with external communication platforms - Chatbots/AI responses - Message starring/favorites - Media gallery from conversations - Message Archive/Organization: - Pin/unpin conversations - Mute conversation notifications (1 hour, 8 hours, 1 day, permanently) - Mark as read/unread - Archive conversation (removed from main list, recoverable) - Performance Requirements - Notifications page load < 2 seconds - Real-time notification delivery < 3 seconds - Notification System - WebSocket for real-time delivery - Push notification service integration - Email fallback system - Notification queue management - Retry logic for failed deliveries - Delivery analytics and monitoring - Related content - More info - g(p.length) css-6cu6fo" role=listitem> - Manager Notifications - Manager Notifications - Nadia Albul - g(p.length) css-6cu6fo" role=listitem> - Applications, Offers, Placements and Chats - Applications, Offers, Placements and Chats - Nadia Albul - g(p.length) css-6cu6fo" role=listitem> - Checklist - Checklist - Olena Kurto - g(p.length) css-6cu6fo" role=listitem> - AI Assistant - AI Assistant - Nadia Albul - g(p.length) css-6cu6fo" role=listitem> - Job Application, Offer and Placement - Job Application, Offer and Placement - Nadia Albul - g(p.length) css-6cu6fo" role=listitem> - Candidates Selection & Offer Sending - Candidates Selection & Offer Sending - Nadia Albul