Skip to main content

What Is Job-Specific Outreach?

Job-specific outreach is when you create an outreach flow that is directly tied to a particular job in your saved jobs collection. Unlike a generic template, a job flow carries the full context of the opportunity — the job title, the company, the description, the contact details you have gathered — and makes that context available when composing messages. This is the most common type of outreach in recruitment. You find a promising job, identify the decision maker, and then run a structured sequence to pitch your candidates or services for that specific role.
Job-specific outreach is not just about sending messages — it is the bridge between your research pipeline and your candidate pipeline. When you execute outreach steps for a job, the system automatically updates the status of candidate matches linked to that job, keeping everything in sync.

How Job Flows Differ from Templates

Understanding the distinction between templates and job flows is important for using the outreach system effectively.
AspectTemplate FlowJob Flow
Tied to a recordNo — standalone, reusableYes — linked to one specific job
Scheduled datesNone (delays are relative)Calculated from creation date
Context availableNoneJob title, company name, description, location, contact details, requirements summary
Status trackingNot applicableTracked per job in your pipeline
LimitUnlimited templatesOne flow per job (enforced by database)
Candidate pipeline updatesNoYes — automatically updates match statuses
AI context for messagesMinimalFull job details fed to AI for personalized generation
Each job can have exactly one outreach flow. If you need to restart outreach for a job, you can archive the current flow and create a new one. This constraint ensures clear tracking — you always know the status of outreach for any given opportunity, and there is no confusion from overlapping flows.

Creating Outreach from the Job Detail Page

The fastest way to start job-specific outreach is directly from the job detail page.
1

Open the Job

Navigate to your saved jobs and click on the job you want to begin outreach for. This opens the job detail view with the “Contact & Outreach” tab containing the outreach section.
2

Start Outreach

In the “Outreach Flow” section at the bottom of the Contact & Outreach tab, you will see a dropdown button with two options:
  • Create New Flow — Opens the sequence editor to build a custom sequence from scratch for this specific job.
  • Use Sequence — Opens a dialog to select one of your saved template sequences. The template’s steps are copied into a new flow tied to this job, with scheduled dates calculated from today.
If your agency has shared templates, those will be available alongside your personal templates in the template selection dialog.
3

Customize Steps (If Creating from Scratch)

When creating from scratch, add steps one at a time. For each step, configure the channel, an optional name, and the delay in days. You can also check “Save as template” to simultaneously save the sequence as a reusable template for future use.
4

Begin Executing

With your sequence created, it appears in the outreach flow section on the job detail page. Each step shows its channel, scheduled date, and completion status. Click on a step to edit it, and use the “Mark as done” checkbox to track your progress. The sequence’s status updates automatically as you complete steps.

How Job Context Is Used in Messages

When you compose a message for a job-specific outreach step, the following job context is available in the composer’s context panel and fed to the AI for message generation:
  • Job title — the role you are reaching out about.
  • Company name — the hiring company (from the linked company or global company record).
  • Job description — the full listing for reference while writing your message.
  • Location — where the role is based.
  • Experience level — seniority requirements for the position.
  • Job type and flexibility — full-time, contract, remote, hybrid, etc.
  • Contact details — any decision maker information you have discovered for this job.
  • Requirements summary — AI-extracted key requirements from the job description.
This context serves two purposes: it is displayed alongside the message composer so you can reference specific details while crafting your outreach, and it is included in the AI prompt when you use AI-assisted message generation. This produces highly relevant, personalized messages that reference the actual opportunity.
Referencing specific details from the job description in your outreach dramatically increases response rates. Instead of “I have candidates for your open role,” try “I noticed you are looking for a Senior Python Developer with FastAPI experience in Amsterdam — I have two candidates with exactly that background.” The context panel makes this easy by putting the job details right next to your compose area.

Tracking Outreach Per Job

Once a job has an outreach flow, you can track its progress in several places:

On the Job Detail Page

The outreach section of the job detail page shows:
  • The flow’s current status (Not Started, In Progress, Completed)
  • Each step with its channel, scheduled date, and completion status
  • The message associated with completed steps (including tracking data like opens and clicks)

In the Jobs List

