Disqus 2007 called.

Comment sections are architecturally broken.

Traditional embeds sit where 70% of readers never scroll, load 140KB of JavaScript, and phone home on every request. Sayy fixes the architecture β€” not the UI.

The AI bubble is starting to look a lot like the dot-com era

Markets have been watching the AI sector with growing unease. While fundamentals remain strong, valuations have stretched…

The most dangerous assumption is that growth will continue indefinitely without a meaningful correction.

πŸ’¬ Comment on this
17 Comments
4 reading
MK
Maya K. 2m ago
"most dangerous assumption…"
This is exactly what people said about cloud in 2010. Capital intensity is now 10Γ— higher.
πŸ‘ 14Reply
RS
Ryan S. 9m ago
The dot-com comparison falls apart at actual revenue. AWS alone runs at massive scale.
πŸ‘ 9πŸ‘Ž 4Reply
LT
Leila T. 15m ago
Both can be true β€” the tech is real, the valuations are fantasy.
πŸ‘ 22Reply
70%
The Footer Fallacy
Readers never scroll far enough to see traditional comment sections.
140KB
Disqus Payload
JavaScript on every pageview. Core Web Vitals degraded, SEO penalised.
2.7β˜…
Disqus G2 Rating
Forced ads, tracking, and data lock-in. Switching feels impossible.
0KB
Sayy External
Zero external requests in Tier 1. Privacy-first is the default.
β€” Architecture
Three-stage boot. Zero blocking.
The full JS bundle never blocks your page β€” it only loads when a reader opens the widget.
01

boot.js β€” 1 day cache

A single <script> tag. Reads data-site, fetches init. Fingerprint-free. No cookies. No tracking.

GET /embed/boot.js Β· max-age=86400
02

init endpoint β€” 60s cache

Returns JSON config: appearance, feature flags, versioned loader URL. Config version bumps on save.

GET /embed/init Β· max-age=60 Β· ETag
03

loader.js β€” 1yr immutable

Full widget. Version baked into URL β€” cached indefinitely. Only fetched on first load or config change.

GET /embed/loader.v{hash}.js Β· immutable
1<!-- Drop-in embed. That's it. -->
2<script
3 src="https://cdn.sayy.io/embed/boot.js"
4 data-site="your-site-id"
5 data-mode="side_panel"
6 defer
7></script>
8
9<!-- 3KB boot β†’ lazy-loads full widget -->
10<!-- Zero external requests (Tier 1) -->
11<!-- No cookies. No fingerprints. -->
1// Programmatic control
2import { Sayy } from '@sayy/embed'
3
4const widget = Sayy.init({
5 site: 'your-site-id',
6 mode: 'floating',
7 theme: 'auto',
8})
9
10// Listen for events
11widget.on('comment:new', (e) => {
12 console.log(e.author, e.body)
13})
1# Fetch comments for a page
2GET /api/v1/sites/{site}/comments
3 ?page_url=https://example.com/post
4 &sort=top
5 &limit=25
6
7# Post a comment
8POST /api/v1/sites/{site}/comments
9 Authorization: Bearer {token}
10 Content-Type: application/json
11
12 { "body": "Great post!",
13 "parent_id": null,
14 "anchor": { "xpath": "...", "offset": 42 } }
β€” Features
Everything a commenting API needs.
From text anchoring to RBAC β€” built for the team, not just the reader.
Core

Context Anchoring

Comments attach to highlighted text, not just the page. Readers see exactly what's being discussed.

text_anchorXPath + offset range stored per comment. Survives minor edits via fuzzy matching.
highlight_syncHover a comment to highlight the source. Click a highlight to jump to the thread.
orphan_handlingIf source text is deleted, comment auto-demotes to page-level with a stale badge.
quote_previewAnchored text displayed inline in the comment thread for full context.
Pipeline

Three-tier spam filtering

Starts local. Escalates only when needed. You choose how far the pipeline goes.

tier_1: localRegex patterns, blocklists, rate limiting. Zero external calls. Privacy-first default.
tier_2: aiBYOK β€” your OpenAI or Anthropic key. Only fires for ambiguous scores (20–70).
tier_3: offNo filters at all. For platforms that handle moderation externally.
quota_fallbackAuto-falls back to Tier 1 on 429 or when monthly AI quota is exhausted.
BYOK

