Skip to content
99ersstudio
← Studio Log
app-spotlight2 min read

SEOMAX: Self-hosted SEO intelligence platform. 77 endpoints, DataForSEO-powered, Docker-deployable.

SEOMAX: Self-hosted SEO intelligence platform. 77 endpoints, DataForSEO-powered, Docker-deployable.

Every indie studio hits this moment. The Ahrefs bill lands at 399 USD for the month, the Semrush bill lands two days later, and you realize you are using maybe eight percent of what either of them surfaces. SEOMAX is what we built when we got tired of paying that bill twice over.

What we built

A self-hosted SEO intelligence platform. The backend is FastAPI on Python. The dashboard is Next.js. PostgreSQL holds historic SERP and backlink data. The whole stack deploys as a Docker Compose bundle onto a 5 USD VPS. 77 endpoints cover SERP tracking, rank history, keyword clusters, competitor scans, backlink pulls, content gap analysis, and an export surface.

The data comes from DataForSEO. We chose it because pricing scales per call, not per seat, so a one-developer shop pays only for the queries it actually runs. The FastAPI layer wraps every DataForSEO call in a Postgres cache with configurable TTL. Rank tracks expire in 24 hours, backlink snapshots in 7 days, content gap pulls in 30.

The dashboard is opinionated. We designed it for a single operator who knows what a SERP looks like. Every chart clicks through to the raw query that produced it, and every scheduled job shows its next run time in plain UTC.

The export surface is the piece we use the most. A scheduled job dumps keyword clusters and rank deltas to JSON every Monday, and a separate pipeline pushes Slack alerts when a target keyword drops more than three positions week over week.

What we got wrong the first time

Phase 1 had rank tracking doing live DataForSEO polls on every dashboard load. The first week pushed our API bill from a 12 USD baseline to 80 USD. We rewrote the rank module in Phase 3 to run a scheduled cron overnight and serve the dashboard from the Postgres cache. The bill came back to 45 USD and the dashboard got noticeably faster.

The second misstep was building our own keyword clustering from scratch in Phase 2. We wrote a TF-IDF pipeline, a DBSCAN pass, a custom similarity score, and after two weeks the clusters were still worse than what DataForSEO returns for free. We deleted 1,400 lines of clustering code and shipped a thin wrapper around the vendor output instead. Eleven days we did not need to spend.

Where it is now

77 endpoints in 7 phases, shipping, Docker-deployable on a 5 USD VPS. The DataForSEO bill sits around 45 USD a month and we run it on three internal projects. Next up is a multi-tenant mode so a small agency could host SEOMAX once and serve several clients from the same instance. The row-level security migration is in review.

Related