Spoken intelligence

Find buyers from what they said, not what their LinkedIn says.

Paste a list. Baruly returns speaker, quote, timestamp, and source for each of your accounts, or a null with a reason.

See what they said

Sign in. No card. Paste up to 5 domains.

Connect an agent

ChatGPT, Claude, Grok, or any MCP client. OAuth, no pasted keys.

Baruly console after a run on your list: the job field and shortcut chips, a results row with a green evidence badge and a null row, and the evidence viewer showing the transcript excerpt, source URL, and evidence_id.
Sample run on the bundled fixture corpus

SourcesPodcasts · Earnings calls · YouTube talks · Hearings · Your show feeds

Delivers toHubSpot · Salesforce · Slack · Webhooks · MCP

Spoken evidence for the accounts you already care about.

Not a search engine over podcasts. Baruly runs an investigation on your list and hands back the receipt, or tells you it found nothing.

Evidence

Evidence or null

Every positive row carries a speaker, timestamp, source link, and an immutable evidence_id. A miss is a null_reason, not a guessed executive.

Agents

Built for people and agents

Write a job or pick a named shortcut. Same IDs on the console, CLI, REST, and hosted MCP behind OAuth. Connecting is not activation; a real quote is.

Metering

Pay for work, not seats

One completed investigation is one unit, nulls included. External data is a separate, disclosed meter, or bring your own keys. No seats.

Your list and recipes

Start with your list, not ours.

Paste three to five domains or upload a CSV. Write the job, or tap a shortcut. Baruly returns a row per account with speaker, quote, timestamp, and source, or a null_reason. The first verifiable quote on your list is activation. Demo data does not count; neither does a null-only run.

Console crop: the Your list panel with the job field, shortcut chips, domains, and the results table with an evidence badge and a null badge.

Sample from the bundled fixture corpus

Evidence and receipts

Every quote comes with a receipt.

Open any row and the evidence viewer shows the transcript excerpt, the source URL, the evidence_id, and confidence for transcript, speaker, entity, and extraction. Share one row as a public card: people get HTML, agents get JSON, and the recipient can run the same job on their own list. Null rows are not shareable.

Evidence viewer

initech.com

Priya Shah · CFO

verified

We are evaluating vendors to cut inference cost by at least forty percent. Current GPU spend is the largest line item under R&D cloud.

source: Initech Q2 2026 Earnings Call
url: https://example.com/earnings/initech-q2-2026
evidence_id: ev_6f3dbbb8e3c54f62
transcript
0.96
speaker
0.93
entity
0.97
extraction
0.99

/e/ev_6f3dbbb8e3c54f62

Priya Shah, CFO · Initech

35:00

We are evaluating vendors to cut inference cost by at least forty percent. Current GPU spend is the largest line item under R&D cloud.

Source https://example.com/earnings/initech-q2-2026

Run this job on your list

Sample from the bundled fixture corpus

Monitors and recurring work

Set a watch. The signal comes to you.

Any job can run on a cadence: hourly, daily, or weekly over the same entities. When a new episode or call produces evidence, the row is delivered to your inbox, Slack, a webhook, HubSpot, or Salesforce. Spoken brew turns the day's rows into a briefing as prose plus JSON with evidence_ids. Quiet days return nulls, not filler.

$ baruly watch create --name gpu-signals --query "inference cost GPU" \
--entities fixtures/data/accounts.csv --since 365 --frequency daily --destination inbox
{"watch_id": "wat_890ab15dce1044b5", "name": "gpu-signals", "frequency": "daily", "destinations": [{"type": "inbox"}], …}
$ baruly watch run wat_890ab15dce1044b5
{"watch_id": "wat_890ab15dce1044b5", "status": "completed", "run_id": "run_0822fffb4741484b", "match_count": 3,
"matches": [{"entity": {"domain": "acme.com"}, "signal": {"speaker": "Jordan Lee", "speaker_title": "VP Engineering",
"claim": "Our inference cost is out of control. We are spending more on GPU hours than on the rest of cloud combined, …",
"timestamp": "21:24", "evidence": {"evidence_id": "ev_788c3e361d6b4705", "source_url": "https://example.com/podcasts/acme-inference-cost", …}}}, …]}

Output truncated · fixture corpus

Agents and MCP

Your agent runs the same jobs.

Point any MCP host at /mcp. A human completes OAuth on this origin (PKCE for browser hosts, device code for terminals), then the agent calls list_recipes and run_recipe on your entities, or save_task to keep a job. Six hosted tools, no pasted API keys, and the same evidence_id a person would see. Billable calls fail closed with insufficient_balance instead of guessing.

$ curl --proto '=https' --tlsv1.2 -LsSf https://baruly.com/baruly-installer.sh | sh

/auth.md

Baruly agent connect

Connect URL: /mcp (Streamable HTTP). Point ChatGPT, Grok, Claude, or a terminal MCP client at this origin's /mcp.

OAuth

  • Browser hosts (ChatGPT / Grok / Claude): authorization-code + PKCE S256
  • Terminal clients: device-code

Connecting is not activation. OAuth success without a recipe win is not a quote on your list.

First tool calls

  1. baruly.list_recipes
  2. baruly.run_recipe on the caller's entities

Never

  • Never paste API keys into ChatGPT, Grok, or Claude
  • Never send secrets to a third host
  • Never collect Baruly credentials on any origin other than this one

Evidence today. Outcomes when you connect a CRM.

Run one job on your list. Free, no card. Keep the receipt.