# I stopped having a job description.

> There was no formal AI training, but there was the freedom to try everything and brilliant colleagues to learn from. Two years later, a team of agents I built runs People ops, payroll, hiring, marketing and writing.

_Sumanth Raj Urs · 2026-10-08_

---

<p>14 October 2024 was my first day at realfast. In my intro message on Slack that morning, I said I’d be working on “the TA and Marketing side of things.” It didn’t stay that way for long. Two years later I handle People ops, hiring, marketing, design, the website and most of the company’s writing. And while I’m typing this, a small team of agents I built is doing a good chunk of that work.</p>
<p class="ed-key">TL;DR: There’s no formal AI training at realfast, but I had the freedom to try everything, plus brilliant colleagues and founders who pushed all of us to use AI. Thirteen months after my first git commit, I’m at about 1,400 commits. Every candidate now applies through their own agent, a clone of my voice takes the intro calls, and my writing helped bring in a six-figure deal. Here’s how it happened, and what I’d tell you if you’re where I was two years ago.</p>
<p>So how does one person cover all that? Honestly, I don’t - not alone. The agents do the heavy lifting, and I decide what’s good enough to ship.</p>
<p>Our careers page puts it in four lines.</p>

![realfast careers page reading: Relationships by humans. Strategy by humans. Taste by humans. Muscle by agents.](/src/assets/blog-images/two-years-careers.webp)

<p class="ed-source">realfast.ai/careers. I didn’t write that line, but it’s close to how my two years have actually gone.</p>

## No formal training, but plenty of freedom and good people

<p>Most people assume you get good at AI the way you get good at anything at work: someone senior sits you down, there’s a course, maybe a certification, and a manager checks in to see how it’s going. There’s no formal AI training at realfast, so I didn’t get any of that.</p>
<p>What I got instead was better. The people here are seriously skilled, and they helped me build agents I couldn’t have built alone. The founders are bullish on AI and push everyone, in every function, to use it in their daily work.</p>
<p>On top of that came <em>absolute</em> freedom. Nobody told me which tools I was allowed to try, or that someone hired for TA and marketing had no business touching the website, or that People ops was no place for agents. If I wanted to clone my own voice and put it on a candidate call, the answer was to go build it and show it to the team. So I explored everything, and figured out a lot of it on my own along the way.</p>
<p>That mix of freedom and good people is how someone hired for TA and marketing ended up building a team of agents, some with teams of their own.</p>

## I hired for AI fluency before I had any

<p>The learning started with hiring, of all things. In January 2025 I designed an interview loop with an AI pair-programming round in it. I was testing candidates on a skill I barely had.</p>
<p>Look, that’s an uncomfortable position to be in, but it’s what pushed me to learn, because you can’t judge what you don’t understand.</p>
<p>Over the next year the bar got sharper. Take our forward deployed engineers (FDEs), the engineers who build inside a client’s systems. By March 2026 their take-home had three rules: two hours, a real git history, and the candidate’s AI chat logs submitted with the work. The chat log tells you more than the code does. You see whether someone directs the model or just follows it, whether they check its work, and what they do when it’s wrong.</p>
<p>So if you’re hiring for AI fluency, read the transcript as well as the output.</p>

## How I actually learned, one step at a time

<p>There was no curriculum. But looking back, I climbed six steps, and each one handed a little more of the work to the machine. You can climb the same ones from any non-engineering role.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">Step 1 · The start</span>
    <p class="ed-card-title">Ask</p>
    <p>Chat for drafts and answers. Useful - but the work still lives in your head.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Step 2 · May 2025</span>
    <p class="ed-card-title">Show</p>
    <p>My first shared Claude artifact. The output became something other people could open.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Step 3 · Jul 2025</span>
    <p class="ed-card-title">Repeat</p>
    <p>One prompt on one recurring job: CV assessment. Same input, same rubric, every time.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Step 4 · Sep 2025</span>
    <p class="ed-card-title">Version</p>
    <p>My first git commit. The work moved out of docs and into a place agents can read.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Step 5 · May 2026</span>
    <p class="ed-card-title">Package</p>
    <p>Prompts became commands, one per role we hire for, that anyone on the team can run.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Step 6 · Aug 2026</span>
    <p class="ed-card-title">Delegate</p>
    <p>Agents and skills with real tools: our applicant tracking system (ATS), the website, the review pipeline.</p>
  </div>
