Skip to content

[BUSINESS][DEV] SEO P0 #7: snippet fix for "meeting bot api real-time transcription" — pos 3.39 / 0% CTR #329

@DmitriyG228

Description

@DmitriyG228

Context

vexa.ai ranks position 3.39 in Google for the query meeting bot api real-time transcription but has 0% CTR (top-of-fold, zero clicks). This is a pure title/meta snippet problem — the page is already winning on relevance, it's just losing on copy. Estimated impact: capture 100+ organic sessions/month from a currently-invisible Profile-A buyer query.

Source: 3/graph/sg/SEO.md → P0 #7 (seeded from drafts/2026-05-09-seo-outbound-research.md).

Ranking page

Almost certainly the homepage (https://vexa.ai) — the only top-3-eligible page mentioning both "meeting bot API" and "real-time transcription" today. Owned by apps/webapp/app/layout.tsx.

Current snippet (problem)

```tsx
// apps/webapp/app/layout.tsx:18-19
title: 'Vexa — Open-Source Meeting Bot API | Self-Hosted Transcription',
description: 'Open-source meeting bot API for Google Meet, Microsoft Teams, and Zoom. Real-time transcription, bot control, and meeting data via REST API, WebSocket, and MCP. Self-host or use our cloud. Bot from $0.30/hr.',
```

Why it fails the query: the title does not contain the token "real-time" at all. Google's snippet algorithm cannot bold-match the user's full query phrase in the title, so it loses the click to competitors whose titles do contain the full string. The phrase is buried mid-sentence in the description.

Proposed fix

New <title> (60 chars — exact match for the query tokens)

```
Real-Time Meeting Bot API & Transcription | Vexa (OSS)
```

  • 54 characters, well under the 60-char display cap
  • Front-loads "Real-Time" — the missing token
  • Keeps "Meeting Bot API" + "Transcription"
  • "OSS" (Open-Source Software) hooks the wedge differentiator without bloating
  • "Vexa" sits at the tail (brand still recognized but not stealing keyword real estate)

Alternate (if branding prefers Vexa-first): Vexa — Real-Time Meeting Bot API + Transcription (OSS) (58 chars)

New <meta name=\"description\"> (155 chars — action-oriented, hooks Apache-2.0 + self-host)

```
Apache-2.0 meeting bot API with real-time transcription for Google Meet, Teams & Zoom. Self-host or use our cloud. WebSocket + REST. Bot from $0.30/hr.
```

  • 152 characters
  • Opens with Apache-2.0 — top differentiator vs Recall/Tactiq/Otter (closed) and Meetily/Attendee (ELv2)
  • "real-time transcription" appears in the first 10 words → Google will bold-match the full query phrase
  • Self-host hook is explicit ("Self-host or use our cloud")
  • Concrete price anchor at the end (\$0.30/hr) — survives well in mobile SERP truncation

Optional H1 nudge (no structural change required)

The homepage currently has 10 H1s (separately tracked as P0 #3 — out of scope here). Within scope of #7: ensure the first H1 the user sees reads "Real-Time Meeting Transcription API" rather than just "Meeting Transcription API" — adding "Real-Time" matches the snippet promise and the GSC query.

OG / Twitter (mirror the new title)

Recommend also updating openGraph.title + twitter.title to the new value so LinkedIn/X share cards reflect the same positioning. Descriptions can stay as-is — they're already tighter and don't suffer the same SERP-match issue.

Acceptance criteria

  • apps/webapp/app/layout.tsx metadata.title updated to the new title (or approved alternate)
  • apps/webapp/app/layout.tsx metadata.description updated to the new description
  • apps/webapp/app/layout.tsx openGraph.title + twitter.title updated to match
  • (Optional, low cost) homepage primary H1 includes "Real-Time"
  • Curl-verify after deploy: curl -sL https://vexa.ai | grep -E '<title>|name=\"description\"' shows new values
  • Request re-crawl via Google Search Console for / after deploy
  • 2026-05-09 baseline rank 3.39 / CTR 0% — re-check after 14 days; target ≥3% CTR (matches comparable top-3 intent queries)

Cost / priority

~1 hour of dev work. Lowest-effort-highest-ROI SEO P0 in the current backlog. No content production, no new pages, no JSON-LD churn.

References

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions