Skip to content

Epic 05: Candidate Profile and Job Discovery

Overview

The Candidate Profile and Job Discovery Epic enables flexworkers to manage their professional profiles, discover relevant job opportunities, and stay informed about important updates. This epic implements a comprehensive profile management system and job discovery with matching engine applied that keeps workers engaged throughout their journey on the platform. The system provides workers with complete control over their profile information, allowing them to maintain accurate and up-to-date data that improves matching accuracy. The job discovery features help workers find opportunities that align with their skills, preferences, and availability.

Business Value

  • Enable workers to maintain accurate, complete profiles that improve matching quality Provide intuitive job search and filtering capabilities that help workers find suitable opportunities quickly Build trust through transparent review systems that showcase worker quality and client feedback Reduce support burden through self-service profile management capabilities Increase application popularity by making job discovery effortless Improve retention through saved job feature Ensure workers can quickly inspect job suitability through comprehensive job detail pages

Solution Concept

The solution provides a comprehensive profile management system where workers maintain complete control over their information. The profile page displays all worker data with a clear completion percentage indicator that motivates workers to provide comprehensive information. The job discovery page presents relevant opportunities through filtering and search capabilities. Workers can save interesting jobs for later review and receive personalized recommendations based on their profile. The review system builds credibility by showcasing feedback from past placements while allowing workers to rate their own experiences. All features are optimized for mobile devices with fast loading times and intuitive navigation.

Features and User Stories

User Story:

As a flexworker I want to view my complete profile with all information in one place So that I can see what employers see and track my profile completion

Описание: The Profile Page serves as the central hub for worker information. It displays all profile data including personal information, skills, experience, documents, and preferences. A prominent completion percentage indicator motivates workers to fill out missing information. The page provides quick access to edit functions and displays the worker's current status, reviews, and verification badges. 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]

Критерии приёмки: - Profile Header: - “Profile” page name - “Settings” button (gear icon) → user story

5.4 Worker photo or avatar placeholder Full name display Current location (city, country) Profile completion percentage badg

5.2 Availability status badge ("Open to Work" - green dot, "On Assignment" - yellow dot, "Not Open to Work" - red dot) Displ

5.1.1 (не MVP)

5.2 Edit Profile

User Story:

As a flexworker I want to edit my availability and basic information easily So that I can keep my profile up to date and accurate

Описание: The Edit Profile feature provides dedicated interfaces for updating the two most frequently changed profile sections: Availability and Basic Information. This follows the same design patterns used during onboarding, ensuring a familiar experience. Workers can quickly update their availability status when circumstances change and modify personal details as needed. 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]

Критерии приёмки: - Edit Profile Entry Points: - "Edit Profile" button on main profile page - Opens to tabbed interface - Two tabs: "Availability" and "Basic Info" - Default to "Availability" tab - Change Photo: - Current avatar preview - Change Photo button → file picker modal - Updated avatar photo is loaded instantly - Availability Tab: - Same layout as a body of onboarding step 4.7 (Availability Preferences) - Availability Status section: - Open to Work (with "Available from" date picker) - On Assignment (with "Available from" date picker) - Not Open to Work - Shift Preferences checkboxes: - Day Shifts - Evening Shifts - Night Shifts - Weekend Shifts - Variable Shifts toggle: - Yes/No buttons - Explanation text - "Save Changes" button → Profile - "Cancel" button → Profile - Basic Info Tab: - Same layout as onboarding step 4.2 (Basic Information) - Personal Details Fields: - First Name (editable) - Last Name (editable) - Phone Number (grayed out with info tooltip “Cannot be changed once registered with”) - Email Address (grayed out with info tooltip “Cannot be changed once registered with”) - Date of Birth (date picker) 16+ - Gender (Male/Female toggle) - Nationality (modal bottom sheet with search) - Emergency Contact Section: - Name (text field) - Phone Number (with country code) - "Save Changes" button → Profile - "Cancel" button → Profile - Validation: - All required fields must be completed - Date of birth must indicate age 16 or older - Phone numbers must be valid format - Error messages and red highlight of relevant fields - Prevent saving with incomplete required fields - Data Persistence: - Autosave when changes are made - Show loading indicator during save (if it takes >2 sec) - Return to profile page once Save is tapped - Handle API errors gracefully - Mobile Optimization: - Blur on background for sticky top and bottom - Tab switching with swipe gesture - nice to have - Smooth keyboard handling - Appropriate input types for fields - Touch-friendly date pickers

