{
  "$type": "site.standard.document",
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreigi63jldsmapj25dpo7luscsn7m7acsfoa5bmw3bwjdvzy2efs46e"
    },
    "mimeType": "image/png",
    "size": 33397
  },
  "description": "Finding new customers & hires from your GitHub stargazers",
  "path": "/catching-stars",
  "publishedAt": "2026-01-14T00:00:00.000Z",
  "site": "at://did:plc:a2rdzfdxkjwerrfrpbwcipb2/site.standard.publication/3jd443afc2222",
  "textContent": "TLDR: Find new customers and/or hires from your GitHub stargazers:\n\n1. val.town/x/templates/github-leads\n2. val.town/x/templates/github-hires\n\nLast month we started pickling compute:\nbottling up Val Town's commodity ingredient (compute) and selling the flavor of\nthe month (narrow use case). Right now we're bottling \"inbound lead\nqualification\" and selling it to seed-stage b2b founders who can code. Bottling\ninbound lead qualification means automating the manual process of researching\nnew customer signups by hand to see if they'd be good upsell candidates: going\nto their GitHub profile, googling them, looking for a LinkedIn or personal\nwebsite, finding where they work, researching their company, etc. This turns out\nto be a good fit for an LLM agent armed with a web-search tool.\nCharmaine on our team threw the\nOpenAI Agents SDK at it, and it\nwas surprisingly effective, often surpassing results from traditional enrichment\nservices. From there we iterated toward the current\nGitHub Leads template that\ntracks activity on your public GitHub repos (stars, forks, issues, etc.) and\ngauges whether your contributors could be new hires or customers. In short,\ncatching stars.\n\n\n\nThere are a couple reasons why we're interested in catching stars, beyond the\ntool itself:\n\n1. Like our customers, we're also searching for new\n   hires and Teams\n   customers, so we've been dogfooding this leads val as we build it. Eating our\n   own pickles, I guess\n2. This tool—and others like it—are stops on our way toward\n   end-programmer programming.\n   The tool is yours, meaning it's completely customizable—remix the val and\n   refactor the code as you wish. There are plenty of existing tools that\n   automate hiring and sales pipelines, and if you don't want to touch code you\n   should use one of those instead! But if you're a \"know-code\" founder (or head\n   of sales or hiring manager) with a public GitHub repo, we think you'll like\n   remixing our tool and making it your own\n\nIf you'd like to try it out, the vals live here:\ngithub-leads,\ngithub-hires (same code, save\nfor the prompt). Here's what the code does:\n\n1. Cron job polls GitHub for new activity\n2. SQLite database stores activity\n3. OpenAI web-search agent researches & qualifies hires/customers\n4. Dashboard displays the results\n5. Daily email digest sends you the best leads\n\nThe research and scoring are only as good as your prompt. If your company has an\n\"ideal customer profile\" written down (or a job description), this is the place\nfor it. Here's our current\nPROMPT.txt:\n\n\n\nThe core of this app was coded carefully by hand, while the lower stakes parts\nwere churned out by Claude.\n\n- To ingest GitHub activity, we thoughtfully considered (1) webhooks, (2)\n  polling every resource individually, or (3) polling an org's entire activity\n  feed. After much trial-and-error, we choose option 3—polling the activity\n  feed—as the simplest approach. It's an elegant enough\n  34 lines of code\n  covering all activity across an org (stargazers, issues, discussions, PRs,\n  etc...but not emoji reactions 😢)\n- The research agent code\n  is similarly short and sweet. The complex agent-loop parts are handled by the\n  OpenAI Agent SDK\n- On the other hand, the dashboard and daily digest email were mostly vibe\n  coded. They aren't load bearing and can be regenerated from scratch at any\n  time. Vibe code is legacy code, but only when you have to\n  maintain it\n\nTo test, we ran this GPT-5 agent on ourselves first.\nTom was automatically disqualified by the hiring agent,\nfor example:\n\n\n\nAnd it's a good thing Tom does work for Val Town, because before we added\nautomatic disqualification criteria to the prompt, GPT-5 identified him as a\nstellar candidate, 99/100:\n\n\n\nYou can remix leads or\nhires to qualify new customers\nor employees for your startup...or to qualify yourself as a new lead or hire\nat Val Town 😉.\n\nA note of caution for anyone looking to use this mini-app to contact developers:\nwe're particularly allergic to spam. If you're a commercial OSS company, use\nthese tools to qualify leads so you can reach out to fewer people, more\nthoughtfully. Reach out humbly and with respect and curiosity.\n\nEach OpenAI agent run costs about 30 cents and 30 seconds in inference with\nGPT-5. That can be dialed way down on cheaper models and still return decent\nsignal. You can run this on a free Val Town account by\nsupplying your own OpenAI key. Or if you’re using this for a business, consider\nsigning up for Val Town Teams for collaboration,\nproduction limits, and extra support starting at $167/mo. And if you want a hand\nautomating any workflow, please reach out.",
  "title": "Catching stars"
}