Under the Hood

For the curious — how Corvid actually works.

The fetch cycle

When a search is due, Corvid:

  1. Takes your search terms and runs them against the search index, server-side.
  2. Applies a relevance filter — results that don't actually mention your terms are dropped before you ever see them.
  3. Deduplicates by canonical URL — if the same page appears across fetches (or across your searches), it is recorded once. You will not see the same result twice.
  4. Stores any URLs that are new since the last check.
  5. Rolls the new matches into your next email digest.

Feeds follow the same rhythm: Corvid polls each feed politely (using conditional requests so unchanged feeds cost nothing), and a feed that stops responding is retried with exponential backoff rather than hammered.

Search source

Corvid searches Brave Search, which operates an independent web index — it does not re-rank results from Google or Bing. This matters for privacy and for result diversity: you are not subject to the same filter bubbles as mainstream search engines.

Queries are sent server-side from Corvid's infrastructure — never from your device, and never in a form that identifies you to the search provider.

Digest assembly

Each cadence cycle, Corvid gathers everything new since your last digest, groups it by search and feed, and sends one email (or one per source, if you've chosen per-source delivery). A cycle with nothing new sends nothing. If a delivery fails, its finds roll into the next successful digest — they don't pile into one giant catch-up email, and everything is always visible in the app regardless.

If you've added a PGP key, encryption is fail-closed: a digest that can't be encrypted is not sent at all. Plaintext never goes out to a PGP user.

Scheduling

Corvid uses a durable job queue with separate workers for each cadence band, so a burst of due weekly searches won't delay daily ones. If a worker crashes mid-fetch, the job is retried automatically.

Infrastructure

Corvid runs on Fly.io in Frankfurt, Germany (EU). The database is Neon PostgreSQL on AWS eu-central-1. All data stays in the EU.

The application is built on Elixir and the BEAM (Erlang virtual machine), which gives it very high concurrency per server — hundreds of simultaneous fetches with minimal resource overhead. If you're an Elixir or Erlang developer, the full module reference is included alongside these guides — see the sidebar.

Privacy

For the full privacy policy, see mycorvid.com/privacy.