Jobs with active outreach flows display a status indicator in the list view, making it easy to scan your saved jobs and identify which ones have outreach in progress, which are completed, and which still need attention.

In Project Analytics

If the job belongs to a search that is linked to a project, the outreach activity rolls up into the project’s analytics dashboard. You can see aggregate statistics on completed outreach steps, breakdown by channel, and trends over time.

Automatic Pipeline Updates

One of the most powerful features of job-specific outreach is its automatic integration with the candidate pipeline. When you complete an outreach step that involves direct contact (email, LinkedIn message, LinkedIn connection request, or phone call):
  1. Recruitier identifies any candidate_job_matches linked to the same job.
  2. Candidates currently in early pipeline stages (pending, favorited, or reviewing) are automatically moved to contacted status.
  3. This keeps your candidate pipeline accurately reflecting reality without requiring manual status updates.
The pipeline update only affects matches in early stages: pending, favorited, and reviewing. Candidates who are already in later stages (like interviewing or placed) are not moved backward. This ensures that completing an outreach step never disrupts candidates who have already progressed further in the process.
Pipeline updates happen for all contact channels, not just email. If you mark a phone call step as complete, candidate matches are updated just as they would be for a completed email step. Make sure you only mark steps as complete when the outreach has actually happened.

Company Outreach vs. Job Outreach

While this page focuses on job-specific outreach, Recruitier also supports company-level outreach flows. Here is how they compare:
AspectJob OutreachCompany Outreach
PurposeReach out about a specific roleGeneral business development
Context availableFull job details + company infoCompany info only
Pipeline updatesUpdates candidate-job matchesUpdates company client status
AI templates usedJob-specific templates (candidate placement, job marketing, speculative placement)Company outreach templates (without job reference)
One per recordOne flow per jobOne flow per company

When to Use Job-Specific vs. Template Flows

Use the right tool for the right situation: Use a job-specific flow when:
  • You are reaching out about a concrete job opportunity.
  • You need the job’s context (title, description, company) available in the composer.
  • You want outreach progress to be tracked against that specific job.
  • You want automatic candidate pipeline updates when steps are completed.
Use a template flow when:
  • You are building a reusable outreach pattern that works across many jobs.
  • You want to standardize your team’s outreach approach.
  • You are not ready to tie the sequence to a specific opportunity yet.
The ideal workflow is to create templates for your most common outreach scenarios, then apply those templates to specific jobs when you are ready to take action. This gives you the speed of templates with the context of job-specific flows.

Archiving Job Flows

When outreach for a job is complete or you decide to stop pursuing an opportunity, you can archive the flow. Archiving:
  • Changes the flow’s type to ARCHIVED
  • Removes it from your active outreach views
  • Preserves all data (steps, messages, completion history) for future reference
  • Frees the job to have a new outreach flow if you decide to re-engage later
Archiving a flow is a one-way action in the standard workflow. Make sure you are done with the outreach before archiving. If you need to restart, you will create a new flow for the job — the archived flow remains accessible for reference but cannot be reactivated.

Best Practices for Job Outreach

  • Act quickly on new jobs. The first recruiter to reach a hiring manager often wins the engagement. Start outreach within 24-48 hours of saving a promising job.
  • Reference specifics. Generic outreach gets ignored. Mention the job title, a specific requirement, or the company’s recent activity to demonstrate genuine interest and preparation.
  • Keep it concise. Decision makers are busy. Your first email should be 3-5 sentences, not a full page.
  • Follow up consistently. Most responses come after the second or third touch, not the first. Let your flow’s scheduled steps keep you on track.
  • Track everything. Complete each step in the flow as you execute it. This data feeds into your project analytics and helps you refine your approach over time.
  • Use the right AI template. When generating messages, select the goal that matches your situation: candidate placement, business development, speculative placement, or job marketing. Each template produces a different style of message.

Advanced

How the One-Flow-Per-Job Constraint Works

The constraint is enforced at the database level through a unique index on job_id in the outreach_flows table. This means:
  • You cannot create two active flows for the same job, even through API calls.
  • When you archive a flow (changing its type to ARCHIVED), the job_id constraint is effectively released because the archived flow’s type changes. This allows a new flow to be created for that job.
  • If you attempt to create a flow for a job that already has one, the system returns a conflict error. You must archive the existing flow first.