AI moderation β€” your API key

Tier 2 only fires for ambiguous scores. Supports OpenAI gpt-4o-mini and Claude claude-haiku. Full JSON reasoning logged.

gpt-4o-miniOpenAI provider
claude-haikuAnthropic provider
quota_fallbackAutomatic Tier 1 on 429
ai_reasoningLogged per decision
Import

Escape Disqus in 60 seconds

One-click Disqus XML import. Maps threads, authors, timestamps, and votes.

disqus_xmlFull export import with thread mapping and author preservation.
wxr_importWordPress eXtended RSS. Comments, metadata, and hierarchy intact.
dry_runPreview import results before committing. See conflicts upfront.
rollbackUndo any import within 24 hours. No data loss, ever.
Live

Real-time presence & updates

See who's reading. New comments stream in live. Powered by SSE β€” no WebSocket overhead.

presenceAnonymous reader count per page. Zero auth required.
live_commentsNew comments appear instantly via Server-Sent Events.
typing_indicatorOptional "someone is writing…" signal. Disable per-site.
reconnectAuto-reconnect with exponential backoff on flaky connections.
Access

Role-based access control

Owner, admin, moderator, commenter. Scoped per-site with granular permissions.

ownerFull access. Billing, API keys, site deletion.
adminSite settings, moderation, team management. No billing.
moderatorApprove, hide, flag comments. View reports.
audit_logEvery action timestamped. Exportable as JSON or CSV.
β€” Widget Modes
Four layouts. One embed tag.
Switch mode in the dashboard β€” no code changes. All four share the same boot.js tag.
inlineInline

Renders in page flow. ResizeObserver auto-adjusts height. Best for blogs and long-form.

data-mode="inline"
floatingFloating

56Γ—56px persistent FAB. Expands to 380Γ—500px panel. Non-disruptive β€” always accessible.

data-mode="floating"
17 comments
● 4 reading
bottom_barBottom Bar

Full-width sticky bar, collapsed with count. Expands on tap. Ideal for news and mobile.

data-mode="bottom_bar"
πŸ’¬ 4
side_panelSide Panel

Pill FAB with reactions + presence. Slides in as a panel. Most app-like experience.

data-mode="side_panel"
β€” WordPress
One plugin. Zero config.
Install from the WordPress plugin directory. Sayy replaces your default comment system in under a minute β€” no theme edits, no shortcodes.

Built for WordPress from day one

Sayy started as a WordPress commenting plugin. The WP integration isn't an afterthought β€” it's the primary install path. One plugin handles everything: embed injection, admin settings, migration, and spam tier config.

1
Install & activate β€” search "Sayy" in Plugins β†’ Add New. One click. No API keys needed for the free tier.
2
Auto-replaces comments β€” the plugin hooks into comments_template and injects the Sayy embed. Your theme's comment section is swapped automatically.
3
Import existing comments β€” migrate your native WP comments or Disqus export with one click from the Sayy settings panel. Threads, authors, and votes preserved.
WordPress 6.0+ PHP 8.1+ Multisite compatible Classic & Block themes
Dashboard β€” Sayy Comments

Sayy Settings

Widget mode: Inline
Replace native comments
Context anchoring
Real-time presence
AI moderation (Tier 2)
β€” Pricing
Simple tiers. No surprises.
Bring your own AI key or use Sayy AI at $2 per 1,000 calls — you only pay for what you use.
Free
$0
forever · 1 site
  • 1,000 comments / month
  • All 4 widget modes
  • Local spam filter
  • Migration wizard
  • 7-day analytics
Business
$39
/month · unlimited sites
  • Unlimited comments
  • BYOK or Sayy AI ($2 / 1k calls)
  • 365-day analytics
  • Custom branding
  • Unlimited team members
  • Priority support
// Early Access Β· Q2 2026
Ship comments in minutes, not days.
Early access subscribers get Growth free for the first year. No credit card required. We'll email you when we launch.
// No spam. Unsubscribe any time. Growth free for year one.