Podcast advertising without the agency markup

We match brands with independent shows, handle the agreement, and get your spot read by a host their audience already trusts.

Matched by brief

Describe who you want to reach and we find the shows that already reach them.

Transparent rates

Every show carries a published CPM. No opaque packages, no minimum spend.

Signed in minutes

The agreement is generated from your brief and emailed the moment you submit.

Harness checklist — the manual passes from brief §10 that no automated test covers. Work down it in order.
  1. Shadow DOM isolation. The launcher is a white circle with the avatar, bottom right. If it is a pink Comic Sans rectangle, the hostile global CSS above has reached it and the shadow boundary is broken.
  2. Entrance. It fades and scales in ~800ms after load, then the “Chat with Lily” pill expands and collapses again after ~4s. Reload with data-label="false" on the snippet to confirm the pill can be turned off.
  3. Lazy iframe. With the network panel open, confirm nothing is requested from :5173 until the first click.
  4. Toggle in place. The close button must occupy the exact same position and diameter as the launcher — watch for any jump as it cross-fades.
  5. Stacking. The panel, and then the expanded container, must cover both the nav (z-index: 1000) and the sticky bar (z-index: 900).
  6. Scroll lock. Scroll this page down first, then reach the show selection surface. The page must not scroll behind it, and on “Back to chat” it must scroll again from the same offset — not jumped to the top.
  7. Escape. Pressing it with focus on this page returns the widget to chat rather than leaving it stranded fullscreen. Pressing it with focus inside the widget does the same.
  8. Resume. Answer a couple of questions, then reload. The transcript must come back, not the splash. Then reload once more and confirm the launcher shows the unfinished-session dot before the panel is ever opened.
  9. Keyboard only. Tab from the top of the page to the launcher, open it with Enter, and complete the entire intake without a mouse. Every chip, field and button must show a visible focus ring.
  10. Reduced motion. Turn on the OS setting and reload: the entrance, typing dots and fullscreen transition should settle rather than animate.

To exercise the no-matches state, enter a brand name containing no match. To exercise the matching timeout, throttle GET /chat/session/:id in devtools.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.

Scroll target

Filler so the page is genuinely scrollable and the lock can be observed.