Project overview

Overview
Workflow
Owner

Project overview

Read against the RFP, our conversations to date, and a full parse of both sitemap exports. Thomas is not buying a redesign. It is buying a change of operating model, and the only honest way to price that is to show where a developer sits in the loop today, and where they do not sit tomorrow. Every figure on this page is computed from the source documents, and the places where the brief and the live estate disagree are marked.

Build window
1 Oct to Jan, three months
One-off investment
£70,000 fixed
Live estate
3,334 URLs, 1,012 items
Locales
11 live, none retired
Templates behind it
12–15, not 3,334 builds
Conversion today
≈1% against 3–4%

01 · Objectives

Why Thomas is doing this

The line in the sand
This is not a redesign

“The objective is therefore not simply to redesign the website. It is to fundamentally change the operating model: marketing-owned rather than agency-owned; structured rather than accumulated; scalable rather than increasingly complex.”

RFP §2, restated in §42
Objective 01
No developer in the core loop

Create a page, pick a template, add a HubSpot form, localise it, make a variant, publish, redirect. Twelve steps in the practical demonstration, and the constraint under all of them is that none of it needs a developer. The cost of the alternative is on record: a menu rebuild through the current chain took roughly three months and shipped broken.

RFP §35
Objective 02
Total cost of ownership, not build cost

The RFP is explicit that low TCO beats low build cost, and asks for three-year and five-year totals. Current spend now itemises cleanly: £65k Drupal agency and Pantheon hosting, £40k SEO agency, £50k translation agency, £20k personalisation and CRO. Exactly £175k.

RFP §32 and §37 · figures confirmed with Thomas
Objective 03
Hold organic, gain answer engines

Traffic is already leaking to AI search, and Thomas is trying to create a category with no established search demand behind it. Answer-engine capability deserves to be judged on evidence rather than on claims, which is why section 02 measures it rather than asserting it.

RFP §12 and §13
Objective 04
Localisation stops being manual

The worst workflow in the current stack. The agency returns documents and eight to nine languages are rebuilt by hand, page by page. The consequence is a growth gap, not just a time cost: there is no SEO effort at all in the secondary-language markets, with France and the Netherlands named specifically, and those are the two largest non-English trees on the site.

Confirmed with Thomas
Objective 05
Conversion, roughly a fifth of where it should be

Conversion fluctuates between 0.1% and 1.3% against an industry target of 3–4%. Closing even part of that gap is worth more than the entire five-year cost saving, which is why this document does not lead with cost.

Confirmed with Thomas

02 · The flow

Seven steps run twice