</div>
<p>Step 4 looks like the odd one out, because git sounds like an engineering tool. For me it was the moment my work became something an agent could pick up, rework and hand back, with every change on record.</p>
<p>You don’t need to learn to code, but you do need your work to live somewhere an agent can read it.</p>

## The first commit was the real starting line

<div class="ed-callout">
  <div class="ed-callout-figure">1,400</div>
  <div>
    <span class="ed-card-label">Commits in 13 months</span>
    <p>Across eight repos, from September 2025 to today. I’m the top contributor to the realfast website, even though I was hired for TA and marketing.</p>
  </div>
</div>
<figure class="rf-fig rf-chart">
  <svg viewBox="0 0 640 220" role="img" aria-labelledby="ct">
    <title id="ct">My commits per month, September 2025 to October 2026. They peak at 337 in July and 349 in August 2026.</title>
    <line x1="20" y1="180" x2="620" y2="180" stroke="#d8d8d8" stroke-width="1"></line>
    <rect fill="#9a9a9a" x="28" y="177.3" width="26" height="2.7"></rect>
    <rect fill="#9a9a9a" x="71" y="159.8" width="26" height="20.2"></rect>
    <rect fill="#9a9a9a" x="114" y="164" width="26" height="16"></rect>
    <rect fill="#9a9a9a" x="157" y="154.3" width="26" height="25.7"></rect>
    <rect fill="#9a9a9a" x="199" y="162.6" width="26" height="17.4"></rect>
    <rect fill="#9a9a9a" x="242" y="178.2" width="26" height="1.8"></rect>
    <rect fill="#9a9a9a" x="285" y="168.1" width="26" height="11.9"></rect>
    <rect fill="#9a9a9a" x="328" y="118.6" width="26" height="61.4"></rect>
    <rect fill="#9a9a9a" x="371" y="75" width="26" height="105"></rect>
    <rect fill="#9a9a9a" x="413" y="133.7" width="26" height="46.3"></rect>
    <rect fill="#e3120b" x="456" y="25.5" width="26" height="154.5"></rect>
    <rect fill="#e3120b" x="499" y="20" width="26" height="160"></rect>
    <rect fill="#9a9a9a" x="542" y="163.5" width="26" height="16.5"></rect>
    <rect fill="#9a9a9a" x="585" y="173.6" width="26" height="6.4"></rect>
    <g class="v"><text x="384" y="69">229</text><text x="469" y="19">337</text><text x="512" y="14">349</text></g>
    <g class="a"><text x="41" y="198">Sep</text><text x="170" y="198">Dec</text><text x="255" y="198">Feb</text><text x="384" y="198">May</text><text x="469" y="198">Jul</text><text x="512" y="198">Aug</text><text x="598" y="198">Oct</text><text x="41" y="214">2025</text><text x="255" y="214">2026</text></g>
  </svg>
  <figcaption class="ed-caption">Commits per month. May was the voice agent and the hiring push. July and August, in red, were the website rebuild and the writing tools. Source: git history.</figcaption>
</figure>
<p>Commit count says nothing about quality, and I’m not pretending it does. What it shows is where the work lives now, and how fast it compounds once it gets there. The first four months averaged around 35 commits a month. July and August averaged over 340.</p>

![GitHub contribution graph showing 1,180 contributions in the last year, sparse from October to March and dense from April to October](/src/assets/blog-images/two-years-github.webp)

<p class="ed-source">My GitHub contribution graph: 1,180 contributions in the last year. GitHub counts these its own way, so it won’t match the commit total above exactly, but you can see the moment the work moved into repos.</p>

## Last year I bought an AI interviewer. This May I built one.

