TUTORIAL

Automate Resume Screening with AI: Build a Storage-Triggered Workflow

Hiring teams drown in resumes. A single job posting can generate hundreds of applications, and someone has to open every file, read it, compare it against requirements, and decide who moves forward. It's slow, inconsistent, and the best candidates often slip through.

What if resumes were scored the moment they landed in a folder?

With Orckai's new Storage Change Trigger, you can build exactly that: a workflow that watches a folder in Google Drive, SharePoint, OneDrive, or Dropbox, and automatically fires when new files appear. Each resume gets parsed, scored by AI against your job requirements, and — if the candidate is a strong fit — your HR team gets an email. No manual screening. No delays.

How It Works

Here's what happens end-to-end when a resume hits the folder:

Storage Change Trigger
Polls your cloud folder every 1–30 min. Detects new & modified files.
Google Drive    SharePoint    OneDrive    Dropbox
1
Read Resume File
Extracts text from PDF, DOCX, or TXT using the built-in file reader.
2
AI Agent — Score Resume
Claude or GPT analyzes resume against job requirements. Returns scores, matched skills, and a recommendation.
3
Condition — Score > Threshold?
Only candidates above your threshold (e.g. 70%) move forward. Low scores are logged but filtered out.
PASS
FAIL Workflow ends (candidate still logged for review)
4
Email HR Team
Sends the candidate's name, score, matched skills, and recommendation to your hiring team.

Each file in the folder triggers its own independent execution. Up to 10 files are processed per poll cycle — if 50 resumes land at once, they're processed across 5 cycles in FIFO order (oldest first). No files are lost.

How File Detection Works

The trigger uses smart change tracking so files are never processed twice (unless modified):

Poll on Schedule

Checks the watched folder at your configured interval (1–30 min). Skips the check if it's not due yet.

Detect Changes

Compares each file's ID and modification time against what's already been processed. Only new or modified files trigger.

Filter & Cap

Applies your file type filter (e.g., only .pdf and .docx), sorts by oldest first, and caps at 10 per cycle. Remaining files are picked up next time.

Execute

Downloads each file, stores it securely, and creates a separate workflow execution. The file is then marked as processed.

This means: no duplicates (files are tracked), no overload (10-file cap), no missed files (remaining are queued), and it works the same across all four storage providers.

Step-by-Step Setup

1. Connect Your Storage Provider

Go to Settings > Integrations > Storage and connect your cloud storage:

Google Drive
OAuth2 · Full folder hierarchy
SharePoint
Azure AD · Document libraries
OneDrive
OAuth2 · Personal or business
Dropbox
OAuth2 · Folder-level access

Switching providers later doesn't require changing your workflows — just update the integration and re-select folders.

2. Create the Workflow & Configure Trigger

Go to Workflows > Create Workflow, name it (e.g., "Senior Engineer Resume Screener"), and select Storage Change as the trigger. Configure:

  • Watch Folder — browse and select the folder where resumes will be uploaded
  • Polling Interval — how often to check (1–30 minutes)
  • File Type Filter — e.g., PDF and Word Documents only

Tip: For high-volume hiring, use 1–2 minute polling. For steady-state roles, 5–10 minutes keeps costs low.

3. Define Job Requirements as Context Fields

Context fields let you parameterize the workflow without editing steps. Set them once and every execution uses them:

Field Default Value Variable
Job TitleSenior Software Engineer{{context.jobTitle}}
DepartmentEngineering{{context.department}}
Required SkillsC#, .NET, React, AWS{{context.requiredSkills}}
Min Experience7 years{{context.experienceYears}}
LocationRemote{{context.location}}
HR Emailhr@yourcompany.com{{context.hrEmail}}

The same workflow can screen for different roles just by updating these defaults — no need to duplicate the workflow or edit prompts. Add as many fields as you want: salary range, preferred certifications, work authorization, team size, or anything else your scoring logic needs. Every field is available to every step via {{context.fieldName}}.

4. Build the Four Steps

Step 1 — Read Resume File (Action Step)

Uses the built-in read_any_file tool to extract text from PDF, DOCX, or TXT files. Set the file path to {{uploadedFile.storedPath}} and the output variable to file_content.

Step 2 — AI Agent: Score Resume (Agent Step or Inline Prompt)

Configure an agent with your own system prompt that defines exactly how to evaluate candidates. You choose the AI model (Claude Sonnet, Claude Opus, GPT-4o, or GPT-4o Mini), write the scoring criteria, and define what fields the output should contain. The agent receives the resume text plus your job requirements from context fields, then returns a structured JSON analysis. Here's an example output — but you decide the fields:

