SlideShare a Scribd company logo
Building, hacking and killing a
bespoke CMS
Fabrizio Ballarini
@Pechnet
Link to slides
wi.se/self-driving-CMS
We started SEO program back in 2016 and built
@Pechnet
2 6 26 1712 3+M
Custom
CMS
Products People
strong
team
CountriesLanguages Indexed
Pages
What if you could build a
CMS to answer specific
clusters of queries?
@Pechnet
An out of
the box
CSM with a
couple of
SEO
features is
not enough @Pechnet@Pechnet
A high
performing
CMS is still
driven by
humans
Check out:
wi.se/seo-friendly-cms
@Pechnet
What if you
could build a
self driving
CMS?
@Pechnet@Pechnet
Context on our challenge
Build a price comparison product
Our service covers 1300+ routes and
offers 49 currencies.
There are 71 countries you can send
money to and 43 countries you can
send money from.
100+ competitors
@Pechnet
~9M URLs
Adjust to existing organisation
Remove dependencies to increase
speed of execution
We had no acquisition built into our core product
@Pechnet
Built-in acquisitionNo acquisition
Whatever is your setup keep an eye on the SEO
“DevMometer”
@Pechnet
Fresh start or migration to
new platform with prospect of
healthy collaboration
SEO team has no direct control on CMS
choice and product but has to pitch
changes to web/product team
Cms is already in place & there is
very little SEO team can change
Full stack SEO team
@Pechnet
Product
SEO Specialists
Full Stack Devs Frontend Devs Designers Copywriters
Editors
Translators
Publishers
Analysts
**Credit for all the below actually goes to them, I simply do the talk :)
Evalue growth levers
More unique pages is often the most effective
answer
0 links Wikipedia
Produce
more
content
Produce
content
hardcore
Build links
first (audit
existing
content)
Produce
content
first
0 content
Ton of
content
@Pechnet
SEO Basic: Produce, Optimise and build links
Search
Volume
CustomersCTR Conversion
Rate
WhatSEOsDO?
Produce
more
content
Optimise
existing
content
Build
links
Optimise
existing
content
Easy to
measure
and scale
Harder to
measure and
scale
Optimise
Existing
content
@Pechnet
We growth at the speed at which we ship/optimise
pages
@Pechnet
3M INDEXED PAGES 🚀
Build your fastest route to MVPs
Remove dependencies
We decided to build “Lienzo”
@Pechnet
We initially invested as less as we could in tech
@Pechnet
We didn’t port the main
Angular JS calculator to
our CMS, simply used an
iframe
All widgets are simple
text + images in a limited
number of layouts
We leverage bootstrap
of the main product for
styling and design
You can publish pages in minutes once you have
copy + creatives
@Pechnet
Added basic SEO features
Don't just give
developers
a list
of SEO features
Customize URLs
Meta data
Structured data
Canonicals and redirects
Indexing
Sitemaps
hreflang and geotargeting
Define what is must to build and what you can hack:
Our first xml sitemap after launching 1M+ URLs!
@Pechnet
Lorem 3
Put KPIs against
hacked process until
we realised we were
hitting scaling
issues and couldn’t
simply keep up.
TIme for engineers
to automate it.
Lorem 1
To save dev time we
worked harder on
building a strong
internal link structure
that bots could crawl
more efficiently.
Lorem 2
Built manually by
SEOs.
>>Dump list of URLs
from DB
>> Build static XML
sitemap
>> Upload regularly
Build itDo without Hack it
Focused on features that could help us scaling
internationally
@Pechnet
#1 Language/Country selector
#2 Unique page hreflang key
#3 Locale-mapping
Users only select language/country + unique key,
Platforms does the mapping to URL locales
@Pechnet
Language/Country selector Unique page hreflang key
Locale-mapping
Built in monitoring
@Pechnet
Everytime you press update on any page
changes get stored in your database. You
don’t need to crawl your site to find out!
Optimal backend to achieve seamless workflow
@Pechnet
Easy access to brief &
draft from writers
Automatically track
keywords via API
The Average Handling time (AHT) is normalizing. In average it takes around 15-18 days for each of the
production stages. Overall it takes us 2 - 3 months to publish an article from the moment the brief for
it is created.
We got faster at producing content but not fast
enough!
Publishing
Analyst @Pechnet
Publishing via CMS doesn’t scale, it’s constrained by number
of people in the team.
Copywriters
Editors
Translators
Publishers
Keyword Data Unique page
@Pechnet
We continue to grow linearly by publishing via
CMS
@Pechnet
The test page we quickly built proves to be successful,
time to scale it!
@Pechnet
Hack vs doing things properly
We used to hack our Database 🙈, with API it’s safer
and way more efficient
@Pechnet
1000+
new
pages
DONE!
Step 1: We plugged our CMS to Metabase Step 2: Understand template in JSON
Step 3: Edit template, concatenate JSON Step 4: Inject data in in PosgreSQL
☢
Leverage APIs
Know your CMS, your content & structure data
@Pechnet
Learn how to use APIs
@Pechnet
Understand how your CMS works:
database, data format and structure
Example: our CMS is running on a
PostgreSQL database and each page is
stored in a JSON format.
Examples for other CMS:
https://developer.wordpress.org/rest-api/
Why would we do it? (Use cases)
@Pechnet
Creating and updating landing pages manually takes time and is
prone to errors.
Create 1000s of scalable landing
pages from scratch
Update out-of-date content, or fix
broken links in scale
Delete obsolete pages Clone existing pages at scale
Scaling launches and MVPs
Use case: create 1000 new landing pages
@Pechnet
Imagine you want to create 1000 new templated landing pages - for
example to sell different types of ice cream, in multiple languages.
Each page should contain information about different aspects of ice
cream:
- Its flavour
- Price
- And list of allergens
#1: Create a template
@Pechnet
In JSON format, create template matching the API schema
and map templated fields to variables.
#2: We have prepared our list of variables
@Pechnet
Prepare the values for templated fields in a csv like this one:
#3: We wrote a simple script in python
@Pechnet
We wrote two simple python scripts:
1. To generate JSON files based on variable values and template
2. To send JSON files as a POST request to our API
#4: Test locally & execute in production 🚀
@Pechnet
$ pipenv run python api-request.py csv-filename public
After first testing the changes in a local environment, we were ready to
run the script in production:
1000+ new pages launched!
Invest in scalable widgets to achieve
feature parity with core product
Deeper integration with core product coupled
with ability to scale through CMS API 🚀
@Pechnet
🤖 APIs beat Humans
🤖
@Pechnet
👨‍🔬👩‍🔬
Kill CMS, autonomous product
We already know what we are going to build in 2 years time
2019 2020 2021 2022
Core products
Validated MVPs (waiting for dev resources) Launch new products
@Pechnet
Automate acquisition
Master the relationship between search intents and
your product variables
@Pechnet
Product variables
{Source Currency}
{Target Currency}
Example of a cluster of
queries:
“Send money to
{Target Currency}”
3 main layers that communicate with each other
@Pechnet
Backend
APIs
Frontend
Widgets
Frontend
Apps
Core
product
Quote
service
Pricing
Delivery
Estimation
Price
Comparison
Send
money
Calculator
Price
Comparison
Lienzo
(landing
page CMS)
Send
Money
Comparison
Data Collection service guides creation of landing
pages
Comparison Widget
Price Comparison
Service
Data
Collection
Service
Comparison Landing pages
@Pechnet
The product automatically generates thousand of
pages as soon as data is available
@Pechnet
Invest in product
2 years of testing….and still room for improvement!
@Pechnet
Data is the essential part of the product without
data we don’t have a product, not a 10x one.
@Pechnet
Build a 10x product that didn’t exist before
@Pechnet
Validate Acquisition Build scalable product
Launch MVP
via CMS
Scale via CMS
APIs
Launch
dedicated app
& scale via API
Improve
product
Improve
Conversion
Rate
@Pechnet
2. Develop features for SEO and scale MVPs via
CMS
@Pechnet
Start with an empowered autonomous full-stack SE0 team…
1. Build/adopt a CMS trying to eliminate
dependencies and lunch pages in seconds
3. Automate with APIs what’s successful by
investing into stand alone products
@Pechnet
Link to slides >>
wi.se/self-driving-cms
Money without borders >>
wi.se/borderless
Join us >>
wi.se/seo-jobs
Thank you

