Rebuilding paid GTM tools in the open, on one key
Eleven open-source rebuilds of paid GTM tools on one API key: the quoted cost of a run, what each leaves out, and why none has had a paid test yet.
Walid Boulanouar · , updated · 9 min read
On this page
A paid GTM tool is three things in one box: data, a workflow and a screen. The screen and the workflow are software, and software is cheap to write now. The data is the part you cannot write, and most of it is for sale by the call.
So I tried the obvious experiment. I took eleven paid GTM tools, rebuilt the data half of each as an open-source repo that runs on one API key, and wrote down what a run is quoted at and what I had to leave out. This post is the result, limits first.
Disclosure. I founded looot, and every one of these repos calls looot for its data. Each repo is free and MIT licensed, and each one is also a reason to buy looot credit. Judge the claims with that in mind.
What was rebuilt, and what does a run cost?
Each repo stands in for the data half of one or two paid tools. The table gives the quoted cost of a typical run at looot list prices and the features that did not make it.
| Repo | Paid tool it stands in for | Quoted cost at list price | Left out |
|---|---|---|---|
| looot-intent | 6sense | $0.1720 per account | First-party visitor tracking, bidstream intent data, CRM sync, ad orchestration |
| looot-score | MadKudu | $0.83 to $1.67 per 100 leads | Behavioural scoring, a model trained on closed-won deals, CRM sync |
| looot-reveal | RB2B, Clearbit Reveal | about $0.08 per 100 new IPs | Person-level identification, email finding, hosted multi-user mode |
| looot-techstack | BuiltWith, Wappalyzer | $1.89 per 100 domains on the default three providers | List filters by country or spend, history trends, a browser extension, an own fingerprint database |
| looot-signals | TheirStack, Harmonic | up to $0.531 per run of five triggers | Founder, board and investor data |
| looot-lookalike | Ocean.io | up to $0.2138 for 6 seed companies | Contact discovery, CRM sync, scoring on revenue |
| looot-ads | Foreplay | $0.1057 for 5 competitors on 4 platforms | A discovery library of brands you did not name, analytics on your own ad account, AI briefs, creative storage |
| looot-reviews | ReviewTrackers | up to $0.015 for 5 companies on Google Maps | Trustpilot, G2 and Yelp, replying to reviews, continuous monitoring |
| looot-battlecards | Klue, Crayon | $0.0153 per competitor | Win-loss interviews, CRM and call-recording insight, publishing to Slack or a CRM, change alerts |
| looot-mentions | Brand24, Mention | $0.00663 per keyword on 6 sources | Facebook and Instagram keyword posts, podcasts, share of voice, volume-spike alerts |
| looot-warm-leads | Gojiberry | up to $0.25 per run on the new-role trigger | Company followers, lookalike leads, automatic sending, AI-drafted replies, CRM sync |
Read on from the README of each repo at github.com/loootai. Costs are each repo's own quote at looot list prices, before any call. No paid run was made on any of these repos, so no cost here is a measured bill. The left-out features are as each README lists them, not checked on the vendors' own sites.
The repos live at github.com/loootai. Each has a test suite that runs on fixtures, a dry-run mode that prints the quote before any call, and a spend cap that stops a run before the call that would pass it.
How were the cost figures made?
Each repo plans its calls, looks up the list price of each endpoint and adds them up before it runs. That quote is what the table shows. It is the most a run should cost when every call is made and every call is billed.
Three things make a real bill differ from the quote:
- Misses. Some providers bill a call that finds nothing and some do not.
- Fallbacks. A repo that tries a second provider when the first is empty spends more on hard rows.
- Price changes. The quotes are dated 2026-10-10, and list prices move.
The third one has already happened. When I read the catalog again on 2026-10-11, three ad library endpoints that looot-ads calls were no longer in it. That repo's quote is out of date until it points at other endpoints. I left its row in the table and I am telling you here, because a frozen quote that looks precise is the kind of number this article is meant to question.
What does a paid tool have that these repos do not?
Reading the "left out" column from top to bottom, the gaps fall into four groups. This is the most useful part of the experiment.
Data nobody sells by the call. Bidstream intent, a first-party visitor graph, a library of ads from brands you did not name, review sites that offer no endpoint. looot-intent scores an account from hiring, funding, news and tech changes. It has nothing like a third-party intent pool, and no open rebuild will until someone sells that data.
Models trained on your own outcomes. looot-score grades a lead from firmographics and tech stack with fixed points per rule. Its README lists a model trained on closed-won deals as the part it left out. Rules are easier to read and worse at surprises.
The loop around the data. CRM sync, a shared inbox, automatic sending, win-loss interviews. None of that is data. It is product.
People, not companies. looot-reveal returns a company from an IP address and stops there. Naming the person needs a licensed identity graph. I wrote up how visitor identification works separately.
My conclusion: the data half of these tools can be rebuilt on public endpoints, and a run is quoted in cents, not in seats. The other half is where paid tools earn their price. If you only need the data, in a table, on your own machine, these repos cover that half.
Why are vendor prices not listed here?
Because the picture is uneven. Some of these vendors publish a price list. Several publish none and ask for a demo, and for a few the only figures I found were third-party estimates. A table that is half fact and half estimate helps nobody. Each repo README says where its vendor figure came from and on which day, and labels third-party figures as estimates.
Compare against the price you pay, on your own invoice. That number is the one that matters.
What is untested in each repo?
All of it, in the strict sense, since no paid run was made. These are the specific weak points I know about:
- looot-techstack. All provider parsers are unverified. The inputs of the reverse search, which finds companies that use a technology, are inferred from endpoint descriptions.
- looot-signals. News headlines carry no structured company, so the company is guessed from the headline.
- looot-lookalike. Industry names are compared as lower-cased text, so two labels for the same industry do not match.
- looot-battlecards. Pricing pages that load their numbers with scripts come back empty. Review themes are keyword rules on search snippets, which is a weak signal.
- looot-mentions. Sentiment is a word list. It misses sarcasm.
- looot-reviews. Themes are word counts on English text, and sentiment is the rating the reviewer gave.
- looot-reveal. The tracking snippet and its collect route were not load tested, and the rate limit lives in memory in one process.
- looot-warm-leads. Sending on LinkedIn goes through your own account with a third-party service, is off by default, and was never called.
A first paid test of every parser is planned. It runs one small real job per repo, compares the raw response with the parser, and records the real cost next to the quote. Until that is published, the right word for each repo is "unverified".
Which rebuild is the easiest to check yourself?
Technology detection. It is one job, the answer is easy to check by opening the site, and several providers sell it at different prices.
looot-techstack calls three providers for the same domain by default. That costs more than one call and may catch technologies a single provider misses. Whether it is worth the extra spend is what a paid test should measure. If you use a paid lookup tool today, the BuiltWith alternatives page lists which of its jobs the catalog covers.
Try it: detect a tech stack with your agent
Prompt for your agent
Tech stack for a list of domains
The same pattern, plan then quote then run, is what an agent does in place of a Clay table. The endpoints and their prices are in the public catalog.
What this article cannot claim
- That any of these repos matches the paid tool it stands in for. None was compared side by side.
- A measured cost. Every figure is a quote.
- Accuracy. No parser has met a live response.
Costs read from the repo READMEs on 2026-10-10, catalog checked again on 2026-10-11. Written by Walid Boulanouar, who founded looot.
Questions
Keep reading
How website visitor identification works
What a visitor identification script does in the browser, why person-level matching is US only, and what a site owner must do. Confirmed apart from inferred.
Walid Boulanouar · · 9 min read
Can an AI agent replace Clay? What we checked and what it cannot do
We checked each job Clay does against the looot catalog. An agent covers the enrichment work. It does not give you a shared table or a native CRM sync.
Walid Boulanouar · · 4 min read
Same job, different price: what data costs per provider
The same Google search is listed at 28 times the price depending on the provider. Five data jobs priced side by side, read from the looot catalog on 2026-10-11.
Walid Boulanouar · · 11 min read
Try it with the agent you already use
Start your workspace, top up, and paste one prompt into your agent.