• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
project logo

dcm31

github-leads-with-import

Find customers to sell to from GitHub activity
Remix of templates/github-leads
Unlisted
Like
github-leads-with-import
Home
Code
9
PROMPT.txt
README.md
agent.ts
dashboard.tsx
db.ts
C
digest.ts
C
github.cron.ts
H
main.ts
welcome-ui.tsx
Environment variables
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
1/15/2026
README.md

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:
    • Edit GITHUB_ORG in github.cron.ts
    • Edit RECIPIENTS in digest.ts
    • Customize PROMPT.txt with your ICP criteria
  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
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.