<p>Recruiting for FDE roles is a volume problem. I was doing 10 to 15 intro calls a day, 16 to 21 minutes each, asking the same questions and writing the same notes. Agencies didn’t help either - last June, 19 of 20 “pre-vetted” CVs from one agency failed our review.</p>
<p>In May 2025 I wrote on this blog about <a href="/blog/scaling-hiring-with-ai-how-realfast-sses-ai-interviews-to-save-time">bringing in an off-the-shelf AI interviewer</a> to take some of those calls. First time I’d put an agent in front of a candidate.</p>
<p>A year later I was building my own, and this time it wasn’t one tool. It was the whole pipeline, stage by stage.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">Stage 1 · Screen the CV</span>
    <p class="ed-card-title">CV assessment</p>
    <p>Every CV that lands in Ashby, our ATS, gets assessed against a rubric for the role it applied to. FDE, Lead FDE and AI transformation roles each have their own. One batch alone was 91 CVs.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Stage 2 · Talk</span>
    <p class="ed-card-title">The intro call</p>
    <p>An agent with my cloned voice takes it. More on that below.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Stage 3 · Prove it</span>
    <p class="ed-card-title">Take-home follow-ups</p>
    <p>Assignments go out and the reminders follow on their own, so no candidate falls through a gap because I forgot to nudge.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Stage 4 · Learn</span>
    <p class="ed-card-title">Funnel reports</p>
    <p>A weekly recruitment report shows where candidates drop off, without me building a spreadsheet each week.</p>
  </div>
</div>
<p>Look around and most companies still hire the way they did ten years ago. Post a job, collect a pile of applications, skim the CVs, book the calls, repeat. Bloody hell, we don’t do that.</p>
<p>At realfast, every single candidate - tech or non-tech, engineer or marketer - comes in through <a href="https://join.realfast.ai">join.realfast.ai</a>, where the front door is an agent. You sign in, get a token, and connect your own AI agent. Your agent reads our open roles and the job descriptions, uploads your CV and your agent setup, and submits the application for you. Can’t set up an agent? That tells us something too, since getting comfortable with that setup is part of the first screen.</p>

![join.realfast.ai: Apply with your agent. Sign in to get your MCP token. Your AI agent handles the rest.](/src/assets/blog-images/two-years-join.webp)

<p class="ed-source">join.realfast.ai has no application form, because your agent is the application.</p>
<p>Alongside the portal there’s a page from me, <a href="/sumanth-why-realfast/">“Hey, it’s Sumanth”</a>, that explains why realfast and what the interview looks like before you talk to anyone.</p>
<p>Then you tell us what you’ve been reading. Then you talk to my agent. Only after all of that has been reviewed - by me and by my agent - do I reach out to you myself.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">The usual way</span>
    <p class="ed-card-title">Form, pile, skim, call</p>
    <p>Fill a form, attach a CV, wait. A recruiter skims a pile, books a screening call, and finds out on the call whether you’ve ever used AI.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">The realfast way</span>
    <p class="ed-card-title">Agent, reading, voice, then me</p>
    <p>Your agent applies, you share what you read, you talk to my agent, and both of us review it. By the time I call, I already know how you work with AI.</p>
  </div>
</div>
<p>So my first real conversation with a candidate is never a screening call. That’s how damn different we are.</p>
<p>So, the intro call. Over one weekend in May 2026, I cloned my own voice on ElevenLabs and built an agent around it. It takes the intro call instead of me. Candidates talk to my voice, it asks what I would ask, and its notes land straight in the ATS. A screen now takes 3 to 5 minutes, and I don’t dial anyone.</p>
<blockquote>
<p>We have to add voice interview for sure, this is really cool.</p>
</blockquote>
<p class="ed-source">Aakash, co-founder</p>
<p>The agent runs the first pass, but people still decide who we hire. In practice, “automating recruiting” means automating one stage at a time, starting with the hour you repeat most.</p>

![realfast Forward Deployed Engineer careers page.](/src/assets/blog-images/two-years-fde.webp)

<p class="ed-source">realfast.ai/careers/fde. It took eleven versions before it said what we meant.</p>

## People ops and payroll are mostly bookkeeping. I let the agents keep the books.

