Automated Lead Pipeline — Daily SOP

Purpose: Pull targeted HNI/accredited prospects from LinkedIn Sales Navigator, extract with PhantomBuster, enrich & score with paid LLMs (Gemini/ChatGPT), and import approved leads into Zoho CRM and Zoho Campaigns. No other tools allowed.

Scope & Constraints

  • Allowed tools only: LinkedIn (Sales Navigator), PhantomBuster, Gemini/ChatGPT, Zoho (CRM, Campaigns, Docs). Calendly link for meetings.
  • No external enrichment/verification: No Apollo, Clearbit, ZoomInfo, Hunter, NeverBounce, Google Sheets, etc.
  • Data storage: Zoho Docs (canonical CSVs) & Zoho CRM (system of record).

Prerequisites

  1. LinkedIn Sales Navigator access + the LinkedIn account(s) used to send requests.
  2. PhantomBuster with access to:
    • Sales Navigator Search Export
    • LinkedIn Profile Scraper
    • Network Booster
  3. Zoho CRM (create Leads/Contacts), Zoho Campaigns, and Zoho Docs/Drive.
  4. Paid LLM access (Gemini and/or ChatGPT).
  5. Calendly link (existing): https://calendly.com/nick-levenstein/30min
  6. Shared Zoho Docs folder: Leads/PhantomRuns/<YYYY-MM-DD>/

Daily Run — Checklist (45–90 min)

  1. Morning Prep (10 min)
    1. Open Sales Navigator → Saved search: “Accredited Investors — Primary List”.
      Filters (keep unchanged unless Nick approves):
      • Titles: Founder, Managing Partner, CIO, Family Office, Investor
      • Company type: Family Office, Hedge Fund, Private Equity
      • Geography: US, UK, Singapore, Hong Kong, Switzerland, Europe
      • Keywords: AUM, family office, invests, LP
    2. Copy the Sales Navigator search URL (not individual profiles).
  2. PhantomBuster Export → Profile Scrape (20–40 min)
    1. Create a new run of Sales Navigator Search Export. Input: the saved search URL.
    2. Settings:
      • Export limit: up to 500; typical daily: 50–200
      • Rate: Phantom defaults; prefer 1 large run/day or smaller 50-profile batches.
      • Output filename: Leads-YYYY-MM-DD.csv
    3. Run LinkedIn Profile Scraper with the exported profile URLs.
      Fields to extract: profile_url, full_name, first_name, last_name, headline, current_company, location, about_snippet, last_activity, public_positions
    4. Download the profile CSV as Profiles-YYYY-MM-DD.csv and upload to Zoho Docs → Leads/PhantomRuns/<YYYY-MM-DD>/
  3. LLM Enrichment & Scoring (30–60 min)
    1. For each row in Profiles-YYYY-MM-DD.csv, feed: headline, about_snippet, current_company, public_positions, location into Gemini/ChatGPT.
    2. Use this exact prompt (batch up to 20 profiles if supported):
    You are an analyst. Here is a LinkedIn profile (public fields only):
    
    Headline: {headline}
    About / Snippet: {about_snippet}
    Company: {current_company}
    Positions: {public_positions}
    Location: {location}
    
    Based only on this public info, respond in strict JSON with fields:
    - prob_accredited_score: integer 0-100 (higher => likely HNI / accredited investor). Base this on title signals (Founder, Managing Partner, Family Office), company type indicators (family office, hedge fund, PE), and entrepreneurship/exit signals.
    - tags: array of short tags from [family-office, hedge-fund, founder, angel, vc, wealth-manager, recruiter, consultant, other]
    - personal_line: one short personalization sentence (max 12 words) referencing something visible in the headline/about.
    - suggested_connection_message: one short non-salesy connection message (max 220 characters) suitable for a LinkedIn connection request.
    - suggested_followup_message: one short follow-up DM (2 sentences max) for after connection.
          
    1. Save JSON outputs to Enriched-YYYY-MM-DD.jsonl (one JSON per line) in the same Zoho Docs folder.
    2. Convert to CSV (inside the allowed tools; e.g., paste JSON into ChatGPT and ask for CSV with headers below; download and store as Enriched-YYYY-MM-DD.csv):
    profile_urlfull_namefirst_namelast_name headlinecurrent_companylocationabout_snippet public_positionsprob_accredited_scoretags personal_linesuggested_connection_messagesuggested_followup_message
    Use these exact headers for smooth Zoho import.
  4. Approval & Thresholding (5–10 min)
    • Approve for outreach: prob_accredited_score ≥ 65 and not tagged recruiter or consultant.
    • Borderline review: scores 55–64 with tags family-office, hedge-fund, or founder → manual discretion.
    • Exclude: recruiter, consultant, or missing senior signals.
  5. Zoho CRM Import (Leads) (10–15 min)
    1. Prepare Zoho-Import-YYYY-MM-DD.csv with only approved rows and these mappings:
      CSV ColumnZoho Lead FieldNotes
      first_nameFirst Name
      last_nameLast NameRequired in Zoho
      full_nameLead Name (if applicable)Optional
      current_companyCompany
      headlineTitleOr parse from headline
      locationCity / CountryMap as available
      profile_urlLinkedInCustom field: URL
      about_snippetDescriptionTrim to Zoho limits
      public_positionsOther DetailsOptional
      prob_accredited_scoreLead ScoreNumeric 0–100
      tagsTagsComma-separated
      personal_linePersonalizationCustom field (Text)
    2. Zoho CRM → Leads → Import → Map fields as above. Enable de-duplication on LinkedIn URL + Full Name + Company.
    3. Post-import, create a view filter: Created Today AND Lead Score ≥ 65.
  6. Zoho Campaigns List (Optional, 5–10 min)
    1. Create/maintain list: Prospects—HNI Outreach.
    2. Add only those who explicitly consent or who opt-in via form. For pure LinkedIn outreach, keep messaging on-platform.
  7. Outreach (LinkedIn) (10–20 min)
    1. Use PhantomBuster Network Booster or manual sending (respect daily limits). Personalize with personal_line.
    2. Connection message: Use the profile’s suggested_connection_message (≤ 220 chars).
    3. After acceptance, send the profile’s suggested_followup_message. Include Calendly if appropriate:
      https://calendly.com/nick-levenstein/30min