{
  "candidate_name": "Jane Doe",
  "overall_score": 87,
  "technical_fit": 92,
  "cultural_fit": 78,
  "recommendation": "STRONG_FIT",
  "skills_matched": ["C#", ".NET Core", "React", "AWS"],
  "skills_missing": ["Azure DevOps"],
  "experience_years": 9,
  "interview_suggested": true,
  "summary": "Strong full-stack engineer with deep .NET experience..."
}
↑ You define these fields in your prompt. Add salary_match, red_flags, leadership_score — anything you need.

Step 3 — Condition: Score Threshold

Filter out low-scoring candidates. Set the field to any score from Step 2 (e.g., candidate_analysis.data.overall_score or candidate_analysis.data.technical_fit), the operator to Greater Than, and the threshold to whatever fits your hiring bar — 70 for a wide funnel, 90 for top-tier only. You can even chain multiple conditions. Candidates below the threshold are still logged in execution history for later review.

Step 4 — Email HR Team (Action Step)

Sends the score, recommendation, and matched skills to {{context.hrEmail}}.

5. Activate and Test

Toggle the workflow to Active, save, and drop a resume into the watched folder. Within one polling interval, you'll see a new execution with the full scoring output.

Fully Customizable — Every Metric Is Yours

This isn't a black-box resume screener. Every part of the pipeline is configurable from the UI — no code changes, no redeployments. Here's what you control:

AI Model

Choose the model that best fits your accuracy and cost needs:

Claude 3.5 Sonnet Claude Opus GPT-4o GPT-4o Mini
Scoring Prompt

Write your own evaluation criteria. Tell the AI exactly what to look for:

"Evaluate cultural fit, weight leadership experience 2x for senior roles, penalize job-hopping under 1 year..."
Score & Output Fields

Define what the AI returns. Add or remove any metric:

overall_score technical_fit cultural_fit leadership_score red_flags + any custom field
Fit Threshold

Set the bar as high or low as you need. The condition step is fully configurable:

70%
Wide funnel
85%
Selective
95%
Top-tier only
Job Requirements

Context fields are variables you set once and reference everywhere via {{context.fieldName}}:

Job title, required skills, years of experience, location, salary range, HR email — add as many as you need.
Notification Actions

Choose how results are delivered. Mix and match:

Email Jira Ticket Webhook File Output

The point: you're not locked into a fixed resume-scoring formula. Change the model for deeper analysis, rewrite the prompt to weight different criteria, add custom output fields like salary_expectation_match or remote_readiness, adjust the threshold per role, or swap the email notification for a Jira ticket. Every piece is a building block you can reconfigure without touching the others.

Scaling: 100 Resumes at Once

What happens when a recruiter dumps 100 resumes into the folder?

📥
100 resumes dropped at once
Polling interval: 1 minute
Poll 1
10 processed
Poll 2
20 total
Poll 5
50 total
Poll 10
100 done ✓
All 100 resumes processed in ~10 minutes. New files arriving during processing are automatically queued. The system is self-draining — no files are lost.

One Folder Per Role

For organizations hiring across multiple roles, create one workflow per position:

Senior C# Engineer
Google Drive / HR / Senior Engineer
C#, .NET, React, AWS · 7 years
engineering-hiring@company.com
Marketing Manager
Google Drive / HR / Marketing
SEO, content strategy, analytics · 5 years
marketing-hiring@company.com
Junior Frontend Dev
SharePoint / Recruiting / Frontend
React, TypeScript, CSS · 1 year
frontend-team@company.com

Each runs independently. Recruiters just drop resumes into the right folder — the platform handles everything else.

Beyond Resume Screening

The same "file appears, workflow fires" pattern works for any document-driven process:

  • Invoice Processing — extract line items, validate against POs, route for approval
  • Contract Review — AI extracts key terms, flags risky clauses, generates a summary
  • Image Classification — product photos auto-classified and tagged (supports vision models)
  • Compliance Audit — policy documents reviewed against regulatory requirements
  • Customer Feedback — survey exports sentiment-analyzed and summarized

Get Started

Building this workflow takes about 15 minutes:

  1. Connect a storage provider in Settings
  2. Create a workflow with the Storage Change trigger
  3. Add four steps: read file, AI scoring, condition check, email notification
  4. Set your job requirements as context field defaults
  5. Activate and start dropping resumes

Every resume gets the same thorough analysis. No one gets overlooked because they were application #98. And your HR team only sees candidates who clear the bar.

Start building your first storage-triggered workflow or explore the Workflows feature page to see what else you can automate.