Introduction
Recruiting teams spend an enormous amount of time translating job descriptions into recruiter briefing documents. Someone reads the job spec, identifies key requirements, extracts essential information, then rewrites it all in a format that actually helps a recruiter understand what they're looking for. That's at least an hour per position, often more if the original description is poorly written or overly detailed.
This is precisely the kind of repetitive work that AI tools excel at handling. The problem is that no single tool does the entire job perfectly. A copy-writing AI might generate rough content, but you need summarisation to distil it down, and rewriting to improve tone and clarity. This workflow automates the entire chain, converting a job description into a polished, recruiter-ready brief without any manual steps in between.
In this Alchemy piece, we'll build an automation that takes raw job descriptions and produces structured recruiter briefing documents. We'll use Copy.ai to expand and clarify the job spec, Resoomer.ai to condense it to essentials, and Quillbot to refine the language. The whole thing runs on a schedule or via webhook, with zero human intervention required once you set it up.
The Automated Workflow
Choosing Your Orchestration Tool
For this workflow, we'll use Zapier as the primary example since it offers the simplest setup for beginners, but we'll reference n8n and Make alternatives because they give you more control and cost significantly less at scale.
The workflow follows this sequence: input job description → Copy.ai expansion → Resoomer.ai summarisation → Quillbot refinement → save to output (Google Docs, Airtable, email, or your ATS).
Step 1: Trigger
You'll start with a trigger. The most common options are:
-
Webhook: job description posted to a URL
-
Email: new email with job description attached
-
Spreadsheet: new row added to Google Sheets
-
Calendar: scheduled daily at a specific time
For this example, we'll use a Google Sheets trigger. When someone adds a new job description in column A, the automation kicks off.
In Zapier, create a new Zap with "Google Sheets" as the trigger app. Select "New Row" as the trigger event. Connect your Google account and choose the spreadsheet. The new row data will become available as variables for downstream steps.
Step 2: Copy.ai Expansion
Copy.ai is a content generation platform with a simple API. It helps you flesh out the job description with additional context and detail, ensuring nothing important gets lost.
First, you'll need a Copy.ai API key. Sign up at copy.ai, navigate to your account settings, and generate an API key.
In Zapier or n8n, add a new step using "Webhooks" or "HTTP Request" to call Copy.ai's API. Here's the endpoint structure:
POST https://api.copy.ai/api/v1/write
Your request body should look like this:
{
"model": "generateJobDescription",
"inputs": {
"jobDescription": "{{your job description from Google Sheets}}",
"style": "detailed and comprehensive for recruiter briefing"
},
"userId": "YOUR_USER_ID",
"token": "YOUR_API_KEY"
}
Copy.ai will return an expanded version that fills in gaps and clarifies ambiguities. For example, if the original says "Experience required: 5+ years", Copy.ai might expand this to include specific technical skills, leadership responsibilities, and industry knowledge expected at that level.
Store the response in a variable for the next step. In Zapier, map the output like this:
Expanded Description = {{Step 2 Response.data.output}}
Step 3: Resoomer.ai Summarisation
Now you have an expanded description, but it's too verbose for a recruiter brief. Resoomer.ai specialises in intelligent summarisation. It extracts key points whilst preserving meaning.
Resoomer also uses a straightforward API. Sign up, grab your API key, then make this call:
POST https://api.resoomer.com/summarize
Your request payload:
{
"text": "{{Expanded Description from Step 2}}",
"summaryType": "essential_points",
"level": 3,
"apiKey": "YOUR_RESOOMER_API_KEY"
}
The "level" parameter controls compression. Level 3 targets 30-40% of original length, which is ideal for a recruiter brief. You'll get back a condensed version that keeps the critical requirements, responsibilities, and qualifications without the fluff.
Store this as:
Summarised Brief = {{Step 3 Response.data.summary}}
Step 4: Quillbot Refinement
The summarised text now contains all necessary information, but it might still sound robotic or lack polish. Quillbot is a paraphrasing and enhancement tool that improves readability and tone.
Quillbot has an API (though some features require the paid tier). Here's the endpoint:
POST https://api.quillbot.com/data/paraphrase
Your request:
{
"text": "{{Summarised Brief from Step 3}}",
"mode": "advanced",
"tone": "professional",
"apiKey": "YOUR_QUILLBOT_API_KEY"
}
Quillbot will return a professionally polished version. Use "advanced" mode for the best results and "professional" tone to maintain recruiter-appropriate language.
Final Briefing = {{Step 4 Response.data.paraphrased_text}}
Step 5: Output and Storage
Now you have your polished recruiter briefing. Send it somewhere useful:
Option A: Google Docs
Create a new Google Doc with the briefing document automatically. Use Zapier's "Google Docs" action:
-
Create a new blank document with filename "Recruiter Brief - {{Job Title}}"
-
Add the Final Briefing as the document body
-
Share with your recruiting team automatically
Option B: Airtable
If you manage job positions in Airtable, add a new record:
{
"fields": {
"Job Title": "{{Job Title from Sheet}}",
"Original Description": "{{Original from Sheet}}",
"Recruiter Brief": "{{Final Briefing}}",
"Generated Date": "{{current timestamp}}",
"Status": "Ready for Review"
}
}
Option C: Email Notification
Send the brief directly to recruiters:
To: {{recruiter email}}
Subject: Recruiter Brief - {{Job Title}}
Body: {{Final Briefing}}
Option D: n8n or Make for Maximum Control
If you're using n8n (self-hosted or cloud), the workflow is identical structurally, but you have finer control. Here's a simplified n8n configuration:
{
"nodes": [
{
"parameters": {
"operation": "read",
"spreadsheet": "Job Descriptions",
"range": "A2:B"
},
"type": "n8n-nodes-base.googleSheets"
},
{
"parameters": {
"url": "https://api.copy.ai/api/v1/write",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
},
"bodyParametersJson": "{\n \"text\": \"{{ $node['Google Sheets'].json['job_description'] }}\"\n}"
},
"type": "n8n-nodes-base.httpRequest"
}
]
}
n8n allows you to add error handling, conditional logic, and retries more easily than Zapier's visual interface. Make (Integromat) sits somewhere in the middle, offering similar control to Zapier but with slightly more flexibility in API configuration.
Handling Errors and Edge Cases
All three orchestration tools allow you to add error handlers. For example, if Copy.ai fails to respond:
-
Retry the request after 30 seconds
-
Log the error to a dedicated Slack channel or email
-
Skip that step and proceed with the original description
In Zapier, add a "Paths" action to split your workflow. In n8n, use the "Error Trigger" node.
The Manual Alternative
If you prefer more control or need to review outputs before distribution, you can modify the workflow to require approval.
After Step 4 (Quillbot refinement), instead of automatically outputting, insert a "Pause and Notify" step. Send the Final Briefing to a designated reviewer via email or Slack with approval buttons.
Awaiting approval on Recruiter Brief - {{Job Title}}
[Approve and Send] [Request Changes]
If approved, the automation sends it onward. If changes are requested, it pauses and logs the brief for manual revision.
This takes slightly longer but prevents any accidentally poor briefs from reaching your recruitment team. Most teams run the fully automated version for routine openings and switch to the manual approval version for executive or highly specialised roles where precision matters more than speed.
Pro Tips
1. Rate Limiting and Quota Management
Copy.ai, Resoomer, and Quillbot all have rate limits on their free tiers. Copy.ai typically allows 100 calls per month on the free plan; Resoomer, 50 documents per month; Quillbot, 100 paraphrases per month.
If you're processing more than a handful of job descriptions monthly, upgrade to their paid plans or implement throttling in your orchestration tool. In Zapier, use the "Delay" action to space requests out by 5 seconds between each job. In n8n, use the "Wait" node. This prevents hitting limits and triggering rate-limit errors.
Delay: 5 seconds
→ Copy.ai Call
→ Delay: 5 seconds
→ Resoomer Call
→ Delay: 5 seconds
→ Quillbot Call
2. Customise the Prompts
The API requests shown above are functional but basic. You can dramatically improve output by customising the prompts sent to Copy.ai and Quillbot.
For example, instead of just asking Copy.ai to "expand", specify:
{
"model": "generateJobDescription",
"inputs": {
"jobDescription": "{{original description}}",
"tone": "professional yet approachable",
"audience": "senior recruiters with 10+ years experience",
"focus": "must-have skills, team dynamics, growth opportunities"
}
}
This guides the AI toward producing content tailored to your recruiting team's needs rather than generic output.
3. Add Validation Checks
Before sending the final brief to your team, add a validation step. Check that:
-
The brief contains a minimum word count (e.g., at least 150 words)
-
It includes required sections (salary range, reporting line, key responsibilities)
-
No placeholder text like "[INSERT DETAILS]" remains
In n8n, you can add a "Function" node:
if (
$input.all()[0].json.final_briefing.length < 150 ||
!$input.all()[0].json.final_briefing.includes("salary") ||
$input.all()[0].json.final_briefing.includes("[INSERT")
) {
throw new Error("Briefing validation failed");
}
return $input.all()[0];
If validation fails, send the content to a Slack channel marked as "Review Required" rather than auto-distributing it.
4. Track Quality Over Time
Log every briefing generated, along with which source job description it came from. This creates an audit trail and lets you identify patterns.
After a few weeks, ask your recruiters to rate the briefs on a scale of 1-5. Import this feedback back into your Airtable or spreadsheet. Over time, you'll see whether certain job description types produce better briefs than others. Use this data to adjust your prompts or preprocessing steps.
5. Optimise for Cost
Copy.ai, Resoomer, and Quillbot each have tiered pricing. Combine subscriptions strategically:
-
Use Copy.ai primarily for expansion (it excels at content generation)
-
Use Resoomer for summarisation (it's cheaper than doing this via ChatGPT API)
-
Use Quillbot for refinement only if your recruiters consistently complain about tone (you might skip this step entirely and save money)
Test the workflow without Quillbot first. Often, Copy.ai output already reads professionally enough that the additional polish step isn't worth the cost.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Copy.ai | Pro | £16 | 5,000 credits per month, roughly 50-100 job descriptions |
| Resoomer | Premium | £8 | Unlimited documents, straightforward summarisation |
| Quillbot | Premium | £10 | 125 paraphrases per day, professional tone available |
| Zapier | Free or Starter | £0-£20 | Free tier supports ~100 tasks per month; Starter allows 750 |
| n8n | Self-hosted (free) or Cloud (£15-£40) | £0-£40 | Self-hosted is completely free if you run your own server |
| Make (Integromat) | Free or Premium | £0-£9 | Free tier covers routine automation; Premium adds priority support |
Total estimated cost (Zapier + all three AI tools): £34-54 per month.
Alternative (n8n self-hosted + all three AI tools): £34-42 per month.
Alternative (Make free tier + all three AI tools): £34-42 per month.
For most recruiting teams processing 20-50 job descriptions per month, this is significantly cheaper than hiring an additional administrative staff member or outsourcing brief creation to a contractor. You're looking at ROI within the first month.