CrawlProof Alerts — free ValueSERP email alerts (Phase 1) - #72
Merged
Merged
Conversation
Extends CrawlProof from one-time audits into a recurring-engagement product: free, near-realtime email alerts for anything Google can see, with the existing crawler used to confirm backlinks. Core loop: email + category → magic-link (double opt-in) → scheduled ValueSERP poll (recency-filtered) → dedupe by canonical URL → only never-seen URLs email → backlinks crawl-confirmed before alerting. Reuses the app's pg_cron → /api/cron → worker pattern, the audit crawler (fetchPage/attachRendered), Resend, and the profiles plan model. Incorporates six pre-launch fixes over the v1 draft: - Per-account monthly SERP-call budget as the real cost backstop, not just a 50-alert count (a maxed free user is 10-20x the $0.15 ceiling otherwise; F5Bot's free-API economics don't transfer to paid SERP). - Cold-start: an alert's first poll seeds the dedupe set silently; value on creation comes from the instant test run (promoted to P0). - One batched digest per user, not one email per alert. - Canonical dedupe documented as normalized-URL (no per-result crawl). - Backlink category framed honestly (newly-indexed linking pages). - People-tracking templates gated out of the launch picker pending T&S. Migration: alerts / alert_seen_urls / alert_findings, profile budget columns, consume_alert_serp_budget RPC, alert-checks pg_cron job. Tests: 26 cases (dedupe, template compile, backlink anchor detection, abuse validation). App + worker tsc clean. Revised PRD: docs/crawlproof-alerts-prd.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vu1nz Security Review0 finding(s) in PR #? No security issues found. |
ralyodio
marked this pull request as ready for review
July 4, 2026 19:58
This was referenced Jul 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds CrawlProof Alerts (PRD:
docs/crawlproof-alerts-prd.md): free, near-realtime email alerts for anything Google can see, powered by ValueSERP, with the existing crawler used to confirm backlinks. Extends the product from a one-time audit into recurring engagement.Core loop
email + category → magic-link (double opt-in) → scheduled ValueSERP poll (recency-filtered) → dedupe by canonical URL → only never-seen URLs email → backlink candidates crawl-confirmed before alerting.
Reuses the app's
pg_cron → /api/cron/<job> → workerpattern, the audit crawler (fetchPage/attachRendered), Resend, and theprofilesplan model.Six fixes folded in over the v1 draft
consume_alert_serp_budget) as the real cost backstop, not just a 50-alert count. A maxed free user is 10–20× the $0.15 ceiling otherwise; F5Bot's free-API story doesn't transfer to paid SERP.gatedout of the launch picker pending T&S/GDPR.What's here
supabase/migrations/20260704120000_alerts.sql:alerts,alert_seen_urls,alert_findings, profile budget columns, budget RPC,crawlproof-alert-checkspg_cron job + global kill-switch (cron_config.alerts_enabled).lib/alerts/*: categories/compile, ValueSERP client, canonical dedupe, backlink confirm (+ JS-render fallback), poll+dedupe engine, batched digest, signed pause/unsubscribe tokens, limits/budgets, abuse validation, worker processing./alertsdashboard, public/get-alertssignup, worker/alerts/check-user.tsc --noEmitclean.Deploy config
Set
VALUESERP_API_KEY,ALERTS_FROM(warmed subdomain); seedcron_config(site_url,cron_secret).alerts_enabled=falsehalts all SERP spend.Still open (per PRD §11)
Paid pricing must clear hourly SERP COGS (~$108–$180/mo @ 250 alerts); ValueSERP plan limits; Legal/T&S before un-gating people-tracking.
next lintis broken repo-wide in Next 16 (pre-existing), so lint wasn't run; typecheck + tests are the gate.🤖 Generated with Claude Code