MIT open source, paid data

Open source Klue alternative: looot-battlecards

Build a competitive battlecard for each competitor from public data.

The code is MIT open source. The data is not free and not self-hosted: every real run calls looot and pays per call at the catalog price shown before the run.

Short answer

What is looot-battlecards?

looot-battlecards is an MIT-licensed web app and CLI. Give it your product and 1 to 10 competitor domains and it reads each competitor's pricing, homepage, careers, news, tech stack, reviews and ads. It writes one card per competitor, with a source link and date on every claim. The code is open source. The data is paid per looot call.

What it does

What looot-battlecards does and how to run it

It reads up to seven signals per competitor and keeps only what the page or result says. No claim is written from memory. Cards are built with templates and plain extraction rules, with no LLM needed.

A section that failed, is pending or was skipped is marked as such instead of being hidden. You can add your own strengths under Where we win, marked as your words and not fetched data.

Each card exports to JSON, markdown and one HTML page with print styles, ready for Save as PDF. The quote shows before any paid call and a spend cap is enforced.

This is the job that products such as Klue and Crayon do.

Commands for looot-battlecards
git clone https://github.com/loootai/looot-battlecards && cd looot-battlecards
npm install --ignore-scripts
npm run demo
npm run cards -- --demo
npm run cards -- --config battlecards.example.yaml --dry-run
export LOOOT_TOKEN=...
npm run cards -- --config battlecards.yaml --max-spend 0.25

Facts

Facts from the repository

Read from GitHub on 2026-10-11.

Facts about looot-battlecards
JobBuild a competitive battlecard for each competitor from public data.
LicenseMIT
LanguageTypeScript
A real run needs
  • Node.js 22.12 or newer
  • A looot token with the scopes runs.execute, catalog.read, runs.read and usage.read, for real runs only
  • A funded looot balance, for real runs only
  • An Anthropic API key, only for the optional model-written summary
Demo modeYes. npm run demo shows invented competitors, and --demo writes the same cards as files. Both need no token and make no network call.
Repositorygithub.com/loootai/looot-battlecards
Facts read on2026-10-11

Data and price

Endpoints it calls, with the live price

Every real run calls these looot endpoints. The price column is read live from the catalog, never typed into this page.

Endpoints called by looot-battlecards with their live catalog price
EndpointUsed forLive price
jina-readerjinaPricing, homepage and careers pages as markdownreading live price
serper-newsserperRecent newsreading live price
serper-searchserperReview snippets from review sitesreading live price
tomba-technologytombaTech stack by categoryreading live price
scrapecreators-facebook-adlibrary-company-ads-getscrapecreatorsMeta ad anglesreading live price
scrapecreators-linkedin-ads-searchscrapecreatorsLinkedIn ad anglesreading live price

Prices are read from the looot public catalog when the page loads. Some endpoints are priced per result, so a run that returns many rows costs more than one call. The CLI dry run prints the exact quote for your input before anything is charged.

Limits

What looot-battlecards does not do

  • It has no win-loss interviews, no CRM or call-recording insights and no Slack or CRM publishing step.
  • It does not read Google Ads. The Meta and LinkedIn libraries cover the ad angles it reports.
  • Pricing and careers extraction needs a page that can be read as markdown. A page that loads prices with scripts comes back empty, and the card says so.
  • Review themes are keyword rules on search snippets, which is a weak signal. The card quotes the snippet so you can judge it.
  • It does not alert you when a competitor page changes. The sibling repo looot-monitor does that.
  • Response parsing was written from provider documentation and fixtures. The README says it was not checked against a recorded paid response.
  • The web app has no sign-in. Run it behind your own access control if you host it.

With an agent

Run it with your agent

Copy the prompt, give it to the agent you already use, and it dry-runs first.

Prompt: looot-battlecards
Use looot to build a battlecard for each competitor I name. Read https://looot.ai/skill.md first. Then clone https://github.com/loootai/looot-battlecards, write my product and competitor domains into a YAML file, run its dry run and show me the quote and the cap. Run it only after I say yes, and report the gaps in each card as they are.

FAQ

Questions about looot-battlecards

It reads each competitor's pricing page, homepage, careers page, news, tech stack, review snippets and ads through looot and writes one card per competitor, with a source link and a fetch date next to every claim.

The code is free under the MIT license. The data is not. Every real run is a set of paid looot calls at the catalog price, quoted before the run. Demo mode and the dry run cost nothing.

No LLM is needed. Cards come from templates and extraction rules. An optional summary runs only when you set an Anthropic key and pass --summary, and it is stored apart from the sourced claims and labelled as model-written.

One call per signal per competitor. The table on this page shows the live catalog price of each endpoint, and the dry run prints the plan and total for your file.

The card marks it as pending, failed or skipped with the reason, instead of hiding it. Pages that load their prices with scripts come back empty, and the card says so.

It has no win-loss interviews, CRM insights or alerts when a page changes. Review themes are weak keyword rules on snippets, and the README says parsers were not checked against recorded paid responses.

Yes. npm run demo and the CLI --demo flag use invented competitors and need no token. A real run needs a token and a funded balance.

Give your agent the prompt on this page and the setup link https://looot.ai/skill.md. The repo ships a skill that prices the run, asks for a yes and reports gaps as they are.

Keep going

For agents
repo
https://github.com/loootai/looot-battlecards
job
Build a competitive battlecard for each competitor from public data.
license
MIT
language
TypeScript
endpoint
jina: jina-reader (web_scrape_markdown)
endpoint
serper: serper-news (news_search)
endpoint
serper: serper-search (google_serp_organic)
endpoint
tomba: tomba-technology (company_technographics)
endpoint
scrapecreators: scrapecreators-facebook-adlibrary-company-ads-get (ads_meta_search)
endpoint
scrapecreators: scrapecreators-linkedin-ads-search (ads_linkedin_search)
price
per call, read live from the catalog on the web page
framing
MIT code, paid data, every real run calls looot
setup
https://looot.ai/skill.md
llms.txt
https://looot.ai/llms.txt
read
2026-10-11

Run looot-battlecards on your own looot account.

Try the demo first, no account needed. For a real run, start your workspace, top up, and use the quote the repo prints before it spends anything.