More Related Content

PDF
Developing a SEO friendly CMS from the ground up - Digital Elite Day 19
PDF
How to 10x organic search traffic while scaling publishing sustainably - SEMr...
PDF
Scaling SEO by Building Products - Search London Meetup Nov 17
PDF
SEMrush toolbox 9: SEO content template & SEO writing assistant - April 2019
PPTX
Data-driven SEO & content strategy to reduce your customer acquisition costs
PPTX
PDF
Search Engine Optimization - What's it about?
PDF
Probabilistic Thinking in SEO - BrightonSEO October 2022
Developing a SEO friendly CMS from the ground up - Digital Elite Day 19
How to 10x organic search traffic while scaling publishing sustainably - SEMr...
Scaling SEO by Building Products - Search London Meetup Nov 17
SEMrush toolbox 9: SEO content template & SEO writing assistant - April 2019
Data-driven SEO & content strategy to reduce your customer acquisition costs
Search Engine Optimization - What's it about?
Probabilistic Thinking in SEO - BrightonSEO October 2022

What's hot (20)

PDF
SEO Audit Example & Website Review
PDF
Core Web Vitals Audit - Sophie Gibson - PDF - BrightonSEO.pdf
PPS
Importance of Backlinks In SEO
PPTX
SEO Compnaies India work strategy for 6 months SEO Services
PPTX
Search engine Optimization,Advantages Of SEO, Benefits of Seo
PDF
SEO Prompt Engineering - A Duda Webinar
PDF
How to Startup your SEO for SaaS - Fabrizio Ballarini - Duda Jan 2022
PDF
Understanding Semantic Search and AI Content to Drive Growth in 2023 March 2023
PPTX
Google Keyword Planner - New Keyword Research Tool by Google
PPTX
SEO Audit Report | Analyze Website Free 2023
PDF
Basics of React Hooks.pptx.pdf
PPT
What is SEO? - Basic SEO Guide for Beginners.pptx
PDF
International SEO Strategies
PPTX
SEO for Beginners Feb 2020 - Bristol Media
PDF
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
PPT
Seo Marketing Plan Ppt
PDF
The most Damaging SEO Mistakes & Issues in 2021 and How to Avoid Them #EngagePDX
PPT
On page seo ppt
PDF
Technical SEO
SEO Audit Example & Website Review
Core Web Vitals Audit - Sophie Gibson - PDF - BrightonSEO.pdf
Importance of Backlinks In SEO
SEO Compnaies India work strategy for 6 months SEO Services
Search engine Optimization,Advantages Of SEO, Benefits of Seo
SEO Prompt Engineering - A Duda Webinar
How to Startup your SEO for SaaS - Fabrizio Ballarini - Duda Jan 2022
Understanding Semantic Search and AI Content to Drive Growth in 2023 March 2023
Google Keyword Planner - New Keyword Research Tool by Google
SEO Audit Report | Analyze Website Free 2023
Basics of React Hooks.pptx.pdf
What is SEO? - Basic SEO Guide for Beginners.pptx
International SEO Strategies
SEO for Beginners Feb 2020 - Bristol Media
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Seo Marketing Plan Ppt
The most Damaging SEO Mistakes & Issues in 2021 and How to Avoid Them #EngagePDX
On page seo ppt
Technical SEO

