Skip to main content
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, and jobs.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

Onboarding

The two-step organization-then-project flow.

Notification center

Delete individual notifications, plus a pass over the center itself.

Fixes

Project creation, on-demand pages, and a round of general bug fixes.
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

Report automation

Scheduled delivery, with email templates.

Notification preferences

Per-event, per-channel configuration.

Fixes

Report loading, chart formatters, and a tracked_at field added to local SEO.
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 GEO tracked_at dates. Loading skeletons and previous results rendering simultaneously on second and later searches. Auto-growing textareas.
Local SEO

Local SEO

Local pack and Maps tracking.

Job cleanup

Deleting a project now deletes its jobs, audit jobs included.

Fixes

A race condition where local SEO returned not_found on a freshly created project. Google Ads conversion tracking, and dashboard updates.
Improvements
General improvements.
Features and fixes
A batch of features and frontend fixes.
LLM mentions

LLM mentions

Tracking whether AI answers mention your brand — the beginning of what became AI search and GEO visibility.

New MCP tools

Project filtering

Fixes

AI search, response dates, and mentions. The skip feature was removed.
Jobs service

jobs.surnex.io

A dedicated service for background work.

Caching

Keyword trends and citations cached to Redis, plus recent search history.

Audit default

Crawls default to 50 pages.

Fixes

LLM mention URLs, authentication on static paths, deployment, and UI.
Rank tracking

Rank tracking

Daily keyword position monitoring — the platform’s core feature.

Sign-up

Fixes

AI search, the audit page, keyword handling, and UI.
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.