Higher Education / Platform Engineering
SEO-First Discovery Platform & Lead Engine
A search-first, mobile-first discovery platform and lead engine, built end to end against a committed launch date.
- Next.js SSR
- NestJS
- Postgres
- Elasticsearch
- Technical SEO
- GA4
45 days
committed design-to-launch, full frontend and backend
100%
of public pages indexable and schema-rich at launch
p95
Core Web Vitals and a Lighthouse floor of 90, as acceptance criteria
7 + 7
tab-based institution and course templates, built end to end
- Hybrid ownership model: the client owns infrastructure and data, we design the schema and build every page and backend service.
- Shipped through the client's own pipeline, via pull requests under client code review.
The date is the outcome here. A platform of this scope delivered against a committed launch date is a statement about delivery discipline rather than about any particular technology.
A platform that depends on organic search has a harder launch than most products, because the thing it needs on day one — indexed pages that rank — is the thing that takes longest to earn. Worse, the decisions that buy launch speed are the expensive ones to reverse: client-rendered pages, structured data deferred to a later pass, canonical rules added once the site is already live and indexed.
The second constraint is that traffic is worth nothing until it becomes a verified, contactable lead, and the measurement of that conversion has to be trustworthy. On consumer mobile traffic it usually is not, which means a platform can appear to be performing while the numbers it is judged on are quietly understated.
Why it is hard
The two requirements pull against each other. Ranking wants many server-rendered, structured, fast pages with clean canonicals and real metadata. Conversion wants as little standing between the visitor and registration as possible. Every field added to a sign-up form costs sign-ups, and every script added to measure them costs the page-speed budget that ranking depends on.
And both have to be satisfied on a date committed before the work began. A fixed launch date does not usually degrade quality loudly — it degrades it silently, because performance budgets and structured data are the first things dropped when time runs short, and nothing visibly fails when they are missing. A page that renders correctly but ships without schema looks finished. The only real defence is to make them conditions of acceptance rather than intentions.
What we built
The platform was built server-rendered from the first deploy, with structured data, canonicals, metadata and sitemaps treated as part of each page template rather than as a later pass — so every public page was indexable and schema-rich at launch instead of retrofitted afterwards.
Registration was reduced to the shortest verified path that works on a phone, with conversion tracked server-side so lead data survives ad-blockers rather than depending on them. Search ran on a relevance-tuned index across the whole catalogue, and editorial teams were given a content system with a review-and-publish workflow so publishing did not queue behind engineering. Core Web Vitals thresholds and a Lighthouse floor were acceptance criteria on every template, and the work shipped through the client's own pipeline under their code review.
- Server-rendered templates carrying structured data and metadata from the first deploy
- The shortest verified registration path that works on a phone, tracked server-side
- A relevance-tuned search index across the full catalogue
- A content workflow with review and audit, so editorial does not queue behind engineering
- Performance and structured-data thresholds written into acceptance criteria, not hoped for
Questions about this engagement.
Why do page-speed and structured-data thresholds belong in the acceptance criteria?
Because they are the requirements that get dropped without anyone noticing. A missing feature is caught at acceptance; a page that renders correctly while failing its performance budget or shipping without schema looks complete. Writing the thresholds in as conditions of delivery is what makes them survive a fixed date, which is precisely when they would otherwise be traded away.
There is no AI in this engagement. Why is it here?
Because it is the layer most AI programmes underestimate. Almost all the value in a production AI system sits beneath the model — ingestion, structure, clean schemas, retrieval relevance, reliable measurement — and this engagement is that layer built on its own, end to end, against a committed date. A team that cannot deliver it reliably will not deliver the system on top of it either.
Why server-rendered rather than a client-rendered application?
Because the pages had to be indexed and ranked, and rendering is among the most expensive decisions to reverse once a site is live. Choosing it at the start costs a little early effort. Changing it afterwards means re-earning an index you already had, which is time nobody gets back.
Tell us what you're trying to solve.
Describe the workflow, the data behind it, and what a good outcome looks like. We read every message and reply personally.