Live demo · public data, real numbers

Composite signal scoring, rebuilt from scratch on public data

The same mechanism I designed in a prior GTM engineering role for Amazon seller signal detection — score real activity instead of buying a static contact list — applied fresh here to open developer-tool companies, using only GitHub's public API. No employer code, data, or credentials anywhere in this build.

8 companies scored— reproducible: run signal_score.py yourself, numbers will differ slightly as commit activity moves week to week

The problem with static lead lists

Most outbound tooling — Apollo, Clay's default enrichment, a purchased list — answers "who fits the ICP profile." It never answers "who is doing something right now that makes this the moment to reach out." A profile match from six months ago is stale by the time an SDR sends the email.

The fix isn't a bigger list. It's scoring real, current activity and only acting on genuine signal — the same principle whether the domain is Amazon sellers or, as shown here, open-source companies.

The result — real GitHub data, pulled live

Composite score = trailing-4-week commit velocity vs. the 4 weeks before it. Deceleration is scored 0, not negative — a slowdown isn't a buying signal, and the honest answer to "no signal" is 0, not a fabricated penalty.

Company / repoStarsCommits, last 4wkCommits, prior 4wkChangeSignal score
ComposioHQ/composio29,09611942+183.3%183.3
mem0ai/mem060,12615294+61.7%61.7
block/goose50,669263185+42.2%42.2
browser-use/browser-use102,81737446−91.7%0
e2b-dev/E2B12,8446476−15.8%0
langflow-ai/langflow151,180116521−77.7%0
crewAIInc/crewAI54,94093118−21.2%0
letta-ai/letta23,65820n/a0

The top signal — Composio, +183.3%

composio commit velocity: 42 → 119 commits in 4 weeks

Composio's commit volume nearly tripled between the trailing 4-week window and the 4 weeks before it — a real, verifiable acceleration, not a modeled guess. In a live GTM system, this is exactly the kind of event that should trigger a look: a sudden build-out often correlates with a funding event, a new hire wave, or a push toward a launch — all real reasons an outbound message timed to this moment lands differently than a cold list-based send.

What this isn't

This score alone doesn't prove intent — it's one signal, not a verdict. The point of the mechanism isn't "this one number replaces judgment," it's that a real, current, checkable signal is a far better trigger than a static list that doesn't know anything changed.

Closing the loop — signal to draft

Scoring the signal is only half of "signal-based intent orchestration." The other half: use it to draft something real. draft_outreach.py pulls a few more real, current facts about the top-scoring company and has Claude draft a short message grounded only in those facts — never a generic pitch.

real facts pulled live via GitHub's API, same run as the scoring table above

Description: "Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action."

Recent commit subjects (last 8): CI hardening — least-privilege tokens, fork-PR guards, audit gates · dependency security bumps · compatibility fixes across LangChain, LangGraph, and AutoGen · OpenAI parallel-tool-call fix.

Real facts, composed example

"Composio's commit velocity jumped 183% in the last month, and looking at what's actually landing, most of the recent volume is CI/security hardening (least-privilege tokens, fork-PR guards, dependency audit fixes) plus compatibility fixes across LangChain, LangGraph, and AutoGen. That combination — tightening infrastructure while broadening framework support — usually shows up right before a team scales its integration surface or preps for a bigger audit. Is that roughly what's happening, or is this a different push?"

No message was sent to anyone. This script only ever prints a draft — the design rule behind it, same one used across every outreach draft in this project, is that AI drafts and a human approves every send. The facts above are real, pulled live via GitHub's API; the draft text was written by hand to match what the script's system prompt is instructed to produce — I didn't have an API key available when building this to generate it live. Running the script yourself (with your own ANTHROPIC_API_KEY) will produce an actual model-drafted message against whichever company scores highest at the time.

The actual scoring code

Full script: signal_score.py — runnable, no API key required.

# composite score: reward genuine acceleration only
# deceleration -> 0, not a fabricated negative signal
def signal_score(velocity_change_pct):
    if velocity_change_pct is None:
        return 0
    return max(0, round(velocity_change_pct, 1))

# velocity: trailing 4wk commits vs. the 4wk before that,
# computed from GitHub's public /stats/commit_activity endpoint
last4 = sum(w["total"] for w in activity[-4:])
prev4 = sum(w["total"] for w in activity[-8:-4])
change_pct = (last4 - prev4) / prev4 * 100

Why I built this

I designed the original version of this mechanism during a prior GTM engineering role — moving outbound from a static Apollo-style contact list to live, per-account signal detection. This is that same idea, rebuilt independently and cleanly on public data, to show the mechanism rather than just describe it.

Let's talk Full resume: see linked profile