272 Commits

Author SHA1 Message Date
Ben Senescu
9abed9278f
Remove free trial: subscription paywall + 30-day money-back guarantee (#251) 2026-06-14 21:21:04 -04:00
Ben Senescu
dd429ec4f0
Sync Autumn billing status to Loops and add billing backfill (#269) 2026-06-14 17:19:26 -04:00
Ben Senescu
f8d5ffd285
Scheduled rank checks run through DataForSEO's task queue (#268) 2026-06-13 11:20:42 -04:00
Ben Senescu
b809f87b5e
Hybrid keyword data: Google Ads coverage for non-Labs countries + opt-in clickstream volumes (#262) 2026-06-12 14:08:11 -04:00
Ben Senescu
e41b52ca56
MCP directory metadata, resources/prompts handlers, full param descriptions (#260) 2026-06-11 16:11:24 -04:00
Ben Senescu
16b92ccea3
Backlinks: server-side pagination, sorting, filters, and a one-per-domain view (#258) 2026-06-10 23:27:04 -04:00
Ben Senescu
977c69c3de
Replace project deletion with archive/restore (soft delete) (#257)
Project deletion cascaded through saved keywords, rank tracking, and
audits, and the endpoint had no role check (Codex security finding).
Instead of gating a destructive delete, remove it: archiving stamps
archived_at, hides the project everywhere (lists, project context,
rank-check cron), and preserves all data. Archived projects can be
restored from the Manage projects page.

The restore input is named archivedProjectId because the global
ensureUserMiddleware resolves any projectId in input data against
active projects and would 404 before the handler runs.
2026-06-10 15:42:55 -04:00
Ben Senescu
8a85b7b794
AI Visibility: competitor Share of Voice + clarity fixes for AI citations (#248) 2026-06-09 22:33:11 -04:00
Ben Senescu
2db6fdec71
Refine rank tracking onboarding and add ahrefs backlinks filter (#253) 2026-06-09 22:17:13 -04:00
Ben Senescu
c38b453ab0
Add Ahrefs Domain Rating enrichment to the Backlinks table (#249) 2026-06-09 21:42:30 -04:00
Ben Senescu
fbef08fe8e
Remove unnecessary rank tracking details cards 2026-06-09 21:28:50 -04:00
Ben Senescu
383531c5cd
Rank tracking: trends & data exploration (#247) 2026-06-09 21:06:50 -04:00
Ben Senescu
076a7fb6d7
Multi-project support per organization (#246) 2026-06-09 20:12:09 -04:00
Ben Senescu
1495660631
fix errors and onboarding problems (#242) 2026-06-05 15:22:32 -04:00
Ben Senescu
cc5d6bc632
gsc: handle stale Search Console grants during property listing (#241) 2026-06-04 23:46:33 -04:00
Ben Senescu
8ea55a3e77
fix gsc onboarding nudge state (#240) 2026-06-04 23:25:01 -04:00
Ben Senescu
96f365a473
billing: Autumn webhook + customer status sync (#239) 2026-06-04 23:04:55 -04:00
Ben Senescu
7a26be46cc
Self-hosted Google Search Console (#236) 2026-06-04 18:06:16 -04:00
Ben Senescu
23c38ca4e5
GSC MCP part 1 (#233) 2026-06-04 13:50:26 -04:00
Ben Senescu
b64ef56b4d
refactor: unify dataforseo sdk usage (#231) 2026-06-01 09:48:11 -04:00
Ben Senescu
06e15dc70f
Add per-feature usage breakdown to billing page (#232) 2026-05-31 18:42:41 -04:00
Ben Senescu
e93e30e19e
Fix auth mode resolution to use runtime worker env (#212) 2026-05-31 17:21:54 -04:00
Ben Senescu
3d38b89c32
Fix local dev bug; bump to v0.0.17 (#230) 2026-05-28 17:42:09 -04:00
Ben Senescu
03fd3588ef
refactor: clean up complex code (#229) 2026-05-28 16:37:33 -04:00
Ben Senescu
e7eb895d46
fix redirect loop (again) (#227) 2026-05-27 00:08:59 -04:00
Ben Senescu
4a5a1eb523
Redirect unverified users to email verification (#226) 2026-05-26 23:36:35 -04:00
Ben Senescu
02a287b98e
fix audit tables + back link columns (#224) 2026-05-26 23:33:26 -04:00
Ben Senescu
8b74c7da61
Improve onboarding questions and sign-up routing (#225) 2026-05-26 23:05:20 -04:00
Ben Senescu
506dde84d1
Add additional MCP tools for Local SEO (#222) 2026-05-26 18:38:14 -04:00
Ben Senescu
f95c66b7f2
Switch domain sorting defaults and rank-tracking suggestions to traffic (#223)
* Default domain keyword sorting to traffic

* Align keyword suggestion preselection with traffic sort
2026-05-26 18:11:14 -04:00
Ben Senescu
45234e6945
Fix backlink tab states (#218)
* Fix tab active state wiring across result views

* Add spam filters to referring domains
2026-05-22 22:49:05 -04:00
Ben Senescu
a3721a0f53
Normalize dynamic MCP client registration for Perplexity (#217) 2026-05-22 22:22:42 -04:00
Ben Senescu
9c9477c1cf
Clarify keyword metric tooltips (#216) 2026-05-22 21:47:28 -04:00
Ben Senescu
44073498ed
Use TanStack links for internal table and shell navigation (#215)
* Use TanStack Link for audit issues and external RD links

* Use router link for billing menu

* Fix brand lookup tooltip clipping
2026-05-22 21:29:45 -04:00
Ben Senescu
90f369ad46
readme: update roadmap + add MCP and skills (#213) 2026-05-22 09:55:42 -04:00
Ben Senescu
5cef024c68
Add skills for agents (#211)
* Add OpenSEO skills for keyword and link workflows

* Remove credit scare copy from MCP and skills

* Remove local skills test sandbox

* Format OpenSEO skill docs

* Disclose OpenSEO credit threshold for MCP research

* Tighten OpenSEO skill workflows
2026-05-22 08:46:06 -04:00
Ben Senescu
3456af12fe
bump to reddit v3 api (#209) 2026-05-21 00:08:50 -04:00
Ben Senescu
4f638db702
Add Reddit conversion tracking (#208) 2026-05-20 23:36:30 -04:00
Ben Senescu
aebc779b93
Share search tab queueing across Backlinks, Domain Overview, and Keyword Research (#207) 2026-05-20 18:33:53 -04:00
Ben Senescu
01ecf11415
Make default project creation race-safe (#206) 2026-05-20 17:34:57 -04:00
Ben Senescu
2484f93ce6
Refactor pages to improve performance and consistency (#205) 2026-05-20 17:23:09 -04:00
Ben Senescu
74ba0c4fc8
Prevent duplicate Default projects and add D1 cleanup tooling (#203) 2026-05-19 20:53:13 -04:00
Ben Senescu
efef3894cb
Add shared search tabs to domain overview and backlinks (#192)
* Add shared search tabs to domain and backlinks

* refactor: share search tab framework with keywords

* fix: normalize backlinks tab validation target
2026-05-18 14:51:43 -04:00
Ben Senescu
7fa4d5cade
Simplify Loops signup contact sync (#202) 2026-05-18 14:24:06 -04:00
Ben Senescu
7a0ab0de2c
Add more mcp tool metadara + ChatGPT domain verification route (#197) 2026-05-14 13:02:08 -04:00
Ben Senescu
0ce787889a
Redirect signups to the homepage (#196) 2026-05-14 08:17:44 -04:00
Ben Senescu
f926a0f78c
add users to loops post google sign in (#194) 2026-05-13 21:44:34 -04:00
Ben Senescu
701ace3dff
Add Google sign in and two-step auth flow (#193) 2026-05-13 20:55:20 -04:00
Ben Senescu
a98407176b
Remove unused Better Auth OAuth and JWKS tables (#188) 2026-05-13 15:22:10 -04:00
Ben Senescu
49a2d7f732
Set MCP access token TTL to 24 hours (#191) 2026-05-13 15:01:32 -04:00