# Open source Klue alternative: looot-battlecards

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. Build a competitive battlecard for each competitor from public data.

## Short answer

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

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

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

- Job: Build a competitive battlecard for each competitor from public data.
- License: MIT
- Language: TypeScript
- Needs: Node.js 22.12 or newer
- Needs: A looot token with the scopes runs.execute, catalog.read, runs.read and usage.read, for real runs only
- Needs: A funded looot balance, for real runs only
- Needs: An Anthropic API key, only for the optional model-written summary
- Demo mode: Yes. npm run demo shows invented competitors, and --demo writes the same cards as files. Both need no token and make no network call.
- Repository: https://github.com/loootai/looot-battlecards

## Endpoints it calls

- jina: jina-reader (web_scrape_markdown), Pricing, homepage and careers pages as markdown
- serper: serper-news (news_search), Recent news
- serper: serper-search (google_serp_organic), Review snippets from review sites
- tomba: tomba-technology (company_technographics), Tech stack by category
- scrapecreators: scrapecreators-facebook-adlibrary-company-ads-get (ads_meta_search), Meta ad angles
- scrapecreators: scrapecreators-linkedin-ads-search (ads_linkedin_search), LinkedIn ad angles

## What it 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.

## Run it with an agent

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.

## What does looot-battlecards do?

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.

## Is looot-battlecards free?

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.

## Does it use an LLM?

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.

## What does a card cost?

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.

## What happens when a section cannot be read?

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.

## What does it not do?

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.

## Can I try it without a looot account?

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.

## How do I run it from an agent?

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.

## Related

- /open-source-alternatives
- /mcp/tomba
- /mcp/scrapecreators
- /mcp/jina
- /best/serp-api
- /free-tools

## Last read

2026-10-11. Facts come from the repository on GitHub. The price per call is read live from the catalog on the web page.
