Button
@/ui/components/Button.astro
Every action that looks like a button. One action-blue button per screen; the rest are secondary.
Don’t: colour a button anything but blue, ink or white.
Every building block, shown with real Pod Engine data at the size it’s used. Resize to 375px: each one is designed for the phone first.
@/ui/components/Button.astro
Every action that looks like a button. One action-blue button per screen; the rest are secondary.
Don’t: colour a button anything but blue, ink or white.
@/ui/components/Icon.astro
Inline stroke icons, 24px grid, currentColor. Decorative unless you pass a label.
search play mail globe code rss mic arrow-right arrow-down menu close check up down external
@/ui/components/Label.astro
Short status words on a soft chapter fill: Estimated, Beta, High confidence.
@/ui/components/Sticker.astro
A tilted launch tag on a heading or card corner. One per section.
Don’t: use it for status; that’s a Label.
@/ui/components/Stamp.astro
A dated stamp on a data card: when the numbers were pulled.
@/ui/components/Shape.astro
Ink-outlined shapes that peek from behind a section. Two per section at most; hidden on phones.
Don’t: put a shape over text or inside a card.
Shapes are hidden below 768px.
@/ui/components/Paperclip.astro
Clips one card per page to the section, as if pinned on. Decorative.
Sponsors in the last 10 episodes
@/ui/components/Section.astro
One band of a page. Bands alternate paper and white; at most one dark band per page.
This page is built from Sections: each chapter here is one. The dark band is shown under AI and API.
@/ui/components/ChapterHeader.astro
The top of every homepage section: numbered disc, label, the h2, one line of lead.
Real ad reads, found in the audio, with the brand’s logo.
@/ui/components/Card.astro
plain for lists, offset for anything you can act on, feature for the one panel a section is about.
plain
offset
feature
@/ui/components/Tabs.astro
Switch panels with no JavaScript. The hero uses it to show what Pod Engine does for each paying group.
Who sponsors My First Million, and how often: 2 ad reads in the latest episode.
Every mention of your client, with the quote and the minute it was said.
The same data over MCP, the API and SDKs.
Your show’s listeners, charts and ratings, in one record.
@/ui/components/Cover.astro
The show’s own cover art, always. Every size reserves its space, so nothing shifts.
Don’t: use a stock image or a guessed cover.
@/ui/components/StatTile.astro
One number and what it means. Estimates carry a qualifier. Missing data says so instead of showing zero.
@/ui/components/SplitBar.astro
How a total divides, such as audio vs YouTube listeners. Labels carry the numbers, so it reads without colour.
@/ui/components/RatingBar.astro
Ratings per platform: the average, and a bar sized by how many people rated.
@/ui/components/ChartLine.astro
Chart positions over time, server-drawn SVG. #1 is at the top.
Lenny’s Podcast · Apple Podcasts · Technology · US
Apple Podcasts · Business · US
@/ui/components/Movement.astro
Up or down since last week, with an arrow and words, never colour alone.
@/ui/components/LogoChip.astro
A sponsor with its real logo and how often it appeared.
@/ui/components/LogoChip.astro
Every logo we serve, from our own CDN (lib/logos.ts). SVG wherever one exists; PNGs are marked for replacement.
Don’t: link a favicon service or a brand's own site.
@/ui/components/PersonChip.astro
A guest or host: initials on a chapter colour until we have an approved photo.
@/ui/components/ContactRow.astro
How to reach a show. Every item is a real link.
@/ui/components/SearchBox.astro
A real form that searches the app. Works with JavaScript off.
@/ui/components/ResultRow.astro
One episode in a result list: cover, show, title, date, the matching quote.
Marketing Against The Grain · 15 Sep 2026
“Have you heard of HubSpot? HubSpot is a CRM platform…”
Little Talks · 9 Sep 2026
“When the HubSpot folks do theirs, generally pretty on point and doesn’t always come back to selling something…”
My First Million · 7 Sep 2026 · 53:44 · 2 ad reads
@/ui/components/ProofRow.astro
The index’s headline numbers, straight under the hero. Only live numbers.
One per page at most. Used for the MCP and API chapter.
Which shows did HubSpot sponsor in September?
In the episodes I checked, HubSpot read ads on:
694 episodes mention HubSpot since 1 Sep; most are editorial, not ads.
{
"searchTerm": "HubSpot",
"publishedSince": "2026-09-01",
"adReadsOnly": true
}
@/ui/components/ChatPanel.astro
The same panel on paper.
Which shows did HubSpot sponsor in September?
In the episodes I checked, HubSpot read ads on:
694 episodes mention HubSpot since 1 Sep; most are editorial, not ads.
@/ui/components/Faq.astro
Questions in <details>, crawlable when closed, with FAQPage schema from the same props.
They’re estimates, not download counts. Each one comes with a confidence level and the signals behind it.
7.4M episodes so far, with the biggest shows first. You can request a transcript for any episode and we’ll add it.
Searching is free. You pay for contacts, exports, alerts and the API.
They’re estimates, not download counts. Each one comes with a confidence level and the signals behind it.
7.4M episodes so far, with the biggest shows first. You can request a transcript for any episode and we’ll add it.
Searching is free. You pay for contacts, exports, alerts and the API.
@/ui/components/CtaPanel.astro
The last thing on a page: one sentence, one action.
Free to search. Pay when you need contacts, exports or the API.
@/ui/components/Logo.astro
The wordmark. Swap the mark in one file when the brand mark is redrawn.
@/ui/components/Nav.astro
The header at the top of this page. Below 1200px the links fold into a menu that needs no JavaScript.
See the top of this page; resize below 1200px for the menu.
@/ui/components/Footer.astro
Four link columns and the legal line; two columns on phone. At the bottom of this page.
See the bottom of this page.
@/ui/components/Shell.astro
The frame of every page: html, head basics, skip link, Nav, main, Footer. Kinds: hub, data, article, tool.
This page uses kind="hub".
@/ui/components/PageHero.astro
The top of every page except the homepage, with the page’s one h1. Split with a proof object, or centred.
@/ui/components/Breadcrumbs.astro
Where the page sits, with BreadcrumbList schema from the same items. Every page below the top level.
@/ui/components/FeatureSplit.astro
One feature as a row: words on one side, real proof on the other. Alternate sides down a section with FeatureRows.
Don’t: use a screenshot of the old app or a stock image as the media.
@/ui/components/FeatureRows.astro
The stack around FeatureSplit rows: even spacing and dividers. Shown above.
Three to five rows per section.
@/ui/components/FeatureGrid.astro
Several short features side by side. 2, 3 or 4 columns from desktop; one on phone.
Don’t: use it for a sequence; that’s Steps.
Search what was said across 7.4M episodes.
See transcript searchListeners with confidence, split between audio and YouTube.
The same data in your code and in Claude.
@/ui/components/Steps.astro
A short sequence where order matters: how it works, getting started.
Copy your API key from the developer settings.
JavaScript or Python, or call the REST API.
npm i @podengine/sdkAsk for the latest Business chart.
GET /api/v1/charts/latest
@/ui/components/Quote.astro
A real customer’s words, approved in writing.
Don’t: invent, paraphrase or stitch quotes. The text below is a layout specimen, not a quote.
Specimen text: an approved customer quote goes here, word for word, ideally with a number in it.
@/ui/components/AsideLayout.astro
A main column with a side column, sticky from desktop. Articles (contents left) and data pages (sources right).
@/ui/components/KeyFacts.astro
The handful of numbers that define one thing, at the top of a data page.
@/ui/components/RankTable.astro
A ranked list with numbers and movement; ItemList schema on chart and best-of pages.
| # | Show | Move | Last episode |
|---|---|---|---|
| 1 | | 29 Sep | |
| 2 | | 29 Sep | |
| 3 | | 1 | 30 Sep |
| 4 | | 4 | 9 Sep |
| 5 | | 1 Oct |
@/ui/components/ComparisonTable.astro
Pod Engine against an alternative, or plans against each other. Claims about others must be checkable.
| Feature | Pod Engine API | Scraping it yourself |
|---|---|---|
| Listener estimates | Yes | –No |
| Chart history | Yes | From the day you start |
| Upkeep | None | Yours |
@/ui/components/ChipNav.astro
Switch between sibling pages (platform, country, category) with real links.
@/ui/components/Pagination.astro
Numbered pages as real links with rel prev/next.
@/ui/components/Sparkline.astro
A tiny line beside a number. Chart positions invert, so up means a better rank.
@/ui/components/Freshness.astro
When the data was updated, its source, and a ready-made citation for journalists.
Updated Source: Apple Podcasts
Pod Engine, “Top business podcasts on Apple Podcasts in the US”, 1 Oct 2026, https://www.podengine.ai/podcasts/charts/apple/us/business
Every data component has a sparse state. Show it honestly; never a zero or a guess.
| # | Show | Last episode |
|---|---|---|
| 1 | A show without a cover in our index | 30 Sep |
| 2 | | 29 Sep |
@/ui/components/DataSources.astro
Where the numbers come from and how fresh they are. End of every data page.
@/ui/components/ArticleHeader.astro
Breadcrumbs, h1, standfirst and byline with dates for articles and guides.
It renders the h1, so it is shown in the article template.
@/ui/components/Prose.astro
Styles Markdown or CMS HTML on tokens: headings, lists, links, quotes, code and tables.
Pod Engine estimates about 532K listeners a month for Lenny’s Podcast, with medium confidence.
Call it with pe.charts.getLatestChart().
@/ui/components/TableOfContents.astro
On this page: sticky from desktop, collapsed on phone. Pages with four or more sections.
@/ui/components/Callout.astro
A short aside in running text: note, tip, method, beta, caveat.
@/ui/components/RelatedLinks.astro
Where to go next. The main tool for internal links.
@/ui/components/LogoCloud.astro
Where Pod Engine works (logos) or who uses it (names as text until logos are approved). No marquee.
Works with
@/ui/components/PlanCards.astro
Plans with a billing switch that needs no JavaScript. Prices come from the catalog.
For trying Pod Engine on real shows.
Free
Free
For teams that research, buy or monitor podcasts.
$100 a month
$50 a month, billed annually save 50%
@/ui/components/SignupCard.astro
A compact sign-up prompt for a side column. The full-width one is CtaPanel.
@/ui/components/CodeTabs.astro
The same call in curl, JavaScript and Python, switched with no JavaScript.
curl "https://api.podengine.ai/api/v1/charts/latest?chartType=apple&country=us&category=business" \
-H "Authorization: $PODENGINE_API_KEY"
import { PodEngine } from '@podengine/sdk';
const pe = new PodEngine({ apiKey: process.env.PODENGINE_API_KEY! });
const chart = await pe.charts.getLatestChart({ chartType: 'apple', country: 'us', category: 'business' });
npm i @podengine/sdk
import os
from podengine import PodEngine
pe = PodEngine(api_key=os.environ["PODENGINE_API_KEY"])
chart = pe.charts.get_latest_chart(chart_type="apple", country="us", category="business")
pip install podengine