Similar to Building, hacking and killing a bespoke CMS - Search Leeds 19 (20)

PPTX
Continental Airlines 2009 Microsoft SharePoint Conference Presentation
PPTX
Sharepoint conference 3 - continental
PDF
Introducing the Hub for Data Orchestration
DOCX
ERICGil_Updated-2
PDF
Open Source CMS vs. SharePoint
PDF
DevOps Loop - Jeffrey Hammond.pptx.pdf
DOCX
How DotNet, SharePoint, and Azure helps to build a Custom Web Application wi...
PDF
How to build and deploy app on Replit
DOCX
E pi server
DOC
Pronobesh resume
PPTX
Kentico Cloud and .NET Core - A Winning Combination
DOC
Pronobesh_Resume
PPT
Cake Php Consultant
DOC
myresume_latest
PDF
A Complete Guide to Python Web Development
PDF
Headless WooCommerce - Harnessing the Power of Headless CMS with WooCommerce.pdf
PPT
Proper Connections Development for Proper Domino Developers
DOCX
Dipen shah
PPTX
ppt of MANOJ KUMAR.pptx
PPTX
Role of CMS & Webservices - Mobile Apps
Continental Airlines 2009 Microsoft SharePoint Conference Presentation
Sharepoint conference 3 - continental
Introducing the Hub for Data Orchestration
ERICGil_Updated-2
Open Source CMS vs. SharePoint
DevOps Loop - Jeffrey Hammond.pptx.pdf
How DotNet, SharePoint, and Azure helps to build a Custom Web Application wi...
How to build and deploy app on Replit
E pi server
Pronobesh resume
Kentico Cloud and .NET Core - A Winning Combination
Pronobesh_Resume
Cake Php Consultant
myresume_latest
A Complete Guide to Python Web Development
Headless WooCommerce - Harnessing the Power of Headless CMS with WooCommerce.pdf
Proper Connections Development for Proper Domino Developers
Dipen shah
ppt of MANOJ KUMAR.pptx
Role of CMS & Webservices - Mobile Apps