5.2.1 (не MVP)

User Story:

As a flexworker I want to view reviews I've given and received So that I can rate the companies I worked in and see how clients rated my work

Описание: The My Reviews section provides transparency into the feedback system. Workers can view reviews they've received from clients after completing placements, as well as reviews they've left for their own work experiences. This builds trust and helps workers understand how their performance is perceived while encouraging them to provide feedback on their placements. 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]

Критерии приёмки: - Reviews Page Header: - Page title: "My Reviews" - Back button to Profile - Two tabs: "Reviews for Me" and "Reviews from Me" - Default to "Reviews for Me" tab - Reviews for Me Tab: - Rating info card on top - Overall rating average - Total number of reviews - Display reviews received from employers - Each review card shows: - Client company name - Position/job title - Star rating (1-5 stars) - Review date - Review text - Placement dates (from-to) - Sorted by Most Recent - Empty state if no reviews: - Illustration/icon - "No reviews yet" message - "Complete your first placement to receive reviews" - ' alt size=16 style="--_rcxkve:16px;background-blend-mode:normal!important;background-clip:content-box!important;background-position:50% 50%!important;background-color:rgba(0,0,0,0)!important;background-image:var(--sf-img-10)!important;background-size:100% 100%!important;background-origin:content-box!important;background-repeat:no-repeat!important"> - BlinkSoftware [HF] [Main] - Reviews from Me Tab: - Display reviews worker has given for placements - Each review card shows: - Client company name - Position/job title - Star rating given - Review date - Review text - Placement dates (from-to) - Menu button with "Edit" and “Delete” options - buttons are active for 48 h after submission - after 48h, display tooltip on button tap “Reviews may not be edited after 48h since submission” - Sorted by Most Recent by default - Empty state if no reviews: - Illustration/icon - "You haven't left any reviews yet" message - "Share your experience after completing your first placement" - Review Card Details: - Expand/collapse for full review text - Character limit on preview (200 characters) - "Read more" / "Read less" on tap on the text - Timestamp in absolute date or relative format ("2 days ago" - nice to have) - Creating Review: - Prompt appears after placement completion - Star rating selector (1-5) - Text area for written feedback (optional) - Character limit: 50-2000 characters - Character counter - nice to have - "Save Review" button - "Skip for Now" option - Confirmation message on submission - Review Editing (Reviews from Me): - Allow editing within 48 hours of submission - nice to have - Same interface as submission - "Update Review" button → Reviews from Me - "Cancel" button → go back without saving - Show "edited" indicator on review - nice to have - Mobile Optimization: - Lazy loading - Show 10 reviews per page - Blur on background for sticky top and bottom

5.3.1 (не MVP)

5.4 Profile Sections

User Story:

As a flexworker I want to manage my profile sections So that I can keep my qualifications current and improve my matching with jobs

Описание: This feature provides dedicated edit interfaces for the key qualification sections of the worker profile. Each section follows the same design and functionality patterns used during onboarding, ensuring consistency. Workers can add, edit, or remove entries to keep their profiles accurate and up to date. 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]

