Every lead sorted by score. Click to open. Scroll to see all.
Action Queue
0 leads
All leads with pending sequence steps and scheduled actions, in priority order.
No leads loaded
Outreach PipelineClick any card to open the full lead page. Purple border = replied, sequence paused.
overduetodayupcoming
All Leads
Company
City
Status
Primary Contact
Phone
Email
Score
Active Clients
Company
City
Primary Contact
Phone
Email
Score
Leads Map
Companies (leads) by city — one marker per city; the number is how many are there. Click a marker to see who. "Locate remaining" geocodes any city still missing a marker.
Candidates Map
Candidates by city — one marker per city; the number is the candidate count. Same geocoder + cache as leads.
Companies + Candidates
Companies Candidates. A blue and a red dot close together = a candidate near a client (zoom in to judge distance). Faded dots are city-only (no street/ZIP) in a large metro — approximate. Click a dot for names.
Jobs / Open Positions
Client
Position
Status
Salary
Fee %
Contract Value
Candidate
Total contract value
—
← Back
Company Information
Contacts
Jobs / Positions
Addresses
Main Address
Secondary Address
Summary & Location Notes
Record Activity
Created
—
Modified
—
Last Activity
—
Last Emailed
—
Upcoming Tasks
Pending scheduled actions and sequence steps for this lead. Complete or reschedule each as the work is done. Completed actions move to the Activity Log.
Emails
Recent Gmail threads with this lead's contacts. The Status column shows whether the recipient opened the email (requires the Email Open Tracking pixel from API Keys). Requires Gmail OAuth with gmail.readonly scope.
Click Refresh to load Gmail history.
Activity Log & Notes
● Listening…Entries are read by Claude when rescoring this lead
Documents
Drop files here or click to browse
PDF, Word, Excel, CSV, JSON, images · Max 25MB per file
Schedule an Action
Schedule a call, text, email, task, or meeting. Appears in Upcoming Tasks, the Calendar, and the To-Dos queue.
Meetings push to your Google Calendar automatically when Gmail is connected with calendar.events scope.
Priority Score
--
Add notes and click Rescore for a Claude evaluation.
Drag a submission card between stages. Candidates with no job yet sit in New.
← Back
Contact
Addresses
Main Address
Secondary Address
Emails
Recent Gmail threads with this candidate's email addresses. Requires Gmail OAuth with gmail.readonly scope.
Click Refresh to load Gmail history.
Activity Log & Notes
● Listening…
Documents
Drop files here or click to browse
Résumé, PDF, Word, images · Max 25MB per file
Jobs Associated
Each submission carries its own pipeline stage. The client is the job's company.
Schedule an Action
Schedule a call, text, email, task, or meeting. Pending items show in Upcoming below.
Select Sample Leads
Notes and activity log from each lead's file are automatically included in the email prompt for personalization.
Generation Mode
Template to use
Auto picks E1 for cold/new, E4 for NRN, E5 for pipeline, E3 for warm/engaged, and so on.
AI generation is powered by Claude server-side — no API key needed here.
All Selected Emails
Every checked lead appears here. Uncheck removes from this list and from any generated draft below. Re-check to add back.
Generated Emails — Review
Connect Gmail to enable sending
Send Queue
Company
Recipient
Status
Subject
Actions
Sent Emails
Company
Email
Subject
Sent At
No leads loaded yet
Import leads to see what your CRM can automate today.
Today's Automations
Each task below is a daily action your CRM can either run for you, run with one click, or hand off to a manual workflow. Status of each automation service is shown at top.
Service Status
Click any service to configure it on the API Keys tab.
Emails Ready to Generate & Queue
Each lead's next sequence step is an email. Click Generate & Queue to draft with your templates and send to the Send tab.
Texts to Send via Google Voice
No SMS API integration yet. Click Open in Google Voice to copy the message and send manually. Phase 3 will add Twilio-style automation.
Calls Scheduled for Today
Calls are manual touchpoints. Click any name to open the lead page, review notes, and mark the step done after the call.
Automatic Behaviors Currently Running
✓
Sequence step advancement
Marking a step done on a lead page advances the sequence and logs a note automatically
Active
✓
Drag-to-advance in Sequence Tracker
Dropping a lead chip into a different step updates seqDone and logs the move
Active
✓
Status changes via Pipeline drag
Dragging a card between Pipeline columns updates status and logs the move as a note
Active
✓
Base priority scoring
Every lead gets a tier-based score automatically; AI rescoring is one click when API key is set
Active
⏳
Reply detection & sequence pause
Phase 3 — Gmail webhook will set replied=true and pause the sequence automatically
Phase 3
⏳
Day-based scheduled sending
Phase 3 — When hosted, sequences will auto-send emails on their scheduled day
Phase 3
⏳
Email open tracking
Phase 3 — Tracking pixel will mark opened=true and re-score automatically
Phase 3
API Keys & Credentials
All credentials live in your browser session. Anthropic key is stored in sessionStorage and clears when you close the browser. Gmail token is held in memory only and clears on page refresh.
Claude (Anthropic)
MANAGED
Powers AI email generation and Claude scoring (leads + candidates). The API key now lives server-side in the Supabase Edge Function proxy — there's nothing to paste here, and no key is ever stored in your browser.
Google Account
UNKNOWN
One sign-in grants Gmail send + read, Calendar, and Drive access. Powers email sending, the lead-page Emails history, Reply Detection, Calendar push, and the Drive sync that the background worker shares. Tokens refresh automatically — no more pasting tokens every hour.
First sign-in shows a Google consent screen for the four scopes. After that the connection is restored silently on every load.
Worker Activity
FEED
Actions taken by the Apps Script background worker (scheduled sends, sequence advances, reply pauses) while the CRM was closed. Read-only. Refreshes every 5 minutes while this app is open.
Email Signature
UNKNOWN
Build your signature here just like in Mail. Use the toolbar to add formatting, links, and a photo or logo. The signature is appended to every email sent through the Send queue. Inline images are embedded as base64 — small images (under 200 KB) are best.
Tip: If your Gmail signature already contains an image hosted on Google's servers, paste the raw HTML into the source view. For local images (laptop, phone), use the Insert Image button.
Signature size: 0 KB
Google Voice (Texts)
MANUAL
Google Voice has no public API. Texts are sent manually through voice.google.com ↗. The CRM generates the message body for you — copy and paste from the lead page or the Send Text button.
Reply Detection & Sequence Pause
UNKNOWN
Polls Gmail every 10 minutes for replies from any lead email. When a reply is found, the lead's replied flag is set, the sequence pauses, and a note is logged. Requires the Gmail OAuth token above with the gmail.readonly scope. If you only authorized gmail.send, re-do the OAuth flow checking both scopes.
Status: Reply detection runs automatically whenever Gmail is connected. You can also trigger a manual check now.
Day-Based Scheduled Sending
UNKNOWN
Auto-sends queued emails whose Send On date is today or earlier. Works without a backend — runs in the browser while the app is open. Items in the Send queue can be assigned a Send On date via the Edit dialog or scheduled directly from a lead's Schedule an Action panel. Requires Gmail to be connected.
How to use: Schedule an email step on a lead, or set a Send On date when reviewing a generated email. When the time arrives and this app is open, the email goes out automatically and the sequence advances. Manual sends still work the same way.
Email Open Tracking
NOT SET
Embeds a 1×1 tracking pixel in every outbound email. When the recipient opens the email, the pixel hits your tracker endpoint, which marks opened=true on the matching lead and re-runs scoring. Requires a hosted endpoint URL — any service that returns a 1×1 image and POSTs the lead id back to a webhook will work.
Endpoint requirements: A URL like https://your-tracker.example.com/pixel?lead=<id>&msg=<hash> that (a) returns a 1×1 transparent gif, (b) logs the hit somewhere readable, and (c) lets you fetch open events. Without one, embed only — opens won't be recorded.
Polls your endpoint's /opens?since=<timestamp> route if available.
Email Style
PLAIN
Wraps your outbound copy in a branded HTML layout at send time. Your AI-written copy is never changed — this is presentation only. Plain sends exactly as before. PrimeFactor Branded adds a lightly-branded, deliverability-safe shell (small wordmark, accent rule, unsubscribe link + header). Cold-safe by design — research and the 20 candidate designs live in dev/html-emails/.
Header logo (optional): a hosted https image URL. Leave blank to use a styled text wordmark — no image dependency, best deliverability.
Backup & Restore Data
LOCAL ONLY
Export every byte of CRM state — leads, contacts, notes, scheduled actions, templates, signature, and exclusion list — to a single JSON file. Restore the file to roll back to a previous state or move the CRM to a new browser. Run a backup before any upgrade. PDFs (in IndexedDB) survive HTML upgrades automatically but are exported separately by the Export Documents button.
Where files go: Downloads via your browser. Save them somewhere you'll find later — Google Drive, Desktop, an external drive. There is no cloud sync.
Records which PDFs are attached to which leads (the PDFs themselves live in IndexedDB and persist automatically).
Scans all leads + contacts for: empty names, fragment contacts (no name, just email/phone), duplicate company names, and outreach-readiness gaps. Downloads a report. No data is changed.
V18.7.0: groups leads with the same (normalized) company name or primary email, keeps the one with the most information, backfills its empty fields and moves all contacts/notes/documents/jobs over, then removes the duplicate. Preview + confirm before anything changes.
Month
EmailTextCallTask
Shows the actions you've manually scheduled. Tick Show sequence steps to also overlay the auto-projected next-due step for every active outreach sequence. Click any item to open the lead.
Score Leads
Use the buttons below to populate priority scores across your lead set so the score-sort columns work everywhere. AI scoring uses the Anthropic API key from your API Keys tab and now runs up to 5 leads at once with automatic retry, so a full rescore is roughly 5x faster than before. Base scoring uses tier, replies, and opens only — no API needed.
AI Score Changed Leads only rescores leads that are new or have changed since their last score — ideal for a quick weekly run. The first time you use it, every lead counts as "changed" since none have a change record yet.
All Leads by Score
Score
Company
City
Status
Tier
Reason
Email & Text Templates
View, edit, add, or delete templates. Changes save to your browser permanently.
Sequence Tracker
Each column is a sequence step. Leads automatically move forward when a step is marked done on their lead page.
Upload leads to see the sequence tracker.
● Listening…
Schedule send
:
Add Lead
New Job / Position
Active clients listed first. Set a lead's status to "Active Client" to surface it here.
Add Candidate
Attach to Job
Open jobs listed first. The client is the job's company.
Text Template
Edit if needed, then copy and send via Google Voice. Mark the step complete on the lead page once sent.
Reschedule
Pick a new date and time. The action updates on the Calendar, the lead page, and the To-Dos queue. If this is a meeting linked to Google Calendar, the event will be updated there too.
Compose Email
:
Schedule an Action
Schedule a call, text, email, task, or meeting for a lead. Appears on the Calendar, in To-Dos, and in the lead's Upcoming Tasks.
Meetings push to your Google Calendar automatically when Gmail is connected with calendar.events scope.
Delete Lead?
will be permanently removed along with all contacts, notes, scheduled actions, and uploaded documents.
The lead is also added to the persistent exclusion list, which means it will NOT be re-imported next time you upload your Zoho CSV. Clear the exclusion list from the Leads page footer if you change your mind.
This cannot be undone. If you want to keep records, export your data first via the Backup button on the API Keys page.
Find & Merge Duplicates
Each group keeps the record with the most information and folds the duplicates into it: empty fields are backfilled, and all contacts, notes, documents, jobs and submissions are moved over — nothing on the kept record is overwritten and nothing is dropped. Untick any group you don't want merged. A note is logged on each kept record. Leads and candidates are matched by name (and a shared email only when the names also agree, so different companies aren't wrongly combined).
Settings
Admin — User ManagementMASTER
Only allowlisted Google accounts can sign in. The master admin can add, edit, or remove users. Synced to Drive across all your devices.
Set each person's display name and pill color — these appear on every activity-log entry they author. Add an email to grant sign-in, or leave it blank for a name-only label (e.g. someone whose notes are tagged but who doesn't log in).
Custom Fields — Leads
Group your own fields into named cards. Each card appears on every lead's page with
editable values, and syncs with the rest of your data. Create and manage cards here.
Display — Theme
Optional modern look: a left sidebar with frosted-glass panels over a soft orange backdrop. Applies instantly; everything else stays the same.
PrimeFactor Pros
Welcome back
Sign in to your PrimeFactor recruiting workspace.
Authorized users only. By continuing you agree to PrimeFactor's Terms and Privacy Policy.