This website uses cookies

Read our Privacy policy and Terms of use for more information.

Hey — it's been a while. I know.

No excuses. But I'm back, and from now on you'll get the best AI + HR content every single week. Practical. No fluff. Systems you can actually build.

Let's get into it.

Last Saturday I sat down with my laptop at 10 in the morning.

Just me, a cup of coffee, and Claude Code.

By Sunday night I had five agents running — solving tasks that used to eat hours of my week.

This is what I built.

My week in HR: what I used to do by hand

I've been in People for years. I know our work is strategic. I know we have real impact on people and on the business.

But I also know the recurring, repetitive tasks that filled my actual calendar every week:

  • Monday morning: Turnover is high. I try to guess who on the team is thinking about leaving and why. I look at scattered data with no connection between sources.

  • Tuesday: Process the open-ended responses from the monthly engagement survey. 90 minutes of reading and taking notes.

  • Wednesday: Prepare individual development plans for people who had their evaluation. 20 minutes per person, easily.

  • Thursday: Find who's ending their probation period in the next 15 days and prepare the checklist. 30 minutes.

  • Friday: Consolidate data from four different sources for the weekly leadership team report. 75 minutes.

In total: about 5-6 hours a week on tasks that are necessary but don't require my judgment. They just require my time. And one critical thing — retention — that has high impact and keeps the CEO up at night.

Saturday: Claude Code for HR and how I started

Claude Code is an AI agent that lives in your terminal.

You describe what you want to build. It writes the code, runs it, catches the errors and fixes them. You supervise the result and ask for adjustments in plain language.

What makes Claude Code different: agents with skills

When I say "system" I don't mean a standalone script running on a cron job.