<p>Hiring is where agents saved me hours. People ops and payroll are where they stop things slipping. No one joins HR because they love tracking laptop serial numbers. Most People work is repetitive and easy to drop, which makes it agent work.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">People</span>
    <p class="ed-card-title">A people dashboard</p>
    <p>It updates itself.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Assets</span>
    <p class="ed-card-title">Asset management</p>
    <p>It tracks who has which laptop and which accounts.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Joining</span>
    <p class="ed-card-title">Onboarding</p>
    <p>From insurance and PF to accounts and a buddy intro, run as one workflow and backed by an internal People portal I built, sign-in included.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">Leaving</span>
    <p class="ed-card-title">Exits</p>
    <p>Run the same way, from revoking access to settling dues.</p>
  </div>
</div>
<p>I run payroll too. Before AI, I watched a lot of startups keep multiple HR people and a separate team just to run payroll. Then a founder, the Head of HR or the CHRO would ask for some random number, like headcount by role, this month’s attrition or average CTC. Someone would disappear for hours, sometimes days, to come back with it.</p>
<p>For me, that number is at my fingertips.</p>

![realfast Employee Dashboard: payroll and headcount overview showing 36 active employees, with payroll figures, names and roles redacted.](/src/assets/blog-images/two-years-dash.webp)

<p class="ed-source">Our employee dashboard: headcount, payroll, average CTC and tenure on one screen. Redacted here, obviously.</p>

![Exits and Attrition panel: attrition this month, trailing three-month average, month-on-month headcount change, year-to-date, previous year and all-time attrition, values redacted.](/src/assets/blog-images/two-years-attr.webp)

<p class="ed-source">Exits and attrition: this month, the trailing three months, year to date, last year and all time.</p>
<p>Onboarding and asset tracking run on their own too. And anniversary wishes go out the same way, so no one’s day gets forgotten. Small thing - but it’s the one people notice. Harsh got to mine before any agent did, which is the better version anyway.</p>

![Slack: Harsh Jain posts 'happy 2 year work anniversary to @sumanth raj urs'. Sixteen minutes later Sumanth replies 'I want to congratulate myself on my 2 year work anniversary!', sent using Claude.](/src/assets/blog-images/two-years-slack.webp)

<p class="ed-source">Harsh beat my agents to it. Sixteen minutes later I congratulated myself - sent using Claude, naturally.</p>
<p>So what’s still manual? Keeping the office running, stocking the snacks and managing the office help - and so far, no agent has learned to restock the snacks.</p>
<p>Don’t only automate what’s boring, automate what gets <em>dropped</em> too, because an exit with one account left open costs you more than a slow spreadsheet ever will.</p>

## Marketing runs on agents too

<p>Marketing was the other half of that first Slack intro, and most of its weekly routine runs on agents now.</p>
<p>Start with Google Analytics. GA4 and Google Tag Manager are wired across the site, with form submissions tracked as events, so we can see which pages actually turn into conversations. There’s a custom GA dashboard with the numbers the team cares about, so no one has to dig through reports to find them. And every week an analytics brief lands, in plain words - what moved, what didn’t.</p>
<p>Then the audience. We pull the people engaging with our founders’ posts and match them against our ideal customer profile, so sales knows which names to look at first. A 60-day version of that became a GTM insights report for the sales team.</p>
<p>Then content. Each podcast episode turns into LinkedIn posts and captions, Hinglish included, and one founder social kit came to 28 captions and 37 frames. Every caption, page and post goes through a copy review I’ll come back to further down.</p>
<p>Look, none of these is clever on its own. But together they mean marketing runs on a weekly rhythm that doesn’t depend on me remembering to do it.</p>
<p>A dashboard is only useful if someone reads it, so I pair each one with an agent that reads it and tells us what changed.</p>

## Check the number before you celebrate it

<p>But dashboards have a catch. In July our website traffic jumped, and when I dug into it in August, the spike was our own dev servers loading the site while we built it.</p>
<p>Every figure on our pages now has to point to a source before it ships. An agent will happily report a number without asking whether it means what you hope it does.</p>
<p>So before you share a metric, ask yourself what else could have produced it.</p>

## Even the illustrations come from agents now