BRIEF TEMPLATE BUILD LOCALISE GOVERN PUBLISH MEASURE TODAY · DRUPAL, AGENCY-OWNED Request lands ONE PERSON, NO HOURS Duncan is the whole pipeline. “I have to say no because I don’t have the hours.” No template library CARDS, COLUMNS, IMAGES “Very very basic.” Anything more ambitious has to leave the CMS entirely. Built blind NO WYSIWYG, NO PREVIEW Assembled block by block. Nothing can be seen, and nothing shared as a draft. Retyped by hand AGENCY DOCS, BY HAND Plugin broken, so the agency returns documents and 8–9 languages are rebuilt by hand. No workflow NO VERSIONS, NO ROLLBACK No draft link to send to a reviewer, so approval happens by screenshot. Publish, then hope NO REQUIRED SEO FIELDS 3,334 URLs. 464 distinct first-path segments. 17 overlapping resource types. Signal, reassembled GTM + WEBEO + HUBSPOT Tracking breaks at the iframe edge, and Webeo is fed by hand from HubSpot. Anything ambitious is built in Lovable and iframed in UNINDEXED SITE · BLACK BOX · BUTTON-LEVEL GTM REBUILT BY HAND “It works, but it’s not ideal.” The workaround is now the internal argument for replacing the CMS. The graphic designer works in Lovable too, so there is no Figma handover to inherit and no design tool of record. DEV TICKET Four suppliers sit between marketing and a published page ≈£65K DRUPAL AGENCY + PANTHEON HOSTING · ≈£40K SEO AGENCY · ≈£50K TRANSLATION AGENCY · ≈£20K PERSONALISATION AND CRO £175k a year, and the four lines now reconcile exactly. The development and support contracts run to July with no break clause. The clearest illustration of the dependency is on record: a menu rebuild through this chain took roughly three months, and shipped broken. Elapsed today: a translated page set takes up to a week of manual rebuild, and a CTA test across many pages is, in Duncan’s words, “a very time intensive thing to do.” TARGET · MARKETING-OWNED, GOVERNED Governed request ROLE-BASED PERMISSIONS Role-based, so remote contributors publish without becoming one person’s job. Approved template 12–15 TEMPLATES Chosen from a library, not invented per page. This is what §35 is really asking. On-canvas build PREVIEW + SHAREABLE DRAFT Governed components only. A draft link goes to anyone for review, before it exists. Locale inherits 10 LOCALES, NO REBUILD Translation returns into the page, not into a spreadsheet. A glossary holds terms steady. Draft, review, approve VERSIONED, WITH ROLLBACK Multi-stage approval, content ownership and controlled navigation. Publish and redirect SEO FIELDS ENFORCED Metadata, canonicals, approved schema controls and 301s, all in-platform. Visit to revenue ANONYMOUS VISIT TO REVENUE Native events into HubSpot, Salesforce and Dreamdata, with no iframe edge to cross. A campaign variant is a duplicate of an approved template, not a new build. That is what makes CRO possible at all. The question the RFP actually asks RFP §35, VERBATIM “Show us how your platform prevents the marketing team from creating another 1,000 poorly structured pages.” Answered by three things, not by a licence COMPONENT LIBRARY · REQUIRED FIELDS · CONTROLLED NAVIGATION A governed component set with no free-form escape hatch. SEO and taxonomy fields that cannot be skipped on publish. Navigation and URL structure editable only within the rules. The IA that produced 464 first-path segments becomes structurally impossible to recreate. THE MIGRATION · RUN ONCE, IN PARALLEL · THE CLIENT’S STATED TOP FEAR 01 · Inventory 3,334 URLS + THE FILE LIBRARY Crawl, plus GA and Search Console overlay to find what earns traffic. The file library is unquantified. 02 · Rationalise 17 RESOURCE TYPES → 5 464 first-path segments collapse into a controlled IA. Thomas has asked for retain-or-cut triage, not a lift. 03 · Map URL PRESERVATION IS A HARD REQUIREMENT Whitepapers, on-demand docs and HubSpot forms all break if URLs move. Plus 122 /node/ alternates and 207 caps. 04 · Move 622 RESOURCES · 112 CASES · 233 CORE Hybrid: we build the pipeline and the QA rig, Thomas runs volume. The constraint is scale, not capability. 05 · Cut over FEBRUARY 2027, TARGET DATE Search Console, sitemaps, rank and HubSpot form monitoring for eight weeks after go-live.
Today, in Drupal Target state Where the pain is, and where it is answered In-platform path Reuse rather than rebuild

03 · The estate

3,334 URLs collapse into fifteen templates

The number in the brief is wrong, and it matters. RFP §3 asks for “a scalable content architecture capable of supporting 500–1,000+ pages”. The live sitemap carries 3,334 URLs resolving to roughly 1,012 unique content items across eleven locales. Duncan’s own working estimate of “five years worth of resources and 60 core pages” understates the core count by about four times: it is 233 before localisation. Anyone pricing to the brief will be wrong, and anyone pricing to reality risks looking expensive next to those who did not. Say the number first, and price against it openly.
Template family 01

Resources dominate the estate

1,803 URLs · 4 templates

/resources/type/{type}/{slug}

Blog and article item

The single largest content block on the site, and the reason the resource hub is unusable: 1,786 item-level URLs sit under a tree with exactly one category listing page above them.

Volume
1,052 hr-blog plus 127 blogs, 94 blog and 79 articles. Four taxonomies for one thing.
Rationalisation
Four blog taxonomies collapse to one. Locale-specific type slugs stop existing.
Migration
Highest volume, lowest per-item risk. The right place for AI-assisted transform with sampled human QA.
Watch
254 URLs untouched since before 2024. Prune rather than migrate, on traffic evidence.
Blott builds4 taxonomies → 1Bulk migration