Claude Code works with agents. Each agent has:

  • A configuration file (a .md where you define who it is, what it knows, and what limits it has)

  • Skills: specific capabilities you give it access to. Read your HRIS. Query Google Sheets. Send emails. Analyze text with the Claude API.

  • Connections to external tools via MCP (Model Context Protocol): direct connectors to Slack, Google Workspace, your ATS, your HRIS, Notion — without building custom integrations. You say "connect to my Google Sheets" and it does.

  • Autonomy rules: what it can do on its own and what it needs to escalate to you before acting.

        THE 5 AGENTS I BUILT IN A WEEKEND
          ┌────────────────────┼────────────────────┐
          │                    │                    │
          ▼                    ▼                    ▼
   ┌──────────────┐   ┌──────────────┐   ┌──────────────────┐
   │  RETENTION   │   │    PULSE     │   │     GROWTH       │
   │    RADAR     │   │ (Engagement) │   │  (Development)   │
   │ (Flight risk)│   │              │   │                  │
   │              │   │ Skills:      │   │ Skills:          │
   │ Skills:      │   │ Claude API   │   │ CSV evaluations  │
   │ HRIS API     │   │ PDF export   │   │ Markdown writer  │
   │ Pulse survey │   │ NLP analysis │   │ Claude API       │
   │ PTO (Sheets) │   │ Anonymizer   │   │ Resources DB     │
   │ Slack stats  │   │              │   │                  │
   │ Evaluations  │   │ MCP:         │   │ MCP:             │
   │              │   │ Google Forms │   │ Google Sheets    │
   │ MCP:         │   │              │   │                  │
   │ Slack API    │   └──────┬───────┘   └────────┬─────────┘
   │ Google Sheets│          │                     │
   └──────┬───────┘          │                     │
          │                  │                     │
          ▼                  ▼                     ▼
   Weekly flight        1-page PDF           Draft PDPs
   risk list            for meeting          in /pdps/*.md
   [Auto Mon 7:30]      [Auto always]        [Escalate: approval]

          ┌────────────────────┬────────────────────┐
          │                                         │
          ▼                                         ▼
   ┌──────────────┐   ┌──────────────────────────┐
   │   ONBOARD    │   │         BRIEF            │
   │ (Probation   │   │   (Weekly report         │
   │  periods)    │   │    for leadership)       │
   │              │   │                           │
   │ Skills:      │   │ Skills:                   │
   │ Date calc    │   │ Multi-source reader       │
   │ SMTP emails  │   │ Narrative generator       │
   │ Checklist    │   │ HTML email renderer       │
   │ generator    │   │ Claude API insights       │
   │              │   │                           │
   │ MCP:         │   │ MCP:                      │
   │ Google Sheets│   │ HRIS + ATS + Sheets       │
   │ Calendar     │   │ Google Forms              │
   │ Gmail        │   │ Gmail                     │
   └──────┬───────┘   └────────────┬──────────────┘
          │                        │
          ▼                        ▼
   Manager alerts          People Brief
   [Auto: -30/-15 days]    draft Friday 18:00
   [Escalate: day -3]      [Escalate: approval
                            before sending Mon 7:00]

The first thing I asked it to build was the one that hurt the most: the flight risk detector.

System 1: Flight Risk Detector (Retention Radar)

Every voluntary departure you don't see coming costs you between 6 and 18 months of salary. Not the severance — that's the easy part. The real cost is recruitment, onboarding the replacement, lost productivity, and the impact on the team.

And the signals were there. They were always there. Nobody was looking at them together.

Someone who stopped responding to pulse surveys. Another who hasn't taken a single day off in 4 months (not because they're motivated — because they already have one foot out the door). An evaluation score that drops between Q4 and Q1 without the manager noticing. Slack activity down 40% in three weeks.

Each signal on its own means nothing. Five together tell you: call this person this week.

What I asked Claude Code:

I have five data sources for my team:
1. HRIS (CSV): employee_id, name, department, last_promotion_date, tenure
2. Pulse surveys (CSV): employee_id, date, participated (yes/no), score (1-10)
3. PTO (Google Sheet): employee_id, days_available, days_used
4. Evaluations (CSV): employee_id, score_Q4, score_Q1, manager_comments
5. Slack analytics (exported CSV): employee_id, messages_per_week, personal_90d_average

Build a script that every Monday at 7:30:
1. Cross-reference all 5 sources by employee_id
2. Calculate a risk score based on 6 signals:
   - Stopped responding to pulse surveys or score drops >15% in 60 days
   - PTO: >60% of available days unused at this point in the year
   - Declining evaluation: score drops >0.5 points between quarters
   - Slack: >30% reduction in messages/week vs personal 90-day average
   - 18+ months in the same role with no promotion or lateral move
   - Short 1-day absences increasing in frequency
3. Each active signal adds 1 point. 3+ = alert. 4+ = urgent.
4. Generate a list of max 5 people sorted by score
5. For each person: name, team, active signals, brief context,
   and suggested action (what kind of conversation to have)
6. If 3+ people from the same team appear, flag as a team trend
7. Send me an email ending with:
   "These are not predictions. They are pending conversations."

Use Python. Empathetic tone: flag patterns, don't accuse.
NEVER access Slack message content, only volume.

The result: an email every Monday that changed how I work:

RETENTION RADAR — Week of April 14
People monitored: 142 | Alerts this week: 3

🔴 URGENT — Laura G. (Customer Success)
   Active signals: 4/6
   → Pulse: stopped responding 3 weeks ago (used to respond every time)
   → PTO: 0 days used in 2026 (18 available)
   → Q1 evaluation: 3.2 (Q4: 4.1) — 0.9 point drop
   → Slack: -45% messages/week vs personal average
   Context: Laura was a candidate for team lead in November. It didn't happen.
   The engagement drop coincides with that date.
   Suggested action: direct conversation this week. Not about performance.
   About expectations and future. Before Friday.

🟡 ATTENTION — Diego R. (Tech)
   Active signals: 3/6
   → PTO: 2 days used out of 22 available
   → Short absences: 4 one-day absences in last 45 days (previous average: 1)
   → Slack: -32% activity
   Suggested action: informal check-in from manager. If it persists, escalate.

🟡 TREND — Sales North Team
   3 of 8 people showing risk signals simultaneously.
   → Possible manager or workload issue.
   Suggested action: review team pulse data before talking to individuals.

✅ No relevant signals: Tech (except Diego), Marketing, Finance, Ops, HR

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
These are not predictions. They are pending conversations.

From finding out when it's already too late to having 3-5 pending conversations every Monday. Before the resignation letter arrives.

System 2: Engagement Survey Analyzer

Engagement surveys are useless if you don't have time to read all 80 open-ended responses. I used to read 20 and generalize. A hack job I was embarrassed about.

What I asked Claude Code:

I have a CSV with open-ended responses from an engagement survey.
Columns: employee_id, question, response_text, score (1-10), date

Build a script that:
1. Groups responses by theme (communication, leadership, development,
   workload, recognition, culture)
2. Detects the dominant sentiment per theme (positive / neutral / negative)
3. Extracts the 3 most representative quotes per theme
4. Generates the 3 questions I should ask the leadership team
   based on the patterns found
5. Produces a 1-page PDF ready to present

Use the Claude API for text analysis.

What the script takes: 4 minutes for 80 responses. What it used to take me: 90 minutes.

And the questions it generates for leadership are better than the ones I used to prepare, because they're based on real patterns, not the examples I happened to remember best.

System 3: Individualized Development Plan Generator

IDPs (Individual Development Plans) are one of the things that add the most value. And one of the biggest time sinks. Because a generic one is useless, and doing them well for 20 people is impossible when you have 40 other things on your plate.

What I asked Claude Code:

I have two files:
- evaluations.csv: employee_id, name, competencies scored (1-5),
  manager comments, strengths identified
- objectives.csv: employee_id, Q1 objectives, Q1 results, Q2 objectives

Build a script that, for each person:
1. Cross-references evaluation with objectives
2. Identifies the most relevant gap to work on
3. Generates a draft IDP with: development objective, 3 concrete actions,
   suggested resources (books, courses, internal projects),
   and a 90-day follow-up metric
4. Saves it as an individual Markdown file in /idps/first_last.md

The tone should be empowering and specific. No corporate speak.

The output isn't perfect. It needs 10 minutes of review per person.

But going from a blank page to a solid draft changes everything. Now I review the IDPs. I don't write them.

System 4: Automatic Probation Period Tracker

Probation periods are one of those processes that seem simple and get complicated when you have 15 new hires per year. You forget one. The day arrives. The checklist isn't ready. The decision gets made without data.

What I asked Claude Code:

I have a Google Sheet with these columns:
name, start_date, probation_duration (days), manager, manager_email

Build a script that:
1. Calculates the end date for each probation period
2. At exactly 30 days remaining: sends the manager an early warning email
3. At 15 days remaining: sends a complete decision checklist
4. At 3 days remaining: sends an urgent alert if there's been no response

The 15-day checklist should include:
- Have the onboarding objectives been met?
- Has the employee completed mandatory training modules?
- Manager rating (1-5) on each core competency?
- Is there feedback from 2+ colleagues?
- Recommended decision based on responses

Use the Google Sheets API and send emails via SMTP.

Since this system went live, not a single probation period has reached its final day without the manager having the checklist in hand 15 days in advance.

System 5: Consolidated Weekly Report

The Monday report for the leadership team required opening four different tools, copying data, formatting, and writing the summary. 75 minutes I hated every Friday afternoon.

What I asked Claude Code:

Build a system that every Friday at 18:00 generates a consolidated
weekly People report and emails it Monday at 7:00.

Data sources:
1. HRIS (auto-exported CSV): headcount, joiners, leavers, absences
2. Google Sheets "People OKRs": status of key area metrics
3. ATS (CSV): active candidates, open positions, average time in process
4. Weekly pulse survey (Google Forms): internal NPS + 1 open question

The report should have:
- Executive summary (5 bullets, max 100 words)
- Metrics table vs previous week
- 1 highlighted insight (the most important data point of the week)
- 1 recommended action based on the data

Format: clean HTML email. No attachments. Readable in 2 minutes.

Monday at 7:00 the leadership team gets the report. I reviewed it Friday in 5 minutes before leaving.

The after: what changed in my real week

Task

Before

After

Time recovered

Detect flight risk

Impossible (scattered data)

Weekly list with risk scores

Priceless

Analyze engagement survey

90 min

5 min (review PDF)

85 min

Write IDPs

20 min/person

10 min/person

50% less

Track probation periods

30 min

0 min (automatic)

30 min

Weekly leadership report

75 min

5 min (review and send)

70 min

Total recovered: ~4 hours per week + something priceless: visibility into who's thinking about leaving.

I don't use them to make more reports. I use them for what requires my judgment: conversations, decisions, strategy.

What I learned that weekend

You don't need to know how to code.

You need to know how to describe your problem well.

Claude Code does the rest: writes the code, runs it, debugs it when it fails, asks for clarification when it doesn't understand something. The only requirement is that you know what you want to achieve and what data you have available.

The real learning curve isn't technical. It's a mindset shift.

Stop thinking "this needs a developer" and start thinking "how do I describe this to Claude Code so it understands?"

That shift is what separates People teams that are reclaiming their time from those still doing the same thing they've always done.

See you next week.