<p>Design went the same way as marketing. The realfast design system is now a skill - the colors, fonts, templates and anti-slop rules an agent reads before it builds anything.</p>
<p>Our illustrations come out of Midjourney and our own image skill, briefed to the house style of grainy ink, off-white paper and one red accent. The image at the top of this post came out of Midjourney, briefed to that style. Before a page ships, two more skills check whether its design looks machine-made.</p>

![Grainy ink illustration of a sprinter breaking a red finish tape.](/src/assets/blog-images/two-years-sprint.webp)

<p class="ed-source">From the realfast illustration set, where every image follows one brief and one house style.</p>
<p>Manas made the case better than I can in <a href="/blog/ai-doesnt-have-bad-taste">“AI doesn’t have bad taste. It’s just missing constraints.”</a> The point, in one line: the fix for a generic image or page is a rule written into the skill, not another round of feedback on the output.</p>

## Writing is the job that paid for itself

<p>And then there’s the writing. It turned out to be the biggest change of my second year: founder posts on LinkedIn almost every day, blogs, case studies, whitepapers, and the copy on every page of our website.</p>
<p>Writing I did in the last year helped bring a six-figure deal to realfast. It’s the part of this job I’m proudest of.</p>
<p>Writing also turned out to be the skill underneath everything else in this post. The skill files my agents read, the rubric the CV assessor scores against and the questions my voice clone asks on an intro call are all just writing. When an agent gave me rubbish, the fix was almost always a clearer paragraph rather than a cleverer tool, so getting better at writing for founders and buyers made my agents better too.</p>
<p>That’s also why I got careful about it. Once writing brings in revenue, writing that says nothing costs you money, so I built a tool that checks every piece of copy before it ships, and it asks two separate questions: did a model write this, and does it say anything?</p>
<p>Those are different problems. A human can write a page of pure filler (we call it slop), and a model can draft one that says something specific and checkable. Most tools in this space collapse the two into one question.</p>
<figure class="rf-fig rf-diagram">
  <svg viewBox="0 0 640 400" role="img" aria-labelledby="qt">
    <title id="qt">Two separate questions. Columns: a human wrote it, or a model wrote it. Rows: says something specific, or says nothing. A detector only reads the columns; our review reads the rows. Human-written slop passes a detector and fails our review. A specific, model-drafted page gets flagged by a detector and passes our review.</title>
    <text class="ax" x="390" y="22">Who wrote it?  (what a detector checks)</text>
    <text class="col" x="265" y="52">A human</text>
    <text class="col" x="515" y="52">A model</text>
    <text class="ax" x="22" y="230" transform="rotate(-90 22 230)">Does it say anything?  (what we check)</text>
    <text class="row" x="70" y="140">Specific,</text><text class="row" x="70" y="158">checkable</text>
    <text class="row" x="70" y="282">Says</text><text class="row" x="70" y="300">nothing</text><text class="row" x="70" y="318">(slop)</text>
    <rect x="145" y="68" width="240" height="150" fill="#f4f2f0" stroke="#d8d8d8"></rect>
    <rect x="395" y="68" width="240" height="150" fill="#f4f2f0" stroke="#d8d8d8"></rect>
    <rect x="145" y="228" width="240" height="150" fill="#ffffff" stroke="#d8d8d8"></rect>
    <rect x="395" y="228" width="240" height="150" fill="#ffffff" stroke="#d8d8d8"></rect>
    <text class="verdict ok" x="265" y="132">Ships</text>
    <text class="note" x="265" y="158">Both checks agree.</text>
    <text class="verdict ok" x="515" y="132">Ships</text>
    <text class="note" x="515" y="158">A detector flags it anyway.</text>
    <text class="verdict bad" x="265" y="292">Fails</text>
    <text class="note" x="265" y="318">A detector passes it anyway.</text>
    <text class="verdict bad" x="515" y="292">Fails</text>
    <text class="note" x="515" y="318">Both checks agree.</text>
  </svg>
  <figcaption class="ed-caption">Two questions, four answers. A detector only sees the columns, so it gets the two corners on the diagonal backwards.</figcaption>