Критерии приёмки: - Availability Section: - Same layout as a body of onboarding step 4.7 (Availability Preferences) - Availability Status section: - Open to Work (with "Available from" date picker) - On Assignment (with "Available from" date picker) - Not Open to Work - Shift Preferences checkboxes: - Day Shifts - Evening Shifts - Night Shifts - Weekend Shifts - Variable Shifts toggle: - Yes/No buttons - Explanation text - “Cancel” and “Save” buttons → Profile page - Languages Section: - Same design as onboarding step 4.4 (Languages) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Save button is active if only all levels are selected - Display current languages with proficiency levels - "Select Language" button opens modal bottom sheet - Languages list - English is mandatory and cannot be removed - Each language shows proficiency level: - 1 - Beginner - 2 - Elementary - 3 - Intermediate - 4 - Advanced - 5 - Fluent - Remove button (X) for all languages except English - Validation: - At least English with proficiency level required - If no level was selected - no level is assigned, it remains empty - Skills Section: - Same design as onboarding step 4.4 (Skills) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Save button is active if only all levels are selected - Display current skills with proficiency levels - "Add Skill" button opens modal bottom sheet - Skills list with search - For non-boolean skills, proficiency levels: - 1 - Novice - 2 - Beginner - 3 - Medium - 4 - Advanced - 5 - Proficient - Remove button (X) for each skill - Validation: - Minimum 3 skills required - If no level was selected for non-boolean skill - no level is assigned, it remains empty - Certificates Section: - Same design as onboarding step 4.5 (Certificates) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Display uploaded certificates as cards - "Upload File" button - For each certificate: - Certificate name/type (text field) - Issue date (date picker) - Expiry date (date picker, optional) - View button (preview) - Delete button - File requirements: - PDF, JPG, PNG formats - Maximum 10MB per file - Up to 10 certificates total - Validation: - Issue date must be before expiry date - Issue date in the past, expiry date in the future - Work Experience Section: - Same design as onboarding step 4.6 (Work Experience) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Save button is active if there is at least 1 entry OR “No work experience” is marked - Display existing work entries as cards - "Add Work Experience" button - For each entry: - Job title (required) - Company name (required) - Location (required) - Start date (date picker, required) - End date (date picker, required) - "I currently work here" checkbox (makes end date optional) - Job description (text area, optional) - Edit button - Delete button (with confirmation) - Entries displayed in reverse chronological order - “No work experience” checkbox is visible if there are no entries (or they are removed) - Education Section: - Same design as onboarding step 4.6 (Education) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Save button is active if there is at least 1 entry OR “No education” is marked - Display existing education entries as cards - "Add Education" button - For each entry: - Institution name (required) - Degree/Qualification dropdown (required): - High School - Vocational Training - Bachelor's Degree - Master's Degree - Location (optional) - Start date (date picker, required) - End date (date picker, required) - "I currently study here" checkbox (makes end date optional) - Key achievements (text field, optional) - Edit button - Delete button (with confirmation) - Entries displayed in reverse chronological order - “No education” checkbox is visible if there are no entries (or they are removed) - Work Preferences Section: - Same design as onboarding step 4.7 (Work Preferences) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Location Preferences: - Commute distance (km radius) number field - Preferred Positions: - "Select Preferred Positions" button - Modal bottom sheet with multi-select: - Order Picker - Packer - Forklift Driver - Reachtruck Driver - Loader / Unloader - Machine Operator - Production Worker - Line Worker - Quality Checker - Flower Sorter / Picker - Maintenance Worker - Mechanic Assistant - Forklift Driver - Order Picker - Loader / Unloader - Team LeaderForklift Driver - Order Picker - Loader / Unloader - Team Leader - Display selected as chips - "Select all" option - Industry Preferences: - "Select Industry Preferences" button - Modal bottom sheet with multi-select: - Logistics - Production - Agriculture - Display selected as chips - "Select all" option - Work Environment: - "Select Work Environment" button - Modal bottom sheet with multi-select: - Repetitive work - Standing for a long time - High temperatures - Working at height - Physically heavy - Low temperatures - Display selected as chips - Transportation Section: - Same design as onboarding step 4.7 (Transportation) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - Vehicle Ownership: - "Do you own any vehicle in the Netherlands?" Yes/No radio - If Yes - "Vehicles owned" button appears - Modal bottom sheet with vehicle multi-select - Display selected as chips - Driver's License: - "Do you have a driver's license?" Yes/No radio - If Yes, "Choose your license type(s)" button appears - Modal bottom sheet with license types multi-select - Display selected as chips - Validation: - License type required if driver's license is Yes - Documents in NL Section: - Access points: - Step 2 “Submit details” button on Pending Placements tab while the first placement is being confirmed (US 12.18) - Profile page - view only, once BSN / IBAN has been input in placement confirmation process - “Back” and “Save” buttons → Profile page - Explanation text: "Your BSN and IBAN documents have been uploaded. - All good!" - Both documents submitted - view in Profile: - Text on top changes to: "Your BSN and IBAN documents have been uploaded. - All good!" - "BSN" read-only masked field - "IBAN" read-only masked field - On eye button click - pull IBAN / BSN from SF and show to the user - Changing BSN / IBAN after submission: - Fields are locked for direct editing after successful submission - When clicked on shown IBAN/BSN, a modal is shown: - Title: "Change your BSN/IBAN" - Text: "To change your BSN/IBAN, please contact Cruits - manager by management@cruits.com " - Cancel button → return to previous screen - No self-service editing is permitted post-submission - Onboarding Status Update: - "Onboarded" badge if all required is there: - Housing address, BSN, IBAN - "Onboarding" badge if any missing - Housing in NL: - Same design as onboarding step 4.8 (Housing in NL) - Access from Profile page - “Cancel” and “Save” buttons → Profile page - "Select housing arrangement" button opens modal: - Arranged with WorkInn - Already arranged with another temp agency - Already arranged privately - Needs to be arranged - If option 1/2/3 selected, address fields appear: - Street name - House number - Postal code (with validation) - "I don't mind relocation" checkbox - If option 4 selected: - "Do you need help with housing arrangement?" Yes/No - If Yes, internal status "housing_needed" applied - "Save Changes" button - Common Functionality: - Autosave - Error handling with messages - Data sync to MySolution - Update profile completion percentage - Reflect changes on profile immediately - Blur on background for sticky top and bottom - Data Validation: - BSN 11-check validation - IBAN format validation - Postal code format validation - File type and size validation - Required field validation - “No education / work experience” checkbox is visible if there are no entries (or they are removed) - Date validation where applicable - Data Persistence: - Changes sync to MySolution backend - Update profile completion percentage - Reflect changes immediately on profile page - Handle offline scenarios gracefully

