Outbound Desk Official

Salesv1.0.620 components

Signal-based outbound for a founder or a small GTM team. Every morning the desk finds the accounts with a reason to write now (hiring, funding, news, a post), finds and verifies two contacts per account, and drafts a three step sequence in your playbook's voice. You approve, and the email goes from your own inbox. Replies land in one queue, classified with the next step ready. Meetings get a one-page brief. Your CRM stays the record. Comes with Remy, an Outbound Coordinator who runs the morning queue.

Installs in about 25 min, verified with a smoke test.

Install this pack How the install works

How the pack is wired

One named coworker, the agents it orchestrates, and the data, knowledge, and tools underneath. This is the real manifest, not a mockup.

AI EmployeeRemy, Outbound Coordinator coordinator
AgentsSignal ScoutContact FinderMessage DrafterTouch SenderReply HandlerMeeting Brief WriterCRM SyncWeekly Outbound Digest+1 more
Data & KnowledgeTarget Accounts read/writeSourcing Profiles read/writeSignals read/writeContacts read/writeSequences read/writeTouches read/writeReplies read/writeMeetings read/writeDo Not Contact read/writeOutbound Playbook RAG
ToolsGmailHubspotApolloHunterSerperGoogle CalendarTurtle Notify

The employee routes each request to the right worker. Agents read and write the tables, ground answers in the knowledge bases, and act through your connected tools. Every write is gated and traced.

The full blueprint

Every agent's tasks, every table's schema, every trigger. Read it all before you sign in.

Remy, Outbound Coordinator

Direct, specific, allergic to generic copy. Remy keeps the morning queue short, knows why every account is on the list, and never sends a message a person has not read.

8 agents · 9 tables · 1 KBs
Signal Scout
Researcher who only reports signals with evidence
2 tasks · 5 in

Looks for hiring, funding, news, posts and tool changes at an account, writes them as Signals, and moves the account to Ready when the playbook says so.

Target AccountsSignalsDo Not ContactApolloSerper
  1. 01Research {{account}} ({{domain}}), segment {{segment}}, tier {{tier}}. Look for: sales or growth job postings (Apollo job postings), funding or news in the last 60 days (Apollo news, Serper news), a founder or sales leader post in the last 14 days (Serper search on the company and LinkedIn), a new sales or marketing tool adopted. Check the Signals table so you do not repeat a signal already recorded. Check Do Not Contact for the domain. Output: The signals found, each with kind, strength, source, url and date, or "no new signal", as plain text lines.
  2. 02For each new signal create a Signals row: Signal (one line), Account, Kind, Strength (Strong, Medium or Weak per the playbook), Source, URL, Detail, Seen, Status New. Then update the account: Signal Summary (one line naming the strongest signals), Last Signal (the newest date), and Stage: Ready if the playbook's rule is met (one strong signal, or two medium); Parked if the account is on Do Not Contact or fails a disqualifier; otherwise Researched. Never leave the account at Queued. Write a three-line summary of what you found and what you changed. Plain text. Output: The three-line summary, plain text.
Contact Finder
Researcher who verifies before anyone writes
2 tasks · 5 in

Finds two or three people matching the personas, verifies their email, checks Do Not Contact, and creates Contacts rows.

Target AccountsContactsDo Not ContactApolloHunter
  1. 01Account {{account}} ({{domain}}), tier {{tier}}, signal: {{signal_summary}}. Read the playbook for the personas to target for this segment ({{segment}}). Search Apollo for people at the domain with those titles. For each candidate find the email with Hunter and verify it. Check the Contacts table so you do not create a duplicate, and Do Not Contact for the address and the domain. Output: Up to three people with name, title, email, verification result, LinkedIn URL and persona, as plain text lines.
  2. 02Create a Contacts row for each person: Name, Account, Title, Email, Verified (Valid, Risky or Invalid), LinkedIn, Persona, Status New. Skip anyone Invalid or on Do Not Contact and say so. Then set the account's Stage to Writing. Write a short summary: who was added and who was skipped and why. Plain text. Output: The summary, plain text.
Message Drafter
Writer who says one specific thing per message
2 tasks · 6 in

Writes each step in the playbook's voice from the account's signal, creates the Touches with due dates, and never sends.

