Core Integrations
Checked at: loading...
Checking integrations...
TLG Data APIs
External Language Gap data sources — outages here don't affect core sales features
Probing endpoints...
Claude (Anthropic)
Last 7 days via Anthropic Admin API or D1 tracking
-
Total calls
-
Input tokens
-
Output tokens
-
Cache reads (7d)
-
Cost (7d)

DateCallsInput tokensOutput tokensCache read
Loading...
Apollo Credits
Live credit balance from Apollo API
Loading...
Crustdata (LinkedIn cache)
Loading...
Apollo Debug — Test a Match
Live Apollo /people/match call with reveal_phone_number: true. Searches HubSpot first to resolve company, then fires Apollo. Use this to diagnose why a contact isn't returning city, title, or phone after a pipeline run.
Enrich One Contact (Real)
Fires a live Apollo call with reveal_phone_number: true for a single contact. Writes title/city/state to D1 immediately. Apollo delivers the phone to /webhook/apollo asynchronously within a few minutes.
Simulate Apollo Webhook Callback
Runs the exact D1 update logic that POST /webhook/apollo executes when Apollo delivers a phone number. Verifies the write path is working before the overnight run.
Apollo ID Fetch
Resolves Apollo person IDs for contacts that have an email in D1 but no apollo_id yet. Sends email to Apollo /people/match without reveal_phone_number — no phone credits consumed. Run this before Phone Reveal. Writes apollo_id, city, state, and title back to D1.
Pipeline Enrichment Sweep
Headless, pipeline-scoped Apollo enrichment. Reads the live WFB/RO pipeline from HubSpot (newest-touched first) and enqueues the contacts that are missing Apollo data — no apollo_id, or an id with no usable signal that has gone stale. Skips dead leads and contacts attempted within the cooldown, so it never re-spends a credit on an unmatchable contact. Apollo spend is capped at Limit per run. The hourly cron runs this automatically; raise Max pages here to reach deeper into the backlog in one shot.
Apollo Sync
Reads existing Apollo records for contacts that already have an apollo_id but are missing city, state, or title. Uses POST /v1/people/match with full context (id, name, company, domain) — no phone credits consumed. Writes the returned fields to D1 and pushes to HubSpot. Run this after Apollo ID Fetch and after Phone Reveal to backfill any location/title data Apollo has stored. Run multiple times until 0 candidates remain.
Phone Reveal
Submits Apollo phone-reveal requests for enriched contacts that still have no phone in D1. Runs separately from bulk enrich so you can audit exactly which contacts were submitted. Apollo delivers results asynchronously via /webhook/apollo — watch wrangler tail for callbacks. Limit is 500 per run.
Apollo API Usage & Credits
Live credit consumption and rate-limit status from Apollo. Fetches from Apollo's usage stats API.
Bulk Rescore All Contacts
Processes HubSpot contacts in paginated batches. Skips contacts with a manual score override. Run after Apollo enrichment or Phone Reveal to pick up new data. KV cache is invalidated on completion so the pipeline page reflects fresh scores immediately.
Totals
Loading...
ICP Tier Breakdown
Loading...
Top Master List Companies
By fit score, showing contact coverage
CompanyFit ScoreContacts
Loading...
Active Model
Quick Response (Haiku) for real-time features, Script Generation (Sonnet) for bulk work. Changes take effect immediately.
Loading models...
Built-in Snippets
Toggle any combination — they stack into the Claude system prompt
Loading snippets...
Custom Instructions
Add a custom instruction directly to the active system prompt (appended after any active snippets)
User Profiles
Each user has their own profile. Scripts auto-fill from the logged-in user's profile. Admin users cannot be removed.
Loading profiles...
Full Sync
Fetches all HubSpot contacts and upserts lifecycle, lead status, and engagement data into D1. Unchanged records are skipped.
Re-sync All Expansion Accounts
Re-pulls HubSpot for every Expansion account so the new fields take effect across the whole book at once instead of waiting for each account to be opened: customer labeling (lifecyclestage), Products Owned (won-deal line items), cancelled-customer hiding, child-company contacts (empty committees), and admin adoption. Runs in pages (a few accounts per request) and loops until done — leave the tab open while it works.
Email Dedup Cleanup
Removes the historical duplicate sent-email engagements — the pre-fix app copies (no recipient) sitting alongside HubSpot's native connected-inbox copy (real From/To). Deletes ONLY the app copy when a native sibling exists on the same contact (same subject, within 2 min); never an incoming/reply or a sole copy. Dry Run shows the exact plan and deletes nothing. Delete Now needs the crm.objects.emails.delete scope on the worker HubSpot app — grant it, run, then revoke. Bounded by Max Pages (×100 app copies); re-run if the result says "capped".
Deals Sync
Pulls open and recently-modified deals from HubSpot, plus their associations to contacts and companies, into D1. Drives the "Open Deal" chip in the TLG pipeline table so reps know which contacts already have an active deal in motion (and should position as a follow-up to the existing deal owner, not a fresh pitch). Sync All runs pipelines → owners → deals in order. Idempotent — safe to run repeatedly. Cron refreshes every 15 minutes automatically.
Company ID Backfill
Step 1 of the TLG company-first view. Reads HubSpot contact→company associations and writes each contact's company ID into D1 (contacts.hs_company_id). Runs page-by-page — click Start, let it run to completion, then run Company Sync below. Safe to re-run; existing links are never overwritten.
Companies Sync
Step 2. Reads the company IDs written by the backfill and fetches each company object from HubSpot (name, domain, state, headcount) into the hubspot_companies table. Run this after the backfill finishes. Provides canonical company names for the company-first TLG view.
Reconcile Deleted Contacts
Re-verifies our D1 contacts against HubSpot by ID (oldest-checked first) and soft-deletes any HubSpot no longer returns (deleted or archived there). Soft-deleted rows are filtered out app-wide but keep their Apollo enrichment, and un-delete automatically if the contact reappears in HubSpot. Runs nightly via cron (08:30 UTC, ~1,000 contacts/run, cycling through the whole base); use Run to kick it manually. Safe — only the exact IDs checked can be marked, never a bulk wipe.
Detect Board Members
Finds contacts listed under a workforce/development board whose email domain resolves to a different, private employer (via Apollo org enrichment) — i.e. volunteer board members, not board staff. High-confidence private-sector cases are auto-flagged as board members (scored 0, removed from call lists); the ambiguous tail (nonprofits/agencies) is marked suspected and shown with a "Board?" badge for you to confirm via the flag. Run Dry first to preview counts. Re-runnable and idempotent; also runs weekly via cron.
Pull Deal Contacts
Finds contacts on an open deal who aren't in our pipeline yet (so the deal shows as a faceless "Company deal"), pulls them from HubSpot, and auto-runs enrichment (Apollo match → async phone) so they land fully populated and can be worked. Run Dry first to preview. Runs hourly via cron after the deals sync.
TimeUserCategoryActionContactCompany
Loading...
Filter by State
No filter — all contacts will be processed
Full Pipeline Run
Runs the complete enrichment sequence for selected states: Apollo person enrich, org enrich, and score recompute. Contacts come out the other side ready to call.
1
Person Enrich
›
2
Org Enrich
›
3
Rescore
Apollo Person Enrich
Runs Apollo enrichment for each contact — fills phone numbers, email, title, and corrects names. Uses Apollo credits. Freshness: 10 days if phone found, 3 days if no phone.
—
Apollo Org Enrich
Enriches company data — headcount, industry, location, LinkedIn, and website domain for each contact's employer. Uses Apollo credits. Freshness: 7 days.
—
Script Generation
Generates AI call scripts, voicemails, and emails for contacts that don't already have one stored in D1. Uses Anthropic tokens. Freshness: 7 days.
—
Market Research
Pre-generates Claude Haiku market research briefs for every contact that has city/state data. Stored in D1 so Lee sees the research instantly when opening a contact — no live AI call needed. Freshness: 7 days. Contacts in the same city share one Claude call.
—
Target Region
No filter — all states will be analyzed
Select a region and click Run Analysis.
Target Region
No filter — all TLG contacts will be processed
—
TLG contacts in zone
—
Already scripted
—
Need scripts
—
Have phone number
Skip already-scripted contacts Only generate scripts for contacts that don't have one yet. Uncheck to regenerate everyone.
Generate TLG Outreach Scripts
Generates a full outreach packet per contact — call script, no-answer voicemail, and follow-up email — using The Language Gap positioning. Runs through the same AI pipeline as the individual script gen in the TLG Pipeline view.
—
People Import — by Location
Calls BoardsCouncilsFinder/{userId}/{tid}/{lid}/{location}/{radius} and imports the named chairs, directors, and board members for workforce boards near a city/state. Use Dry Run first — it shows the raw COS response shape (cosDebug) when zero contacts parse, so you can verify the envelope without writing any data.
All Boards Import — National
Calls BoardsCouncilsFinder/{userId} with no location filter — returns every workforce board and council in the COS database nationally. Imports chairs, directors, and board members (capped by Limit). Use Dry Run to see total count before committing Apollo credits. Apollo delivers phone/enrichment asynchronously after import.
Step 1 — Paste Contact List
Paste anything: directory listings, email signatures, spreadsheet rows, website copy. Claude Haiku will extract names, titles, companies, emails, and phone numbers.