Governance & Audit

  • Canonical storage: All daily files live in Zoho Docs → Leads/PhantomRuns/<YYYY-MM-DD>/:
    • Leads-YYYY-MM-DD.csv
    • Profiles-YYYY-MM-DD.csv
    • Enriched-YYYY-MM-DD.jsonl
    • Enriched-YYYY-MM-DD.csv
    • Zoho-Import-YYYY-MM-DD.csv
  • Run Log (append daily in a Zoho Doc): date, SN URL used, export count, #approved, #imported, #connections sent, acceptance %, booked calls.
  • KPIs (weekly): Acceptance rate (target ≥ 25%), Reply rate (≥ 10%), Booked call rate (≥ 3%), CR to Opportunity (team-defined).

Platform & Compliance Notes

  • Respect LinkedIn limits: Keep daily connection volume conservative to avoid restrictions. Prefer quality over quantity.
  • Public data only: Use only the fields exported via Phantoms from public profiles.
  • Consent: Do not mass-email scraped profiles via Zoho Campaigns unless they’ve opted in. Keep first contact on LinkedIn.
  • Data retention: Retain raw exports for audit; remove disqualified profiles from CRM views; honor delete requests promptly.

Messaging Templates (Fallbacks)

Connection (≤220 chars)

Hi {FirstName} — noticed your work with {Signal}. We manage AI-assisted derivatives strategies for HNIs/family offices. Happy to swap notes; if useful, we can schedule a quick intro.

Follow-up (after accept)

Thanks for connecting, {FirstName}. We run AI-driven options overlays for BTC with conservative risk controls. If it’s relevant, here’s my calendar: https://calendly.com/nick-levenstein/30min — otherwise glad to keep in touch.

QA Before Import

  • Spot-check 10 profiles: title seniority, company type, obvious mis-tags.
  • Verify prob_accredited_score rationale matches title/company signals.
  • Ensure names split correctly (no ALL CAPS; fix known parsing glitches).
  • Remove recruiters/consultants unless explicitly relevant.

Troubleshooting

Phantom blocked / low results
  • Reduce batch size to 50; add delays; confirm LinkedIn session cookie is fresh.
  • Run at consistent local time; avoid concurrent sessions.
LLM JSON formatting issues
  • Re-prompt: “Return strict JSON only, no prose, one object per profile.”
  • If batching, separate objects with newlines for .jsonl.
Zoho import rejects rows
  • Ensure Last Name present; shorten long fields; confirm custom fields exist (LinkedIn URL, Personalization).
  • Enable de-duplication on LinkedIn URL + Full Name + Company.

Weekly Review (15–30 min, Fridays)

  • Update the saved SN search only with Nick’s approval.
  • Tune thresholds if acceptance or call rates drift < targets.
  • Document any filter changes at top of this SOP (changelog).

Last updated: 22 Sep 2025 (UTC+8)

Lead Scraping SOP

How we turn permit/project data into verified contacts and launch outreach via Zoho.

1) Prerequisites

  • Access to permit/project source: properties-scrapper.levenstein.net/admin
  • AI tools: ChatGPT, Gemini, Grok (same prompt set)
  • Zoho CRM & Zoho Campaigns access
  • PhantomBuster account (LinkedIn People Search)
  • Focus cities (initial): Chicago (CHI), New York (NYC), San Francisco (SF), Los Angeles (LA)

2) Process Overview

  1. Pull permits/projects → extract Architects, Contractors, Developers (company → human contacts).
  2. Enrich with AI (names, emails, phones, titles, socials) + write intro letter draft.
  3. Consolidate to a single CSV/XLSX matching the Zoho CRM data model; QA for dupes/invalids.
  4. Import to Zoho CRM list “Potential Nailed It Clients”.
  5. Send initial campaign via Zoho Campaigns; monitor bounces/invalids.
  6. Broaden via PhantomBuster (city + keyword filters); reconcile into master list.
  7. Add LinkedIn profile URLs to each contact (AI assist).
  8. After 7 days, start phone follow-ups for warm leads.