Recently uploaded (20)

PDF
E_Book_Customer_Relation_Management_0.pdf
PDF
Boost Sales Around the Clock with AI Chatbots for Marketing
PDF
Building a strong social media presence.
PPTX
Fixing-AI-Hallucinations-The-NeuroRanktm-Approach.pptx
PPTX
PRINCIPLES OF MANAGEMENT and functions (1).pptx
PDF
Keshav Solutions Pest Control || Trending Branding Digital Solutions
PPTX
Ipsos+Protocols+Playbook+V1.2+(DEC2024)+final+IntClientUseOnly.pptx
PDF
Pay-Per-Click Marketing: Strategies That Actually Work in 2025
PDF
Wondershare Filmora Crack Free Download 2025
PDF
Hidden gems in Microsoft ads with Navah Hopkins
PDF
You Need SEO for Your Business. Here’s Why..pdf
PPTX
"Best Healthcare Digital Marketing Ideas
PDF
Digital Marketing - clear pictire of marketing
PPT
Market research before Marketing Research .PPT
PDF
Unit 1 -2 THE 4 As of RURAL MARKETING MIX.pdf
PPTX
Kimberly Crossland Storytelling Marketing Class 5stars.pptx
PDF
UNIT 2 - 2 AGRICULTURE MARKETING in INDIA.pdf
PDF
RC 14001 Certification: Enhancing ISO 14001 with EHS & Security Standards
PDF
How to Break Into AI Search with Andrew Holland
PDF
Coleção Nature .
E_Book_Customer_Relation_Management_0.pdf
Boost Sales Around the Clock with AI Chatbots for Marketing
Building a strong social media presence.
Fixing-AI-Hallucinations-The-NeuroRanktm-Approach.pptx
PRINCIPLES OF MANAGEMENT and functions (1).pptx
Keshav Solutions Pest Control || Trending Branding Digital Solutions
Ipsos+Protocols+Playbook+V1.2+(DEC2024)+final+IntClientUseOnly.pptx
Pay-Per-Click Marketing: Strategies That Actually Work in 2025
Wondershare Filmora Crack Free Download 2025
Hidden gems in Microsoft ads with Navah Hopkins
You Need SEO for Your Business. Here’s Why..pdf
"Best Healthcare Digital Marketing Ideas
Digital Marketing - clear pictire of marketing
Market research before Marketing Research .PPT
Unit 1 -2 THE 4 As of RURAL MARKETING MIX.pdf
Kimberly Crossland Storytelling Marketing Class 5stars.pptx
UNIT 2 - 2 AGRICULTURE MARKETING in INDIA.pdf
RC 14001 Certification: Enhancing ISO 14001 with EHS & Security Standards
How to Break Into AI Search with Andrew Holland
Coleção Nature .

