Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
Crossfeed ranks a podcast network’s own shows by how much their listeners overlap a launch’s, in Qloo, and drafts the promo plan as an insertion order you approve.
MarketingTypeScript · JavaScriptGitHub @m1kuorgOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
An agent that ranks a podcast network's own shows and pitched guests by listener overlap in Qloo, then drafts a promo plan a person approves.
Taken from the repository README
Loading the full README.
Read the full README ↗Every host-read promo a podcast network runs for its new show is an ad slot it didn't sell, yet launch plans are drawn up by topic: the new true-crime show goes on the other true-crime shows. Crossfeed plans by who listens instead. It looks the launch and the network's shows up in Qloo, ranks the roster by how much each show's listeners overlap the launch's, asks a person at each fork, and drafts an insertion order that code prices from the network's own downloads and CPM. A member approves it; the agent never can.
The same engine works the booking inbox. Crossfeed reads the pitches publicists send, looks up the public work each guest is promoting, a book, film, TV show, or podcast, ranks those works against a show's listeners, and drafts a reply to every pitch for the booker to approve, edit, or discard.
Beside every Qloo ranking sits the plan an agent without Qloo would make: Claude's ranking from show names and descriptions, or from a pitch's own words, with no Qloo data. So what Qloo adds is on the screen, not asserted.
It's a product a network's members sign in to, with passkeys, shared networks, a REST API, a TypeScript SDK, an MCP server, and a Claude Code plugin. Anyone can try it as a guest, in one click, on a sample network built from The Ringer's public show names, with labelled sample figures. Crossfeed isn't affiliated with The Ringer.
Built for the Qloo Agentic Hackathon: the entry is on Devpost, and docs/SUBMISSION.md is its full text.
The live app on October 30, 2026, signed in as a guest, on the guest network's sample data.
Start a run. Open a launch, such as the sample network's The Watch, and select Start run. The agent looks the launch up in Qloo, ranks the roster against its listeners in one call, and asks you for a slot budget, then which shows to leave out.
See who shares its listeners. The fit chart ranks the roster by listener overlap, with each show's rank in a topic-only plan beside it. A show that climbs three or more places is marked ▲: select it for why it moved, and select a call number, such as C-53, for the Qloo request and raw scores behind it.
Approve the plan. The agent drafts slots and a host-read angle for each finalist from the tags its listeners share with the launch's in Qloo. Code prices each slot, holds the plan to the budget, and names any close pairs among its shows. Only a member approves it, and only then exports the CSV.
Hand it on. An approved order has a launch report to print or save as PDF, with an index of every Qloo call it cites.
Run it again. Answer differently, and the launch's Changes tab says what changed since the earlier run: the inputs, the finalists, each show's move, and the plan's slots and value.
Work the inbox. On the inbox's Rank tab, select Rank pitches. Each type of pitched work is ranked against the show by who listens, beside its rank by the pitch's own words, and every pitch gets a drafted reply under Book, Later, or Decline.
.eml, .mbox, or text. Only each work's title and type reach Qloo, never a name, an address, or the pitch's text.@crossfeed/sdk TypeScript client, an MCP server at /mcp, two Agent Skills, and a Claude Code plugin. None of them can approve anything.One Worker serves every surface. Each network and each launch is its own Agents SDK Durable Object, which runs Claude's tool loop, and every Qloo call goes through one gateway Durable Object that caches, paces, retries, and caps them. A D1 database holds only what has to be looked up across them: members, networks, sessions, invites, and API keys. docs/TRD.md has the whole design.
Made with Archify from architecture.json, in Crossfeed's colours by export-architecture.mjs.
claude-haiku-5-5), through the Anthropic TypeScript SDK.Crossfeed runs on your computer under Vite's dev server, which runs the Worker, its Durable Objects, and a local D1 database as Cloudflare would, with no Cloudflare account. It calls the real Qloo and Anthropic APIs, so it needs a key for each. The tests need neither.
QLOO_API_KEY.ANTHROPIC_API_KEY.localhost.Clone and install. The app is in apps/.
git clone https://github.com/m1kuorg/qloo.git
cd qloo/apps
bun install
Add your keys. Write them to .dev.vars, which is git-ignored, with two random values: VISITOR_SALT salts the visitor hash behind the daily limits, and QLOO_KEY_SECRET encrypts each network's own Qloo key.
printf 'QLOO_API_KEY=%s\nANTHROPIC_API_KEY=%s\nVISITOR_SALT=%s\nQLOO_KEY_SECRET=%s\nGUEST_PITCHES=on\nRP_ID=localhost\nAPP_ORIGINS=http://localhost:5128\n' \
"$QLOO_API_KEY" "$ANTHROPIC_API_KEY" "$(openssl rand -hex 16)" "$(openssl rand -base64 32)" > .dev.vars
Create the local database. This applies the D1 migrations to a local copy under .wrangler/state.
bunx wrangler d1 migrations apply DB --local
Start the app. Open http://localhost:5128, then Open the sample network to sign in as a guest, or Create your network to sign up with a passkey. The local guest network holds the sample roster, inbox, and The Watch; the four sample launches are Qloo data, kept only in each deployment's database.
bun run dev -- --port 5128 --strictPort
Run the checks. The tests run the Worker in the Workers runtime, with Qloo and Anthropic faked at the network boundary, so they need no keys.
bun run typecheck
bun run test
Optionally, deploy to Cloudflare. Replace account_id and the D1 database_id in wrangler.jsonc with your own, set the four secrets with bunx wrangler secret put, and run bun run deploy. The apps README has every step, the preview environment, and the live checks.
See open issues for a full list of proposed features (and known issues).
Made with contrib.rocks.
Apache 2.0. See LICENSE for more information.
Third-party files keep their own licenses:
.agents/skills/ and linked from .claude/skills/, apart from graphify and impeccable..agents/skills/graphify/..agents/skills/impeccable/, .claude/skills/impeccable/, and .claude/agents/.apps/src/components/ui/.apps/src/icons.tsx draws.@fontsource-variable/schibsted-grotesk.