Skip to content

Epic 12: Improvements

Overview

The Improvements Epic consolidates a focused set of cross-platform enhancements that raise the overall quality, completeness, and trustworthiness of the Cruits platform for both candidates and managers. Rather than introducing a new feature domain, this epic systematically closes the gaps identified through user feedback, operational issues, and compliance requirements accumulated since the platform's initial releases. On the candidate side, the scope covers clearer onboarding guidance (explanation texts, CV parsing confirmation, phone number hints, teaser screens), two new profile sections required for placement documents (Permanent Home Address, Payrolling / Loonheffingskorting), a streamlined Offer Confirmation Stepper that validates data completeness before a candidate accepts an offer, and the ability to withdraw an application when it is no longer relevant. On the manager side, the epic delivers a Company Profile page with consolidated reviews and ratings, swapped job role labels for improved readability, First Day Instructions on job postings, a quick-access conversation search in Chat, and a unified analytics tracking setup across web and mobile that enables data-driven product decisions going forward.

Business Value

  • Increase onboarding completion rate by reducing candidate confusion through contextual guidance and transparent data extraction feedback Ensure placement documents can be generated without manual back-and-forth by collecting Permanent Home Address and Payrolling preferences upfront Enable data-driven product iteration by establishing unified analytics and Hotjar coverage across all key web and mobile surfaces Reduce manager workload by surfacing clearer job identifiers, conversation history, and company information in fewer clicks Improve candidate trust and motivation to complete registration through pre-login teaser screens that communicate platform value Lower inbound support and chat noise by empowering candidates to self-manage applications (withdrawal) and empowering managers with First Day Instructions on postings Strengthen compliance posture by integrating Loonheffingskorting preference directly into the payrolling pipeline

Solution Concept

The solution addresses both platforms simultaneously. On desktop, a new Company Profile page gives managers a single location to maintain their company description and review history, with changes automatically propagating to all related job postings. Job role labels across tables and widgets are replaced with human-readable job IDs and position names, eliminating the need for managers to cross-reference internal CAO nomenclature. A First Day Instructions field on job postings allows managers to communicate logistics once and have the information appear automatically on the candidate's confirmed placement details. Chat gains a conversation-search shortcut that surfaces all interactions with a given candidate in one click. On mobile, the candidate profile is extended with a Permanent Home Address section and a Payrolling section, both feeding directly into the Offer Confirmation Stepper - a guided, pre-acceptance flow that validates completeness before a placement is created. CV upload gains a parsing confirmation modal that clearly communicates what was extracted. Candidates entering the app for the first time see three teaser screens that present the platform's key value propositions before the registration prompt. Throughout onboarding and the profile, every section now carries a concise explanation of why the data is needed and how it is used. Underpinning all of this, a unified analytics and Hotjar setup is deployed across all public and authenticated pages of the web app and all main screens of the mobile app, providing the product team with consistent, privacy-compliant usage data and session recordings from day one of this MVP release.

Features and User Stories

12.25 Updates for App Store Compliance

User Story:

As a Cruits team I want to make the app compliant with App Store Policies So that we can get the app published on App Store

Описание: Add adjustments to the app, based on rejection report ( Slack message )

12.25.1 Phone Number not Required on Registration Signup should not require mobile phone To Do Preview

User Story:

As a candidate I want to omit entering my phone number while registering So that I can disclose limited personal info until I see the value of the app for me

Критерии приёмки: - Phone number is needed for Victoria-ID verification and placement documents, no earlier than that - Phone number field remains on the Sign Up screen, but is changed from required to optional: - No validation error is shown if the field is left empty - Field is visually labelled as optional (like "Phone number (optional)") - Phone number also becomes optional in the Onboarding flow and in Profile > Basic Info, so the candidate can proceed without filling it in - Phone number is required when the candidate accepts the first offer (in offer stepper, see US 12.7): - If the phone number is not entered during Onboarding or in Profile, candidate is enforced to enter it before proceeding with offer acceptance stepper

12.25.2 Browse Jobs without Registration User without a signup can view job posting To Do Preview

User Story:

As a candidate I want to browse through the jobs without registration So that I can decide whether I would like to proceed with signing up

Описание: snippet Hourly rate ("€N per hour") "View Details" button Clicking "View Details" on any job card does not open the job page - instead, a bottom sheet modal appears: Title: "Unlock Job Details" Message: "Please log in or sign up in order to view the details and apply for the job" "Log In" button → Log In flow "Sign Up" button -> Sign Up flow Close button ([x]) -> close the modal and return the candidate to the job list

Критерии приёмки: - Add the third button on initial sign up screen - "Browse Jobs" - Clicking "Browse Jobs" opens a simplified "Browse jobs" page: - Page title: "Browse jobs" - Search bar is accessible - No navigation bar, tabs, matching score, distance, or filters are available - Job list shows job cards, each containing: - Company logo / avatar - Job title - Company name - Location - Placement period (start date - end date) - Skill tags - Short job description snippet - Hourly rate ("€N per hour") - "View Details" button - Clicking "View Details" on any job card does not open the job page - instead, a bottom sheet modal appears: - Title: "Unlock Job Details" - Message: "Please log in or sign up in order to view the details and apply for the job" - "Log In" button → Log In flow - "Sign Up" button -> Sign Up flow - Close button ([x]) -> close the modal and return the candidate to the job list