5.4.1 (не MVP)

Описание: s Attach documents to work experience Preferred work regions multi-select Housing preferences beyond relocation Multiple CV versions CV preview with highlighting Direct WorkInn housing contact integration Preferred work regions multi-select Housing preferences beyond relocation Multiple CV versions CV preview with highlighting Direct WorkInn housing contact integration

5.5 Settings Page

User Story:

As a flexworker I want to adjust my settings So that this PWA works best for me

Описание: This feature provides the options for setting up the preferred theme, notifications and a log out option. Settings can also have more items to be added later in development. 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] 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]

Критерии приёмки: - Access point - gear button on top of Profile page - Theme toggle buttons: - System - Notifications: - Section: "Push Notifications" - Enable/disable all push notifications - Per-type toggles (on by default): - Offers - Messages - Profile - Placements - System - Payslips - Section: "Email Notifications" - Enable/disable email notifications - Per-type toggles (same as push) - Log Out (in red) - With Confirmation dialog “Are you sure you want to log out?”

5.1 (не MVP)

5.6 Job Discovery and Saved Jobs

User Story:

As a flexworker I want to search for and filter job opportunities So that I can find positions that match my skills, preferences, and availability

Описание: The Job Discovery feature provides a comprehensive search and filtering system that helps workers find relevant job opportunities. Workers can search by keywords, filter by multiple criteria, and save interesting jobs for later review. The system presents jobs in a scannable card format with key information visible at a glance. 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]

Критерии приёмки: - Jobs Page Header: - Page title: "Jobs" - Search bar at top - Filter button - Two tabs: "All Jobs" and "Saved Jobs" - Default to "All Jobs" tab - Search Functionality: - Search bar with placeholder: "Search jobs..." - Real-time search as user types - Search across: - Job title - Company name - Clear search button (X) - "No results found" message when applicable - Suggested searches when empty - nice to have - Filter Panel: - Opens from filter button - Modal bottom sheet design - Reset All Filters button on top with filter counter - Filter categories: - Preferred Hours per Week (range, min and max numeric input, input number is up to 60) - Matching percentage slider (0-100%) - Location (distance radio button) - If there is no address, show info box + “Go to Profile” button → “Housing in NL” section - Sector (multi-select): - Logistics - Agriculture - Production - Skills (multi-select) - Teamlead - Communication - Physical Strength - Order Picking - Packing - (Un)loading Trucks - Forklift Driving - Reachtruck Driving - (De)palletizing - Flower Sorting - Greenhouse Work - Harvesting - Line Work - Machine Operations - Cutting - Machine Maintenance - Small Repairs - Shift Type (multi-select): - Day Shifts - Evening Shifts - Night Shifts - Weekend Shifts - Start Date (date range picker, today’s date by default, future dates only) - "Submit" button - "Cancel" button - Job Card Display (All Jobs): - Each job card shows: - Company logo (or placeholder) - Job title - Company name - Location with distance from worker - Shift type icons - Start date - End date (if any) - Hourly rate - Match percentage badge - "Saved" indicator (flag icon) - Card tap or “View more details” opens Job Details page - Save button (flag icon) tap saves/unsaves a job - Smooth animations on save - Job List (All Jobs): - Display jobs in card format - 10 jobs per load - Lazy loading - Infinite scroll option - Pull to refresh - Loading indicators - Empty state with helpful message: - "No jobs match your criteria" - "Try adjusting your filters" - Illustration/icon - Saved Jobs Tab: - Search bar - No filter button available - Display all jobs worker has saved - Same card format as All Jobs - "Unsave" option (flag icon) - Empty state: - "No saved jobs yet" - "Save jobs you're interested in for quick access" - Illustration/icon - Remove from saved list confirmation - User Flow: - Once landed on this page for the first time after Onboarding: - Show results with no filters applied - Once Filters are opened - prefill them with the information available from Profile (hours per week, sector, preferred position, skills, schedule preferences, “available from” date) - Don’t prefill the info if there is no relevant information in the Profile - have all options chosen - Apply changes on Submit button - Store the filters applied on local store, so that the user has filters applied after reloading the app - Notifications: - Icon on top right in Jobs page that opens Notifications page - Performance: - Fast loading times (< 2 seconds) - Smooth scrolling - Cached results for offline viewing - Progressive image loading - Mobile Optimization: - Touch-friendly card size - Responsive filter panel - Keyboard dismissal on scroll - Blur on background for sticky top and bottom