</figure>
<p>While building it, I ran seven of our own pages through a commercial scanner and read all 131 comments it left. Three things stood out. The most common problem wasn’t AI-sounding words at all - it was vagueness, a sweeping claim that never named the number behind it. The biggest mechanical tell was invisible to the scanner. And the single largest group of comments was <em>praise</em>.</p>
<figure class="rf-fig rf-diagram">
  <svg viewBox="0 0 640 252" role="img" aria-labelledby="bt">
    <title id="bt">What a commercial scanner said about seven of our pages, from 131 comments: 31 praised lines that work, 19 flagged vague claims, 13 weak transitions, 11 stacked sentences, 11 too much how-to detail, 9 unexplained jargon, 9 slogans instead of evidence.</title>
    <text class="ax" x="262" y="18" style="text-anchor:start">Comments, out of 131 across seven pages</text>
    <text class="bl" x="250" y="49">Praise: lines that work</text><rect x="262" y="36" width="330.0" height="18" fill="#121212"></rect><text class="bv" x="600.0" y="49">31</text><text class="bl" x="250" y="79">Vague claim, no number behind it</text><rect x="262" y="66" width="202.3" height="18" fill="#e3120b"></rect><text class="bv" x="472.3" y="79">19</text><text class="bl" x="250" y="109">Weak transition</text><rect x="262" y="96" width="138.4" height="18" fill="#9a9a9a"></rect><text class="bv" x="408.4" y="109">13</text><text class="bl" x="250" y="139">Long, stacked sentences</text><rect x="262" y="126" width="117.1" height="18" fill="#9a9a9a"></rect><text class="bv" x="387.1" y="139">11</text><text class="bl" x="250" y="169">Too much how-to detail</text><rect x="262" y="156" width="117.1" height="18" fill="#9a9a9a"></rect><text class="bv" x="387.1" y="169">11</text><text class="bl" x="250" y="199">Unexplained jargon</text><rect x="262" y="186" width="95.8" height="18" fill="#9a9a9a"></rect><text class="bv" x="365.8" y="199">9</text><text class="bl" x="250" y="229">Slogan instead of evidence</text><rect x="262" y="216" width="95.8" height="18" fill="#9a9a9a"></rect><text class="bv" x="365.8" y="229">9</text>
  </svg>
  <figcaption class="ed-caption">The biggest problem, in red, was vagueness. The biggest single group, in black, was praise. Smaller categories not shown.</figcaption>
</figure>
<div class="ed-callout">
  <div class="ed-callout-figure">106</div>
  <div>
    <span class="ed-card-label">Em-dashes on five of our pages</span>
    <p>The most obvious machine-writing tell on our site. The scanner flagged zero of them, because nothing in its rubric checks for them.</p>
  </div>
</div>
<p>The praise matters more than it looks. A system that only learns from complaints will quietly delete every line that was working. So those lines are protected now.</p>
<p>The rule I lean on most came from my colleague Rishi: at the end of every sentence, ask “so what?” If only part of the sentence answers, cut the rest.</p>
<p>Every blog post, page and LinkedIn post at realfast goes through that review before it’s published. That includes the website itself, which we rebuilt over the summer - 293 of my commits landed in July alone.</p>

![realfast homepage: They’re promising Q4. We ship Thursday.](/src/assets/blog-images/two-years-home.webp)

![realfast about page: We don’t ship decks. We move metrics.](/src/assets/blog-images/two-years-about.webp)

<p class="ed-source">The rebuilt home and About pages.</p>

## Meet my agents