12.26 Timesheet Improvements Timesheet improvements To Do Preview (не MVP)

User Story:

As a Cruits system I want to check for errors So that the valid timesheets are generated and submitted to MySolution correctly

Описание: Time block overlaps within one worker's schedule need to be handled, as Business Central does not allow overlaps. Since multiple timesheets is unified as one across all active placements for a worker, any schedule conflict must be caught before it reaches MySolution. Acceptance Criteria Validation on "Send Offer" event (manager sends an offer): Check whether the candidate receiving the offer has any Awaiting, Confirmed, or Active placements with dates and planned weekly schedule that overlap with the new offer start-end dates and schedule If no overlap: proceed with sending the offer as usual If overlap detected: Block the offer from being sent Show an error toast: "Failed to send the offer due to the overlap of this candidate's weekly schedule. Please contact them to find out how the schedule should be altered" Validation on "Accept Offer" event (candidate accepts an offer): Check whether the candidate has any Awaiting, Confirmed, or Active placements with dates and planned weekly schedule the overlap with this offer dates and schedule If no overlap: proceed with the offer acceptance flow as usual If overlap detected: Block the offer from being accepted Show an error bottom sheet modal with: Title: "Error on Accepting the Offer" Message: "Seems like the planned weekly schedule of this offer overlaps with your pending or active placement. Please ask the manager to create a new offer with an altered schedule so there are no overlaps" Timesheet generation - exclude out-of-range days: Days outside the active placement's start-end date range must not be included when generating timesheets First week timesheet: no days before the placement start date Last week timesheet: no days after the placement end date Timesheet editing - disable out-of-range days: Adding a time block o

Критерии приёмки: - Validation on "Send Offer" event (manager sends an offer): - Check whether the candidate receiving the offer has any Awaiting, Confirmed, or Active placements with dates and planned weekly schedule that overlap with the new offer start-end dates and schedule - If no overlap: proceed with sending the offer as usual - If overlap detected: - Block the offer from being sent - Show an error toast: "Failed to send the offer due to the overlap of this candidate's weekly schedule. - Please contact them to find out how the schedule should be altered" - Validation on "Accept Offer" event (candidate accepts an offer): - Check whether the candidate has any Awaiting, Confirmed, or Active placements with dates and planned weekly schedule the overlap with this offer dates and schedule - If no overlap: proceed with the offer acceptance flow as usual - If overlap detected: - Block the offer from being accepted - Show an error bottom sheet modal with: - Title: "Error on Accepting the Offer" - Message: "Seems like the planned weekly schedule of this offer overlaps with your pending or active placement. - Please ask the manager to create a new offer with an altered schedule so there are no overlaps" - Timesheet generation - exclude out-of-range days: - Days outside the active placement's start-end date range must not be included when generating timesheets - First week timesheet: no days before the placement start date - Last week timesheet: no days after the placement end date - Timesheet editing - disable out-of-range days: - Adding a time block on days outside the active placement's start-end date range must be disabled for Manager - First week timesheet: days before the placement start date are disabled - Last week timesheet: days after the placement end date are disabled - Disabled days are visually distinct from editable days (greyed out) - Validation on timesheet edit by manager: - The manager must not be able to edit time blocks in a way that results in overlapping with the time blocks of another placement of this worker for a very same date - Validation is enforced at the response level (backend), not only on the UI - If an overlap would result from the edit: - Change is blocked - Error toast is shown: "Failed to edit the timesheet due to the overlap of this worker's weekly hours" - NOT MVP - 12.N Chat Initiated indicator - User Story - As a manager - I want to understand at a glance whether we have a chat with a candidate and who initiated it - So that I save my time while searching for the suitable candidates - Acceptance Criteria - Each candidate card on both All Candidates page and job-related Candidates page shows a chat initiation indicator, if chat exists - Each candidate profile header shows a chat initiation indicator, if chat exists - The chat initiation indicator has two possible states: - Candidate or Company - Candidate: initiated by candidate - first message with this job context was sent by the candidate - Company: initiated by any manager of a company - first message with this job context was sent by the manager - Indicator has a tooltip explaining its meaning (for example, “Chat initiated by candidate”, “Chat initiated by company”) - If no chat exists in the system for this candidate-company pair, no chat indicator applied - Candidates pages filter - Filter drawer includes a filter named “Chat initiated by” with three options: - All, Candidate, Company - By default, “Chat initiated by” is set to All and shows candidates of all chat states - Chat initiated by selection is preserved when switching between All Candidates and job-related Candidates pages within the same session - Related content - More info - g(p.length) css-6cu6fo" role=listitem> - Improvements suggestions - Improvements suggestions - Mykhailo Virych - g(p.length) css-6cu6fo" role=listitem> - AI Assistant - AI Assistant - Nadia Albul - g(p.length) css-6cu6fo" role=listitem> - Timesheets - Timesheets - Nadia Albul - 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> - Focus Group Questionnaire for Demo 2 - Focus Group Questionnaire for Demo 2 - Nadia Albul