Research workflow

From a goal to
reviewable findings.

A universal autonomous worker plans the investigation, delegates source work, keeps evidence in memory and pauses for governance where configured. Research, contact discovery and reporting are workflows—not a separate research engine.

Worker workflow

Plan, delegate, verify, remember

1
Plan

A worker turns the request into a source-aware plan, then delegates discovery across the tools and services configured by the operator.

2
Discover

search_business_directory, search_social and search_news gather public company, people and press context when those connectors are enabled.

3
Parse

parse_corporate_site extracts structured company, team and contact context from fetched pages using JSON-LD, Schema.org and page content.

4
Extract

extract_contacts identifies emails, phones, social profiles and person/company entities, retaining source context for later review.

5
Enrich

enrich_company and enrich_person add useful industry, technology, role and location context when matching public evidence is available.

6
Verify

verify_email and verify_phone apply syntax, DNS and normalization checks. Optional SMTP probing depends on network access and operator configuration.

7
Review

suggest_emails can propose domain patterns for a worker or human to review; confidence and missing evidence stay explicit rather than guessed.

8
Persist

save_contacts stores approved findings in SQLite or PostgreSQL with verification receipts, subject to the configured policy and review gates.

9
Report

The worker summarizes evidence, remembers durable context and can export CSV, vCard, JSON or reports, or hand off to a configured CRM.

Configured sources

Choose the sources your worker can use

Business directories

Configured directory connectors such as 2GIS, Google Maps, Yandex Maps or Yellow Pages can be queried in parallel; review overlapping results before export.

Social platforms

Configured Twitter/X, Telegram or site-restricted LinkedIn search can add public context where access permits. Findings retain platform and URL provenance for review.

News & press

A configured news connector such as Serper or Google News RSS can provide press context. Entity extraction is heuristic, so workers keep source links and uncertainty visible.

Verification and review

Evidence gates before side effects

Workers can apply syntax and DNS checks, flag disposable or role-based addresses and—when network access is configured—probe SMTP. Receipts and confidence keep uncertainty visible; governance can require human approval before saving or syncing.

Syntax

RFC 5322 subset: single @, local ≤64 chars, domain ≤253 chars, no leading/trailing/consecutive dots.

MX lookup

DNS-over-HTTPS via Google then Cloudflare. Falls back to A/AAAA per RFC 5321 §5.1. Null MX (RFC 7505) detected and dropped.

Disposable

Configured lists of known disposable providers can flag domains such as mailinator, yopmail, guerrillamail or tempmail; subdomain matching may be included.

Role-based

Role and department patterns such as admin, info, support, sales, noreply, hr or billing can be flagged for review.

SMTP probe

Optional port 25 handshake: banner → HELO → MAIL FROM → RCPT TO. Accepts 250/251, rejects 5xx, inconclusive 4xx (greylisting). Never sends message content.

Context enrichment

Add context when evidence supports it

enrich_company can inspect HTML signatures for CMS, JS frameworks, analytics, payments and hosting. enrich_person can compare public web evidence and configured social sources; workers preserve gaps instead of filling them with guesses.

CMS

WordPress, Shopify, Squarespace, Wix, Webflow, Drupal, Joomla, Magento

JS frameworks

Next.js, Nuxt.js, React, Vue.js, Angular, Svelte, Gatsby

Analytics

Google Analytics, Segment, Mixpanel, Amplitude, Hotjar, Matomo, Yandex Metrika

Payments

Stripe, PayPal

Hosting & marketing

Vercel, Netlify, CloudFront, S3, HubSpot, Klaviyo, Mailchimp, Salesforce, Sentry

Quality tracking

Append-only verification receipts

Verification checks can write durable receipts to a JSONL ledger. Receipts are keyed by (kind, value), so a PASS on one check does not silence a FAIL on another. Reviewers and governance policies can use the resulting Verified, Partial or Unverified status before any external action.

Verified

SMTP accepted the mailbox

Partial

Syntax + MX check passed

Unverified

No passing verification receipts

Repeatable workflows

Schedule, compare, notify

When the operator enables scheduling, --repeat can rerun a workflow and compare memory or stored findings. Notifications through a configured webhook, Telegram or email channel remain optional and policy-controlled.

# Run every 24 hours, alert on new contacts
fathom run --repeat 86400 \
  "Find VP Engineering at Series B startups in SF"

# Watch mode output:
# ── Findings changed since the previous run ──
# Reviewable contacts, evidence and gaps are written
# according to the configured output and approval policy.

Handoff and export

Prepare findings for the next step

Export contacts and reports as CSV, vCard, JSON or Excel. A worker can hand findings to amoCRM, Bitrix24, HubSpot or another configured integration after review and any required approval; integrations are not enabled by default.

CSV

RFC 4180, 10 columns, semicolon-separated tags & socials

vCard 3.0

RFC 2426, N/FN/ORG/TITLE/EMAIL/TEL/X-SOCIALPROFILE

JSON

Pretty-printed, all fields including social_profiles & notes

Excel

XLSX via rust_xlsxwriter, "Contacts" worksheet

Run a research workflow

Request access to a provisioned server, configure the worker's tools and ask it to produce reviewable findings.