The ERP category lists one project, Odoo, but the intro's "How to choose" list compared Odoo editions and hosting options as if they were picks.
Co-Authored-By: Claude <noreply@anthropic.com>
An intro without a "How to choose" list, as a one-project category has no picks to compare, rendered all of its guide paragraphs above the table, pushing the table down. It now shows the lead above the table and moves the rest into the guide.
Co-Authored-By: Claude <noreply@anthropic.com>
Nine picks, such as "OpenAI Agents SDK", "MCP Python SDK", and "Jupyter Notebook", linked only part of the name or nothing, because the README lists those projects under their PyPI or repo names. The punctuation-guard test used "The Algorithms - Python", which now matches its alias in full, so it uses a made-up name instead.
Co-Authored-By: Claude <noreply@anthropic.com>
"Odoo Online", "Odoo Community", and "Odoo Enterprise" matched only "Odoo", so each link stopped before the edition name.
Co-Authored-By: Claude <noreply@anthropic.com>
Copy told visitors to tap a tag to filter and mentioned a filter although tags are plain links and no filter exists; casing and terminology were inconsistent.
Co-Authored-By: Claude <noreply@anthropic.com>
"Indie Dev from $99 a month" put "from" on one tier although every tier discounts longer terms, the duration line listed terms the tier cards don't price, and the independence note left out the site placement.
Co-Authored-By: Claude <noreply@anthropic.com>
Below 960px the -1rem top margin on the sponsor link, meant for the side-by-side desktop layout, pulled the sponsor name closer to the link than the link sat to its own label, so the link read as part of the sponsor entry.
Co-Authored-By: Claude <noreply@anthropic.com>
On phones the hero stats ran together as one sentence, breaking wherever space ran out and leaving a "/" dangling at a line end.
Co-Authored-By: Claude <noreply@anthropic.com>
At phone width the two primary buttons labelled with the full address wrapped over three lines, and the address in the Get started sentence broke at its hyphen.
Co-Authored-By: Claude <noreply@anthropic.com>
On narrow phone heroes the sheen, a diagonal light stripe sliding across for 54s after load, rendered as a near-vertical band sweeping sideways that read as a loading or progress bar.
Co-Authored-By: Claude <noreply@anthropic.com>
The home hero was forced to the full viewport height, opening an empty band between the top bar and the headline whenever its content was shorter than the window and pushing the project table down.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsor copy bolded two phrases in the README call to action, repeated tier prices already in the tier headings, repeated one phrase across three Content tiers, and had a double "or" in the Duration line.
Co-Authored-By: Claude <noreply@anthropic.com>
Sponsorship-page, sponsor band, category, group-page lead, and home hero links fell back to the browser's default focus ring.
Co-Authored-By: Claude <noreply@anthropic.com>
SPONSORSHIP.md tells sponsors their links carry UTM tags, but the /sponsorship/ page, which mirrors it, left that out.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsor band's background faded from --bg-paper-strong to --bg-paper, ending lighter than the page below it, with only a faint bottom border, so the band blended into the search section and read as its intro rather than a sponsor placement; the sponsor name also gave no cue that it links out.
Co-Authored-By: Claude <noreply@anthropic.com>
The longer billing lines added with the annual prices broke across two or three lines beside the price and split amounts from their units.
Co-Authored-By: Claude <noreply@anthropic.com>
On phones the hero's 74-link category grid was 1,236px tall and pushed the project table down to 2,583px, over three screens.
Co-Authored-By: Claude <noreply@anthropic.com>
Below 960px the table hid the PyPI Downloads column but kept the default downloads sort, so the visible Stars column looked unsorted and the active sort header was not shown or tappable.
Co-Authored-By: Claude <noreply@anthropic.com>
Keyboard focus on a table row drew one box per cell, because the focused row fell back to the browser's default outline and each cell also got an inset accent stripe on its left edge.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsorship hero kicker sat farther above the heading than the heading sat above its subtitle, so the label read as detached from the heading it labels.
Co-Authored-By: Claude <noreply@anthropic.com>
The subtitle's fixed top margin did not grow with the fluid h1, so heading descenders crowded the subtitle on category and sponsorship heroes.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsorship ledes were set in Cormorant Garamond, whose short x-height and thin strokes read poorly across a paragraph, and past sponsor names shared a baseline with Manrope descriptions, where the mismatched x-heights clash.
Co-Authored-By: Claude <noreply@anthropic.com>
On the sponsorship page the tier names and fact labels rendered smaller than the "/ month" cadence beneath them, inverting the hierarchy.
Co-Authored-By: Claude <noreply@anthropic.com>
Roughly 20 ad-hoc font-size values rendered near-duplicate sizes 1-2px apart, reading as noise rather than hierarchy, and .hero-category-link rendered below the documented 12px floor.
Co-Authored-By: Claude <noreply@anthropic.com>
Sponsorship tier prices rendered in Cormorant Garamond's default old-style figures, so zeros sat at x-height and the 5 dropped below the baseline, making "$500" hard to read.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsor band rendered only on the homepage, so visitors who entered on a category page and never opened the homepage saw no sponsors. Category, subcategory, group, and Stdlib pages now show the same band between the hero and the table.
Co-Authored-By: Claude <noreply@anthropic.com>
The sponsor band markup lived inline in index.html, so another page could show it only by copying the markup. The rendered homepage is byte-identical.
Co-Authored-By: Claude <noreply@anthropic.com>
Featured cost $200/month, about twice Indie Dev's $99, yet offered the same text-only README entry and website link, leaving little visible reason to pick it over Indie Dev. Featured now includes a small logo next to its README entry and a logo on the website, and the Get Started content list asks Featured sponsors for a logo.
Co-Authored-By: Claude <noreply@anthropic.com>
Sponsor links carried no UTM tags, so sponsors saw awesome-python clicks at best as generic referral traffic and could not tell README clicks from website clicks. README sponsor entries now carry utm_source=awesome-python&utm_medium=sponsorship&utm_campaign=sponsor&utm_content=readme, and the website build rewrites utm_content to website for the sponsor band. New sponsor entries in README.md need the same UTM suffix.
Co-Authored-By: Claude <noreply@anthropic.com>
The README sponsor CTA linked to SPONSORSHIP.md, so sponsor-page visits from the README never reached GA4.
Co-Authored-By: Claude <noreply@anthropic.com>
Mailto clicks on the sponsorship page leave no page view, so the sponsor funnel ended at the sponsorship page and never showed who went on to email. Each click now sends a sponsor_contact event with a short tier value (headline, featured, indie, or general) rather than the link URL, since GA4 caps event parameter values at 100 characters and the Indie Dev mailto href is 101.
Co-Authored-By: Claude <noreply@anthropic.com>