/resources/type/whitepapers · hr-guides · gidsen · guias

Gated asset item

Whitepapers and guides, and the template that carries the hidden dependency: HubSpot forms are wired to documents in the file library, so a changed document URL breaks the form and any partner or internal link to it.

Volume
116 whitepapers, 63 hr-whitepapers, 76 hr-guides, plus five localised type slugs
The dependency
The file library is not mentioned anywhere in the RFP. Duncan raised it unprompted and flagged it himself as missing.
Consequence
File-level URL preservation is a priced workstream, not a migration detail.
Blott buildsNot in the RFPHubSpot-coupled

/resources/type/thomas-news · hr-webinars

News and webinar item

Lower volume, but the webinar template carries registration and therefore the conversion path. Six webinar URLs live today against an RFP that lists webinars as a first-class content type.

Volume
140 news across three locale taxonomies, 6 webinars
Note
Webinar and event registration is a stated requirement in §18 but barely exists on the live site. Build for the ambition, not the archive.
Blott buildsRegistration path

/resources · /resources/{topic}

Resource hub and listing

Effectively absent today. One listing page exists across 1,803 URLs, which means the entire library is discoverable only through search and internal links. The largest single organic opportunity in the rebuild.

Requirement
§15 asks for search and filtering by content type, topic, industry and use case
Relationship chain
Product → Industry → Use Case → Resource → Case Study → CTA, per §11
Blott buildsBiggest organic upside
Template family 02

Proof and people

316 URLs · 2 templates

/case-study/{slug}

Case study

112 unique case studies across 226 URLs. For a business selling into HR and talent, this is the proof layer, and it is the template most likely to sit behind a form and feed the relationship chain.

Volume
112 unique · en 90, uk 88, nl 27, fr 8, then a thin tail
Design consequence
Needs to carry an economic result prominently, and link to industry, use case and product
Migration
High value per item. Human QA on all of them, not sampled.
Blott builds112 unique

/author/{name}

Author profile

22 unique authors across 90 URLs, a mix of internal people-science staff and external contributors. Cheap to build and disproportionately useful for entity clarity in AI answers.

Volume
22 unique, including three doctorate-level in-house researchers
AEO angle
Author entities with credentials and schema are one of the few concrete answers to §13’s demand for specifics rather than “AI-ready” claims.
Blott buildsAEO evidence
Template family 03

The product and market trees

~330 URLs · 5 templates

/solutions/{slug} · /use-case/{slug}

Solution and use case

47 unique solution paths and 26 use cases. These are the pages that have to carry the move from psychometrics into connection intelligence, a category with no established search demand behind it yet.

Volume
104 solution URLs, 58 use-case URLs
Strategic weight
Category creation means these pages have to build demand, not just capture it. That is a content strategy question, not a template question.
Blott buildsCategory creation

/assessments · /assessment-platform · /connection-platform

Product and platform

Six overlapping product trees today: assessments, assessment-platform, connection-platform, recruitment-platform, employee-development-platform and thomas-cxi. Roughly 170 URLs describing a product set that should have one coherent structure.

Volume
27 assessments, 33 assessment-platform, 28 connection-platform, plus four smaller trees
Rationalisation
One product template with a controlled hierarchy. This is where the IA work pays for itself.
Not specified anywhere
No requirement is stated for integration with the Thomas product itself: no SSO, trial provisioning or deep linking. Worth confirming.
Blott buildsSix trees → one

/industries/{slug} · /partners/{slug}

Industry and partner

Only 8 industries and 11 partners exist today, which is thin for a business that sells direct in a handful of countries and partner-led everywhere else. The partner layer is the top of most of the funnel.

Volume
27 industry URLs, 19 partner URLs
Model
Enquiries route through HubSpot to a licensed partner. The site is the top of a distributed funnel, not a direct one.
Blott buildsPartner-led routing

/{locale} · /campaign/{slug} · /pricing · /tryfree

Market home, campaign and commercial

Eleven market homepages, eight campaign pages, plus live pricing, free-trial and payment-methods pages. The campaign template is the one marketing will touch most often, so it is the one the demonstration will be judged on.

