Skip to main content

Overview

Once the AI matching engine finds and scores jobs for a candidate, those matches do not just sit in a list. Recruitier provides a Kanban-style pipeline that lets you track every match through your recruitment workflow — from first discovery to successful placement. The pipeline gives you a visual, drag-and-drop interface where each column represents a stage in your process, and each card represents a job match. At a glance, you can see where every opportunity stands for a given candidate. The pipeline also integrates with the outreach system, showing outreach progress directly on each card without requiring you to open the match detail view. Every status change is tracked through the CandidateJobActivity entity, creating a complete audit trail of actions taken on each match: status changes, notes added, calls logged, emails sent, and interviews scheduled.

Pipeline Layout

The pipeline is organized into 4 display columns that group related statuses together. This keeps the Kanban board clean and scannable while still supporting detailed status tracking through sub-statuses within each column.
ColumnColorStatuses GroupedDescription
New MatchesGrayPendingFreshly found matches from the AI. Unreviewed opportunities waiting for your attention.
FavoritedYellowFavoritedMarked as promising. Your shortlist of matches worth pursuing.
In ProgressBlueUnder Review, Contacted, Applied, Interviewing, Offer StageAll actively worked opportunities. Cards within this column show a sub-status badge indicating the specific stage.
PlacedGreenPlacedSuccessfully placed. The goal of the entire process.
Not Proceeding (rejected) matches are hidden by default. A toggle at the top of the pipeline lets you show or hide rejected matches when needed.
The 4-column layout simplifies the visual experience while preserving the full 9-status workflow underneath. When you drag a card into the “In Progress” column, it defaults to “Under Review” status. You can then change the specific sub-status (Contacted, Applied, Interviewing, Offer Stage) using the dropdown menu on each card.

All Available Statuses

While the pipeline displays 4 columns, each match can be in one of these 9 statuses:
StatusColumnProtected?Description
New Match (pending)New MatchesNoFreshly matched, unreviewed
FavoritedFavoritedYesMarked as promising
Under ReviewIn ProgressYesActively being evaluated
ContactedIn ProgressYesOutreach initiated to the company
AppliedIn ProgressYesFormal application submitted
InterviewingIn ProgressYesActive interview process
Offer StageIn ProgressYesOffer being discussed or negotiated
PlacedPlacedYesSuccessfully placed
Not Proceeding (rejected)Hidden (toggle to show)NoRejected or no longer pursued

Accessing the Pipeline

The pipeline is accessed from the candidate detail page. When viewing a candidate’s matches, you can toggle between two views using the list/kanban buttons in the top right of the matches section:
  • List view (default) — A scrollable list showing detailed match information including scores, key matching points, potential concerns, and action buttons
  • Pipeline view — The 4-column Kanban board for visual workflow management with drag-and-drop
Both views operate on the same data. Changes made in one view (like moving a match to a different status) are reflected when you switch to the other view.

Using the Pipeline

Kanban View

The pipeline interface is a 4-column Kanban board — a horizontal layout where each column groups related statuses and matches are draggable cards within those columns. Each card displays key information at a glance:
Card ElementInformationPurpose
Job titleThe position being matched (clickable)Primary identification
Sub-status badgeSpecific status within the In Progress column (e.g., “Under Review”, “Contacted”)Track detailed progress
Company nameThe hiring company (clickable to view company details)Context for outreach decisions
LocationWhere the job is based (normalized)Geographic relevance check
Salary rangeCompensation data (if available in the listing)Budget alignment
Match scoreAI-calculated relevance percentage as a badgeQuick quality indicator
Outreach statusSteps completed out of total, with next step action buttonTrack communication directly from the card
Job linkExternal link to original job postingQuick access to the source listing
A summary line above the columns shows the total number of active matches and how many columns contain matches. A “drag to move” hint reminds you of the interaction model. This means you can scan the entire pipeline and immediately identify which opportunities need action, which are progressing well, and which have stalled — all without opening individual match detail views.

Moving Matches Between Stages

To move a match to a different stage:
Click and hold a match card, then drag it from one column to another. Release it in the target column. The status is updated immediately upon drop with an optimistic UI update — the card moves instantly while the API call happens in the background.When you drop a card into the “In Progress” column, it defaults to “Under Review” status. You can then refine the sub-status using the card’s dropdown menu.This is the fastest way to move matches between columns and works well for quick triage sessions.
There are no restrictions on which statuses you can move to. You can:
  • Skip stages (New Matches directly to Contacted)
  • Move backward (Interviewing back to Under Review)
  • Jump to any status (New Matches directly to Placed, if appropriate)
  • Move to Not Proceeding from any stage via the dropdown menu