3) Step 1 — Extract source data

  1. Download latest cleaned permits/projects (example): cleaned_permits…xlsx.
  2. Identify targets by role: Architects, Contractors, Developers/Owners.
  3. Filter to focus cities (CHI/NYC/SF/LA). Keep others in a “bonus” sheet.

4) Step 2 — Enrich with AI

Use identical prompts in ChatGPT, Gemini, and Grok to replace company entries with verified human contacts.

AI Prompt (copy & use as-is)
You are enriching construction project leads. For each company (architect, contractor, developer/owner) in CHI, NYC, SF, LA:
1) Find best human contact(s): Full Name, Title, Work Email, Work Phone, Company, Company Website, LinkedIn URL, City.
2) If multiple, pick 1–2 senior/owner/BD roles.
3) Output a table with the exact columns above.
4) Draft a brief intro email to introduce GetNailedIt.com (light, friendly line tailored to them).
5) Avoid personal emails; prefer role or direct work emails. Flag unverifiable items as “Unknown”.
      

Save outputs (examples kept internally): ChatGPT Enhanced Project Contacts and Introduction Letters.docx; Grok grok_report.pdf; Gemini Final researches (ChatGPT, Grok & Gemini).docx.

5) Step 3 — Consolidate & QA

  1. Merge all AI outputs into one master sheet (FINAL LIST of potential clients from Aneep and AI researches.xlsx).
  2. Standardize columns to match the Zoho Data Model.
  3. Deduplicate by Email then by Full Name + Company.
  4. Validate emails with Zoho (soft check) and mark Status = Invalid when bounced or clearly wrong.
  5. Retain non-focus cities on a separate tab; do not mix with the import tab.

6) Step 4 — Import to Zoho CRM

  1. Export the “Import” tab as CSV/XLSX matching Zoho fields (see Data Model).
  2. Import into Zoho CRM under list: Potential Nailed It Clients.
  3. Spot-check a few records in CRM for correct field mapping.

7) Step 5 — Launch Zoho Campaign

  1. Create a campaign for the imported segment; use the approved copy.
  2. Send and monitor the report (example report link): Zoho Campaigns Report.
  3. Record metrics: Delivered, Opens, Clicks, Bounces (invalids). Move invalid emails to a cleanup tab.

Note: Internet-found emails aren’t 100% reliable. Expect some invalids; Zoho flagged 15/44 in a prior run.

8) Step 6 — Expand via PhantomBuster

  1. Run LinkedIn People Search for construction roles in CHI/NYC/SF/LA using:
  2. Export results from PhantomBuster (free tier is limited). File name convention: PhantomBuster_<CITY>_<YYYY-MM-DD>.csv
  3. Reconcile with the master sheet; only add net-new contacts after QA.

9) Step 7 — Add LinkedIn profiles (AI assist)

  1. Use AI to look up LinkedIn profile URLs for each contact lacking one.
  2. Write to LinkedIn URL column; flag “Unknown” if not reasonably verifiable.
  3. Save as Final List — contacts_with_linkedin.xlsx.

10) Step 8 — Phone follow-up (T+7 days)

  1. Seven days after the email send, call warm leads (opened/clicked/replied).
  2. Use call notes fields in CRM; set Next Action + Reminder.
  3. Move qualified leads into the pipeline stage per Sales SOP.

Appendix — Zoho Data Model (Contacts)

Required/Recommended columns for import:

  • First Name
  • Last Name
  • Title
  • Email
  • Phone
  • Mobile (optional)
  • Company
  • Website
  • City
  • State/Province
  • Country
  • LinkedIn URL
  • Lead Source (e.g., “Permits + AI”)
  • Status (Valid/Invalid/Unknown)
  • Notes

If no human name is available, use First Name = “PIC” and Last Name = Company Name (temporary placeholder).

Appendix — Intro Email Template

Subject: Quick intro — coordinating construction projects with AI

Hi {{FirstName}},

We’ve been following recent permits and projects in {{City}} — impressive work by {{Company}}.
GetNailedIt.com helps teams keep schedules, RFIs, and documents tight (and visible to owners)
without extra admin. Teams tell us it saves hours weekly and catches issues before they escalate.

If helpful, I can show a 10-minute demo tailored to {{Company}}’s current workflows.
Would {{TwoDateOptions}} work?

Best,
{{YourName}}
GetNailedIt.com
{{YourEmail}} · {{YourPhone}}
    

Appendix — QA Checklist

  • No duplicate emails or (Name+Company) pairs
  • Company names standardized; websites present where available
  • City is one of CHI/NYC/SF/LA (extras on separate tab)
  • Emails look valid (no personal domains unless necessary)
  • LinkedIn URLs verified or marked “Unknown”
  • Zoho import mapping verified on 3–5 samples
  • Campaign report reviewed (bounces removed/flagged)
  • Follow-ups scheduled (T+7) for opens/clicks/replies
Data & Privacy: Use only publicly available or consented business contact info. Respect platform ToS and local regulations (CAN-SPAM/GDPR/etc.). Remove invalid/bounced emails promptly.