Safety & audit

Scraper limits apply to local sync. Blocklist and audit log are shared via your Neon database.

Application limits
How lnkr caps sync volume, batch size, and cloud processing. Tune scraper settings via environment variables (see GitHub Secrets or .env.local).
Outreach mode
Draft-only — nothing is posted or connected automatically
Daily batch
Top 10 qualified leads per day with AI drafts
SN profile sync
0 / 10 profiles used today (10 remaining)
Posts per profile
Up to 5 recent posts read for warming comments
Enrich & score (Vercel)
Up to 10 leads per button click — click again if you have more pending leads
GitHub sync
~10–30 min per run; weekday auto-sync at 11:00 UTC. Complete pipeline runs cloud steps on existing leads while sync finishes in the background
Company cap
Max 2 leads from the same company in one daily batch

Scraper tuning (daily scrape cap, delays) is configured via environment variables — see Settings → Safety. Scraping Sales Navigator may violate LinkedIn's Terms of Service; use conservative limits.

Scraper safety limits
Live usage against your configured scrape caps. Change limits via Vercel env vars, GitHub Actions Variables, or `.env.local`.
Daily scrape limit
0 / 10

10 remaining today

Profile delay
4s–10s

Random delay between profile visits

Posts per profile
5
Browser session
LinkedIn session cookies live in GitHub Secrets and are used by the sn-sync workflow. Re-export when sync fails with a login timeout.
Sync method
GitHub Actions

Trigger sync from the dashboard — scraping runs in GitHub Actions.

LinkedIn session
Cookies configured

GitHub Secrets has LinkedIn cookies — ready to sync from the dashboard.

Session setup (admin, one-time)

GitHub Actions uses exported LinkedIn cookies — not a browser on Vercel. Re-export monthly or when sync fails with a login timeout.

  1. On your computer: vercel env pull .env.local
  2. Sign in once: bun sn:sync --login
  3. Export cookies to GitHub Secrets: bun sn:export-cookies | gh secret set LINKEDIN_SESSION_COOKIES --repo owner/lnkr
  4. Set GITHUB_SYNC_SESSION_CONFIGURED=true on Vercel after cookies are stored.
Do-not-contact list
Blocked leads are skipped during sync. Add LinkedIn profile URLs or emails you never want to outreach.

No blocked contacts yet.

e.g. https://www.linkedin.com/in/username

Activity audit log
Recent agent actions — scrapes, scores, content generation, safety stops, and outreach tracking.
  • sn syncSnListConfig

    scraped 10

  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • scrape updateLead
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.

  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate contentGeneratedContent
  • generate content errorLead

    No object generated: response did not match schema.