The pipeline is flexible by design. Not every match needs to go through every stage. Some matches may go directly from “New Matches” to “Contacted” if you already have a relationship with the hiring manager. Others may move from “Interviewing” back to “Under Review” if the interview process stalls or the candidate wants to reconsider.

Activity Tracking

Every status change and interaction is logged through the CandidateJobActivity entity. The activity types include:
Activity TypeWhen CreatedWhat It Records
status_changeMatch moves between stagesOld status, new status, timestamp
noteYou add a note to the matchNote text, timestamp
callYou log a phone callCall details, timestamp
emailYou log an emailEmail summary, timestamp
interview_scheduledAn interview is scheduledInterview details, timestamp
This creates a complete timeline for each match, helping you (and your team, if applicable) understand the full history of an opportunity without relying on memory or external notes.

Protected Stages

Certain pipeline stages are protected, meaning matches in these stages are never removed during re-matching. This is a core design principle of the pipeline — your active work is always preserved.

Protected (Safe During Re-Match)

  • Under Review — Active evaluation in progress
  • Favorited — You actively chose to keep this match
  • Contacted — Outreach has been initiated
  • Interviewing — Interview process underway
  • Applied — Formal application submitted
  • Offer Stage — Offer being discussed
  • Placed — Successful placement

Not Protected (May Be Replaced)

  • New Matches (pending) — Unreviewed AI results
  • Not Proceeding (rejected) — Dismissed matches
These matches may be replaced when re-matching occurs (triggered by skill changes, location changes, or manual re-matching).

How Protection Works During Re-Matching

When the matching engine runs again for a candidate (after a skill change, location update, or manual trigger):
1

Identify Protected Matches

The system loads all existing matches for the candidate and identifies those in protected statuses (everything except “New Matches” and “Not Proceeding”).
2

Collect Exclude List

The job IDs of all protected matches are collected into an exclude_job_ids list. This list is passed to the matching pipeline.
3

Run Matching Pipeline

The full 5-stage matching pipeline runs with the updated candidate profile. The exclude list ensures that protected jobs are not re-scored or duplicated.
4

Add New Matches Only

New matches are added to the pipeline in the “New Matches” stage. They appear alongside existing protected matches. Old pending matches that are no longer relevant may be replaced.
The “Not Proceeding” (rejected) status is NOT protected. If you reject a match and then re-matching occurs, the rejected match may be replaced or the same job may reappear as a new match in a future matching run. If you want to permanently track a rejection, add a note to the match before moving it to “Not Proceeding” — the note and activity history will be preserved even if the match status is affected by re-matching.
The protection mechanism uses the match status in the database, not the UI position. Moving a match to any protected status immediately protects it from future re-matching, even before you close or save the page. The protection is instantaneous upon status change.

Filtering and Sorting

Showing Rejected Matches

By default, rejected (“Not Proceeding”) matches are hidden from the pipeline view. When rejected matches exist, a toggle appears at the top of the pipeline that lets you show or hide them. The toggle displays the count of rejected matches so you can see at a glance how many have been dismissed. When shown, rejected matches appear in a separate section below the main 4-column grid, displayed with reduced opacity to visually distinguish them from active matches.

Sorting Within Columns

Within each column, matches maintain their order. The highest-scoring matches appear at the top of each column, making it easy to identify the best opportunities first.

Pipeline and Outreach Integration

The pipeline integrates directly with Recruitier’s outreach functionality. When you initiate an outreach flow for a matched job, the outreach status is displayed directly on the pipeline card.

Outreach Status on Cards

Each pipeline card shows the outreach status if an outreach flow has been created:
Outreach StatusIndicatorWhat It Means
Not StartedGrayAn outreach flow exists but no steps have been completed yet
In ProgressBlue with progressSome steps are completed, some pending. The next pending step is shown on the card.
CompletedGreenAll outreach steps have been executed
The card also shows:
  • Flow name — Which outreach template or flow is being used
  • Steps progress — “3 of 5 steps completed” style indicator
  • Next pending step — What action needs to happen next
Outreach flows are created from the job detail page, not directly from the pipeline. The pipeline provides visibility into outreach status, while the actual outreach management (creating flows, completing steps, adding notes) happens in the outreach section. Think of the pipeline card as a dashboard widget for outreach progress.