5.6.1 (не MVP)

5.7 Job Details Page

User Story:

As a flexworker I want to see comprehensive information about a job So that I can make an informed decision about applying

Описание: The Job Details Page provides workers with complete information about a job posting. It displays all relevant details including job description, requirements, schedule, location, compensation, and company information. Workers can assess job suitability and take action directly from this page. 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]

Критерии приёмки: - Page Header: - Back button to Jobs list - “Job Details” title - Save job button (flag icon) - Job Summary Section: - Company logo - Green tick on logo if applied - Job title (Position) - Company name - Location - Distance from worker (if applicable) - Start date - End Date (or "Ongoing") - Matching Percentage (0-100%) badge - Top 3 skills badges - nice to have - Hourly Rate - Schedule: - Work hours (e.g., "Mon-Fri, 08:00-17:00") - Photos and Videos: - Horizontal scroll carousel with job media - Modal preview on tap - Job Description Section: - Section header: "Job Description" - Full job description text - Matching Skills Section: - Section header: "Requirements" - Required Skills vs Candidate’s Skills table, similar to Candidate Page on client’s side - Contact Section - visible if only there is a placement confirmed for this position - Contact person name, avatar and title - Company phone number - Company email - About the Company Section: - Section header: "About [Company Name]" - Company description - Industry/sector - Average worker rating for this company - Action Buttons (Sticke at Bottom): - Primary: "Apply" button - Prominent, always visible - Disabled if already applied - Shows "Applied" state if application exists - Secondary: "Message" button - Blur on background - Dynamic Content: - If applied - show a green tick on top right of the company logo, both in job card and on job page - Update status in real-time - Show if job recently viewed - nice to have - Indicate if deadline approaching - nice to have - Badge for "New" jobs (< 24 hours) - nice to have - Badge for "Expiring Soon" (< 3 days to start date) - nice to have - Loading States: - Skeleton screen while loading - Progressive content loading - Handle slow connections gracefully - Error Handling: - Handle job no longer available - Handle expired jobs - Offline access to recently viewed jobs - nice to have - Clear error messages

5.7.1 (не MVP)

5.8 Matching Engine

User Story:

As a system I want to automatically match job requirements with flexworker profile information So that workers may see the most relevant jobs, and clients see the most relevant candidates ranked by compatibility

Описание: The matching engine calculates compatibility between job postings and flexworker profiles using configurable weighted factors. This system runs automatically when jobs are posted or candidate profiles are updated. Detailed Document with Percentages

Критерии приёмки: - Matching Factors: - Skills + Languages Match - Required skills vs candidate skills - Proficiency level consideration - Location/Distance - Straight-line distance calculation - Maximum distance threshold - Availability - Start dates - Shift Compatibility - Based on +/- 1 hr from standard blue-collar shifts in NL: - Day shifts start time is 5:00-7:00 - Evening shifts start time - 13:00-15:00 - Night shifts - 21:00-23:00 - Weekend shifts start time is within the range of 18:00 Fri to 14:00 Sun (or simpler version - 00:00 Sat to 00:00 Mon) - If any start time of the job posting matches the start time range above - give 100% of weight - If start time is +/- 2h from this range - 50% of weight - If start time is ≥ 2h from this range - 0% of weight - If there are multiple start times that do or don’t match - we find and weight the best match - Language - Required languages match - Proficiency level requirements - Scoring Algorithm: - Each factor scored 0-100 - Weighted average calculation - Final score 0-100% - Real-time calculation - Update Triggers - Page refresh - Job requirement changes - Candidate profile updates - Weight saved in Django Admin page (Constants)

5.8.1 (не MVP)