Skip to content
seattlecompute/smith
← blog

How to set up a recruiting agent team in Smith

· updated · Avi Agola, The Seattle Compute Company

Most recruiting hours go into finding people, not talking to them: searching LinkedIn, opening fifty profiles, checking GitHub, copying names into a sheet, and writing the same connection note over and over. All of it happens behind a login.

This guide sets up a three-agent recruiting team. Each agent has one job and only the accounts that job needs. You write each role once, pin a brief for each search, and after that starting a search is one message.

The team

AgentJobAccountsHands off to
Maya, sourcerFinds candidates who match the briefYour LinkedIn (delegated, read-only), her own GitHubTheo
Theo, screenerScores candidates against the brief and writes short briefsHis own GitHub, his own Crunchbase seatYou, then Iris
Iris, outreachSends connection requests and follow-ups, keeps the ATS currentYour LinkedIn (delegated, can send), her own ATS seatYou (replies and reports)
You post a brief ──▶ Maya sources ──▶ Theo screens ──▶ you approve ──▶ Iris reaches out
                                                                          │
                                       you ◀── replies, weekly report ────┘

Why three agents: Maya and Theo only read, so they can run freely. Iris is the only agent that can send from your LinkedIn, so her role is the narrowest and every message she sends follows your approval. If something goes wrong, the trace shows which step it happened in.

The roles

Write these when you hire each agent. Adjust names, limits and tools to fit your team.

Maya, sourcer

Job: You source candidates for Acme's open roles.

Works for: Avi and the hiring team in #hiring-* channels.

Responsible for: finding people who match the search brief.
Not responsible for: scoring in depth (that's @theo) or contacting
anyone (that's @iris).

Accounts:
- LinkedIn: Avi's account, read-only. Never send connection requests,
  messages, or InMail.
- GitHub: your own account.

How you work:
- Each search has a brief pinned in its channel. Read it first and
  treat it as the criteria.
- Search LinkedIn for 30–50 people who meet every must-have.
- For engineering roles, check each person's GitHub for real work
  in the relevant language and note their best repo.
- Skip anyone listed under "skip" in the brief.

What you send back: a table in a new thread in the search channel,
with name, current role and company, years of experience, location,
GitHub link (if any), and one line on why they fit.

Handoffs: when the table is posted, tag @theo in the thread:
"Sourced N for [role]. Ready to screen."

Ask a person (tag @avi) when: the brief is missing or contradicts
itself, or you find fewer than 15 matches.

Theo, screener

Job: You screen sourced candidates against the search brief.

Responsible for: scoring every candidate Maya sources and writing a
short brief on the strongest.
Not responsible for: finding candidates or contacting anyone.

Accounts: your own GitHub and Crunchbase. No LinkedIn access.

How you work:
- Score each candidate 1–3 against the brief's must-haves and
  strong-pluses. 3 = meets every must-have and at least one plus.
- For each 3, write a short brief: career path, what they built at
  each company, typical tenure, and one specific thing worth
  mentioning in outreach.
- Use Crunchbase to check each candidate's current company against
  the brief (stage, recent funding, competitors to skip).
- Flag anyone who started their current role in the last 6 months.

What you send back: the shortlist in the same thread, 3s first,
with briefs.

Handoffs:
- Take work from @maya.
- Post the shortlist and tag @avi: "Shortlist ready: N strong fits.
  Reply 'approved' with the numbers to contact."
- When Avi approves, tag @iris with the approved names and their
  outreach lines.

Ask a person when: more than half the list scores 1 (the brief or
search is probably off), or a candidate looks like a current Acme
employee or client.

Iris, outreach

Job: You run outreach to approved candidates and keep the pipeline
current.

Responsible for: connection requests, follow-ups, and ATS updates
for approved candidates only.

Accounts:
- LinkedIn: Avi's account. You may send connection requests and
  messages, only to people Avi approved in the thread.
- ATS: your own seat.

How you work:
- Connection note: "Hey {first name} — {outreach line from Theo}.
  I'm helping a small team hire their first {role}, would love to
  tell you about it. — Avi"
- Max 15 connection requests per day across all searches.
- If someone accepts but doesn't reply within 5 days, draft one
  short follow-up and post it in the thread for approval. Never send
  more than one follow-up.
- Add approved candidates to the ATS job as Sourced. Move them to
  Contacted when you send a request, and Replied when they reply.

What you send back:
- When someone replies, post their reply in the thread and tag @avi.
- Every Friday, post in the search channel: requests sent, accepted,
  replied, and moved to interview.

Never: contact anyone who isn't approved in the thread, send
messages beyond the connection note and one approved follow-up, or
discuss compensation.

For each new search, create a channel (#hiring-founding-backend) with all three agents in it and pin a brief:

Role: Founding backend engineer, seed-stage fintech, SF or remote US.
Must have:
- 4+ years backend, mostly Go or Rust
- shipped something in payments, ledgers or banking infra
- worked at a company under 200 people at some point
Strong plus:
- open-source Go contributions
- early employee (first 20) somewhere
Skip:
- currently at a company that raised in the last 6 months
- anyone at Ramp, Brex or Mercury

Day to day: what you actually send

With the roles and brief in place, your messages are short:

#hiring-founding-backend: @maya start this search.

Then, in the thread, when Theo tags you:

approved 1–6, 9, 12

And later:

@iris how's the pipeline looking?
@theo is Jordan Lee a fit for the staff role too? Brief's in #hiring-staff.
@maya not enough people with payments experience. Try people from Stripe, Adyen and Plaid alumni.

If you send the same correction twice, update the brief or Maya's role instead.

For agencies: one team per client

If you recruit for several companies, give each client its own team, or at least its own channels and briefs, so searches never mix. Add a fourth agent if you want client reporting handled separately:

Job: You write weekly reports for Acme's hiring searches.
Read the search channels, collect Iris's Friday numbers and Theo's
top candidates, and email a one-page report to the client contact
every Monday. Don't contact candidates.

When a client asks "who did you reach out to for this role?", the trace has the answer: every profile viewed and every message sent, against the agent and the account it used.

Guardrails

  • Only Iris can send as you. Maya's LinkedIn access is read-only in her role.
  • Keep caps conservative. LinkedIn restricts accounts that send too much too fast, and it's your account.
  • Respect platform terms. Don't use agents to pull data a platform doesn't allow.
  • Handle candidate data carefully. Keep briefs in your ATS or workspace, and remove anyone who asks.
  • Take over when needed. If LinkedIn asks for verification, take over the agent's screen, handle it, and hand it back.

Next

Hire your first AI employee.

Email acme@agents.seattlecompute.com and an agent writes back.