<p>So who actually does all this? Here’s the roster as of today, and each agent does exactly one job. None of them is smart, and that’s on purpose - Sidu wrote that <a href="/blog/dumb-agents-beat-smart-ones">dumb agents beat smart ones</a>, and I’ve yet to see that proven wrong.</p>
<p>But a few of them aren’t one agent at all. When a job got too big for one dumb agent, I split it into smaller ones underneath.</p>
<div class="rf-tree">
  <div class="rf-branch">
    <p class="rf-fn">Hiring</p>
    <ul>
      <li><b>The CV assessor</b>
        <ul><li>FDE assessor</li><li>Lead FDE assessor</li><li>AI transformation lead assessor</li><li>AI transformation consultant assessor</li><li>One more for each new role</li></ul></li>
      <li><b>My voice clone</b><span>takes the intro call</span></li>
      <li><b>The follow-up chaser</b><span>keeps take-homes moving</span></li>
      <li><b>The funnel reporter</b><span>writes the weekly report</span></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">Writing</p>
    <ul>
      <li><b>The copy reviewer</b>
        <ul><li>The detector: did a model write this?</li><li>Blog rewriter</li><li>Website rewriter</li><li>Social post rewriter</li><li>Number checker: does every figure have a source?</li><li>Design checker: does the page look machine-made?</li></ul></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">Marketing &amp; design</p>
    <ul>
      <li><b>The analytics reader</b><span>turns GA numbers into a weekly brief</span></li>
      <li><b>The audience matcher</b><span>finds which engagers fit our customer profile</span></li>
      <li><b>The content engine</b><span>turns each podcast episode into posts and captions</span></li>
      <li><b>The illustrator</b><span>Midjourney and our image skill, in the house style</span></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">People</p>
    <ul>
      <li><b>The People ops crew</b>
        <ul><li>People dashboard</li><li>Asset tracker</li><li>Onboarding</li><li>Exits</li><li>Anniversary wishes</li></ul></li>
    </ul>
  </div>
</div>
<p>I didn’t plan any of this, and no one assigned it to me. Each agent started as one annoying task I was tired of doing by hand. I built it, showed it to the team, made it better, and then started the next one. The sub-agents came the same way: the moment one agent was doing two jobs badly, it became two agents doing one job each.</p>

### The skills behind them

<p>Under those agents sit the skills, the written-down instructions an agent reads before it does a job. If you copy one thing from this post, copy this. A skill is just your best way of doing a task, written down so an agent can do it the same way every time.</p>
<div class="rf-tree rf-skills">
  <div class="rf-branch">
    <p class="rf-fn">Recruitment</p>
    <ul>
      <li><b><code>/assess</code></b><span>the full CV assessment, straight from Ashby</span></li>
      <li><b><code>/assess-fde</code> · <code>/assess-lfde</code></b><span>one per engineering role, each with its own rubric</span></li>
      <li><b><code>/assess-aitl</code> · <code>/assess-aitc</code></b><span>AI transformation lead and consultant roles</span></li>
      <li><b><code>/rec-reports</code></b><span>the weekly recruitment and funnel report</span></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">Marketing &amp; content</p>
    <ul>
      <li><b><code>/flux-capacitor</code></b><span>the content engine: one podcast in, a week’s worth of material out</span></li>
      <li><b><code>/flux-demo</code></b><span>the same engine, set up to show live</span></li>
      <li><b><code>/fix-copy</code></b><span>takes a page from weak copy to shipped copy, end to end</span></li>
      <li><b><code>deslop-website-copy</code></b><span>strips the machine-written tells out of website pages</span></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">Writing, review &amp; design</p>
    <ul>
      <li><b><code>ai-text-detection</code></b><span>scores a piece and routes it to the right rewriter</span></li>
      <li><b><code>blog-</code> · <code>website-</code> · <code>social-human-rewrite</code></b><span>one rewriter per format, each in its own register</span></li>
      <li><b><code>copy-review</code> · <code>proof-ledger</code></b><span>checks every line against our voice, and every number against a source</span></li>
      <li><b><code>copy-diff</code> · <code>render-paths</code> · <code>ship-copy</code></b><span>before-and-after views, then safely to production</span></li>
      <li><b><code>illustrate</code> · <code>design-review</code> · <code>design-slop</code></b><span>house-style images, and a check on whether a page looks machine-made</span></li>
    </ul>
  </div>
  <div class="rf-branch">
    <p class="rf-fn">HR &amp; People</p>
    <ul>
      <li><b>People dashboard</b><span>keeps the team view current</span></li>
      <li><b>Asset tracker</b><span>who has which laptop and which accounts</span></li>
      <li><b>Onboarding</b><span>insurance, PF, accounts and the buddy intro, in order</span></li>
      <li><b>Exits</b><span>access, assets and dues, closed out</span></li>
      <li><b>Anniversary wishes</b><span>so no one’s day gets missed</span></li>
    </ul>
  </div>
