Fixes
Celery task fixes.
Celery migration
BullMQ replaced with Celery
Job dispatch moved off the Node BullMQ middleman. The API now sends tasks straight to the Celery worker over Redis, andjobs.surnex.io was reduced to email only.Flower was removed from the worker, and the worker service was renamed.Fixes
Rate limiting, notifications, AI search, and a batch of general fixes. The dashboard became runnable on localhost against production services.Onboarding and notifications
Persistence and brand
Every endpoint writes to the database
The change that established the platform’s central pattern: results are stored rather than returned live, and the frontend polls for them.Surnex brand colours
Applied across the dashboard.Fixes
Notifications, notification skeletons, UI skeletons, and LLM benchmarking.Reports and automation
Reporting
Reporting
The reports feature: build a report from project data, with sharing.Redirect handling and a first round of fixes followed the same day.Fixes
Timezone handling, local SEO, and the jobs service lockfile.
MCP
The MCP server
AI agents can drive Surnex directly. Transport moved to streamable HTTP rather than SSE, tools were synced against the API, and project deletion was exposed as a tool.Search engine selection
Google, Bing, or Yahoo per tracked keyword.Fixes
Roles, API keys, keyword suggestions, polling, web vitals, and the dashboard.Search sessions
Unified search sessions
One pattern across every search page, with search pills persisted to local storage.Location and language codes
Hardcoded location, language and search engine codes were removed in favour of real selection.Fixes
An off-by-one day on ranking, backlink and GEOtracked_at dates. Loading skeletons and previous results rendering simultaneously on second and later searches. Auto-growing textareas.Local SEO
Improvements
General improvements.
Features and fixes
A batch of features and frontend fixes.
LLM mentions
Jobs service
Rank tracking
First commit
Surnex began as three services: the API, the frontend, and the worker.Deployment configuration for Railway landed the same day, along with routing, authentication fixes, CORS for
app.surnex.io, health checks, and logos.