diff --git a/.claude/agents/cro-audit.md b/.claude/agents/cro-audit.md new file mode 100644 index 00000000..a6eb1dfe --- /dev/null +++ b/.claude/agents/cro-audit.md @@ -0,0 +1,178 @@ +# CRO Audit Agent + +You are a conversion rate optimization (CRO) analyst auditing the Promptless marketing website. Your goal is to find ONE new conversion problem per run, document it thoroughly, and commit the result. + +## What this site is + +Promptless is a B2B SaaS product -- AI agents that automatically update documentation. The website is an Astro + Starlight static site running on localhost:4322. The primary conversion action is **booking a demo** (entering a work email). + +### Key pages and their roles + +| Page | Path | Purpose | +|------|------|---------| +| Homepage | `/` | Hero with email capture form -> redirects to /demo. Sections: Hero, Testimonials, How It Works, Why Promptless | +| Demo | `/demo` | Email gate -> Cal.com 15-min booking widget. Also has demo video (Tella embed) | +| Pricing | `/pricing` | Three plans: Startup ($500/mo, self-serve signup), Growth ($500-$4k/mo, book demo), Enterprise (custom, book demo). Has a "page calculator" tool | +| Blog | `/blog` | Content marketing with inline "Book demo" CTAs | +| Jobs | `/jobs` | Hiring page with demo CTA | +| Free Tools | `/free-tools` | Broken link report tool | +| Docs | `/docs/...` | Product documentation (Starlight) | + +### Conversion flow + +1. Visitor lands on any page (mostly homepage, blog, or docs via organic/referral) +2. Enters work email in hero form OR clicks a CTA on pricing/blog +3. Redirected to `/demo` where email is pre-filled in Cal.com widget +4. Books a 15-minute discovery call + +### Important source files + +- `src/components/site/Hero.astro` -- homepage hero with email form +- `src/components/site/DemoBooking.astro` -- email gate + Cal.com embed +- `src/components/site/VideoEmbed.astro` -- demo video with watch tracking +- `src/components/site/PricingCards.astro` -- pricing cards with CTAs +- `src/components/site/pricing/PricingCard.astro` -- individual pricing card +- `src/components/site/pricing/pricing.config.ts` -- plan config (prices, features, CTA labels) +- `src/components/site/Testimonials.astro` -- 6 customer testimonials +- `src/components/site/HowItWorks.astro` -- 4-step process (Listen, Draft, Review, Publish) +- `src/components/site/WhyPromptless.astro` -- 6 capability cards +- `src/components/site/BlogRequestDemo.astro` -- blog inline demo CTA +- `src/components/posthog.astro` -- PostHog initialization +- `src/content/website/home.mdx` -- homepage content composition +- `src/content/website/demo.mdx` -- demo page content +- `src/content/website/pricing.mdx` -- pricing page content + +### PostHog setup + +- **Project**: Default project (ID: 349145) +- **Dashboards**: "My App Dashboard" (id: 1378512), "Analytics basics" (id: 1378771) +- **Feature flags**: NONE (0 flags configured) +- **Experiments**: NONE (0 experiments running) +- **Actions**: NONE (0 actions defined) + +### PostHog events being tracked + +| Event | Description | +|-------|-------------| +| `$pageview` | Standard page views | +| `$pageleave` | Page exits | +| `$autocapture` | Auto-captured clicks/interactions | +| `$rageclick` | Rage clicks (frustration signal) | +| `$web_vitals` | Core Web Vitals | +| `cta_clicked` | CTA button clicks (has location property) | +| `demo_requested` | Email submitted on hero or demo page (has `location` property: "hero" or "demo_page") | +| `blog_demo_requested` | Email submitted from blog CTA | +| `demo_video_clicked` | Legacy: user clicked demo video | +| `demo_video_engaged` | Legacy: user engaged with video | +| `demo:video_clicked` | Current: user clicked into demo video iframe | +| `demo:video_watched` | Current: fired on page leave with `watch_time_seconds` and `clicked_video` properties | + +### Pricing details + +- **Startup**: $500/mo, up to 200 pages, self-serve signup (links to accounts.gopromptless.ai/sign-up) +- **Growth**: $500-$4,000/mo, 200-5,000 pages, "Book demo" CTA (links to Cal.com) +- **Enterprise**: Custom pricing, unlimited pages, "Book demo" CTA (links to Cal.com) + +## Your workflow (execute these steps in order) + +### Step 1: Read the existing log + +Read `/Users/user/src/docs/conversion-problems.md` to see what problems have already been identified. Do NOT duplicate an existing problem. You must find something NEW. + +### Step 2: Form a hypothesis + +Think like a skeptical marketing consultant who's been hired to look at this site with fresh eyes. Consider areas like: + +- **Analytics gaps**: Is there enough tracking to understand why people aren't converting? Missing funnels, missing properties, no A/B testing infrastructure? +- **CTA effectiveness**: Are the calls-to-action compelling? Is the copy clear? Is there enough urgency? +- **Trust signals**: Are there enough social proof elements? Are they positioned well? +- **Friction in the funnel**: How many steps to convert? Are there unnecessary barriers? +- **Page structure**: Is information hierarchy correct? Can visitors quickly understand what the product does and why they should care? +- **Pricing page**: Is pricing clear? Does it create objections? Is there enough information to make a decision? +- **Mobile experience**: Does the site work well on mobile? +- **Traffic quality**: Are visitors coming from the right channels? Are they the right audience? +- **Missing pages/content**: Case studies? Competitor comparisons? ROI calculator? +- **Demo page**: Is the booking flow smooth? Is the video effective? + +### Step 3: Validate with data + +Use the PostHog MCP tools to pull real traffic data that supports or refutes your hypothesis. Run relevant queries: + +- Use `query-trends` to look at traffic patterns, event volumes, and breakdowns +- Use `query-funnel` to analyze conversion funnels between steps +- Use `query-run` for custom HogQL queries if needed +- Look at page-level data, device breakdowns, referrer data, etc. + +Also take a screenshot of the relevant page on localhost:4322 to visually validate. Use this bash command: +```bash +/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --screenshot=/tmp/cro-screenshot.png --window-size=1440,900 --hide-scrollbars http://localhost:4322/ +``` +Then read the screenshot file to visually inspect. + +If localhost:4322 is not running, start the dev server first: +```bash +cd /Users/user/src/docs && npm run dev & +``` +Wait a few seconds, then take the screenshot. + +### Step 4: Research the fix + +If your hypothesis holds up (this is a real, actionable problem), search the web for best practices on fixing this specific type of CRO problem. Look for: +- What do top SaaS sites do differently? +- What does CRO research say about this specific issue? +- What's the expected impact of fixing it? + +### Step 5: Write it up + +If the hypothesis is validated, append a new entry to `/Users/user/src/docs/conversion-problems.md` using this format: + +```markdown +## Problem #N: [Short descriptive title] + +**Date identified**: YYYY-MM-DD + +**Category**: [Analytics | CTA | Trust | Friction | Structure | Pricing | Mobile | Traffic | Content | Demo | Other] + +**Hypothesis**: [1-2 sentence description of what's wrong] + +**Evidence**: +- [Data point 1 from PostHog] +- [Data point 2 from PostHog] +- [Visual observation from screenshot] + +**Testable prediction**: I predict that [specific change] will [specific measurable outcome, e.g., "increase demo booking rate from X% to Y%"] because [reasoning based on evidence and research]. + +**Recommended fix**: +- [Specific action item 1] +- [Specific action item 2] + +**Research sources**: +- [What best practices say about this] + +**Applies to**: [Which page(s) or component(s)] + +--- +``` + +Insert new entries at the TOP of the log (after the header, before previous entries). + +### Step 6: Commit + +After writing the entry, commit the changes to `conversion-problems.md`: +```bash +git add conversion-problems.md && git commit -m "cro: add problem #N - [short title]" +``` + +### Step 7: Message Slack (if invalidating an existing hypothesis) + +If during your research you find that an existing problem in the log is actually NOT a real issue or is mischaracterized, do NOT delete it. Instead, use the agent-slack skill to notify the #gtm channel + +## Important rules + +1. **Find exactly ONE new problem per run.** Stop after documenting one problem. +2. **Never delete entries** from the log. Only append new ones. +3. **Always commit** after adding an entry. +4. **Be specific** with predictions -- include numbers from PostHog data where possible. +5. **Don't duplicate** problems already in the log. +6. **Use real data** -- always query PostHog, don't guess at traffic numbers. +7. **Think like a marketer**, not a developer. The question is "why aren't visitors converting?" not "what's the code quality like?" diff --git a/astro.config.mjs b/astro.config.mjs index 7941b488..1fdb152a 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -13,6 +13,7 @@ const redirects = { '/page': '/', '/wtd': '/', '/hn': '/', + '/meet': '/demo', '/site': '/demo', '/site/demo': '/demo', '/video-demo': '/demo', diff --git a/conversion-problems.md b/conversion-problems.md new file mode 100644 index 00000000..af08eb9a --- /dev/null +++ b/conversion-problems.md @@ -0,0 +1,250 @@ +# Website Conversion Problems Log + +This is a running log of identified conversion rate problems on the Promptless marketing site. Each entry includes a hypothesis, supporting evidence, a testable prediction, and research on how to fix it. Problems are never deleted from this log -- only appended. + +--- + +## Problem #6: Demo page converts 2.27% (1 of 44 visitors) because it presents a bare email form with zero social proof, no trust signals, and no "what to expect" content -- leaving 43 high-intent visitors unconverted each month + +**Date identified**: 2026-03-24 + +**Category**: Trust / Social proof / Demo page UX + +**Hypothesis**: The `/demo` page is the single most critical conversion bottleneck on the entire Promptless site. It is the 3rd most-visited page (42 unique visitors/month), the mandatory gateway for every "Book demo" CTA across the site, and the final step before a prospect commits to a sales conversation. Yet the page presents nothing but a bare "Work email" input, a "Continue to booking" button, two GitHub commit links under "See it in action," and a demo video below the fold. There are zero testimonials, zero company logos, zero security badges, zero "what to expect" descriptions, zero benefit summaries, and zero objection-handling content. This is catastrophic for a page whose sole job is to convert warm intent into booked meetings. + +Visitors arriving at `/demo` fall into two groups, and the page fails both: (1) **Hero-submitted visitors** who already entered their email on the homepage hero form -- these users skip the email gate (their email is in sessionStorage) and see the Cal.com calendar widget directly, but the page provides no surrounding reassurance about what the meeting will involve, who they will talk to, or why they should commit 15 minutes of their day. (2) **Direct/header-navigated visitors** who click "Book demo" from the pricing page, docs, blog, or top navigation header without having provided their email -- these visitors see a cold email form with the single line of supporting copy: "Talk to one of our engineers to see how Promptless can automate your docs workflow. 30-day free trial included!" This one sentence must carry the entire persuasive burden for the page, and it clearly cannot: the demo_page email gate converts at 2.27% (1 of 44 visitors). + +Research consistently shows that placing testimonials and trust signals near the point of conversion -- the exact moment visitors decide whether to commit -- increases demo page conversion by 34-98%. The Promptless homepage already has 6 excellent customer testimonials (from Runpod, Vellum, Prove, Latitude.sh, Doc Detective, and Bazel), plus a Y Combinator badge and "Trusted by fast-growing startups and Fortune 500 enterprises" line. But none of this social proof appears on the `/demo` page where the actual conversion decision happens. By the time a visitor navigates to `/demo` (often via header link from a completely different page like /pricing or /docs), they may have never scrolled past the homepage hero to see the testimonials. The social proof exists but is stranded on the wrong page. + +**Evidence**: +- PostHog demo page funnel (last 30 days): 44 unique visitors viewed `/demo`. Only **1 converted via the demo_page email gate** (2.27% conversion rate). The remaining 43 visitors (97.73%) dropped off without converting. This makes the demo page the worst-converting step in the entire funnel relative to visitor intent level. +- PostHog demo_requested by location (last 30 days): All 7 demo_requested events came from `location: "hero"`. Only 1 came from `location: "demo_page"`. The demo page's own conversion mechanism (the email gate form) is nearly non-functional -- it captured only **1 lead in 30 days** despite 44 unique visitors. +- PostHog sitewide page ranking (last 30 days): `/demo` is the 3rd most-visited page on the entire site with 42 unique visitors, behind only the homepage (175) and jobs page (55). It receives 94 total pageviews and 94 pageleave events, meaning every visit to /demo also ends there -- visitors leave from /demo rather than navigating deeper into the site. +- PostHog demo page referrer breakdown (last 30 days): 19 unique visitors arrived via $direct, 10 from Google, 4 from Bing, 3 from Slack, 2 from WTD, 2 from YC, and 1 each from GitHub, LinkedIn, SaaStr, and others. Critically, 25 of 44 visitors (57%) came from external referrers who likely never saw the homepage testimonials. These visitors land directly on a bare email form with no supporting persuasion. +- PostHog demo video engagement (last 30 days): Only 6 demo:video_clicked events and 8 demo:video_watched events, with an average watch time of 102 seconds. This means at most 14% of demo page visitors (6/44) even interact with the demo video, and the video is below the fold underneath the email gate anyway. The video cannot compensate for the missing trust elements above it. +- PostHog homepage -> demo page -> conversion funnel (last 30 days): Of 218 homepage visitors, only 28 (12.84%) navigated to `/demo`. Of those 28, **0 converted to demo_requested** in this strict funnel. The homepage-to-demo handoff has a 100% drop-off at the conversion step. +- Code inspection of `src/content/website/demo.mdx`: The demo page content is: (1) an h2 "Book a 15-minute demo", (2) one sentence of copy, (3) the DemoBooking email gate component, (4) "See it in action" with two GitHub commit links, (5) "Watch the demo" with the Tella video embed. Zero testimonials, zero company logos, zero security badges, zero "what to expect" content, zero FAQ, zero objection handling. +- Code inspection of `src/components/site/DemoBooking.astro`: The email gate form contains only a single email input and "Continue to booking" button. No supporting text appears within the component itself. +- Screenshot of `/demo` (1440x900) confirms: the above-the-fold area shows the three-column Starlight layout with the email form squeezed into the center column. No logos, no quotes, no trust badges, no person photos, no agenda/expectation-setting. The page looks like a documentation page, not a conversion-optimized booking page. +- Comparison: The homepage has 6 customer testimonials with photos, names, titles, and company logos, plus a Y Combinator badge and trust line. None of these elements are reused or referenced on `/demo`. A visitor clicking "Book demo" from the /pricing or /docs header navigates to a page with none of this social proof. + +**Testable prediction**: I predict that adding social proof elements to the `/demo` page -- specifically customer testimonials (reusing the existing Testimonials component or a compact variant), company logos, a Y Combinator badge, a "What to expect" section describing the 15-minute call format, and a photo/bio of the engineer they will speak with -- will increase the demo page conversion rate from 2.27% to at least 8-12% within 30 days. This is a conservative estimate based on: (a) research shows testimonials near CTAs increase conversion by 34% (Martal Group) to 98% (social proof notifications), with trust badges boosting demo conversion by 2-3x on comparison pages (SaaS Hero); (b) the demo page receives 57% of its traffic from external sources who have never seen the homepage social proof, so adding it to /demo provides entirely new persuasive information; (c) the 2.27% current rate is well below the 40-60% booking-page completion benchmark for B2B SaaS (Howdygo), suggesting massive room for improvement; (d) at 44 visitors/month, even a modest lift to 8% would yield ~3-4 additional demo-page-sourced leads per month (up from 1), nearly doubling the site's total demo request volume (currently 7/month from all sources combined). + +**Recommended fix**: +- **Add testimonials above the fold**: Place 2-3 compact customer testimonials (or a rotating quote) immediately below the email gate form on `/demo`. Reuse data from `src/components/site/Testimonials.astro` but create a compact variant (e.g., `TestimonialsCompact.astro`) that shows 2-3 quotes in a smaller format with photos and company logos. Prioritize quotes from recognizable companies or quotes that speak to ROI (Eduardo from Latitude.sh: "It works incredibly well and basically pays for itself right away" and Mo from Runpod: "My team literally calls me a 10x tech writer"). +- **Add company logos bar**: Display a row of customer logos (Runpod, Vellum, Prove, Latitude.sh, Doc Detective, Bazel) below the email form with a "Trusted by" label, matching the pattern used by virtually every high-converting SaaS demo page. +- **Add Y Combinator badge**: The homepage has a "Backed by Y Combinator" badge that never appears on /demo. Add it near the email form to provide immediate third-party validation for visitors who landed directly on /demo. +- **Add "What to expect" section**: Before or alongside the email form, add brief copy explaining: (a) who they will talk to (e.g., "Talk to Prithvi, our CEO and co-founder" with a headshot), (b) what the 15-minute call covers (e.g., "See a live demo of Promptless on your docs, discuss your workflow, and get a custom estimate"), (c) that there is no commitment required ("30-day free trial included, no credit card required"). This sets expectations and reduces the perceived risk of the commitment. Research shows making the demo feel human (showing who you will speak with) and transparent (stating the time commitment upfront) significantly reduces booking anxiety. +- **Move video above the fold or reposition**: Currently the demo video is below the GitHub links section and below the fold. Consider moving it higher or placing a thumbnail/teaser above the fold with a "Watch 2-min demo" link, since 88% of people say they would not book a demo without seeing the product first (Howdygo). +- **Track with distinct location**: Ensure each new element is trackable -- add `cta_clicked` events with locations like `demo_page_testimonial`, `demo_page_logo_bar`, etc., to measure which trust elements drive the most incremental conversions. + +**Research sources**: +- Martal Group 2026 B2B Conversion Statistics: "Customer testimonials increase sales page performance by 34%, while social proof notifications can boost conversions by up to 98%." Placing social proof near the point of conversion is critical. (https://martal.ca/conversion-rate-statistics-lb/) +- SaaS Hero 2026 B2B Landing Page Optimization: "Placing testimonials or trust signals near CTAs or signup forms increases conversions by 84-270%." Trust badges on demo/comparison pages boost conversion by 2-3x. Companies should "name your clients specifically -- '45+ companies' is good, 'Including Toast, Ahrefs, and Strapi' is better." (https://www.saashero.net/design/landing-page-optimization-b2b-saas/) +- Howdygo 8 Examples to Increase Book a Demo Page Conversion: "88% of people say they wouldn't book a demo without having seen a product first." Removing top navigation and adding social proof on the booking step reduces last-mile anxiety. Booking-page completion should target 40-60%+. "Just because you've added testimonials to your main landing page doesn't necessarily mean a prospect has seen them or remembers them. Remind them that they're in good company when they are about to convert." (https://www.howdygo.com/blog/increase-conversion-of-your-book-a-demo-page) +- Rivia.ai Demo Page Best Practices: "Add video testimonials... highlight compliance badges (GDPR, CCPA, SOC2)... include a clear explanation of demo duration and format... keep the demo requesting form short and straightforward." FAQ sections addressing common objections are recommended. (https://www.rivia.ai/blog/request-a-demo-page-examples-and-best-practices) +- Aimers SaaS CRO Trends 2026: "The average B2B SaaS website converts at 2.3% of visitors to leads, while top performers exceed 10%." Demo booking pages are the final conversion step and require the highest concentration of trust signals. (https://aimers.io/blog/saas-conversion-rate-optimization-key-trends) +- Genesys Growth B2B SaaS Landing Page Best Practices 2026: "Social proof reduces perceived risk and validates purchasing decisions... quantified testimonials such as 'Increased productivity by 35%' carry more weight than generic praise." Security badges, partner logos, and integration badges demonstrate ecosystem compatibility that technical evaluators require. (https://genesysgrowth.com/blog/designing-b2b-saas-landing-pages) +- Pixelswithin B2B SaaS Conversion Benchmarks 2026: Visitor-to-lead rates of 5-15% for top performers versus 1.5% averages. Demo-to-close rates of 10-25%. The Promptless demo page at 2.27% is at the bottom of the range and well below the 40-60% booking completion benchmark. (https://pixelswithin.com/b2b-saas-conversion-benchmarks-2026/) + +**Applies to**: Demo page (`/demo`), specifically `src/content/website/demo.mdx` (page content -- add testimonials, logos, "what to expect" section), `src/components/site/DemoBooking.astro` (email gate component -- add surrounding trust context), and potentially a new `TestimonialsCompact.astro` component for the demo page variant. The existing `Testimonials.astro` component data (quotes, photos, logos) should be reused. The `src/components/site/Hero.astro` trust badge ("Backed by Y Combinator") pattern should also be replicated on /demo. + +--- + +## Problem #5: Desktop visitors convert at 0.47% -- 14x worse than mobile -- because the Starlight documentation layout compresses the homepage hero into a narrow three-column view, burying the CTA between sidebars + +**Date identified**: 2026-03-24 + +**Category**: Layout / Desktop UX + +**Hypothesis**: The homepage and demo page are rendered inside Starlight's `StarlightPage` component with `hasSidebar` enabled and `template: 'doc'`, which on desktop produces a three-column layout: left sidebar (website navigation), center content, and right "On this page" table of contents. This documentation-appropriate layout is devastating for the marketing homepage's conversion performance. On desktop (1440px), the hero section -- containing the only email capture form on the page -- is squeezed into a narrow center column (~60% viewport width) flanked by two navigation panels that add visual clutter, split attention, and violate the core CRO principle that marketing landing pages should minimize distractions and focus on a single conversion goal. The email input (min-width: 18rem) and "Book demo" button render as small inline elements that are easy to overlook within this compressed space. On mobile, by contrast, the sidebars collapse entirely, the form input and button go full-width (`width: 100%` via CSS media query), and the CTA dominates the viewport. The result is a 13.7x conversion gap: desktop converts at 0.47% (1 of 212 unique visitors) while mobile converts at 6.45% (6 of 93 unique visitors). This completely inverts the normal B2B SaaS pattern, where desktop typically converts 2x higher than mobile because B2B buyers research and commit on work computers. The Promptless site is leaving its largest, highest-quality audience segment (desktop visitors from Google, LinkedIn, Hacker News, GitHub, and Y Combinator) almost entirely unconverted. + +**Evidence**: +- PostHog device breakdown (last 30 days): 212 unique desktop visitors, 93 unique mobile visitors. Desktop accounts for 69.5% of all site traffic -- the dominant audience. +- PostHog `demo_requested` by device (last 30 days): **Desktop: 1 event. Mobile: 6 events.** Desktop conversion rate: 1/212 = 0.47%. Mobile conversion rate: 6/93 = 6.45%. Mobile converts at **13.7x** the desktop rate. +- PostHog homepage funnel by device (last 30 days): Desktop: 141 homepage visitors -> 1 converted (0.71%). Mobile: 35 homepage visitors -> 2 converted (5.71%). Desktop homepage conversion is **8x worse** than mobile. +- PostHog engagement depth by device (last 30 days): Desktop users average **4.97 pageviews per session** vs mobile's 2.48 pageviews. Desktop visitors are 2x more engaged (viewing twice as many pages) yet convert at 1/14th the rate -- the textbook signature of a desktop-specific UX/layout problem rather than a traffic quality problem. +- PostHog desktop referrer breakdown (last 30 days): Desktop traffic comes from $direct (137), Google (41), Hacker News (9), LinkedIn (8), YC (8), GitHub (6), Write the Docs (5). These are exactly the high-intent B2B discovery channels where buyers are at their desks evaluating tools. This is the highest-quality traffic the site receives. +- PostHog desktop page breakdown (last 30 days): 141 unique desktop users on homepage, 34 on /demo, 33 on docs/welcome, 32 on /pricing. Desktop visitors are browsing deeply across multiple high-intent pages (pricing, docs, demo) yet failing to convert. +- PostHog `cta_clicked` by location (last 30 days): Only 15 total cta_clicked events across all locations (10 from nav, 1 from free_tools, 1 from hero, 1 from jobs_page, 1 from mobile_menu, 1 from pricing_startup). The hero CTA click-through is abysmal (1 click from 176+ homepage visitors = 0.57%) -- visitors are not interacting with the form. +- Code inspection of `src/pages/index.astro`: Homepage uses ``, explicitly rendering the marketing homepage inside Starlight's documentation three-column layout. +- Code inspection of `src/pages/demo.astro`: Demo page also uses identical `StarlightPage` with `hasSidebar` and `template: 'doc'`. +- Code inspection of `src/styles/site.css`: The hero form `.pl-site-form-row` is inline flex with a small input (`min-width: 18rem`) and compact button. On mobile (the media query at the bottom of the file), the form switches to `width: 100%` for both input and button, making them full-width and visually prominent. This mobile override does not exist for desktop. +- Desktop screenshot (1440x900) confirms: the homepage hero is rendered in a narrow center column with "Overview / Demo / Pricing / Work at Promptless! / WTD 2026" sidebar on the left and "On this page: Overview / Book a demo / Testimonials / How Promptless works / Why Promptless?" panel on the right. The email form appears as a small, inline element (~350px wide) competing with 10+ navigation links across two side panels. +- Mobile screenshot (390x844) confirms: no sidebars visible, hero title and subtitle take full width, email input and "Book demo" button are full-width blocks that dominate the viewport. The CTA is impossible to miss. +- Industry benchmark inversion: Research shows desktop B2B conversion rates average 4.8-5% vs mobile at 1.6-2.9% (desktop converts ~2x higher). The Promptless pattern (desktop 0.47%, mobile 6.45%) is completely inverted -- desktop is 10x below the industry average and mobile is 2-4x above it. This strongly indicates a desktop-specific layout problem rather than a general conversion issue. + +**Testable prediction**: I predict that rendering the homepage (and ideally the demo page) outside the Starlight documentation layout -- either by removing `hasSidebar` and the sidebar/TOC panels, or by creating a dedicated landing page layout that gives the hero full viewport width on desktop -- will increase the desktop homepage conversion rate from 0.71% to at least 2.5-3.5% within 30 days. This is conservative because: (a) the mobile conversion rate of 5.71% on the same content proves the value proposition and CTA copy are effective when presented without layout distractions; (b) desktop visitors are the higher-intent audience (4.97 pages/session, from Google/LinkedIn/HN) so they should convert at least as well as mobile if given equal visual prominence; (c) the research shows CTAs surrounded by white space increase conversions by up to 232%, and removing navigation distractions from demo/landing pages improves conversion by 2.3-15%. At the current 212 desktop visitors/month, even a modest improvement from 0.47% to 3% would yield ~6 additional desktop demo requests per month (up from 1), roughly tripling the site's total demo request volume. + +**Recommended fix**: +- **Immediate (high impact)**: Remove `hasSidebar` from the homepage `StarlightPage` configuration in `src/pages/index.astro` and remove the `sidebar` and `headings` props so the homepage renders without the left sidebar and right TOC panel. This gives the hero section the full content width on desktop. Test with `hasSidebar={false}` or by removing the prop entirely. +- **Better (dedicated layout)**: Create a purpose-built landing page layout for the homepage that bypasses Starlight's documentation chrome entirely. The hero section should span the full viewport width with generous whitespace around the email form and CTA button. No sidebar, no table of contents, no documentation navigation. The top header with "Sign up" and "Book demo" CTAs can remain. +- **Desktop form styling**: Increase the desktop form prominence by making the email input wider (e.g., `min-width: 24rem` or `width: 100%; max-width: 28rem`) and the button larger. Add more vertical margin above and below the form to create breathing room and draw the eye. +- **Demo page**: Apply the same layout fix to `src/pages/demo.astro` -- the demo page also uses `hasSidebar` with `template: 'doc'`, compressing the email gate and Cal.com widget between sidebars. Since 0 of 44 demo page visitors converted via the demo page email gate in 30 days, removing the sidebar distractions could help the demo page's own conversion as well. +- **Preserve navigation access**: If removing the sidebar entirely is too aggressive, consider hiding it only for the homepage hero section (e.g., a full-width hero above the Starlight layout) or making the left sidebar collapsible on marketing pages. The critical insight is that the hero form must not compete for attention with navigation elements. +- **Track device type on conversion events**: Add `$device_type` or a custom `device` property to `demo_requested` events so the team can monitor the desktop/mobile conversion gap over time and verify that layout changes are closing it. + +**Research sources**: +- SaaS Hero 2026 B2B Conversion Benchmarks: Desktop conversion rates average 4.8-5% vs mobile at 1.6-2.9% in B2B SaaS. The Promptless desktop rate of 0.47% is 10x below the desktop industry average, indicating a severe desktop UX problem. (https://www.saashero.net/content/2026-b2b-saas-conversion-benchmarks/) +- DesignRush CRO Statistics 2026: "CTAs surrounded by white space can increase conversions by an astounding 232%." Personalized CTAs convert 42% more. Landing pages with fewer than 10 elements convert at twice the rate of pages with 40+ elements. (https://www.designrush.com/agency/conversion-optimization/trends/cro-statistics) +- Omniconvert Hero Section Optimization: "A cluttered hero section with multiple headings, images, buttons, and visual distractions leads to cognitive overload. A clean, minimal layout with clear spacing, one dominant headline, and a single CTA improves focus and reduces user hesitation." (https://www.omniconvert.com/blog/hero-section-examples/) +- Mouseflow SaaS CRO Experiments: "By removing the top menu bar from landing pages and demo booking pages, leaving only two options (book a demo or sign up for a free trial), they achieved a 2.3% improvement in conversion rates." Removing navigation distractions directly improved demo booking conversion. (https://mouseflow.com/blog/cro-for-saas/) +- ALF Design Group SaaS Hero Best Practices: "Every element must serve the primary conversion goal. If an element doesn't support that goal, remove it. Navigation links to your blog or careers page are classic distractions." (https://www.alfdesigngroup.com/post/saas-hero-section-best-practices) +- Reform.app Mobile vs Desktop Form Performance: Desktop forms convert 14% better than mobile on average (3.2% vs 2.8%). When a site's pattern is inverted (mobile beating desktop by 14x), it signals a desktop-specific layout or UX failure rather than a traffic quality issue. (https://www.reform.app/blog/mobile-vs-desktop-form-performance-comparison) +- Pathmonk Desktop vs Mobile Conversion Analysis: "Mobile traffic has been the default buyer touchpoint, yet a lot of B2B sites still behave like desktop-first brochures that happen to resize." The reverse -- a documentation site that happens to resize for marketing -- is equally problematic. (https://pathmonk.com/conversion-rate-mobile-desktop/) +- Fibr.ai 2026 SaaS Landing Page Best Practices: Among 20+ high-converting SaaS landing pages analyzed, none use documentation-style three-column layouts for their marketing homepage. All use full-width or split-screen hero sections with generous whitespace. (https://fibr.ai/landing-page/saas-landing-pages) + +**Applies to**: Homepage (`/`) via `src/pages/index.astro` (StarlightPage configuration with `hasSidebar`), Demo page (`/demo`) via `src/pages/demo.astro` (same layout), `src/styles/site.css` (desktop form sizing), and potentially a new landing page layout component. The core fix is changing the `hasSidebar` prop and/or creating a marketing-specific page layout that gives the hero section full viewport width on desktop. + +--- + +## Problem #4: Blog section converts 0% of 62 unique monthly visitors -- 7 of 9 posts have no CTA, wasting the site's highest-quality external traffic source + +**Date identified**: 2026-03-24 + +**Category**: CTA / Content marketing + +**Hypothesis**: The blog section (`/blog/...`) receives 168 pageviews from 62 unique visitors per month, making it the third-largest traffic section after the homepage and docs. Critically, blog traffic comes disproportionately from high-value external sources: Google organic (21 pageviews), Hacker News (16), LinkedIn (7), and Slack shares (4) -- these are exactly the awareness-stage B2B channels where potential buyers first discover Promptless. Despite this, the blog converts at **0.0%** to `demo_requested` because 7 of 9 blog posts contain zero conversion elements. Only 2 posts (`agent-docs` and `why-were-building-promptless`) include the `BlogRequestDemo` email capture component; the other 7 -- including several with meaningful traffic like `ambient-capture` (6 pageviews, 4 unique users) and `running-a-lightweight-research-paper-club` (12 pageviews, 3 unique users) -- end abruptly with no CTA, no email form, and no link to `/demo`. The blog index page (`/blog`, 42 pageviews, 16 unique users) also has no conversion element. Blog visitors who read a full article and become interested in Promptless have no way to take the next step without self-navigating through the header. This is a distinct problem from the docs dead-end (Problem #3) because blog readers are top-of-funnel awareness visitors arriving from external channels, not mid-funnel evaluators already considering the product. They require a different CTA strategy: softer, content-contextual prompts that bridge from "this is an interesting idea" to "I want to see this in action." + +**Evidence**: +- PostHog pageview data (last 30 days): Blog pages received 168+ total pageviews from 62 unique visitors. Top blog pages by unique visitors: `/blog/technical/agent-docs` (26 unique users), `/blog/technical/agent-docs/` (19 unique users -- trailing slash variant), `/blog` index (16 unique users), `/blog/technical/why-were-building-promptless` (14 unique users), `/blog/technical/ambient-capture` (4 unique users), `/blog/life-at-promptless/running-a-lightweight-research-paper-club` (3 unique users). +- PostHog blog-to-demo_requested funnel (last 30 days): 62 unique blog visitors -> **0 converted to `demo_requested`**. This is a complete 0.0% conversion rate -- the blog produces zero measurable leads despite being the primary content marketing channel. +- PostHog blog-to-/demo-page funnel (last 30 days): 62 blog visitors -> 10 (16.13%) eventually navigated to `/demo`. This proves significant conversion intent exists among blog readers -- 1 in 6 actively seeks out the demo page on their own. Yet none completed the email form, likely because the navigation path introduces friction (leave blog -> find header link -> land on /demo -> see email gate -> decide it's too much effort). +- PostHog `blog_demo_requested` events (last 30 days): Only **1 total** blog_demo_requested event fired in 30 days, despite the 2 blog posts with CTAs receiving 48+ unique visitors combined. This suggests even the existing blog CTA is underperforming, possibly because it appears too far down in long posts. +- PostHog blog referrer breakdown (last 30 days): Blog traffic comes from $direct (113 pageviews), Google (21), Hacker News (15+1), LinkedIn (6+1), Slack (4), and others. These are exactly the top-of-funnel channels where B2B buyers discover new tools -- yet the blog fails to capture any of them. +- Code inspection: Only `src/content/blog/technical/agent-docs.mdx` and `src/content/blog/technical/why-were-building-promptless.mdx` import and use `BlogRequestDemo`. The other 7 blog posts (`ambient-capture.mdx`, `running-a-lightweight-research-paper-club.mdx`, `i-must-scream.mdx`, `parrots-are-underrated-pets-and-tools.mdx`, `writing-code-was-hard-actually.mdx`, `vellum.mdx`, `launch-week-december-2025.mdx`) have zero conversion elements -- no `BlogRequestDemo` import, no links to `/demo`, no email capture form. +- Code inspection of blog index: The `/blog` page (rendered by Starlight) lists blog posts with titles and excerpts but contains no CTA component, no email form, and no "Book demo" prompt. The 16 unique visitors who browse the blog listing page see only article links. +- Screenshot of `/blog/technical/ambient-capture` confirms: the article ends with a "Read more" link back to the blog index. No CTA, no email form, no demo prompt appears anywhere in the content body or after the article. The only conversion path is the small "Book demo" button in the header. + +**Testable prediction**: I predict that adding the `BlogRequestDemo` CTA to all 9 blog posts (or creating a global blog CTA injection mechanism) and adding a CTA to the blog index page will increase the blog-to-demo conversion rate from 0.0% to at least 1.5-2.5% within 30 days, generating an estimated 1-2 additional demo requests per month from the current 62 monthly blog visitors. This is conservative because: (a) 16.13% of blog visitors already self-navigate to `/demo`, proving high conversion intent; (b) the 2 posts that already have the CTA generated 1 `blog_demo_requested` event, so extending CTAs to the other 7 posts should produce additional conversions proportionally; (c) blog traffic is growing, with `agent-docs` alone attracting 45+ unique visitors (the #1 blog post by far), and new posts will also benefit from a global CTA mechanism. Furthermore, because blog visitors come from external channels (Google, HN, LinkedIn), converting even a small percentage represents net-new leads that would otherwise be completely lost -- these visitors have no prior relationship with Promptless and may never return if they leave without converting. + +**Recommended fix**: +- **Immediate**: Add `import BlogRequestDemo from '@components/site/BlogRequestDemo.astro';` and `` to the bottom of all 7 blog posts that currently lack it (`ambient-capture.mdx`, `running-a-lightweight-research-paper-club.mdx`, `i-must-scream.mdx`, `parrots-are-underrated-pets-and-tools.mdx`, `writing-code-was-hard-actually.mdx`, `vellum.mdx`, `launch-week-december-2025.mdx`) +- **Scalable**: Create a Starlight content override or blog layout wrapper that automatically injects the `BlogRequestDemo` CTA at the bottom of every blog post, so new posts get CTAs by default without authors needing to remember to add them +- **Blog index CTA**: Add a prominent CTA to the blog index page (`/blog`) -- either a banner at the top ("Want to see Promptless in action? Book a 15-minute demo.") or an inline CTA card between blog post listings +- **Contextual CTA copy**: For product-relevant posts (agent-docs, ambient-capture, why-were-building-promptless), use a contextual CTA like "Want to see this in your docs workflow? Book a demo." For culture/engineering posts (paper-club, i-must-scream), use a softer CTA like "Interested in Promptless? See it in action." +- **Track with distinct location**: Ensure the `blog_demo_requested` event fires with a `blog_post` property containing the slug, so the team can measure which articles drive the most conversions and prioritize content strategy accordingly +- **Stage-appropriate CTA**: Since blog readers are top-of-funnel, consider offering a lower-friction alternative alongside "Book demo" -- e.g., "Watch the demo video" (linking to the Tella embed on `/demo`) for visitors not yet ready to commit to a call. This dual-CTA approach captures both high-intent and exploratory visitors. + +**Research sources**: +- Aimers SaaS CRO Trends 2026: "The average B2B SaaS website converts at 2.3% of visitors to leads, while top performers exceed 10%." Blog content is a primary top-of-funnel entry point, and every content page needs a clear conversion path. (https://aimers.io/blog/saas-conversion-rate-optimization-key-trends) +- Directive Consulting B2B CRO Playbook 2026: "B2B buyers rarely convert on the first visit, so the goal is momentum across sessions, not one perfect landing page. Design internal linking and CTAs that guide visitors from education to proof to action without dead ends." Blog posts without CTAs are dead ends by definition. (https://directiveconsulting.com/blog/blog-b2b-conversion-rate-optimization-guide/) +- First Page Sage CTA Conversion Rates Report 2026: Meta-analysis confirms that contextually placed in-content CTAs significantly outperform header-only CTAs. Place CTAs "in prominent areas, like at the beginning, middle, and end of posts." (https://firstpagesage.com/reports/cta-conversion-rates-report/) +- Mouseflow SaaS CTA Strategies: "If your scroll depth data reveals users rarely make it to your current CTA, moving or adding one higher on the page may improve conversion rates." For long blog posts, consider mid-article CTAs in addition to end-of-article placement. (https://mouseflow.com/blog/ctas-for-saas/) +- SaaS Hero 2026 Conversion Benchmarks: "SEO-sourced leads achieve 51% MQL-to-SQL conversion versus 26% for PPC leads" -- Google organic blog traffic represents the highest-quality top-of-funnel source, making blog conversion especially high-leverage. (https://www.saashero.net/customer-retention/b2b-saas-conversion-benchmarks-journey/) +- Umbrex Blog Conversion Analysis: Best practices for blog-to-lead conversion include placing CTAs at natural conclusion points, matching CTA messaging to article topic, and tracking which articles drive the most conversions to inform content strategy. (https://umbrex.com/resources/ultimate-guide-to-company-analysis/ultimate-guide-to-marketing-analysis/conversions-from-blog-content-analysis/) + +**Applies to**: All blog posts (`/blog/...`), specifically the 7 blog post files without CTAs in `src/content/blog/`, the blog index page (`/blog`), and `src/components/site/BlogRequestDemo.astro` (the existing blog CTA component that should be reused). A Starlight blog layout override would be the most scalable approach. + +--- + +## Problem #3: Documentation section is a conversion dead end -- 51 of 52 docs pages have zero CTAs, wasting the site's most engaged audience + +**Date identified**: 2026-03-24 + +**Category**: CTA / Structure + +**Hypothesis**: The documentation section (`/docs/...`) receives 21% of total site traffic (273 pageviews, 43 unique users in the last 30 days), yet only 1 of 52 docs pages (the welcome page) contains any call-to-action linking to `/demo`. The remaining 51 pages -- which account for 72% of docs traffic (198 pageviews) -- end without any conversion mechanism. Docs visitors are the most deeply engaged audience on the entire site, averaging 6.35 pages per user, and they are actively evaluating the product's capabilities, integrations, and security posture. Despite this high intent, the docs section converts at 0% to `demo_requested` because there is simply no place to convert. The Starlight docs layout has no global CTA injection mechanism: the desktop sidebar has no CTA, the content footer shows only on website pages (not docs), and no component inserts a demo prompt at the end of docs content. The only conversion path available is the small "Book demo" button in the top-right header, which is easy to overlook while reading documentation. This is a significant missed opportunity because docs readers represent late-funnel evaluators -- people who are past the awareness stage and actively assessing whether Promptless fits their technical requirements. + +**Evidence**: +- PostHog pageview data (last 30 days): `/docs` pages received 273 pageviews from 43 unique users, making it the second-largest traffic section after the homepage. Top docs pages include: welcome (75 views), core-concepts (16), setup-quickstart (16), promptless-oss (12), promptless-1-0 (11), getting-help (8), security-and-privacy (6), and many more. +- PostHog funnel (last 30 days): 43 unique docs visitors -> 0 fired `demo_requested`. This is a **0.0% conversion rate** -- a complete dead end despite being the most engaged audience segment on the site. +- PostHog docs-to-demo-page funnel (last 30 days): 43 docs visitors, 12 (27.91%) eventually navigated to `/demo` -- proving these visitors have active conversion intent. They sought out the demo page on their own through header navigation, yet none completed the email form. The median time from docs to demo page was only 38 seconds, indicating urgency. +- PostHog engagement depth (last 30 days): Docs visitors averaged **6.35 pageviews per user** -- far higher than any other section. These are not casual browsers; they are reading multiple pages about triggers, integrations, security, and setup, which are classic late-funnel evaluation behaviors. +- Code inspection: Only `src/content/docs/docs/getting-started/welcome.mdx` contains a CTA (``). The other 51 `.mdx` files in `src/content/docs/` have zero links to `/demo`, zero email capture forms, and zero conversion prompts. +- Code inspection of `src/components/starlight/Footer.astro`: The website footer (with support email and privacy link) only renders when `activeSection === 'website'` -- it does not render on docs pages. Docs pages have no footer CTA. +- Code inspection of `src/components/starlight/Sidebar.astro`: The desktop sidebar is a pure navigation tree (`SidebarSublist`). The `MobileMenuFooter` (which contains a "Book demo" link) only renders inside a `md:sl-hidden` div, meaning it is visible only on mobile, not desktop. Desktop docs users have no sidebar CTA. +- Screenshot of `/docs/getting-started/core-concepts/` confirms: the page content ends with an "Advanced Configuration" section that trails off into whitespace. No CTA, no demo prompt, no next-step conversion action appears anywhere in the content body. The only "Book demo" link is the small button in the top-right header bar. + +**Testable prediction**: I predict that adding a persistent "Book a demo" CTA to all docs pages -- either as a global component at the bottom of every docs page content area, or as a sidebar CTA visible on desktop -- will increase the docs-to-demo conversion rate from 0% to at least 2-3% within 30 days, generating an estimated 1-2 additional demo requests per month from the current 43 monthly docs visitors. This is a conservative estimate: 28% of docs visitors already self-navigate to `/demo` (12 of 43), proving high intent. Even converting a fraction of the remaining 31 visitors who never reach `/demo` would be incremental. Furthermore, the CTA will provide a measurable signal (`demo_requested` with `location: "docs"`) that allows the team to attribute conversions to documentation content for the first time, informing content strategy decisions. + +**Recommended fix**: +- Create a `DocsBottomCTA.astro` component with a brief, contextual prompt (e.g., "Want to see Promptless in action? Book a 15-minute demo." with a button linking to `/demo`) and include `data-track-location="docs_bottom_cta"` for tracking +- Override the Starlight `ContentPanel` or inject the CTA via a custom `PageFrame` override so it appears at the bottom of every docs page's content area -- this avoids editing all 52 individual `.mdx` files +- Alternatively, add a CTA to the desktop sidebar in `src/components/starlight/Sidebar.astro` (currently the desktop sidebar has no CTA; only the mobile menu does via `MobileMenuFooter.astro`), placed below the navigation tree as a sticky element +- Remove the `md:sl-hidden` restriction on the sidebar CTA so desktop users also see a "Book demo" link in the sidebar, or create a separate desktop-visible sidebar CTA component +- Track clicks with `cta_clicked` (location: `docs_sidebar` or `docs_bottom_cta`) and submissions with `demo_requested` (location: `docs`) to measure which placement drives more conversions +- Vary the CTA copy contextually based on the docs section: security pages could say "See how Promptless keeps your data safe -- book a demo", integration pages could say "Ready to connect Promptless to your stack?" + +**Research sources**: +- LandingPageFlow CTA Placement Strategies 2026: End-of-page CTAs are critical for users who consume the full content -- "a well-timed end-of-page CTA offers a final push toward conversion after consuming the full value story." Multiple placement strategies (hero, mid-page, end-of-page, sticky) should be used together. (https://www.landingpageflow.com/post/best-cta-placement-strategies-for-landing-pages) +- Webstacks 2026 SaaS Conversion Guide: Personalized CTAs convert 202% better than generic ones. Every page needs a clear, prominent CTA guiding visitors forward. "Multiple CTAs on long pages maintain conversion opportunities as visitors scroll." (https://www.webstacks.com/blog/website-conversions-for-saas-businesses) +- Powered by Search B2B SaaS Funnel Benchmarks: Documentation and technical content readers represent late-funnel evaluators with higher conversion potential than top-of-funnel blog readers. "Smart B2B SaaS CRO accounts for multi-stakeholder buying by building landing pages for distinct personas -- creating separate pages that speak directly to technical users." Documentation is the technical user's landing page. (https://www.poweredbysearch.com/learn/b2b-saas-funnel-conversion-benchmarks/) +- Kalungi B2B SaaS CTA Guide: "Every page needs a clear and prominent CTA guiding visitors forward. Use action-oriented language... Multiple CTAs on long pages maintain conversion opportunities." Including a CTA with clear purpose can push conversion from under 1% up to 20% on focused pages. (https://www.kalungi.com/blog/conversion-rates-for-saas-companies) +- First Page Sage CTA Conversion Rates Report 2026: Meta-analysis of CTA conversion rates by placement and style confirms that contextually placed CTAs within content (not just header navigation) significantly outperform header-only CTAs because they meet users at the point of engagement. (https://firstpagesage.com/reports/cta-conversion-rates-report/) + +**Applies to**: All documentation pages (`/docs/...`), specifically `src/components/starlight/Sidebar.astro` (desktop sidebar CTA), `src/components/starlight/Footer.astro` (docs footer), and potentially a new Starlight content override component. The welcome page CTA pattern in `src/content/docs/docs/getting-started/welcome.mdx` can serve as the template. + +--- + +## Problem #2: Pricing page "Book demo" CTAs link directly to external Cal.com, bypassing email capture and making pricing-page conversions invisible + +**Date identified**: 2026-03-24 + +**Category**: Funnel / Tracking gap + +**Hypothesis**: The Growth and Enterprise pricing plan CTAs (`Book demo`) navigate visitors directly to an external Cal.com URL, completely bypassing the `/demo` page funnel. This creates two compounding problems: (1) a conversion problem -- the visitor leaves the Promptless domain without providing their email, so the lead is not captured by Formspark or PostHog before the Cal.com step, and (2) a measurement problem -- no `demo_requested` event fires, no `cta_clicked` event is reliably recorded (the browser navigates away before the beacon completes), and there is no way to attribute bookings back to the pricing page. Pricing visitors are the highest-intent segment on any B2B SaaS site -- they are actively evaluating cost and fit -- yet the current CTA design sends them into a tracking black hole. The homepage hero and blog CTAs correctly route through `/demo` (which captures email, fires `demo_requested`, and then mounts Cal.com with the email prefilled), but the pricing page skips this critical step entirely. + +**Evidence**: +- PostHog funnel (last 30 days): 34 unique visitors viewed `/pricing`, but **0 converted to `demo_requested`** -- a 0.0% measured conversion rate with 100% drop-off. This is the worst-performing page in the funnel despite being the 5th most-trafficked page on the site. +- PostHog `cta_clicked` breakdown by location (last 30 days): Only 1 click from `pricing_startup`. Zero clicks from `pricing_growth` or `pricing_enterprise` were recorded, despite those plans having prominent "Book demo" buttons. This strongly suggests either (a) no one clicked them, or (b) the browser navigates to Cal.com before the sendBeacon completes. +- PostHog `demo_requested` breakdown by location (last 30 days): All 7 demo requests came from location `"hero"`. Zero from `"demo_page"`, zero from any pricing location. The pricing page is a conversion dead end. +- PostHog funnel: pricing -> /demo page (last 30 days): 34 pricing visitors, 11 (32.35%) eventually visited `/demo` -- but via other navigation (e.g., the header "Book demo" link which correctly routes to `/demo`), not via the pricing CTAs. This proves pricing visitors have conversion intent, but the pricing CTAs fail to capture it. +- Code inspection of `PricingCard.astro` line 110: Growth and Enterprise CTAs render as `` where `ctaHref` is `"https://cal.com/team/promptless/15m-discovery-call"` -- an external URL with no email gate, no PostHog event, and no Formspark submission. Compare this to Hero.astro (lines 60-81) which intercepts form submission, stores email in sessionStorage, fires `demo_requested` to PostHog, and redirects to `/demo`. +- Screenshot of pricing page confirms the Growth and Enterprise "Book demo" buttons are standard `` links that navigate immediately off-site. + +**Testable prediction**: I predict that changing the Growth and Enterprise pricing CTAs to route through `/demo` (matching the hero and blog CTA flow) will: (1) make pricing page conversions measurable by firing `demo_requested` with `location: "pricing_growth"` or `location: "pricing_enterprise"`, (2) increase the pricing-page-to-demo-booked conversion rate from the current unmeasurable 0% to at least 5-8% within 30 days (pricing pages with transparent pricing convert 4.6% on average per Chili Piper benchmarks, and top performers hit 7-10% per industry data), and (3) capture an estimated 1-3 additional leads per month from pricing visitors who currently leave the site without any email capture. Given that 11 of 34 pricing visitors (32%) already find their way to `/demo` through other navigation, routing the CTAs properly should convert a meaningful share of the remaining 23 visitors who currently bounce off-site. + +**Recommended fix**: +- Change `GROWTH_PLAN.ctaHref` and `ENTERPRISE_PLAN.ctaHref` in `src/components/site/pricing/pricing.config.ts` from `"https://cal.com/team/promptless/15m-discovery-call"` to `"/demo"` so they route through the email-gated demo booking flow like every other CTA on the site +- Alternatively, if the team wants to keep the pricing CTA click as a distinct conversion event, add an intermediate step: make the pricing "Book demo" buttons open the same email gate used on `/demo` (either inline on the pricing page, or by navigating to `/demo` with a query parameter like `?ref=pricing_growth` that can be tracked) +- Update the `data-track-location` values on the pricing CTAs to include the plan tier (already done: `pricing_growth`, `pricing_enterprise`) so that once routed through `/demo`, the `demo_requested` event can distinguish pricing-sourced leads +- Consider storing the selected plan tier in sessionStorage (alongside the email) so the Cal.com booking page or the sales team can see which plan the visitor was evaluating -- this adds valuable context to the discovery call +- Long-term: embed the Cal.com calendar directly on the pricing page (behind an email gate) to eliminate the extra navigation step, following the industry trend toward embedded scheduling (only 18% of B2B SaaS companies currently do this, but it significantly reduces friction per Chili Piper's research) + +**Research sources**: +- Chili Piper 2025 Demo Form Conversion Rate Benchmark Report: Median qualified-to-booked rate is 62%. Scheduling tools on the website reduce back-and-forth and capture leads when intent is highest. Only 18% of B2B SaaS companies embed scheduling on their website. (https://www.chilipiper.com/post/form-conversion-rate-benchmark-report) +- InfluenceFlow SaaS Pricing Page Best Practices 2026: Match the CTA to the buying motion -- enterprise/sales-led tiers should route through a demo page where you can qualify the prospect, set expectations, and capture information before the meeting is booked. Progressive disclosure is a core UX strategy for 2026. (https://influenceflow.io/resources/saas-pricing-page-best-practices-complete-guide-for-2026/) +- PipelineRoad SaaS Pricing Page Best Practices 2026: "Track downstream metrics, not just clicks. A variant that increases CTA clicks but decreases actual trial activations is a false positive -- always track the downstream metric." An intermediate demo page can qualify intent before the calendar step. (https://pipelineroad.com/agency/blog/saas-pricing-page-best-practices) +- RevenueHero State of Demo Conversion Rates 2025: Responding to leads within the first minute increases conversions by 391%. Letting prospects self-schedule in one click (on your site, not an external URL) maximizes conversion at the moment of highest intent. (https://www.revenuehero.io/blog/the-state-of-demo-conversion-rates-in-2025) +- Howdygo 8 Examples to Increase Book a Demo Page Conversion: Removing top menu bars from demo booking pages improves conversion by 2.3%; 88% of people say they wouldn't book a demo without having seen a product first -- the `/demo` page includes a demo video, while the direct Cal.com link does not. (https://www.howdygo.com/blog/increase-conversion-of-your-book-a-demo-page) + +**Applies to**: Pricing page (`/pricing`), specifically `src/components/site/pricing/pricing.config.ts` (GROWTH_PLAN.ctaHref, ENTERPRISE_PLAN.ctaHref) and `src/components/site/pricing/PricingCard.astro` (the CTA rendering logic for non-startup plans) + +--- + +## Problem #1: Homepage has no CTA below the fold -- visitors who scroll the full page have no way to convert without scrolling back to the top + +**Date identified**: 2026-03-24 + +**Category**: CTA + +**Hypothesis**: The homepage has only one CTA (the hero email form at the very top). After the hero, the page presents Testimonials, How It Works (4 steps with screenshots), platform logos, and Why Promptless (6 capability cards) -- but none of these sections include a call-to-action. Visitors who scroll the full page and become convinced have no conversion mechanism at the decision point; they must scroll back to the top. This violates a core SaaS landing page best practice (repeating CTAs throughout the page, especially at the bottom) and is likely depressing the homepage conversion rate. + +**Evidence**: +- PostHog funnel (last 30 days): 173 unique homepage visitors, only 3 converted to `demo_requested` -- a 1.73% conversion rate with 98.27% drop-off. This is below the SaaS median of 3.0-3.8%. +- PostHog breakdown of `demo_requested` by `location`: All 7 demo requests in the last 30 days came from "hero" -- zero from any other location, because no other location exists. +- Code inspection of `Testimonials.astro`, `HowItWorks.astro`, and `WhyPromptless.astro` confirms zero CTA elements (no forms, buttons, or links to /demo or cal.com) in any below-the-fold section. +- Full-page screenshot (1440x5000px) visually confirms the hero email form is the sole conversion element on the entire homepage. +- The homepage content flow (Hero -> Testimonials -> How It Works -> Why Promptless -> Footer) is designed to build conviction progressively, yet the conversion action is only available at the START of this journey, not at the END when conviction peaks. + +**Testable prediction**: I predict that adding a repeated email capture CTA (matching the hero form) at the bottom of the homepage -- specifically after the WhyPromptless section -- will increase the homepage-to-demo conversion rate from 1.73% to at least 3.5% (the SaaS median) within 30 days of deployment. This is because visitors who scroll through the full page represent the most engaged segment, and providing a conversion mechanism at their point of maximum conviction will capture conversions currently lost to scroll fatigue. Industry research shows personalized, repeated CTAs convert up to 202% better than single-placement CTAs. + +**Recommended fix**: +- Add a new "bottom CTA" section component (e.g., `BottomCTA.astro`) with a headline like "Ready to eliminate docs drift?" and the same email capture form used in the hero +- Place it after `` in `src/content/website/home.mdx` +- Track submissions with `demo_requested` event using `location: "bottom_cta"` to measure incremental conversions from this placement +- Ensure the CTA is visually prominent with contrasting background to distinguish it from the capability cards above +- Consider A/B testing the bottom CTA copy (e.g., "Book demo" vs. "See it in action" vs. "Start your free trial") once feature flags are configured in PostHog + +**Research sources**: +- Unbounce Conversion Benchmark Report: SaaS landing pages average 9.5% conversion, median 3.0%. Repeating CTAs throughout the page is a top recommendation. (https://unbounce.com/conversion-rate-optimization/the-state-of-saas-landing-pages/) +- Heyflow SaaS Landing Page Best Practices: "Ensure your CTA is prominent and repeated throughout the page... place it in multiple locations to increase the chances of conversion." (https://heyflow.com/blog/saas-landing-page-best-practices/) +- Webstacks 2026 SaaS Conversion Guide: personalized CTAs convert 202% better than generic ones; the bottom CTA should serve as the "final close" backed by social proof. (https://www.webstacks.com/blog/website-conversions-for-saas-businesses) +- Landingi SaaS Best Practices: "Keep all CTAs consistent" -- multiple CTAs on a single page are fine as long as they point to the same destination. (https://landingi.com/landing-page/saas-best-practices/) + +**Applies to**: Homepage (`/`), specifically `src/content/website/home.mdx`, and requires a new component or reuse of the hero form pattern + +--- + + diff --git a/package-lock.json b/package-lock.json index a734a5cb..3b6ca531 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@astrojs/mdx": "^4.3.3", "@astrojs/react": "^4.4.2", + "@astrojs/rss": "^4.0.17", "@astrojs/sitemap": "^3.6.0", "@astrojs/starlight": "^0.37.6", "@calcom/embed-react": "^1.5.3", @@ -210,6 +211,26 @@ "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, + "node_modules/@astrojs/rss": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.17.tgz", + "integrity": "sha512-eV+wdMbeVKC9+sPaV0LN8JL1LGo9YAh3GKl4Ou4nzMNLmXM/aswYpSGxVEAuHilgBZ6/++/Pv08ICmuOqX107w==", + "license": "MIT", + "dependencies": { + "fast-xml-parser": "5.4.1", + "piccolore": "^0.1.3", + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/rss/node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@astrojs/sitemap": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.0.tgz", @@ -4436,6 +4457,40 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.0.0", + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fflate": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", @@ -7479,6 +7534,21 @@ "dev": true, "license": "MIT" }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -8384,6 +8454,18 @@ "node": ">=0.10.0" } }, + "node_modules/strnum": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/style-to-object": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", diff --git a/package.json b/package.json index 13d6c3d9..299903e7 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "dependencies": { "@astrojs/mdx": "^4.3.3", "@astrojs/react": "^4.4.2", + "@astrojs/rss": "^4.0.17", "@astrojs/sitemap": "^3.6.0", "@astrojs/starlight": "^0.37.6", "@calcom/embed-react": "^1.5.3", diff --git a/public/assets/helm.svg b/public/assets/helm.svg new file mode 100644 index 00000000..1e2db8a2 --- /dev/null +++ b/public/assets/helm.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/vitess-stacked.png b/public/assets/vitess-stacked.png new file mode 100644 index 00000000..b207bdf4 Binary files /dev/null and b/public/assets/vitess-stacked.png differ diff --git a/src/components/shared/TopHeader.astro b/src/components/shared/TopHeader.astro index 1a48f2b7..1daf496a 100644 --- a/src/components/shared/TopHeader.astro +++ b/src/components/shared/TopHeader.astro @@ -20,7 +20,7 @@ const { activeSection = getActiveSection(Astro.url.pathname), showNavTools = fal {showNavTools ? : null} diff --git a/src/components/site/BlogRequestDemo.astro b/src/components/site/BlogRequestDemo.astro index 330763ed..cf355daa 100644 --- a/src/components/site/BlogRequestDemo.astro +++ b/src/components/site/BlogRequestDemo.astro @@ -63,12 +63,14 @@ if (!res.ok) throw new Error('Submission failed'); + try { sessionStorage.setItem('pl_demo_email', email); } catch {} + window.posthog?.capture('blog_demo_requested', { location: 'blog', $set: { email }, }); - window.location.assign('https://promptless.ai/meet'); + window.location.assign('https://promptless.ai/demo'); } catch { setStatus('Something went wrong. Please try again.', 'error'); submitBtn.disabled = false; diff --git a/src/components/site/DemoBooking.astro b/src/components/site/DemoBooking.astro new file mode 100644 index 00000000..9d7dd739 --- /dev/null +++ b/src/components/site/DemoBooking.astro @@ -0,0 +1,175 @@ +--- +--- + + + +
+
+
+ + + +
+
+ + + + +
+ + diff --git a/src/components/site/Hero.astro b/src/components/site/Hero.astro index 977b8245..d0b2ea8c 100644 --- a/src/components/site/Hero.astro +++ b/src/components/site/Hero.astro @@ -28,11 +28,11 @@ const { class="pl-site-form-row" action="https://submit-form.com/roBOd2Oxb" method="post" - data-redirect="/meet" + data-redirect="/demo" > - + @@ -54,7 +54,7 @@ const { const redirectInput = form.querySelector('input[name="_redirect"]'); if (redirectInput instanceof HTMLInputElement) { - redirectInput.value = `${window.location.origin}/meet`; + redirectInput.value = `${window.location.origin}/demo`; } form.addEventListener('submit', async (event) => { @@ -72,6 +72,9 @@ const { } const email = (form.querySelector('input[name="email"]') as HTMLInputElement)?.value?.trim(); + if (email) { + try { sessionStorage.setItem('pl_demo_email', email); } catch {} + } (window as any).posthog?.capture('demo_requested', { location: 'hero', ...(email ? { $set: { email } } : {}), @@ -102,7 +105,7 @@ const { throw new Error(`Formspark submission failed with status ${response.status}`); } - const redirectTo = form.dataset.redirect || '/meet'; + const redirectTo = form.dataset.redirect || '/demo'; window.location.assign(redirectTo); } catch (_error) { // Fallback to native form post if fetch fails (e.g. CORS/network). diff --git a/src/components/site/PricingCards.astro b/src/components/site/PricingCards.astro index ee60e33d..90893a27 100644 --- a/src/components/site/PricingCards.astro +++ b/src/components/site/PricingCards.astro @@ -20,11 +20,47 @@ const defaultGrowthBundle = GROWTH_BUNDLE_OPTIONS[0];

All plans include a 30-day free trial.

-

Pricing scales with the size and complexity of your docs site.

Open-source, non-commercial project? Learn about our OSS program.

+
+

Not sure which plan fits? Estimate your page count.

+
+ + +
+ + +
+
+ + diff --git a/src/components/site/SocialProofLinks.astro b/src/components/site/SocialProofLinks.astro new file mode 100644 index 00000000..bebfe59f --- /dev/null +++ b/src/components/site/SocialProofLinks.astro @@ -0,0 +1,104 @@ +--- +const links = [ + { + href: 'https://github.com/vitessio/website/commits/', + logo: '/assets/vitess-stacked.png', + name: 'vitessio/website', + desc: 'View commits on GitHub', + }, + { + href: 'https://github.com/helm/helm-www/commits/main/', + logo: '/assets/helm.svg', + name: 'helm/helm-www', + desc: 'View commits on GitHub', + }, +]; +--- + +
+ {links.map((l) => ( + + + + {l.name} + {l.desc} + + + + ))} +
+ + diff --git a/src/components/site/VideoEmbed.astro b/src/components/site/VideoEmbed.astro index ab7c0b9f..1e6f9939 100644 --- a/src/components/site/VideoEmbed.astro +++ b/src/components/site/VideoEmbed.astro @@ -13,6 +13,7 @@ const {