Building, hacking and killing a bespoke CMS - Search Leeds 19

  • 1. Building, hacking and killing a bespoke CMS Fabrizio Ballarini
  • 3. We started SEO program back in 2016 and built @Pechnet 2 6 26 1712 3+M Custom CMS Products People strong team CountriesLanguages Indexed Pages
  • 4. What if you could build a CMS to answer specific clusters of queries? @Pechnet
  • 5. An out of the box CSM with a couple of SEO features is not enough @Pechnet@Pechnet
  • 6. A high performing CMS is still driven by humans Check out: wi.se/seo-friendly-cms @Pechnet
  • 7. What if you could build a self driving CMS? @Pechnet@Pechnet
  • 8. Context on our challenge
  • 9. Build a price comparison product
  • 10. Our service covers 1300+ routes and offers 49 currencies. There are 71 countries you can send money to and 43 countries you can send money from. 100+ competitors @Pechnet
  • 12. Adjust to existing organisation Remove dependencies to increase speed of execution
  • 13. We had no acquisition built into our core product @Pechnet Built-in acquisitionNo acquisition
  • 14. Whatever is your setup keep an eye on the SEO “DevMometer” @Pechnet Fresh start or migration to new platform with prospect of healthy collaboration SEO team has no direct control on CMS choice and product but has to pitch changes to web/product team Cms is already in place & there is very little SEO team can change
  • 15. Full stack SEO team @Pechnet Product SEO Specialists Full Stack Devs Frontend Devs Designers Copywriters Editors Translators Publishers Analysts **Credit for all the below actually goes to them, I simply do the talk :)
  • 17. More unique pages is often the most effective answer 0 links Wikipedia Produce more content Produce content hardcore Build links first (audit existing content) Produce content first 0 content Ton of content @Pechnet
  • 18. SEO Basic: Produce, Optimise and build links Search Volume CustomersCTR Conversion Rate WhatSEOsDO? Produce more content Optimise existing content Build links Optimise existing content Easy to measure and scale Harder to measure and scale Optimise Existing content @Pechnet
  • 19. We growth at the speed at which we ship/optimise pages @Pechnet 3M INDEXED PAGES 🚀
  • 20. Build your fastest route to MVPs
  • 22. We decided to build “Lienzo” @Pechnet
  • 23. We initially invested as less as we could in tech @Pechnet We didn’t port the main Angular JS calculator to our CMS, simply used an iframe All widgets are simple text + images in a limited number of layouts We leverage bootstrap of the main product for styling and design
  • 24. You can publish pages in minutes once you have copy + creatives @Pechnet
  • 25. Added basic SEO features
  • 26. Don't just give developers a list of SEO features Customize URLs Meta data Structured data Canonicals and redirects Indexing Sitemaps hreflang and geotargeting
  • 27. Define what is must to build and what you can hack: Our first xml sitemap after launching 1M+ URLs! @Pechnet Lorem 3 Put KPIs against hacked process until we realised we were hitting scaling issues and couldn’t simply keep up. TIme for engineers to automate it. Lorem 1 To save dev time we worked harder on building a strong internal link structure that bots could crawl more efficiently. Lorem 2 Built manually by SEOs. >>Dump list of URLs from DB >> Build static XML sitemap >> Upload regularly Build itDo without Hack it
  • 28. Focused on features that could help us scaling internationally @Pechnet #1 Language/Country selector #2 Unique page hreflang key #3 Locale-mapping
  • 29. Users only select language/country + unique key, Platforms does the mapping to URL locales @Pechnet Language/Country selector Unique page hreflang key Locale-mapping
  • 30. Built in monitoring @Pechnet Everytime you press update on any page changes get stored in your database. You don’t need to crawl your site to find out!
  • 31. Optimal backend to achieve seamless workflow @Pechnet Easy access to brief & draft from writers Automatically track keywords via API
  • 32. The Average Handling time (AHT) is normalizing. In average it takes around 15-18 days for each of the production stages. Overall it takes us 2 - 3 months to publish an article from the moment the brief for it is created. We got faster at producing content but not fast enough! Publishing Analyst @Pechnet
  • 33. Publishing via CMS doesn’t scale, it’s constrained by number of people in the team. Copywriters Editors Translators Publishers Keyword Data Unique page @Pechnet
  • 34. We continue to grow linearly by publishing via CMS @Pechnet
  • 35. The test page we quickly built proves to be successful, time to scale it! @Pechnet
  • 36. Hack vs doing things properly
  • 37. We used to hack our Database 🙈, with API it’s safer and way more efficient @Pechnet 1000+ new pages DONE! Step 1: We plugged our CMS to Metabase Step 2: Understand template in JSON Step 3: Edit template, concatenate JSON Step 4: Inject data in in PosgreSQL ☢
  • 39. Know your CMS, your content & structure data @Pechnet
  • 40. Learn how to use APIs @Pechnet Understand how your CMS works: database, data format and structure Example: our CMS is running on a PostgreSQL database and each page is stored in a JSON format. Examples for other CMS: https://developer.wordpress.org/rest-api/
  • 41. Why would we do it? (Use cases) @Pechnet Creating and updating landing pages manually takes time and is prone to errors. Create 1000s of scalable landing pages from scratch Update out-of-date content, or fix broken links in scale Delete obsolete pages Clone existing pages at scale
  • 43. Use case: create 1000 new landing pages @Pechnet Imagine you want to create 1000 new templated landing pages - for example to sell different types of ice cream, in multiple languages. Each page should contain information about different aspects of ice cream: - Its flavour - Price - And list of allergens
  • 44. #1: Create a template @Pechnet In JSON format, create template matching the API schema and map templated fields to variables.
  • 45. #2: We have prepared our list of variables @Pechnet Prepare the values for templated fields in a csv like this one:
  • 46. #3: We wrote a simple script in python @Pechnet We wrote two simple python scripts: 1. To generate JSON files based on variable values and template 2. To send JSON files as a POST request to our API
  • 47. #4: Test locally & execute in production 🚀 @Pechnet $ pipenv run python api-request.py csv-filename public After first testing the changes in a local environment, we were ready to run the script in production: 1000+ new pages launched!
  • 48. Invest in scalable widgets to achieve feature parity with core product
  • 49. Deeper integration with core product coupled with ability to scale through CMS API 🚀 @Pechnet
  • 50. 🤖 APIs beat Humans 🤖 @Pechnet 👨‍🔬👩‍🔬
  • 52. We already know what we are going to build in 2 years time 2019 2020 2021 2022 Core products Validated MVPs (waiting for dev resources) Launch new products @Pechnet
  • 54. Master the relationship between search intents and your product variables @Pechnet Product variables {Source Currency} {Target Currency} Example of a cluster of queries: “Send money to {Target Currency}”
  • 55. 3 main layers that communicate with each other @Pechnet Backend APIs Frontend Widgets Frontend Apps Core product Quote service Pricing Delivery Estimation Price Comparison Send money Calculator Price Comparison Lienzo (landing page CMS) Send Money Comparison
  • 56. Data Collection service guides creation of landing pages Comparison Widget Price Comparison Service Data Collection Service Comparison Landing pages @Pechnet
  • 57. The product automatically generates thousand of pages as soon as data is available @Pechnet
  • 59. 2 years of testing….and still room for improvement! @Pechnet
  • 60. Data is the essential part of the product without data we don’t have a product, not a 10x one. @Pechnet
  • 61. Build a 10x product that didn’t exist before @Pechnet
  • 62. Validate Acquisition Build scalable product Launch MVP via CMS Scale via CMS APIs Launch dedicated app & scale via API Improve product Improve Conversion Rate @Pechnet
  • 63. 2. Develop features for SEO and scale MVPs via CMS @Pechnet Start with an empowered autonomous full-stack SE0 team… 1. Build/adopt a CMS trying to eliminate dependencies and lunch pages in seconds 3. Automate with APIs what’s successful by investing into stand alone products
  • 64. @Pechnet Link to slides >> wi.se/self-driving-cms Money without borders >> wi.se/borderless Join us >> wi.se/seo-jobs Thank you