Volume
11 market homes, 12 campaign URLs, 14 legal and policy pages
Unstated
Live pricing, free-trial and payment pages exist, but no e-commerce, checkout or self-serve purchase requirement appears anywhere in the RFP. Confirm before pricing.
Blott buildsDemo template

Shared across every template

The component library

Not a template, and the reason this is not fifteen separate builds. It is also the entire answer to the governance question, and the thing that keeps a marketing team autonomous without letting the IA rot again.

Pieces
Hero and section blocks, cards, carousels, animation-capable modules, CTA and sticky CTA, HubSpot form embeds, breadcrumb and internal-link modules, proof and stat blocks, locale switcher
Why it matters
Build it once and fifteen templates become configuration. Build it per template and design and build roughly double.
Duncan’s ask
“We’d like to have some carousels with our animations and cards. Everything is static in our website.”
Blott buildsThe whole estimate rests here
Localisation

Eleven locales live against a brief for five to ten

Uneven, and partly contractual
Coverage is deeply uneven, so a flat per-locale price misprices the work

Roughly a third of the estate is fully localised across eleven locales, and roughly a third is English with a UK twin and nothing else. Danish and Simplified Chinese carry under 100 URLs each. Some languages are contractually mandated rather than commercially justified, and Duncan would drop them if he could.

LocaleURLsNote
en root, no prefix967The canonical set. 233 core pages, 622 resources, 90 case studies, 22 authors.
en-gb /uk924Near-complete twin of root. Duplicate-content and canonical decisions needed early.
nl333Direct-sell market. Has invented its own top-level slugs: oplossingen, bronnen, gidsen.
pt-br262Percent-encoded accented slugs live alongside unaccented duplicates.
fr225Direct-sell. Five distinct resource-type slugs of its own, including one typo variant.
sv128Thin coverage, own top-level vocabulary.
de114Thin coverage, own top-level vocabulary.
es-LA108Uppercase in the path, a case-sensitivity risk on cutover.
da96Under 100 URLs. A candidate for the contractual-only list.
zh-hans91Mixed pinyin and percent-encoded Chinese slugs.
en-au /au86Thinnest English variant.
Structural problem
Every locale invented its own top-level vocabulary, so there is no consistent cross-locale route to map onto. 464 distinct first-path segments, 191 of which occur exactly once.
hreflang
539 URLs sit in a full eleven-locale cluster, 982 have only two alternates, and 122 alternates still point at raw /node/ paths. The graph is partly broken before migration even starts.
Open question
Which languages are contractual is not stated anywhere. Do not assume any locale can be dropped.
Blott builds122 broken alternatesContractual list needed
Data quality

What the sitemap gives away

Findings, not assumptions
Defects worth raising in the response

These came out of parsing the two exports Thomas supplied. Naming them is the cheapest possible proof that the audit is real rather than a promise.

Scheme
All 3,334 URLs are declared as http:// in the sitemap output, none as https://
Drupal leakage
16 live URLs on raw /node/ paths, and 122 hreflang alternates pointing at them
Case and encoding
207 URLs with uppercase path characters, 94 with percent-encoded non-ASCII slugs
Junk in the index
/test-page, /test, /test-text-component, /error-404-page, plus two Webeo personalisation asset containers sitting in the public sitemap
Duplicates
Live near-duplicate pairs such as team-interaction-optimisation-tio and team-interaction-optimization-tio
No prioritisation signal
3,323 of 3,334 URLs at priority 0.5 with no changefreq, so migration prioritisation needs GA and Search Console data that has not been supplied
Audit findingAsk for GA and GSC access
Freshness, and what should not be migrated

Migration cost scales with volume, so the fastest way to reduce it is to migrate less. The lastmod distribution suggests a meaningful prune is defensible, but only against traffic data.

By year
2022: 158 · 2023: 96 · 2024: 1,336 · 2025: 733 · 2026: 1,011
Reading
The 2024 spike is almost certainly a bulk platform-level touch rather than editorial activity, so it is not evidence of freshness
Stale
254 URLs untouched since before 2024
Proposal
A prune decision taken jointly in discovery, on traffic and rankings, before a single page is moved. Every hundred URLs removed is real money.
Thomas decidesBlott recommendsCost lever

