perplexed

Perplexed Writes Verified Funding Rounds Into Your Notes

A company profile now carries Fireround's funding data verbatim under its Fundraising History heading, with every round citeable, alongside what Exa finds.

Why Care?

Funding is where a research model is most likely to be confidently wrong. Round sizes get rounded, lead investors get swapped, and a company with a similar name slips in. The table looks fine either way.

Fireround is a feed of rounds checked against their sources. Now your company profiles can start from it.

What's New?

  • Raw funding data under your heading. Add write-json-under: "Fundraising History" and the plugin writes Fireround's records into that section as a json code fence, exactly as they arrived.

  • A citation for every round. Each round reaches the writing model as its own [^F1] source, with its amount, date, investors, and announcement link.

  • Beside Exa, not instead of it. Both run before the model writes, and each keeps its own citation markers.

  • One key across plugins. The Firecrawl key is chosen from Obsidian's keychain, so Metafetch and Perplexed can share one secret.

How it works

YAML
include-sources:
  - provider: fireround
    write-json-under: "Fundraising History"
  - provider: exa
    query: "{{basename}} {{url}} overview product funding customers"

The note's url supplies the domain. Rounds are kept only when the company's domain matches it exactly, and the lookup runs only when that URL is a homepage. A note on openai.com/sora is about something hosted there, so OpenAI's rounds are not attributed to it.

If Fireround has nothing, the key is missing, or the call fails, the run carries on with Exa and the model, and a notice says what happened.

Proof

One live call on www.firecrawl.dev: two rounds (Series B, 2026-09-22; Series A, 2025-08-19), each citing its own announcement. It used 1,516 of the prompt's 12,000 retrieved-source characters, which leaves Exa's results room. The note received about 5,000 characters of JSON.

Then a real run inside Obsidian, with a generation behind it, confirmed by Michael. Shipped as 0.5.0.

Under the hood

  • fireroundService.ts: searchRounds(), homepageDomain(), roundsForDomain(). Uses requestUrl, as Exa's client does. Errors reported inside a 200 are surfaced.

  • includeSourcesService.ts: a FireroundSourceSpec in the SourceSpec union, and ResolveOutcome.jsonBlocks, which sit outside the context budget because they never enter the prompt. A round known only from a later round's previous_rounds still gets a source.

  • directoryTemplateService.ts: insertJsonUnderHeading() skips headings inside code blocks, replaces an existing fence instead of stacking, adds the heading if the model dropped it, and lengthens the fence if fetched text contains one.

  • Behaviour change: exaEnabled now governs Exa only, so turning it off no longer turns off Fireround. The run dialog's toggle is now "Retrieve sources first" and covers every provider in the template.

  • SecretComponent for the key row; settings store the secret's name, never the key.

  • The shipped Toolkit template has the entry commented out, since it needs a Firecrawl key.

  • 18 new tests (42 total).

What's Next

  • Other templates with funding sections (market-map-profile, market-category-profile, and organization-profile in a vault) could use the same entry.

  • Moving Perplexed's other plaintext keys into the keychain, per the Model Recipes blueprint.