</div>
<p>That’s over twenty skills. Each one is a job I used to do by hand, written down well enough that I don’t have to anymore.</p>

## My performance review writes itself

<p>Which brings me to the part of the old job I don’t miss. Every piece of work I do is a GitHub issue, with the metrics it was meant to move tracked against it. The record builds up as the work happens.</p>
<p>So I don’t sit down every quarter trying to remember what I did in July, and I don’t fill in a yearly self-review guessing at my own impact. The work and its numbers are already there for anyone to read.</p>
<blockquote>
<p>Gone are the days of self-review forms.</p>
</blockquote>
<p>My review now builds itself from the work, which beats writing one from memory.</p>

## I build for myself too

<p>The freedom doesn’t switch off when I log out. Once you’ve built a few agents for work, you start seeing every small annoyance at home as something you could fix over a weekend - so I do.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">macOS · Python</span>
    <p class="ed-card-title">Tidy Downloads</p>
    <p>My Downloads and Desktop, cleaned up automatically. Every file I save gets filed into the right folder - invoices with invoices, screenshots with screenshots - in the background. It never deletes anything on its own. <a href="https://github.com/sumanthurs/tidy-downloads">github.com/sumanthurs/tidy-downloads</a></p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">macOS · Swift</span>
    <p class="ed-card-title">Chicken Neck</p>
    <p>A menu-bar app that watches my posture through the Mac’s webcam and calls me out, like a tiny orthopaedic chicken on my shoulder, the moment my neck starts craning toward the screen. Everything runs on-device, and no video is ever recorded.</p>
  </div>
</div>
<p>Chicken Neck has a very me backstory. I’d noticed I wasn’t keeping my neck straight. Around the same time, I came across a developer who’d built a posture nudger using AirPods, which have a motion sensor that Apple lets apps read. I’m an Android person, so I tried to recreate it with my Samsung phone and OnePlus buds. It didn’t work, because the OnePlus Buds 4 have no motion sensor at all and macOS can’t read non-Apple earbuds anyway. So I used the webcam instead, which gets the same result on any Mac with no special hardware.</p>
<p>There’s more on <a href="https://github.com/sumanthurs">github.com/sumanthurs</a>, including a kids’ learning app and a calculator for my credit card points. None of it is for work, but all of it made me better at work.</p>

## If you’re starting today

<p>So if you’re in HR, recruiting or marketing and reading this from where I was two years ago - you may not get formal training either, so here’s what I’d do.</p>
<div class="ed-cards ed-cards--2">
  <div class="ed-card">
    <span class="ed-card-label">1</span>
    <p class="ed-card-title">Pick the hour you repeat</p>
    <p>Not the hardest task, the most repeated one - for me that was the intro call.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">2</span>
    <p class="ed-card-title">Give the agent one job</p>
    <p>One boring thing, done reliably, beats a clever agent that does five things badly.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">3</span>
    <p class="ed-card-title">Move your work into files</p>
    <p>Docs in a repo beat docs in a drive, because agents can only build on what they can read.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">4</span>
    <p class="ed-card-title">Show it before it’s ready</p>
    <p>Put it in front of people who’ll ask the awkward question. That’s how it gets better.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">5</span>
    <p class="ed-card-title">Write taste down as rules</p>
    <p>When an output’s off, fix the rule that made it, not just the output.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">6</span>
    <p class="ed-card-title">Source every number</p>
    <p>If you can’t point to where a figure came from, it stays off the page.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">7</span>
    <p class="ed-card-title">Build the fix on a weekend</p>
    <p>The voice agent took one weekend, which was faster than waiting for someone else to build it.</p>
  </div>
  <div class="ed-card">
    <span class="ed-card-label">8</span>
    <p class="ed-card-title">Keep the judgment</p>
    <p>Agents give you volume, but deciding what to keep, and who to hire, is still the job.</p>
  </div>
</div>
<p>Two years ago I asked what an agent was. Now a whole team of them is working while I type this, and my job description still hasn’t caught up - I’ve stopped waiting for it to.</p>