04 · The people

Whose working week this changes

The tension worth naming. The RFP asks for two things that usually pull against each other: a distinctive experience benchmarked against Greenhouse, and a governed component system that stops the page count sprawling again. Most suppliers will quietly trade one away. Our position is that the component library is what makes both possible at once, because the design ambition goes into the components rather than into one-off pages, and the governance then comes for free rather than as a restriction.
WhoWhat changes for themWhat they need from the platformWhat we will need from them
Anna BoultwoodVP Marketing A cost position that can be defended line by line, and a funnel that can be changed without a development ticket. Transparent recurring costs with the scaling driver named next to each one, and no mandatory retainer. Confirmation of which languages are contractual, and the session volume behind the conversion rate. Without the second, the growth case stays a ratio rather than a number.
Duncan StimpsonWeb Content Manager Stops being the whole pipeline. Pages built with a preview, shared as a draft, and localised without being retyped. A component library with no free-form escape hatch, enforced SEO fields, and a localisation workflow that returns translation into the page. Analytics and Search Console access early, the file-library structure, and the retain-or-cut decisions. All three change the plan rather than the polish.
Luke WarrenChief Growth Officer A site that represents the business, and a measurable line from anonymous visit through to revenue. Attribution that survives the journey into HubSpot, Salesforce and Dreamdata, without a tracking boundary in the middle of it. Agreement on what success is measured against at launch, so the first quarterly readout is a comparison rather than a baseline.
Denice AngioliniPerformance Marketing Manager Campaign variants and experiments without a ticket, against a conversion rate that currently sits near 1%. Native experimentation and personalisation, configured rather than merely available. The current campaign and conversion reporting, so experiments start from a known baseline.
Becky GriffinContent and SEO Publishing that is one action rather than an assembly job, and organic effort that finally reaches the non-English markets. Required SEO fields, controlled taxonomies, and internal linking that does not depend on remembering to do it. A view on which markets matter most. France and the Netherlands are the largest non-English trees and currently carry no SEO effort at all.
KingaGraphic Designer Design that ships without a developer, and a system rather than a set of one-off pages. Components she can extend, and a design system that is the deliverable rather than a by-product. Time in the component design phase. With no Figma library to inherit, the component library becomes the design artefact that outlives the project.

05 · Fixed

What cannot change

Worth resolving earlyFebruary is an intention, not a constraint

We had understood this as a hard date driven by the hosting contract, but the hosting agreement can be extended, which means the programme currently has no real forcing function. That matters more than it sounds. A date with nothing behind it slips, and a slipping date is how a transformation becomes a redesign. The candidates for a genuine forcing function are the agency contracts ending in July, the exec sponsor’s first full financial year, or a Q1 campaign calendar that needs the new funnel live. One of them should be chosen deliberately, early, and by Thomas rather than by us.

TimetableVendor decision mid-September, build from October

Firmer than the RFP timetable. Platform selection is targeted within two weeks of 24 August, vendor decision by mid-September, build starting October, launch before the end of February. That is roughly five months of delivery, and it puts design sign-off inside the first six weeks. Everything in this document is work already done, so that the September conversation can be about the plan rather than about capability.

Constraint · RFP §35No developer in the core marketing workflow

Tested live, in twelve steps, on a Thomas-specific scenario: new SEO landing page, approved template, approved components, metadata and structured data, internal links, HubSpot CTA, campaign variant, localisation, local CTA, approval and publish, redirect, performance review.

Constraint · 19 AugustSunk agency contracts, no break clause

Twelve-month development, support and hosting contracts were signed for a discount and run to roughly July. Exiting in February knowingly writes off three to four months of fees, and that is already accepted internally. It is also the most credible compelling event available: the saving becomes real on the day the last of those contracts ends, which argues for a July anchor rather than a February one if the date has to move.

Constraint · RFP §38Out of core scope, priced separately

Full brand redesign, full copywriting and content production, ongoing SEO services, ongoing AEO consultancy, and any mandatory development or agency retainer. A retainer can be offered but cannot be a condition.

