CRM Data Pulls (Follow Up Boss)
When you ask your agent “who are my hot leads right now?” or “what’s on my plate today?”, you don’t want a guess and you don’t want a 30-second round-trip to Follow Up Boss every time. The CRM Data Pulls tool gives your agent a fast, cached read into your CRM — so the third time you ask in five minutes, the answer is instant, and the FUB API key in your account stops getting spammed.
What it does
Section titled “What it does”Tool #08 ships five typed read-only pulls from your connected Follow Up Boss CRM:
crm_leads_list— search leads by name / email / phone / stage with paging.crm_lead_get— fetch one lead’s full FUB record (stage, source, custom fields, contact info, last activity).crm_lead_activity— pull a lead’s recent FUB events (calls, texts, emails, notes, tasks) with optionalevent_typesfilter.crm_tasks_due— pull tasks due today, tomorrow, this week, or overdue, scoped to the connected FUB user by default.crm_morning_briefing— composite call: today + overdue tasks, top hot leads, and the most recent activity per hot lead — pre-rendered to a markdown summary your agent can drop straight into a chat reply.
These are READS only — to create leads / notes / tasks, log calls / texts, or update stage, your agent uses the existing Follow Up Boss CRM tools (fub_lead_create, fub_note_create, fub_task_create, fub_call_log, fub_text_log, …). See Follow Up Boss CRM for the write-side surface.
How to use it
Section titled “How to use it”The simplest flow is chat — your agent picks the right pull automatically when you ask the right question:
- “Show me my hot leads” →
crm_leads_list(stage='Hot') - “What’s on my plate today?” →
crm_morning_briefing() - “What’s John Doe doing this week?” →
crm_lead_get+crm_lead_activity - “What tasks are overdue?” →
crm_tasks_due(timeframe='overdue')
You can also drive every pull manually from the dashboard at Real Estate Tools → CRM Data Pulls — pick a pull type, fill in the inputs, click Pull Now. The page also shows your rolling pull history with cache-hit/miss badges, so you can see exactly what your agent has been pulling on your behalf.
Caching
Section titled “Caching”Every pull is keyed on (user_id, agent_id, pull_type, canonical_inputs_hash) and stored for 5 minutes by default — lead_activity and tasks_due use a tighter 3-minute TTL because those dimensions change more often.
- Cache hit: the pull comes back in <50ms from Postgres. Zero FUB calls. The dashboard shows a green check.
- Cache miss / expired: the pull goes live to FUB, the result is written back into the cache for the next read. The dashboard shows a refresh arrow.
If you’ve just made changes in FUB and need a fresh read, pass force_refresh=true (typed-tool argument) or click Force refresh in the dashboard. That bypasses the cache and burns one FUB API call from your account’s per-account rate limit.
You can also clear the entire cache for an agent (or just one pull-type) from the dashboard’s Clear cache button — useful after a bulk import or reassignment in FUB to avoid serving stale data.
The morning briefing
Section titled “The morning briefing”crm_morning_briefing is a composite — it bundles four sub-pulls into one round-trip:
- Tasks due today (in your agent’s timezone)
- Overdue tasks
- Top N hot leads (default 5)
- Recent activity for each of the top 3 hot leads
The result includes a pre-rendered summary_markdown field your agent can drop straight into a chat message:
## Morning Briefing_Timezone: America/New_York_
### Tasks due today (3)- Follow up with Maria [Call] — lead #4421- Send comp report to Dani [Email] — lead #4502- 2pm tour with Smiths [Showing] — lead #4477
### Overdue tasks (1)- Old call back to Jake [Call] — lead #4319 (was due 2026-04-25)
### Hot leads (5)- **Maria Lopez** (#4421) — last activity 2026-04-28 - 3 recent event(s): Call, Note, Email- **Dani Park** (#4502) — last activity 2026-04-29 ...Partial-success semantics
Section titled “Partial-success semantics”If one sub-pull fails (FUB rate limit, transient hiccup, network blip), the briefing does not fail the whole call — the failed section renders an _(Section unavailable; please retry.)_ placeholder, the response carries partial=true + a degraded list naming what failed, and the rest of the briefing is still useful. You can hit the dashboard’s Force refresh to retry just that section.
v1 limitations
Section titled “v1 limitations”A few things deliberately deferred:
- FUB only. kvCORE, Sierra Interactive, Compass, and Lofty support is on the v2 roadmap; v1 hard-codes Follow Up Boss as the CRM.
- Time-based cache invalidation only. A FUB-webhook-driven invalidation path is on the v2 roadmap — for now,
force_refresh=trueis your bypass. - Single connected user for
tasks_due. Defaults to the connected FUB user (your account). v2 may add team-agent multi-user pulls for shared accounts. - Read-only. To create leads / notes / tasks / log calls, use the existing Follow Up Boss CRM tools.
Privacy
Section titled “Privacy”Every pull is scoped per (user_id, agent_id) — your cache rows are never visible to another user, even if their canonical-input hash collides with yours. Your encrypted FUB API key still lives in Tool #05’s per-user storage; this tool only reads through fub_integration and never sees the plaintext.
Related
Section titled “Related”- Follow Up Boss CRM — connect your account and use the write-side
fub_*tools (lead/note/task create, call/text log). - Lead auto-response — auto-draft a first response to new leads pulled from FUB.