GitHub Leads (with Import/Export)

Find potential customers from GitHub activity. Monitor your org's repos for stars, forks, issues, and PRs — then use AI to qualify leads automatically.

image.png

What this does

  1. A cron job monitors public activity on your GitHub org
  2. When someone stars, forks, or opens an issue/PR, they're captured
  3. An AI agent researches the person and scores them as a lead
  4. Qualified leads appear in your dashboard with periodic digest emails
  5. Import/Export — Migrate leads between instances or from multi-company exports

Getting started

  1. Click Remix
  2. Add environment variables:
    • OPENAI_API_KEY — for AI lead qualification
    • GITHUB_TOKEN — for accessing GitHub API (create one here)
  3. Configure your settings:
  4. Open main.ts to view your dashboard

Note: GitHub's Events API only returns the 300 most recent events per org.

Import / Export

This val supports importing and exporting lead data, making it easy to migrate leads when you remix the val or share data between instances.

Export

  • Dashboard: Click "Export All Leads" to download a JSON file
  • API: GET /export returns all leads as JSON

Import

  • Dashboard: Use the "Import Leads" panel to upload a JSON file or fetch from a URL
  • API:
    • POST /import — Import from JSON body
    • POST /import-from-url — Import from a remote URL (e.g., multi-company export)

Compatible Formats

This val can import from:

  • Its own export format (GET /export)
  • The multi-company GitHub leads val (GET /c/{slug}/export)

Duplicates are automatically skipped based on GitHub username or email.

Programmatic Import (from multi-company val)

# Export from multi-company val, import here curl -X POST "https://your-val.val.run/import-from-url" \ -H "Content-Type: application/json" \ -d '{"url": "https://dcm31--github-leads-multi-company.web.val.run/c/company-slug/export"}'

How it works

GitHub Monitoring (github.cron.ts)

  • Runs hourly to check for new activity on your org
  • Captures stars, forks, issues, PRs, and other public events
  • Groups events by user to avoid duplicate leads

AI Agent (agent.ts)

  • Researches each GitHub user's profile, repos, and linked sites
  • Uses web search to learn about their company and role
  • Scores them against your ICP defined in PROMPT.txt
  • Returns {name, match, score, leadTypes, reasoning}

Storage (db.ts)

  • Every lead is stored in SQLite with columns:
    • id — auto-incremented
    • timestamp — when first seen
    • input_data — the GitHub event(s) that triggered it
    • output_data — AI result

Dashboard (main.ts)

  • Qualified leads (match=true) appear at the top
  • Shows score and lead type tags (customer/hire)
  • Click a lead to see full details and GitHub activity

Email Digest (digest.ts)

  • Sends daily emails (1pm UTC) with new qualified leads
  • Edit RECIPIENTS array to configure who receives them

Customization

  • Edit PROMPT.txt to define your ideal customer profile
  • Adjust the GitHub sweep frequency in github.cron.ts interval settings (default: hourly)
  • Adjust the email digest schedule in digest.ts interval settings (default: daily at 1pm UTC)

Testing

Use the test bar in the dashboard to evaluate any GitHub username instantly.

API Reference

EndpointMethodDescription
/GETDashboard
/POSTWebhook to add leads
/exportGETDownload all leads as JSON
/importPOSTImport leads from JSON body
/import-from-urlPOSTImport from remote URL
/clear?confirm=yesPOSTDelete all leads (use with caution)
/lead/:idGETView single lead
/lead/:id/reanalyzePOSTRe-run AI analysis on a lead