bolt
Documentation was scattered,
across dozens of locations — different file formats, different structures, no consistent ownership
bolt
Valuable tribal knowledge existed,
written by developers themselves, but buried and invisible to most
bolt
Quality was uneven,
some documentation was outdated, some just wasn't good
bolt
Developers were using the wrong tools,
not out of habit, but because they didn't know better options existed
bolt
No usage data existed,
no way to know what was being read, ignored, or missing
Give developers one place to find what they need — and give the platform team the visibility to know whether it was working.
flag
Consolidate everything into a single,
managed documentation monorepo, reviewed and maintained by a technical committee
flag
Track usage from the start,
so the team could see what was working and what wasn't
flag
Organise content around jobs to be done,
helping developers find the right tool for the job, not just the one they already knew about
To understand what good documentation looks like from a developer's perspective — and what was concretely broken — we ran around 10 in-depth interviews with developers across different departments. We focused on three research goals:
contact_support
Understand what makes developer documentation genuinely useful — what works, what doesn't, and what good looks like outside Ocado
contact_support
Identify what was broken, missing, or confusing in the current documentation
contact_support
Understand how developers think about platform tools — to find out whether the existing structure matched their mental models
search_check
Developers were missing how-to guides,
practical, task-oriented content that helps you get something done.
search_check
Examples were the primary way developers learned,
and there weren't enough of them.
search_check
Existing content mixed reference material, tutorials, and explanations together without distinction — making it hard to find what you actually needed
search_check
Navigation wasn't how people moved through documentation,
Ctrl+F was. People searched for phrases, not categories
search_check
No single taxonomy could serve everyone,
developers, data scientists, and devops engineers had different mental models, and forcing one structure onto all of them was never going to work
search_check
Some developers didn't know certain platform tools,
existed at all — discoverability wasn't just poor, it was failing people silently
The research findings pointed to four separate problems that needed four separate solutions.
schema
Search
Developers were already using Ctrl+F — they searched for phrases, not categories. A strong search experience meets every mental model where it is, without requiring users to learn a taxonomy first.
schema
Category structure
Rather than imposing a user-facing taxonomy, we ran a card sorting session with three internal platform experts — the people with the deepest knowledge of how the platform was actually built. We gave them cards with tool names and asked them to group the tools and explain their reasoning. The categories came from the inside out, not from assumptions about how users might think.
schema
Documentation structure
We adopted the Diataxis framework, separating all documentation into four distinct types: tutorials, how-to guides, reference, and explanation. Each serves a different user need, and keeping them separate solved the mixed-content problem the research had surfaced.
schema
How-to guides (Use case)
Structured around jobs to be done. We named guides after developer intent, not implementation. Not "use the API Gateway wrapper" — but "expose resources outside the account." Jobs don't change even when the tools underneath them do.
The platform was built on MkDocs with the Material for MkDocs theme as the foundation — chosen because it gave us a solid, developer-familiar base to build on rather than starting from scratch.
The design work had three distinct parts.
pip_exit
Visual customisation
I adapted the Material theme to the internal brand end-to-end: defining colour tokens, adjusting typography, and directing the front-end implementation. Mermaid diagram support was added for technical documentation. The Figma prototype built for validation was based on this adapted theme.
pip_exit
Search design
Search wasn't left to defaults. We customised Lunr.js to control how content was indexed, what appeared in search results, and what ranked at the top. The goal was a search experience that met developers where they were — surfacing the right content without requiring them to know the platform structure first.
pip_exit
Contribution workflow
Documentation contributions were connected to GitLab, giving developers a familiar way to submit content and giving the technical committee a structured approval process before anything went live.
Before rolling out platform-wide, we tested on a single piece of documentation first — the API Gateway wrapper — chosen because it was well understood and had real potential users we could recruit.
check_box
Documentation structure
Built a scenario around a job to be done: expose a resource outside the accountDevelopers used the documentation to complete the task, thinking aloud as they wentWe were validating one thing: was the documentation complete and clear enough to get the job done?
check_box
Search
Tested separately on a working product with a small group of users before launch
check_box
Categories
The platform launched initially without categorisation focused on tools, products, services, and searchCategorisation was introduced as an ongoing process after launch
We used FullStory to track behaviour before and after the redesign — establishing a baseline of how developers entered and moved through documentation, and monitoring for changes post-launch.
bar_chart
Search behaviour
What developers were typing — tool names, job names, or something else entirely
Which searches returned no results — pointing to content gaps or indexing problems.
bar_chart
Content performance
Most viewed documentation — what was being used heavily
Zero view documentation — what was invisible or irrelevant
Scroll depth — were developers reading or skimming
bar_chart
Engagement
Returning users — were developers coming back, suggesting the documentation was useful
Time on page — were people reading or landing and leaving
bookmark
Documentation is a product,
it needs ownership, structure, and measurement like any other
bookmark
The best design decisions on this project didn't come from me,
they came from domain experts who understood the platform deeply. My job was to create the conditions for that knowledge to surface
bookmark
One taxonomy can't serve everyone,
when your users have fundamentally different mental models, search is more democratic than structure.