Pipeline to Job Navigation

From any pipeline card, you can click through to the full job detail page. This gives you access to:
  • Complete job description
  • Full match score breakdown (all four dimensions)
  • Key matching points and potential concerns
  • AI explanation of the match
  • Company information
  • Outreach flow management

Pipeline Workflow Examples

Example 1: Standard Placement Flow

New Matches -> Under Review -> Favorited -> Contacted -> Interviewing -> Offer Stage -> Placed
The most common flow: review new matches, favorite the best ones to discuss with the candidate, reach out to companies for the approved matches, guide the candidate through interviews, negotiate the offer, and close the placement. Each stage transition is logged as an activity.

Example 2: Quick Outreach (Existing Relationship)

New Matches -> Contacted -> Interviewing -> Placed
When you see a strong match (85%+) and already have a contact at the hiring company, skip the review and favorite stages. Go directly to outreach. This works best when you have established relationships with hiring managers who trust your candidate recommendations.

Example 3: Candidate Review Session

New Matches -> Favorited (batch) -> Contacted (after candidate approves)
Review all new matches, favorite the top 5-10, then present the shortlist to the candidate. After the candidate reviews and approves specific opportunities, move the approved ones to “Contacted” and start outreach. Move the ones the candidate declines to “Not Proceeding”.

Example 4: Process Stalls

Contacted -> Interviewing -> Under Review
An interview process stalls (the company goes silent, reorganization, hiring freeze). Move the match back to “Under Review” to signal that you need to reassess. Add a note with context about what happened. Follow up after a reasonable period.

Example 5: Candidate Declines After Review

New Matches -> Under Review -> Not Proceeding
After reviewing a match with the candidate (sharing the job description, match analysis, and company info), the candidate decides it is not the right fit. Move to “Not Proceeding” with a note explaining the reason. This feedback can inform future matching adjustments.

Example 6: Re-Matching Discovers Better Opportunities

Candidate skills updated -> Re-match triggered ->
  Protected: Favorited (Job A), Interviewing (Job B) -- unchanged
  Replaced: New Matches (old Job C, Job D) -> New Matches (new Job E, Job F, Job G)
When re-matching runs after a skill update, your active pipeline is untouched. Only the unreviewed “New Matches” are refreshed with opportunities that better match the updated skill set.

Best Practices

Review New Matches Promptly

Job opportunities have a shelf life. The sooner you review new matches and move promising ones to “Under Review” or “Favorited”, the better your chances of reaching the hiring manager before the role is filled. Aim to review new matches within 24 hours.

Use Favorited as Your Shortlist

The “Favorited” stage works well as a shortlist for candidate conversations. After reviewing matches, favorite the top 5-10 opportunities and present those to the candidate for discussion before starting outreach. This respects the candidate’s preferences and increases buy-in.

Keep the Pipeline Current

Move matches to “Not Proceeding” when they are no longer relevant. A clean pipeline with accurate statuses helps you focus on active opportunities and gives you reliable statistics. Stale matches in wrong stages create noise and false confidence.

Track Outreach from the Pipeline

Use the pipeline as your daily dashboard. The outreach status on each card tells you who needs follow-up, which interviews are pending, and where offers are in progress. A 5-minute morning scan of the Kanban board keeps you on top of every opportunity.

Pipeline Counts and Statistics

The pipeline provides aggregate statistics visible in both list and pipeline views: Stats bar (shown above the match list): Displays compact counts for:
  • Total — All matches across all statuses
  • Favorited — Matches marked as promising (yellow highlight)
  • Applied — Matches with formal applications submitted (green highlight)
  • Rejected — Matches that are no longer being pursued (red highlight)
Pipeline summary (shown above the Kanban columns): Shows the total number of active matches and how many columns contain matches. These numbers give you a quick health check on your recruitment pipeline:
SignalWhat It MeansAction
”New Matches” growing, “Contacted” stagnantNot reviewing fast enough or not finding suitable matchesSpend time triaging or adjust candidate preferences
Many “Contacted”, few “Interviewing”Outreach is not converting to interviewsReview outreach approach, check match quality
Many “Interviewing”, few “Offer Stage”Candidates are not progressing through interviewsCoach candidates, review match accuracy
Balanced pipeline with flow through stagesHealthy recruitment processContinue current approach
Review your pipeline at least once per day. A 5-minute scan of the Kanban board keeps you on top of every opportunity and ensures nothing falls through the cracks. Pay special attention to the “Interviewing” and “Offer Stage” columns, where timely follow-up is critical for closing placements.