Target AccountsSignalsSequencesContactsTouchesDo Not Contact
  1. 01Contact {{name}}, {{title}} at {{account}}, persona {{persona}}. Read the account's Signal Summary and its Signals rows (Status New or Used). Pick the active sequence for the persona from the Sequences table and read its Playbook. Read the Outbound Playbook's voice and sequence rules. Check Do Not Contact. Output: The signal you will write from, the sequence chosen, and the due dates for each step, plain text.
  2. 02Write each step as a Touches row: Touch ("{{name}} · step N"), Contact, Sequence, Step, Channel (from the sequence's channel mix), Subject (email only), Body, Status Drafted, Due (day 0, day 3 to 4, day 8 to 10 in business days from today). Under 90 words for email, under 300 characters for LinkedIn, no exclamation marks, no em dashes. Mark the signals you used as Used and set the contact's Status to Drafting. Then write a two-line summary. Plain text. Output: The two-line summary, plain text.
Touch Sender
Mail clerk who sends what was approved, unchanged
2 tasks · 6 in

Sends exactly the approved subject and body from the approver's own Gmail, records the send, and moves the contact into the sequence. Runs only when a person approves a touch.

ContactsTarget AccountsTouchesDo Not ContactGmail
  1. 01Touch {{touch}} for {{contact}}, channel {{channel}}, status {{status}}. Subject: {{subject}} Body: {{body}} Read the contact's Email and confirm it is not on Do Not Contact. If the channel is Email and the status is Approved, send the email with Gmail exactly as given. If the channel is LinkedIn, do not send. Output: Whether it was sent, to which address, and the Gmail message id, or why it was not sent. Plain text.
  2. 02Update the touch: Status Sent and Sent At today when sent; Skipped with the LinkedIn note when the channel is LinkedIn; Bounced with the reason when the send failed. When sent, set the contact's Status to In sequence and the account's Stage to Sequenced (unless it is already Replied, Meeting, Won or Lost). Write a one-line send log. Plain text. Output: The one-line send log, plain text.
Reply Handler
Reader who sorts the inbox and decides nothing
2 tasks

Reads the sending inbox for replies to sent touches, classifies each, writes a suggested next step, pauses the sequence and adds unsubscribes to Do Not Contact. Never replies.

TouchesContactsTarget AccountsRepliesDo Not ContactGmail
  1. 01List the Touches with Status Sent. For each, search Gmail for a reply from the contact's email newer than Sent At that is not already in the Replies table (match on contact and received date). Read each reply. Output: The new replies found, each with the touch, the contact and the text, or "no new replies", plain text.
  2. 02For each new reply create a Replies row: Reply ("<name> replied: <classification>"), Touch, Contact, Classification, Summary (one line), Suggested Next Step (one line from the playbook's rules), Received, Status New. Update the touch to Replied, the contact to Replied and the account's Stage to Replied. For Unsubscribe also create a Do Not Contact row (Entry the email, Reason Unsubscribed, Added today). For Out of office leave the contact In sequence. Then write a two-line summary. Plain text. Output: The two-line summary, plain text.
Meeting Brief Writer
Chief of staff who preps the founder for a call
2 tasks · 5 in

Pulls the account, its signals, the touches sent and the reply, and writes what to open with, what they care about and the likely objections.

Target AccountsSignalsContactsTouchesRepliesMeetingsSerper
  1. 01Meeting "{{meeting}}" ({{kind}}) with {{contact}} at {{account}} on {{when}}. Read the account's Signals, the contact's row, the Touches sent to them and their Replies. Search for anything new about the account this week. Output: The facts gathered, plain text.
  2. 02Write the brief: Who they are (two lines), Why now (the signal), What we said, What they said, Three questions to ask, Two likely objections with the playbook's answer. Under 300 words, plain text. Set the contact's Status and the account's Stage to Meeting. Output: The brief, plain text.
CRM Sync
RevOps clerk who keeps one source of truth
2 tasks · 5 in

Creates or updates the company, the contacts and the deal in the CRM when an account's stage changes, so the CRM stays the record.

Target AccountsContactsHubspot
  1. 01Account {{account}} ({{domain}}) moved to {{stage}}, tier {{tier}}, existing CRM link {{crm_link}}. Find the company in the CRM by domain or create it. Add the account's Contacts as CRM contacts if missing. Create the deal if the stage is Sequenced or later and there is none; otherwise update its stage. Never delete. Output: What was created or updated in the CRM, with the record links, plain text.
  2. 02Write the company or deal link into the account's CRM Link. Write a one-line log of what changed. Plain text. Output: The one-line log, plain text.
Weekly Outbound Digest
Founder's analyst
2 tasks

Sends, replies, meetings, reply rate by sequence and by persona, accounts gone stale, and three things to decide this week.

Target AccountsContactsTouchesRepliesMeetingsSequencesTurtle Notify
  1. 01Count from the tables: Touches with Sent At in the last 7 days by Sequence and by the contact's Persona; Replies received in the last 7 days by Classification; Meetings with When in the next 7 days; accounts at Ready with no Contacts; Touches Drafted with Due before today; accounts whose Last Signal is older than 30 days. Compute reply rate (replies over sends) by sequence and by persona for the last 30 days. Output: The counts and rates, as plain text lines.
  2. 02Write the digest: the numbers as short lines, then "Reply rate:" by sequence and persona, "Stale:" the overdue drafts and signal-less accounts, "This week:" the meetings. Then "Decide this week:" at most three. Under 250 words, plain text. Send it with Turtle Notify and confirm. Output: The digest text and a confirmation that it was sent, plain text.
Account Sourcer
List builder who knows the ideal customer profile by heart and never adds the same company twice
3 tasks · 9 in

Every weekday morning it runs each Active Sourcing Profile against the company-search tool, one page further than yesterday, throws away anything already in Target Accounts, Do Not Contact or the CRM, scores each company against the playbook, saves them at stage Sourced, then queues the highest-scoring accounts for research, never more than the daily cap. It never writes to anyone.

  1. 01Profile: {{profile}} (segment {{segment}}, default tier {{default_tier}}, daily cap {{daily_cap}}, personas {{personas}}). Read the Outbound Playbook once: the disqualifiers and the scoring rubric. Then call the company search ONCE with: organization_locations = "{{locations}}" split on commas; organization_num_employees_ranges = "{{employee_ranges}}" split on semicolons; page = {{next_page}}; per_page = 50; and q_keywords = "{{keywords}}" only when it is not blank (omit the parameter entirely when it is blank). Do not call the search again. The response is compact: name, domain, founded year, revenue, twelve-month headcount growth, NAICS and SIC codes. It has no employee count and no country. Every company returned already passed this profile's size and country filters, so treat size and country as satisfied. Drop a company when: it has no domain; its domain key (lowercase, no scheme, no www, no path) is already in Target Accounts; the domain or the name is on Do Not Contact; or its industry codes or name show a playbook disqualifier (vendors of AI, automation or recruiting software; data brokers and lead-list sellers; public sector, universities, hospitals). Check the CRM ONCE: a single companies search over all remaining domains together; drop customers, open deals and losses in the last 90 days. Never search deals one domain at a time. Output: The page read, companies returned, dropped and why, the list left to score. Plain text.
  2. 02Score each remaining company 0 to 100 with the rubric, from what the page gives you. Size: 30 (the profile's filters guarantee the band). Country: the rubric's points for the first country in "{{locations}}" when the company's country is not shown. Segment fit for the {{segment}} segment: NAICS and SIC codes first, name second: 56131, 56132, 5613 and SIC 7361/7363 are recruiting and staffing; 5418 and SIC 7311/7319 are advertising and marketing agencies; 5112, 5415, 5182 and SIC 7371/7372 are software; 4541, 4551 to 4599 and SIC 5961 are retail and e-commerce; 5412, 5411, 5416 and SIC 8721/8111/8742 are accounting, legal and consulting; for the In-house segment any industry that is not a disqualifier is a fit. Clearly the profile's segment 25, plausibly 12, a different segment 0. Growth: 15 when twelve-month headcount growth is 0.10 or more, 8 when founded in the last three years or growth is 0.05 or more, else 0. Stack: 0 unless the name or codes show a system a pack connects to. Write a two-line reason: what earned the points, what is unknown. Skip anything under 35. Create a Target Accounts row for each of the rest with bulk create: Account, Domain, Domain Key, ICP Tier from the band (75+ A, 50 to 74 B, 35 to 49 C), Segment {{segment}}, Source Sourced, Sourcing Profile "{{profile}}", Sourced On today, ICP Score, Score Reason, and Stage: Queued for the top {{daily_cap}} by score, Sourced for the remainder (a person reviews those on the desk). A row refused as a duplicate is skipped and reported. Then update this profile's row: Next Page = {{next_page}} + 1, Last Run today, Found To Date + the rows created. Output: The rows created with score and stage, the rows skipped and why, the profile update. Plain text.
  3. 03Write the run summary for this profile in five short lines: page read, companies returned, rows created, rows queued, top three accounts with scores. No other text. Output: Five lines, plain text.
Target Accounts
The companies worth writing to, each with its reason to write now. Stage moves from Researching to Ready when a strong signal lands, and on through the sequence.
18 cols
Account textDomain textICP Tier selectSegment selectStage selectSignal Summary textResearch agent_outputContacts Found agent_outputLast Signal dateOwner userCRM Link urlCRM agent_outputDomain Key textICP Score numberScore Reason textSource selectSourced On dateSourcing Profile foreign_key
Sourcing Profiles
One saved search per kind of company you chase. The Account Sourcer runs every Active profile each morning, one page further than yesterday, so it never re-fetches a page it has already read.
14 cols
Profile textSegment selectDefault Tier selectKeywords textLocations textEmployee Ranges textPersonas textDaily Cap numberNext Page numberStatus selectLast Run dateFound To Date numberNotes textLast Run Summary text
Signals
One row per reason to write, found by the scout or added by hand. A strong signal moves its account to Ready.
9 cols
Signal textAccount foreign_keyKind selectStrength selectSource textURL urlDetail textSeen dateStatus select
Contacts
The people at each account, found by persona and verified before anyone writes to them.
9 cols
Name textAccount foreign_keyTitle textEmail emailVerified selectLinkedIn urlPersona selectStatus selectDrafting agent_output
Sequences
The three-step sequences by persona. The drafter writes each touch from the sequence's playbook and the account's signal, never from a template alone.
6 cols
Sequence textPersona selectSteps numberChannel Mix textPlaybook textActive boolean
Touches
Every drafted message, one row per step. Approving a touch sends it from your own inbox; nothing leaves the desk without that click.
12 cols
Touch textContact foreign_keySequence foreign_keyStep numberChannel selectSubject textBody textStatus selectDue dateSent At dateApproved By userSend Log agent_output
Replies
Every reply to a sent touch, classified with a suggested next step. Nothing here is answered by the desk; the person decides.
8 cols
Reply textTouch foreign_keyContact foreign_keyClassification selectSummary textSuggested Next Step textReceived dateStatus select
Meetings
Booked meetings with a one-page brief written from the account, its signals, the touches and the contact's recent posts.
8 cols
Meeting textContact foreign_keyAccount foreign_keyWhen dateKind selectBrief agent_outputOutcome selectNotes text
Do Not Contact
Emails and domains the desk must never write to. Checked by the contact finder before a contact is created.
3 cols
Entry textReason selectAdded date
Outbound Playbook

Who we sell to, the signals that matter, the voice, and the rules every draft follows. Replace the starter text with your own.

4 sources

How the install works

  1. Overview. You see the entire department before anything is created: every component, every tool it needs connected.
  2. Setup questions. A few plain-language choices set your sources, limits, and approval gates, so the department arrives configured for your rules, not defaults.
  3. Conflicts. Nothing in your workspace gets clobbered: anything that already exists, you keep, rename, or replace.
  4. Install. Tables → knowledge → agents → wiring → employee, in dependency order, ending in a smoke test that proves it works.
  5. Done. A working department, not a project plan. Open your new coworker and assign the first task.

Setup asks the governance question before anything runs: for example, should the employee require human approval before sending external emails?

Built on

Connects to

GmailHubspotApolloHunterSerperGoogle CalendarTurtle Notify

Governance defaults

  • Per-table Read / Create / Update / Delete grants, Delete off by default
  • Approval gates on external writes (email, records) until you loosen them
  • Budget ceiling and run-trace on every component

More like this

All packs
Sales Calls and Pipeline Desk
Sales~25 min
The sales manager's pipeline, kept honest. Every call is summarised the moment it is logged: what was said, the objections, the next steps with dates, and the CRM note and follow-up task drafted for a person to approve. Every weekday morning the deals that have gone quiet, or whose close date has passed, get a nudge drafted for the owner and a touch drafted for the customer. Before a meeting, the contact is enriched and a one-page brief is written. When a deal changes stage, the sequence follows: paused at Meeting or Closed, flagged when the deal is Lost. Every Friday the review pack is written: the numbers, the slipped deals with reasons, three decisions. Works with your CRM (HubSpot, Pipedrive, Zoho CRM, Close, Copper, Attio and others), your call notes tool (Gong, Fireflies, Fathom), your sequencer (Salesloft, lemlist, Amplemarket), your enrichment tool (Apollo, Lusha) and your phone tool (Aircall, Dialpad, JustCall). No agent changes a deal amount, closes a deal, moves an owner or sends a customer a word without a person. Comes with Ari, a Sales Ops Coordinator.
Inbound Desk
Sales~20 min
Inbound for a founder or a small GTM team. A lead lands from your website form, a demo request, a booking or a referral; within a minute the desk has enriched the company, scored the fit against your ICP, picked an owner and drafted the first reply with two slots. You read it and send it from your own inbox. Leads that go quiet get a nudge drafted, demos get a one-page brief, and Monday tells you which sources bring the leads that book. Your CRM stays the record. Comes with Ines, an Inbound Coordinator.