What you'll be able to do after this guide: create the custom attributes your prospecting agents need, choose the right field type for each, and write field descriptions that teach the agent how to use them.
A scheduled agent remembers nothing between runs. Everything it knows about a prospect, and everything the next agent needs, lives in CRM fields. If a field is vague, two agents will use it in two different ways, and the system will quietly break. Your schema (the set of fields, their types and their allowed values) is the cheapest reliability you can buy.
Here's what a fully researched company record looks like at Fernhill. The field names are examples; use names that suit your business.
| Field (example name) | Type | Example value |
|---|---|---|
| prospect_status | Status | Review |
| research_date | Date | 12 May |
| prospect_type | Single-select | Direct |
| fit_score_segment_a | Rating (1 to 5) | 4 |
| current_tool | Multi-select | Competitor B |
| buying_signal | Text | Job advert for a "system administrator" for Competitor B, posted last month (company careers page) |
| value_hypothesis | Text | Two sentences on why Fernhill helps this company specifically |
| annual_revenue_evidenced | Currency | 1,200,000 |
| employee_count | Number | 38 |
And the main contact on the linked person record:
| Field | Type | Example value |
|---|---|---|
| persona | Single-select | P1 Founder or owner |
| job_title | Text | Managing Director |
| URL | The person's profile URL | |
| email_addresses | Only if confirmed, never guessed |
Every value has one meaning, and each one was written by one agent.
prospect_status (status type). The lifecycle of a prospect. We use: Researching, Review, Contacted, Customer, Skipped, Rejected, Churned. Two values do most of the work. Researching is the default while research is underway. Review means "fully researched and cleared for outreach", and it's the signal that hands a record to the outreach agents. Customer, Rejected and Churned are set by people only.
research_date (date). Set only when research has genuinely finished. This field does two jobs: it tells sourcing agents "already researched, skip it", and it tells the backfill agent "this one still needs work" when it's blank. If an agent sets it on a half-finished record, that record is hidden from retries forever.
prospect_type (single-select). Which route a prospect takes, for example Direct, Self-serve, Partner, or Unknown. Unknown means "needs a person to look", so no outreach happens.
Fit scores (rating, 1 to 5). One score field per segment. Separate fields let a company that fits two segments carry both scores honestly. See Build an ICP Fit Score (ICP stands for ideal customer profile).
current_tool (multi-select). What the prospect uses today, if that matters to your pitch. Multi-select, because companies often run two tools. Include an "Other (see note)" option. Without it, an agent that finds a tool you didn't list has nowhere to record it, and the finding is lost.
buying_signal (text). The single most specific reason to contact this company now, with its source written inline.
value_hypothesis (text). Why your product helps this company, in two or three sentences. Write it only for strong fits, never as a placeholder, so "field is filled in" always means "this was checked".
Number fields for thresholds. If a rule says "at least 5 employees", store employees as a number. A banded field like "11 to 50" can't answer that question.
| Use this type | For | Avoid |
|---|---|---|
| Status | An ordered lifecycle | A free-text status, which agents will spell differently |
| Single-select | One answer from a fixed list | Using it for things that can have two answers |
| Multi-select | Several answers from a list | Leaving out an "Other (see note)" option |
| Rating | Scores | Text scores like "strong" that can't be sorted or filtered |
| Date | Anything time-based, especially clocks | Reusing one date field for two meanings |
| Text | Evidence and explanations | Category labels, which drift ("H&S" vs "Health and Safety") |
If you must use a text field for categories, tell agents to search existing values first and reuse the exact wording, otherwise counting by category stops working.
Attio lets you write a description for every attribute, and agents read those descriptions through the connector. Use them. For a fit score field, paste the full 1 to 5 rubric into the description. For a date field, say who writes it and when.
We learned this when one score field had an empty description while its sister fields carried their rubrics. The agent had to hunt for the rubric in a document, and for a while it was told the field didn't exist at all. Scores went unwritten for days.
Put these in every agent's instructions:
Never create attributes, select options or lists. If an option is missing, record the finding in a note and flag it in the run summary.
Never delete or merge records.
Never change outcome statuses (Customer, Rejected, Churned) or deal outcomes.
Don't set fields this agent doesn't own. (Design the Outreach Pipeline explains field ownership.)
Create the fields above on your Company and Person objects.
Write a description for each one that says what it means, who writes it and when.
Run the health-check prompt from Connect Attio to Claude and confirm Claude can see every field and description.
Next: Notes, Tasks and Hand-offs.