Constraint · RFP §22 and §32WCAG 2.2 AA, and a five-year cost picture

Accessibility target is fixed. So is the commercial format: a twenty-line one-off cost table, a Year 1 to Year 5 recurring grid, explicit three-year and five-year totals, and every cost that scales with pages, languages, traffic, seats, forms, API calls or AI usage identified.

05b · Settled

What the 1 September call settled

Question we hadWhat Duncan saidWhat it changes here
Where do the 2,300 surplus pages come from?Components that render a page per record. The global offices page runs one page per country popup, and at 140 countries across the language set that alone is around a thousand URLs. Training courses do the same. He deleted roughly 10,000 expired training pages in the last two months.The prune is mostly a component fix, not an editorial cull. That moves it out of content triage and into the build, where it is cheaper.
What carries the traffic?A core group of a couple of hundred articles around psychometric assessment and behaviour types does most of the organic work. The rest of the resource library is old, out of date, or both.Confirms the migration split: a small high-value core moves with full QA, the tail moves in batches or not at all.
Why are there three blog directories?His predecessor changed the URL by hand for each resource type instead of using the system. The system default is hr-blog; everything under /blog and /blogs was manual.Named root cause rather than an observed symptom. It also means the redirect map is mechanical rather than judgement-based.
Can any locales be retired?Answered: noAll are contractual except Australia, which is an emerging market they want to keep. The variation in page counts per locale is translation budget, not intent. Two partners, France and Belgium, get most of the translated content; the rest translate for themselves.Eleven locales stay. The thin locales are a funding problem, so localisation economics becomes the growth argument rather than a place to cut.
What happens to the translation agency?In his words, in a perfect world it goes. He wants AI translation inside the platform before publish, then his internal per-language reviewers given reviewer or guest access to comment and correct in place, then publish. Internal review stays because the content is close to scientific. One recent set of eight pages cost £8–9k.The translation line does not go to zero. A residual sits in central opex for legal documents. The website share is what moves, and reviewer access is now a named build requirement.
Why is the H1 missing?Not the SEO agency. A manual H1 was applied on top of the template one, so pages carry either two H1s or none. His developers have never been able to unpick how it was set up.Retracts an implied criticism of their agency, and moves the defect into the template rebuild where it disappears by construction.
Is the schema really absent?He has a plugin that reports it as present. Our reading of the live pages says otherwise, and he is now questioning the plugin.Worth verifying together in the first week rather than asserting. If the plugin is wrong, it is the clearest single example of measuring the wrong thing.
What is the design ambition?They dislike the current site. New brand guidelines are being written internally. Anna likes Greenhouse and leans to simplicity; Duncan comes from building experience-led sites and wants a site that makes people say the company is ahead of its field. His line: it is your first salesperson. Kinetic Software was also shared as a reference.One art-direction route that blends restraint with two or three moments of craft, rather than three divergent routes. Cheaper and closer to what both of them actually want.
Who writes the copy?Answered: Thomas doesTwo in-house copywriters, unusual for a team this size because of the volume they produce. They expect to write the new site themselves, partly to keep cost down. A repositioning is likely alongside the rebrand.Copywriting stays out of the price. It also means content readiness is a Thomas-side dependency on the critical path.
What is coming in-house?His framing, not oursPPC is moving in-house from an agency, and A/B testing with it. He was explicit that the only way that works is if the publishing hours come down, and told us to frame it that way: you are taking these things on, and the only way you can is by doing this.This is the frame for the whole hours argument. The saving is not a headcount saving, it is the capacity that makes two in-housing decisions survivable.
Where is the team?All core marketing is UK-based bar one European marketer. Office is Marlow, Buckinghamshire; people are spread from South London to Cornwall and rarely travel in. UK hours suit everyone and remote works.Discovery runs remote on UK hours, with one or two in-person days rather than a co-located sprint.
How many components exist?Around 25, of which roughly ten are in real use. Several do not behave as expected and were never redeveloped. He gets 25 hours of developer time a month, and the last new component consumed about a month of it.Confirms the 25-hour figure now used in the workflow model, and sets the target: a governed library where a new component is configuration rather than a development ticket.