Workflows
Workflows automate the repetitive parts of your hiring process so your team can focus on decisions rather than tasks. Every workflow starts from a trigger, an event that just happened inside Skima AI, and runs a chain of steps in response. Once published, it runs automatically every time the trigger condition is met with no manual input required.
Your Flows Dashboard
Navigate to 'Workflows' from the left sidebar to open the flows dashboard. The header shows how many flows are currently live and the total workflow count.
Three status tabs filter the list: 'All', 'Live', and 'Draft'. A search bar lets you find a specific flow by name.
Each flow card shows the flow name and status badge, the trigger it runs on, the run limit, when it was last updated, and the current version. Below that, four metrics track execution health.
- Entered is the total number of times the trigger fired and a run began.
- Advanced is how many runs progressed through at least one step successfully.
- In Progress is how many runs are currently executing.
- Need Attention is how many runs hit a system error and require manual review.
- A flow set to no limit can run on the same entity multiple times. For example, if an application is re-scored after a rubric change, the workflow fires again for the same application.
Three icons appear on live flow cards. 'Pause' stops new executions immediately, lets in-progress runs finish, and unlocks the flow for direct editing. 'Runs' opens the execution history and analytics view. 'Clone' creates a copy as a new draft. 'Delete' permanently removes the flow.
Flow Detail View
Clicking a flow card opens the flow detail view, which shows how executions have moved through the workflow over the selected time window.
The header shows four summary metrics: Entered Funnel, Completed (as a percentage of entrants), In Progress, and Needs Attention.
Use the version dropdown to switch between historical versions of the flow. A new version is created every time the flow is edited. The number in brackets beside the version label shows the run count for that version. For example, v4 (4) means version 4 ran 4 times.
Use the time window dropdown to filter metrics to the last 7, 30, or 90 days. Click 'Export' to download the run data.
The canvas shows the flow as a visual funnel. Each step shows how many runs entered it and how many continued. A color legend identifies four run states:
- Moved on means the run passed through this step and continued.
- Branch outcome means the run took a specific branch from this step.
- Waiting means the run is paused at this step.
- System error (action needed) means the run failed at this step.
- Click 'View candidates' on any step to open the step detail page. This lists every candidate who reached that step, their document, error message, uploader, notification sent, and status. Candidates are filtered into four tabs: 'Waiting', 'Couldn't run', 'Cleared', and 'All'.
Errors at most steps do not block candidates from continuing. The step detail page confirms when this applies.
Building a Flow
Click '+ New flow' from the dashboard.
Build with AI
Type a plain-English description of what you want the flow to do and click 'Build my flow'. Skima AI reads your description and builds a first draft with the trigger and steps already configured. You can change anything after.
The prompt field accepts up to 10,000 characters. Mention checks, scores, thresholds, must-haves, and actions and Skima maps each one to a step. Example prompts are available in the builder to help you get started. See Common Workflows below.
Start from a Template
Click 'Start from a template' to pick from 5 pre-built recruitment workflows. Each template is a proven flow you can adjust to match your setup. This is the fastest way to get something working without building from scratch.
Start from Scratch
Click 'Start from scratch' to open the trigger selection screen. This shows every available trigger as a card with a description of when it fires and what it is best used for. Click the trigger that starts your flow to open the builder canvas. A TRIGGER card is already placed at the top. Click each '+ Unfinished, add a step' placeholder to open the 'Add a step' panel and build the flow step by step.
Click 'Save Draft' at any point to save progress without publishing.
Publish a Flow
When the flow is ready, click 'Publish' in the top right of the builder. A Flow published confirmation modal shows a health summary including the step count and a warning if no failure alert step has been added. Click 'Done' to close the modal. The flow is now live.
Edit a Live Flow
Live flows cannot be edited directly. To make changes:
- Click 'Pause' on the flow card to stop new executions and make the flow editable directly. Runs already in progress complete normally.
- Or click 'Clone' to copy the flow as a new draft, edit the clone, and publish it as a separate flow.
Pausing is the better option when you need to update an existing flow and keep its run history intact. Cloning is better when you want to test a different version without affecting the live one.
Common Workflows
Each example below includes a prompt you can paste directly into the AI builder, or a condensed set of steps for the flow-specific configuration if you prefer to build manually. Generic steps like opening the builder and clicking 'Publish' are covered above and not repeated here.
Auto-Shortlist on Score
High-scoring candidates sit unreviewed while recruiters are busy elsewhere. By the time someone opens the pipeline, strong candidates have already moved on.
Paste this into the AI builder:
"When a candidate is scored, check if their match score is 75 or above. If yes, change their status to Shortlisted and send them a shortlisting confirmation email. If no, do nothing."
Or configure manually:
- Trigger: Candidate Scored
- Step 1: Check a Condition — Match score is greater than or equal to 75
- Met branch: Change Candidate Status to Shortlisted, then Send Email with a shortlisting confirmation template
- Not Met branch: leave terminal or connect to Reject Low Scorers
Start your threshold at 75 and adjust after a few weeks of runs once you see how your pipeline distributes.
Reject Low Scorers Automatically
Low-scoring candidates wait weeks for a rejection that never comes, which damages your employer brand and clutters the pipeline.
Paste this into the AI builder:
"When a candidate is scored, check if their match score is below 40. If yes, change their status to Rejected and send them a rejection email."
Or configure manually:
- Trigger: Candidate Scored
- Step 1: Check a Condition — Match score is less than 40
- Met branch: Change Candidate Status to Rejected, then Send Email with a rejection template
- Not Met branch: leave terminal or connect to Auto-Shortlist on Score
If you run both Auto-Shortlist and Reject Low Scorers, consider combining them into a single flow using one condition step with three bands: above shortlist threshold, below rejection threshold, and the band in between for manual review.
Parse Failure Alert
When a resume fails to parse, no candidate is created in the system and no one knows it happened unless they happen to notice. Failures accumulate silently.
Paste this into the AI builder:
"When a resume fails to parse, send a notification email to the ops lead so the file can be re-uploaded or the candidate added manually."
Or configure manually:
- Trigger: Resume Parsing Failed
- Step 1: Notify Members of Parsing Failure — select the team members who should be alerted
- Emails Sent branch: optionally add a Slack Notification as a backup alert
Keep this flow live at all times. Parse failures are unpredictable and the sooner someone knows, the sooner the candidate can be recovered.
AI Interview on Apply: End to End
Most of the early recruitment funnel is handled manually and sequentially. This workflow automates every stage except the final hiring decision so human attention is only needed when it actually matters.
When a candidate is scored against the job rubric, the workflow checks whether they clear a minimum threshold. Those who do not are rejected automatically. Those who do receive an AI interview link. Once they complete the interview, the result is evaluated and the candidate is either shortlisted for hiring manager review or rejected. The hiring manager makes the final call.
Paste this into the AI builder:
"When a candidate is scored, check if their match score is 50 or above. If below, reject them and send a rejection email. If above, send them an AI interview link. Wait for the interview to be completed. Then check if their interview score is 80 or above. If below, reject them and send a post-interview rejection email. If above, change their status to Shortlisted, send their application to the hiring manager for review, and wait for the hiring manager to respond. If approved, move them to the interview pipeline stage. If rejected, change their status to Rejected."
Or configure manually:
- Trigger: Candidate Scored
- Step 1: Check a Condition — Match score is greater than or equal to 50
- Not Met branch: Change Candidate Status to Rejected, then Send Email with a rejection template. Branch ends here.
- Met branch:
- Send AI Interview Link
- Wait for a Signal — set signal to
ai_interview.completed, timeout 5 days. On timeout: optionally send a reminder or close the application. - Check a Condition — AI interview score is greater than or equal to 80
- Not Met branch: Change Candidate Status to Rejected, then Send Email with a post-interview rejection template. Branch ends here.
- Met branch:
- Change Candidate Status to Shortlisted
- Request Hiring Manager Review for Candidate — configure the hiring manager and link expiry
- Wait for Hiring Manager to Respond
- Approved branch: Move to Pipeline Stage to your interview or offer stage
- Rejected branch: Change Candidate Status to Rejected, optionally Send Email
This flow has multiple gates and branches. Test it with a small batch of applications before setting it live across all roles. Use the flow detail view after the first few runs to confirm candidates are routing correctly at each branch.
The hiring manager step requires the job to have a hiring manager assigned. If none is set, the 'Wait for Hiring Manager to Respond' step will stall. Confirm your job setup before publishing.
Rediscovery on Job Publish
A new job goes live and the team immediately starts sourcing from scratch, not realising there are already strong matching candidates sitting in the database from previous roles.
When a job is published, the workflow runs a rediscovery search across your entire candidate database. Strong matches are automatically linked to the new job and the recruiter is notified. The recruiter opens the pipeline to find warm, pre-scored candidates already waiting.
Paste this into the AI builder:
"When a job is published, run a rediscovery search for matching candidates. Load the results and link any candidate scoring above 70 to the job. Then notify the recruiter that rediscovery matches are ready to review."
Or configure manually:
- Trigger: Job Published
- Step 1: Run Rediscovery
- Step 2: Wait for Background Job
- Step 3: Get Rediscovery Results
- Step 4: Auto-Match Candidate to Best Jobs — set threshold to 70
- Step 5: Email Recruiter or Send In-App Notification
This flow pairs well with Auto-Shortlist on Score. Once rediscovered candidates are linked and scored, the shortlisting flow picks them up automatically.
Triggers Reference
View more
| Trigger | When it fires | Key context provided |
|---|---|---|
| New CV Uploaded | A resume is uploaded and processed | Candidate, document |
| Resume Parsing Failed | A resume fails to parse | Document, error reason |
| Candidate Applied | A candidate submits an application | Candidate, application, job, source |
| Candidate Scored | A candidate's application receives a score | Candidate, application, job, score |
| Application Status Changed | An application's status changes | Candidate, application, job, new status |
| Candidate Replied to Outreach | A candidate replies to an outreach campaign | Candidate, reply content |
| Interview Booked | A candidate books an interview | Candidate, application, job |
| AI Interview Completed | A candidate finishes their AI interview | Candidate, application, job |
| Job Approval Completed | A hiring manager reviews all jobs sent for approval | Job, approval outcome |
| Candidate Approval Completed | A hiring manager reviews all candidates sent for approval | Candidate, application, approval outcome |
| Job Made Active | A job's status becomes Active. Can fire more than once per job. | Job |
| Job Published | A job is published | Job |
| Webhook Received | An inbound webhook is received from a connected integration. Restricted to specific accounts. | Payload from external system |
Actions Reference
View more
Checks and Decisions
| Action | What it does |
|---|---|
| Check a Condition | Evaluates a data point against a threshold and routes the workflow down a met or not-met path. |
| Detect Reply Intent | Uses AI to classify a candidate's reply as interested, uncertain, or disinterested and routes accordingly. |
Communicate
| Action | What it does | Gated |
|---|---|---|
| Send Email | Sends a pre-written email template to the candidate. | No |
| Email Recruiter | Sends a templated email to the recruiter assigned to the job. Skipped if no recruiter is assigned. | No |
| Notify Recruiter After Hiring Manager Approval | Sends a templated email to the recruiter who initiated an HM approval request once all candidates have been reviewed. | No |
| Notify Members of Parsing Failure | Sends a templated email to a fixed list of members whenever a resume fails to parse. | No |
| Send AI Interview Link | Sends the candidate a link to book and complete an AI-conducted interview. | AI Interviews |
| Enroll in a Campaign | Enrolls the candidate in an existing outreach campaign. | No |
| Request Hiring Manager Review for Jobs | Sends a job to a hiring manager for review and decision. | No |
| Request Hiring Manager Review for Candidate | Sends a specific candidate's application to a hiring manager for review and decision. | No |
| Send In-App Notification | Sends a notification to one or more recruiters' in-app bell feeds. | No |
Update Records
| Action | What it does | Gated |
|---|---|---|
| Move to Pipeline Stage | Moves the candidate to a specific pipeline stage. Optionally syncs to ATS. | No |
| Change Candidate Status | Updates the candidate's application status. Optionally syncs to ATS and accepts a comment. | No |
| Link Candidate to a Specific Job | Creates an application linking this candidate to a chosen job. | No |
| Auto-Match Candidate to Best Jobs | Links the candidate to every open job scoring above a configured threshold. Default threshold is 70. | No |
| Add Candidate to a List | Adds the candidate to a saved list for tracking or outreach. | No |
| Update Custom Field | Sets the value of a custom field on the candidate, job, or application. | No |
| Assign Recruiter to Job | Assigns a specific recruiter as the owner of the job. | No |
| Create Task for Recruiter | Creates a to-do task assigned to a recruiter with a title, priority, and due date. | Tasks |
| Update Job Status | Changes the job's status, for example to Active or Closed. | No |
Enrich and Discover
| Action | What it does | Gated |
|---|---|---|
| Create AI Interview | Creates an AI-conducted interview session for the candidate's application. | AI Interviews |
| Reveal Contact Details | Finds and reveals the candidate's email, phone, and LinkedIn profile. | Enrichment |
| Find Relevant Jobs for Candidate | Scores all open jobs for the candidate and loads the best matches into the workflow. | No |
Wait
| Action | What it does |
|---|---|
| Wait a Few Days | Pauses the workflow for a set number of days (1 to 30) before continuing. |
| Wait for a Candidate Reply | Waits for the candidate to reply to an email or campaign. Continues on a replied or no-reply path after a configurable window. |
| Wait for Hiring Manager to Respond | Pauses until the hiring manager submits a decision, then continues on approved or rejected path. |
| Wait for a Signal | Pauses until a named external signal arrives or times out after a configurable number of hours. |
Advanced
| Action | What it does | Gated |
|---|---|---|
| Push Score to ATS | Sends the candidate's Skima AI score to your connected ATS. | ATS integration |
| Push Note to ATS | Generates an AI-written score note and pushes it to your ATS as a candidate note. | ATS integration |
| Run Rediscovery | Triggers a search for new candidates matching the job's rubric. | Talent Rediscovery |
| Get Rediscovery Results | Loads the results of a completed rediscovery search into the workflow. | Talent Rediscovery |
| Find New Matching Candidates | Runs rediscovery, waits for results, and loads matches in a single step. | Talent Rediscovery |
| Wait for Background Job | Polls a background job with exponential backoff. Managed automatically with Find New Matching Candidates. | No |
| Update External ATS Stage | Moves the candidate to a stage directly in your external ATS. | ATS integration |
| Update ATS Custom Field | Updates a custom field in your connected ATS. | ATS integration |
| Run Custom Logic | Runs a custom integration handler specific to your account. | Account-specific |
| Outbound Webhook | Sends candidate data to an external tool via webhook URL. Requires a valid https:// URL. Supports optional payload, HTTP method, and secret header. | No |
| Suppress Outreach | Stops all future automated outreach to this candidate across all communication channels. Optionally provide a reason. | No |
| Slack Notification | Posts a message to a Slack channel via webhook URL. Supports context key interpolation using . | No |