This design prevents duplicate outreach — a common problem in recruitment agencies where multiple recruiters might unknowingly reach out about the same job.

How Candidate Pipeline Integration Works Technically

The pipeline update is triggered by the step completion handler. Here is the exact sequence:
  1. A user marks an outreach step as complete.
  2. The handler checks the step’s channel. If it is a contact channel (EMAIL_MESSAGE, LINKEDIN_MESSAGE, LINKEDIN_CONTACT, or CALL), the pipeline update is triggered.
  3. The system queries candidate_job_matches for the flow’s linked job.
  4. It filters to matches with status in (pending, favorited, reviewing).
  5. Those matches are batch-updated to contacted status.
  6. An SSE event is published to notify the UI of the status changes.
This means the pipeline update is instant — as soon as you mark a step complete, the candidate statuses change. The UI updates in real-time via SSE without needing a page refresh.

AI Message Generation Context for Job Flows

When you use AI to generate a message for a job flow step, the AI receives a rich context package:
Context FieldSourceUsed For
recipient_nameContact detailsPersonalizing the greeting
job_titleJob recordReferencing the specific role
job_descriptionScraped job dataUnderstanding requirements
company_nameCompany / Global CompanyReferencing the hiring company
user_nameYour profileSigning the message
languageYour settingsGenerating in the correct language
tone_of_voiceSelected tone templateStyling the message
pitch_deckSelected pitch deckIncluding service description
signature_instructionYour email signatureAvoiding duplicate closings
The AI model (Google Vertex AI) uses this context to generate messages through one of four goal-specific templates:
  1. CANDIDATE_PLACEMENT: You have candidates to present for the role.
  2. BUSINESS_DEVELOPMENT: You want to establish a new client relationship.
  3. SPECULATIVE_PLACEMENT: You are proactively suggesting a candidate without a specific opening.
  4. JOB_MARKETING: You are promoting a job opportunity to potential candidates.
Each template produces a different message structure and tone appropriate to the goal. LinkedIn versions of these templates generate shorter, more casual messages.

Contact Priority Scoring for Decision Makers

When your job has decision maker contacts, each contact is automatically scored based on their job title. The scoring system uses keyword matching:
ScoreTitle Keywords
95Head of Talent, Talent Acquisition
90HR Director, CPO
80Recruiter
75CEO, CTO, Founder
70VP Engineering
55Director
50Manager
30Default (unrecognized title)
You can manually override any contact’s priority score to any value between 0 and 100. This is useful when you know from experience that a particular contact is the real decision maker despite having an unusual or generic title. Higher-priority contacts are surfaced first in the contact selection when composing messages, helping you focus outreach on the people most likely to have hiring authority.

Real-Time Updates and SSE Events

All job outreach actions trigger real-time notifications via Server-Sent Events (SSE):
  • Step completion: Other open tabs showing the same job update instantly.
  • Message sent: The message status changes from draft to sent in real-time.
  • Pipeline updates: Candidate match status changes are reflected immediately across all views.
The SSE system uses Redis pub/sub — the backend publishes events to a Redis channel, and the SSE connection manager delivers them to the user’s browser. There is no polling involved, which means zero unnecessary database load.

Power User Tips

When a job has multiple decision makers, create your flow targeting the highest-priority contact first. If they do not respond after the full sequence, archive the flow and create a new one targeting the next contact. This keeps tracking clean and prevents confusing multiple outreach efforts.
For urgent roles, use a compressed 3-step flow with 0-1 day delays: email on day 0, LinkedIn on day 1, call on day 1. The fast cadence communicates urgency and increases the chance of a quick response. Apply a “direct and concise” tone of voice to keep messages short and action-oriented.
If you archived a flow months ago and the job is still open, create a new flow with a different angle. Reference the passage of time (“I reached out a few months ago about your Developer role — I notice it is still open”) and offer fresh value (new candidates, market insights). The system preserves your archived flow for reference, so you can see what you sent previously.
After running job-specific flows for a while, review which templates produce the best results. Look at completion rates (what percentage of flows reach the final step), response rates (open and reply tracking), and conversion rates (how often outreach leads to client engagement). Use this data to refine your templates.