Every dev has invested in unicorns. They just don't know it.
I shipped Receipts at signals.gitdealflow.com/receipts. Paste your GitHub username, get a Scout Score from your starring history. The unicorns you starred before the news broke — Vercel at 200 stars, LangChain in week 2, OpenAI before the $157B round — are now worth points. Free, no login, no OAuth.
Key Takeaway
GitDealFlow now grades your GitHub starring history against ~75 validated unicorns. Each early star is points. Five perfect calls is a Scout Score of 100. Sindresorhus scored 36 on launch day with OpenAI starred 24 months early. tj scored 22 with Deno + Tauri called 4 years early. Your turn.
Saturday morning I shipped Receipts. Free tool, no login, eight seconds from paste to shareable card. The hook is one line: every dev has invested in unicorns, they just do not know it.
Here is what it does. You paste your GitHub username at signals.gitdealflow.com/receipts. We fetch your public starring history. We cross-reference every starred repo against a curated database of ~75 validated unicorns — companies that hit a $1B+ valuation, raised a Series A or later, were acquired, or crossed 25K+ stars in the last five years. For each match we measure how many months early you starred. Twenty-four months early on a $1B-valuation company gets you the maximum 100 points. Five perfect calls is a Scout Score of 100.
That is the whole product. No login. No OAuth. No private repos read. Just public starring metadata that GitHub has been quietly broadcasting for fourteen years.
Why backwards-looking#
We already shipped a forward-looking version. /predict is a six-month prediction game where you call whether a startup will raise a Series A. It works. It has a leaderboard, an OG card, a Soap Opera onboarding sequence, a public profile at /s/[handle]. But it has a virality ceiling I underestimated. Twitter does not share things that pay off in Q4.
Receipts is the inversion. You do not have to wait six months. The receipts already exist in your GitHub account. We just made them visible.
The first viral test was tj. TJ Holowaychuk's first three hundred starred repos contained two early calls: Deno (48.7 months early) and Tauri (42.5 months early). Scout Score: 22. Rank: Scout. The second test was sindresorhus. Five matched wins, four called early, top one OpenAI starred 24.4 months before the $157B valuation. Score: 36. Rank: Scout. Both cards rendered as 1200×630 PNGs and look exactly like the kind of thing developer Twitter shares to flex.
That is the whole bet. People share Spotify Wrapped. People share their Strava year. People share their Letterboxd top ten. There has never been a "look at the unicorns I starred early" card. Now there is.
The scoring math#
I want to be precise about how the score works because the math is the trust layer. For each starred repo that matches a validated win:
``` months_early = (event_date - star_date) / 30.4375 if months_early <= 0: points = 0 # You starred late. Sorry. else: points = weight × min(months_early / 24, 1.0) ```
Weight scales with the event: - Series A = 50 - Series B = 70 - Series C and beyond, or acquisition = 80 to 90 - $1B+ valuation or post-IPO = 100 - Mass-adoption milestone (25K+ stars without public funding) = 30 to 50
We dedupe by company — starring three Vercel repos counts as one win, taking your earliest star date. Top 5 wins are summed and normalized so five perfect early calls equals a Scout Score of 100. Rank ladder is shared with /predict: Curious → Scout → Sharp → Elite → Oracle.
The full validated-wins database is hardcoded JSON in the repo. It is not exhaustive. It is biased toward developer-tools, AI, and data/ops companies that have public GitHub presence. Closed-source unicorns are unrepresented. If your favorite unicorn is missing, your real Scout Score is higher than what we display. That is a known false-negative and we add to the list as we learn.
What I left out#
The first version is intentionally under-engineered.
**No persistence.** Each receipt is computed on demand and cached for 24 hours via Vercel's CDN. We do not save your Scout Score to a database. We do not link your receipts to a /predict scout account unless you explicitly come over and predict. There is no "claim your score" gate, no email capture, no upsell on the result page. The CTA at the bottom is a soft link to /predict, not a modal.
**No AI commentary.** I considered adding an Anthropic API call to generate a one-paragraph "your taste personality" blurb. Decided against it: deterministic templates are faster, free, and reliable. The current commentary is built from category counts ("you have a clear bias for AI/ML infrastructure" / "an operator's instinct for observability and workflow tools") with the top win surfaced by name. It will get smarter as the database grows.
**No comparison feature.** There is no "compare with friend" button. The viral loop is the permalink at /receipts/[username] — every shared card has a stable URL that anyone can click and see the same result. Permalinks are the comparison surface; we do not need a UI for it.
**No fancy graphics.** The OG card is one big number, three early calls, a footer. No charts, no animations, no character avatars. The card has to read in 0.4 seconds in a Twitter feed. Anything more is friction.
How the dev-loop ran#
Total ship time was about three hours from "paste your GitHub username" idea to live in production. The architecture leans hard on what was already built:
- **PocketBase** was not used. Receipts is stateless. - **The OG image route** at /api/og/scout/[handle]/route.tsx was the template — same dark gradient, same monospace stat blocks, same rank colors. The Receipts card at /api/og/receipts/[username]/route.tsx is a 200-line variant. - **The 5-email Soap Opera** at /lib/soap-opera-scout.ts already exists. Receipts does not trigger it. /predict does. We keep one funnel, not two. - **The validated-wins database** is a static JSON file. About 75 entries. I curated by hand from memory, Crunchbase summaries, and a quick pass through the most-starred OSS repos from 2021-2025. It will be a moving target — every quarter has new unicorns and old "wins" get re-validated.
The trickiest part was the GitHub rate limit. Unauthenticated, the API gives you 60 requests per hour per IP. That is fine for a single user pulling their own history (one to three paginated calls). It dies the second the launch tweet goes out. The fix was a fine-grained PAT with zero scopes — even an empty-permission token bumps the rate limit to 5,000 per hour. Plus an in-memory cache per Vercel Function instance. Plus the 24-hour CDN cache via stale-while-revalidate. Together those handle a viral spike without ceremony.
The bigger play#
The reason Receipts exists is to feed /predict. The conversion path is:
- Receipt card goes viral on Twitter.
- Friend sees it, clicks, enters their own username.
- Friend gets a Scout Score, learns the ranks (Curious → Scout → Sharp → Elite → Oracle).
- The result page CTA links to /predict.
- They make a forward-looking call. The Scout Game starts. The Soap Opera kicks off.
Receipts is a free top-of-funnel for a paid product. Same brand, same vocabulary, same ranks, different timing. /predict resolves in six months. Receipts resolves in eight seconds. We can finally tell people why they should care today.
What I want from you#
If you have a public GitHub account, paste your username at signals.gitdealflow.com/receipts. Three things help:
- **Tweet the card.** Cards have stable permalinks at /receipts/[your-username]. Anyone who clicks gets their own card. The viral loop is the whole ROI.
- **Tell me what is missing.** If you starred a unicorn we do not have in the database, the score under-counts you. Reply with the org and the validation event and I will add it.
- **Now go predict.** The receipts are backwards. The Scout game is forwards. /predict is where the points keep flowing.
The receipts already exist. I just made them visible.