CASE_02 / EDITORIAL PLATFORM

Rocio.com: from a 15-year-old WordPress platform to a complete digital system.

A digital property with around 15 years on WordPress, rebuilt as its own platform: content, events, brotherhoods and a 30-year archive connected in a single system.

Rocio.com architectureThe legacy WordPress site, editorial work, public sources and the archive since 1992 converge in one platform that serves the public website, the AI assistant and the editorial radar.01LEGACY WORDPRESS02EDITORIAL03PUBLIC SOURCES04ARCHIVE 1992PLATFORMPUBLIC WEBASSISTANTRADARRocio.com architectureThe legacy WordPress site, editorial work, public sources and the archive since 1992 converge in one platform that serves the public website, the AI assistant and the editorial radar.LEGACY WORDPRESSEDITORIALPUBLIC SOURCESARCHIVE 1992PLATFORMPUBLIC WEBASSISTANTRADAR
first year of the editorial archive
1992
news articles in the archive
11,596
brotherhoods with their own page
169
media files migrated
47,401
Rocio.com home page with the «El Rocío al completo» guide and the conversational search over the archive.
Home page and conversational archive

01 — CONTEXT

The context

Rocio.com is a portal about El Rocío, one of Spain’s largest pilgrimages, with an editorial archive that starts in 1992: news, brotherhoods, sevillanas, videos and photography. All of it lived in a WordPress site with around 15 years of history.

The Rocio.com Time Machine: a year selector to browse the archive since 1992.
Time Machine · the archive since 1992

02 — PROBLEM

The problem

The content existed, but it was trapped. WordPress stored almost everything as text key-value pairs: 320,093 metadata rows for what fits in about fifteen columns per entity, dates stored as text and thousands of empty fields. Beyond text search and manual browsing, the archive was practically inaccessible.

Rocio.com events calendar showing each day’s events.
Events calendar, built on normalized data

03 — CONSTRAINTS

The constraints

  1. 01Lose no content: more than three decades of archive, 102 tables in the production dump.
  2. 02Lose no links: old URLs have to redirect to their new destination.
  3. 03One person approves everything that gets published: the system has to make that sustainable.
  4. 04Respect third-party rights: nothing captured from social media is republished as is.

04 — SYSTEM

What I decided to build

A custom platform built with Nuxt 4 on MariaDB: a normalized data model, its own editorial panel, an AI assistant that answers questions about the archive, and a radar that monitors public sources, with a mandatory editorial step before anything is published.

Rocio.com brotherhood directory with search by town and the number of registered brotherhoods.
Brotherhood directory

05 — ARCHITECTURE

System architecture

SOFTWARE

Software

  • Server-rendered public website built with Nuxt 4.
  • A custom editorial panel for all dynamic content, migrated and new.
  • Revision history: a snapshot before every save.
  • 301 redirects from the old URLs, based on each item’s legacy identifier.

DATA

Data

  • A normalized model with Prisma on MariaDB instead of the WordPress key-value schema.
  • Migration through ETL processes from the real production dump.
  • Search with FULLTEXT indexes and Spanish stop words.
  • MariaDB as the single source of truth for everything else, AI included.

AI / AUTOMATION

AI and automation

  • «Ask the archive» assistant over news, brotherhoods, sevillanas and historical events.
  • The vector index is disposable: it is rebuilt entirely from the database without losing anything.
  • The vector provider sits behind an internal contract: replacing it does not touch the rest of the system.
  • Internal conversation viewer with cost, latency and ratings.
  • A radar over 169 public sources on Facebook, Instagram, RSS, WordPress and the web, with a job queue that keeps running when the browser is closed.
  • AI in the editorial panel for standfirsts, drafting and improving articles.
The Rocio.com Radar: a live map of activity from brotherhoods and organizations.
Radar · public-source activity on a map

06 — DECISIONS

Key decisions, and why

D.01

Normalize before building on top

With 320,093 metadata rows stored as text, every new feature would have inherited the problem. A clean data model first; everything else after.

D.02

The database is the source of truth; the AI index is disposable

If the provider or the model changes, the index is regenerated from MariaDB. No provider identifier lives inside the editorial content.

D.03

Nothing external is published without original writing

The radar archives third-party posts. Publishing on the website requires at least one supporting signal and original writing, and the server enforces it. Every image needs an explicit rights decision.

D.04

No trends without volume

With few conversations in the archive, trend analysis would produce claims without a basis. The analysis waits until there is enough volume.

Rocio.com assistant, «Ask the living memory of El Rocío», with suggested questions.
Ask the archive · assistant with sources

07 — RESULT

Result

  • Rocio.com runs on the new platform, with the historical archive migrated.
  • A public conversational assistant over the archive.
  • A custom editorial panel and a source radar with an editorial step for the newsroom.

No invented business figures: what is shown exists and is documented.

Rocio.com sevillanas section with lyrics search and the song catalogue.
Sevillanas catalogue

08 — STACK

Tech stack

  • Nuxt 4
  • Vue 3
  • TypeScript
  • Prisma
  • MariaDB
  • Tailwind CSS
  • OpenAI

09 — SIMILAR PROBLEMS

Similar problems I can solve

  • →Your website or platform carries years of content trapped in WordPress or another CMS.
  • →You need to migrate without losing content or links.
  • →You want your archive or internal knowledge to be searchable in natural language.
  • →You need an editorial panel built around how your team actually works.

This project is an example of custom software, data intelligence and ai & automation.

11 / MORE CASES

Other systems I have built.

All case studies

Is your platform carrying years of content and technical debt?

Tell me what you have, what is not working and what you need to keep. We start there.