Advanced

The CandidateJobMatch Entity

Each match in the pipeline is stored as a CandidateJobMatch record in the database. The key fields include:
FieldTypePurpose
candidate_idUUID (FK)Links to the candidate profile
job_idUUID (FK)Links to the matched job listing
statusEnumCurrent pipeline stage (pending, favorited, rejected, applied, etc.)
scoreFloatFinal composite match score (0-1)
role_fitFloatRole Fit dimension score
skills_fitFloatSkills Fit dimension score
experience_fitFloatExperience Fit dimension score
secondary_fitFloatSecondary Fit dimension score
matching_skillsJSONBList of skills the candidate has that the job needs
missing_skillsJSONBList of skills the job needs that the candidate lacks
explanationTextAI-generated natural language explanation
recommendationString”apply”, “consider”, or “skip”
rankIntegerPosition in the ranked list (1 = best match)

The CandidateJobActivity Entity

Every interaction with a match is logged as a CandidateJobActivity record:
FieldTypePurpose
match_idUUID (FK)Links to the CandidateJobMatch
activity_typeEnumType: status_change, note, call, email, interview_scheduled
detailsJSONBActivity-specific data (old/new status, note text, etc.)
created_atTimestampWhen the activity occurred
user_idUUID (FK)Who performed the action
This activity trail provides a complete audit log for every match in your pipeline, enabling you to review the history of any opportunity at any time.

How Protected Statuses Interact with the Database

The protection mechanism is implemented at the data layer during re-matching:
  1. Query protected matches: SELECT job_id FROM candidate_job_matches WHERE candidate_id = ? AND status NOT IN ('pending', 'rejected')
  2. Pass to matching pipeline: The exclude_job_ids set prevents the vector search from even retrieving these jobs
  3. Double-check on creation: Even if a protected job somehow makes it through filtering, the match creation stage checks for existing matches and skips duplicates
This multi-layer protection ensures that under no circumstances can a re-matching run delete or modify a protected match.

Pipeline Status Internal Mapping

The pipeline stages map to internal status values:
Pipeline StageInternal StatusProtected
New MatchespendingNo
Under ReviewreviewingYes
FavoritedfavoritedYes
ContactedcontactedYes
InterviewinginterviewingYes
AppliedappliedYes
Offer Stageoffer_pendingYes
PlacedplacedYes
Not ProceedingrejectedNo

Connection to Company Pipeline

When you engage with a matched job (move it out of “New Matches”), the associated company is automatically linked to your client pipeline if it is not already there. This means:
  • Viewing a match detail page can trigger company addition
  • Starting outreach creates the company association
  • The company’s industry, size, and LinkedIn data from the global_company table become available in your client view
  • Staffing and recruiting agencies are excluded from match results entirely (via EXCLUDED_CLIENT_INDUSTRIES), so they never appear in your pipeline

Performance Considerations

The pipeline view is optimized for performance even with large numbers of matches:
  • Pagination: The Kanban view loads matches in batches per column to prevent slow rendering
  • Eager loading: Match cards are loaded with company and outreach data pre-fetched to avoid N+1 queries
  • Status counts: Aggregate counts per stage are computed efficiently with a single query
  • Real-time updates: SSE events update individual cards without requiring a full page reload

Power-User Tips

Use the pipeline for daily standup preparation. Before your daily review, scan the pipeline from right to left (Placed -> Offer Stage -> Interviewing -> Contacted). This prioritizes your most advanced opportunities first, ensuring you follow up on the ones closest to closing before spending time on new matches.
Batch your triage sessions. Instead of reviewing new matches one by one throughout the day, set aside a dedicated 15-30 minute block to process all new matches at once. This is more efficient and helps you compare matches against each other, leading to better shortlisting decisions.
Add notes when moving to “Not Proceeding”. While the rejected status is not protected during re-matching, notes on the match ARE preserved. Adding a brief reason (“Candidate declined — salary too low”, “Company filled the role”, “Skills mismatch on Kubernetes”) creates valuable context that helps you avoid repeating the same outreach if the match reappears.
Monitor your conversion rates. Track how many matches move from “New Matches” to “Placed” over time. A healthy conversion funnel narrows gradually at each stage. If you see a sharp drop at a specific stage (e.g., many “Contacted” but few “Interviewing”), that stage needs attention — perhaps the outreach messaging needs adjustment or the match quality needs review.