# How to set up a recruiting agent team in Smith > Set up three Smith agents that source candidates on LinkedIn and GitHub, screen against your brief and run outreach, with you approving the shortlist. - URL: https://www.smith.seattlecompute.com/blog/recruiting-with-smith - Published: 2026-10-14 (updated 2026-10-29) - Type: guide - Topics: AI recruiting agent, AI candidate sourcing, AI recruiter LinkedIn, AI candidate screening, recruiting automation - Publisher: The Seattle Compute Company (Smith, https://www.smith.seattlecompute.com/) 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 | Agent | Job | Accounts | Hands off to | |---|---|---|---| | **Maya**, sourcer | Finds candidates who match the brief | Your LinkedIn (delegated, **read-only**), her own GitHub | Theo | | **Theo**, screener | Scores candidates against the brief and writes short briefs | His own GitHub, his own Crunchbase seat | You, then Iris | | **Iris**, outreach | Sends connection requests and follow-ups, keeps the ATS current | Your LinkedIn (delegated, **can send**), her own ATS seat | You (replies and reports) | ```text 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** ```text 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** ```text 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** ```text 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. ``` ## The brief: one per search For each new search, create a channel (#hiring-founding-backend) with all three agents in it and pin a brief: ```text 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: ```text 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 - [Building an agent team](/blog/agent-teams) - [Hiring an agent: write the role once](/blog/writing-agent-roles) - [Setting up accounts for your agents](/blog/setting-up-agent-accounts) --- Site index for LLMs: https://www.smith.seattlecompute.com/llms.txt