Developer education · Developer advocacy · Technical writing

Hi, I'm Kemi.

I write courses and documentation, give talks, make videos, and build tools with AI. I'm currently on the GraphAcademy team at Neo4j, but before that, I was doing developer documentation and advocacy, data visualisation engineering, content marketing and data journalism. I have two Master's degrees: one in Data Science and another in Contemporary Literature.

More about me

I design in Figma and Photoshop and edit video in Final Cut Pro, DaVinci Resolve and Premiere Pro. I'll build anything I find interesting, but I like it most when other people find it interesting too, especially when it's riding a trend. Mostly, I like teaching people things.

Kemi Elizabeth Ojogbede speaking on stage at SymfonyCon Amsterdam 2025

What I work with

Learning and curriculum

Curriculum design for data, analytics and AI. Course authoring in Markdown and MDX, docs-as-code, API reference, style guides, information architecture. Peer review and quality checks on technical learning content. Docusaurus, Hugo, Mintlify.

Data and analytics

Python (pandas, Flask, FastAPI), SQL, Snowflake, Tableau, Looker and Looker Studio, Metabase, Excel and Google Sheets, d3.js, Cypher and Neo4j.

AI

Generative AI and LLM pipelines, RAG, MCP, LangChain, prompt engineering. Claude, ChatGPT, Gemini and Microsoft Copilot. AI-assisted coding with Claude Code, Cursor and GitHub Copilot. AI ethics and responsible AI.

Engineering

JavaScript, React and TypeScript, Playwright, Git and GitHub, Postman, Vercel and GitHub Pages.

Design and video

Figma, Canva, Photoshop, Final Cut Pro, DaVinci Resolve, Premiere Pro, Screen Studio.

Ways of working

Agile and iterative delivery with Jira and Linear, cross-team documentation planning, Google Analytics and search analytics.

Speaking and video

Speaking and video.

Conference sessions, community meetups and short-form videos.

Kemi laughing at the podium at SymfonyCon Amsterdam 2025

Code and Conscience: Ethical Docs for AI

SymfonyCon Amsterdam · November 2025 · Documenting AI features honestly: capabilities, limits, bias and privacy

Watch the replay (free SymfonyConnect login)

The role of empathy in technical writing

SymfonyCon Vienna · December 2024 · Why docs that understand the reader are the docs that get used

Watch the replay for free on YouTube

Kemi at a podium presenting a slide titled Using d3.js and graph data to visualise The Odyssey Kemi smiling in front of the title slide for her talk

Using d3.js + graph data to visualise The Odyssey

JavaScript meetup, London · 2026 · The modelling decisions behind the visualisation

See the post on LinkedIn

On camera: why I chose this layout

Neo4j · 2026 · A short interview on the Odyssey visualisation and why I chose a hive plot

Two-minute walkthrough

Neo4j · 2026 · Short-form video: querying and exploring the Odyssey data

On stage and in the room

Conference photos. Scroll for more.

Kemi on stage at SymfonyCon Amsterdam 2025 Kemi presenting at SymfonyCon Vienna 2024 Kemi mid-talk at SymfonyCon Vienna Kemi talking with attendees at SymfonyCon Amsterdam Kemi speaking at SymfonyCon Vienna Speakers on stage at SymfonyCon Amsterdam 2025 Kemi at the podium at SymfonyCon Amsterdam 2025

Selected work

Projects.

Things I've built, some for work and some because I was just curious.

Interactive visualisation of The Odyssey: characters, songs, places and actors on separate axes, joined by coloured curves
d3.jsJavaScriptNeo4jData modelling

The Odyssey, three ways

What. An interactive visualisation of The Odyssey across three tellings: Homer's poem, EPIC: The Musical and Christopher Nolan's 2026 film. Hover anything for the story behind it; switch on previews and the songs play.

How and why

How. I built the dataset by hand (130 nodes, 235 relationships), loaded it into Neo4j, then drew it with d3.js as a hive plot: each type of thing gets its own axis, so the connections stay readable instead of collapsing into a hairball.

Why. The film was coming out, the musical was everywhere, and I wanted to know whether the three versions tell the same story. They don't quite. Building it also exposed a missing connection a spreadsheet had hidden, which became a piece for Nightingale.

The BeyHive Plot: Beyoncé's albums as cover art on one axis, songs by era on another, tours and collaborators on the others
d3.jsJavaScriptiTunes APIWikipedia API

The BeyHive Plot

What. Beyoncé's solo discography as one interactive picture: eight albums as their own cover art, 100+ songs coloured by era, all seven tours, and every collaborator with a live Wikipedia bio. Hover a song and it plays.

How and why

How. I didn't use a database for this one. The structure (albums, tours, era facts) is hand-curated in the file. The visualisation includes album tracklists, artwork and 30-second previews from the iTunes Search API, collaborator photos and bios from Wikipedia's API.

Why. Once I'd worked out the layout on The Odyssey, I wanted to try it on a dataset I'm actually obsessed with.

A lesson page on GraphAcademy with a sentence highlighted and a note being added to it
ReactTypeScriptProduct

Notes and highlights for GraphAcademy

What. A note-taking feature on Neo4j's free learning platform. Select any text or image in a lesson, highlight it, add a note, and everything you save collects on a "Your notes" page at the end of the course.

How and why

How. I built it in React and TypeScript inside the platform's codebase. The hard parts were anchoring a highlight to text that can change between site rebuilds, and making a save feel instant even when the network isn't.

Why. I wanted learners to be able to keep what they'd found useful without leaving the lesson to do it.

The Empathometer interface reviewing a documentation page from the perspective of an AI agent persona
PythonFastAPIOpenAI API

Empathometer

What. A documentation review tool that reads a page as different readers would: junior developer, business user, senior developer, AI agent. Pick a persona and it tells you where that reader gets stuck.

How and why

How. Python and FastAPI, plain HTML, CSS and JavaScript, with the OpenAI API doing the reading. Each persona is a prompt with a point of view, not a checklist.

Why. I built it to help technical writers produce documentation that doesn't assume a particular level of understanding, by showing them how a page reads to someone who isn't them.

The uptweet app: a blog URL pasted in, and a generated social post underneath
PythonFlaskLLMs

uptweet

What. A small web app that turns a developer blog post into short social posts, and shows its reasoning so you can correct it rather than just accept it.

How and why

How. Python and Flask, with an LLM doing the first draft and a person keeping the voice.

Why. I was on a team of developer advocates who were publishing blog posts every week but didn't have time to write the social copy to promote them, so I built this to help.

Writing

Writing.

A round-up of pieces I've worked on, from data and AI writing to technical documentation and earlier journalism. Some have been updated by their publishers since I wrote them, so they may differ from the originals.

Data and AI

Documentation

A selection. At Upsun I led the documentation through the Platform.sh brand merge and a replatform to Mintlify; at Amplience I owned the REST and GraphQL API docs.

Earlier journalism, 2016 to 2018

Education

Education.

Two Master's degrees and a BA, 2011 to 2021, and what each one covered.

MSc Data Science
Birkbeck, University of London · 2019 to 2021 · part-time, alongside full-time work

Python, R and Java. Statistics, machine learning and natural language processing. Data management and SQL. A supervised research project to finish.

MA Contemporary Literature & Cultural Theory
Birkbeck, University of London · 2014 to 2016 · part-time

Twenty-first-century literature and critical theory: how narrative form changes with technology, and how culture is read and argued about. Research essays and a 15,000-word dissertation.

BA English with Creative Writing
University of Nottingham · 2011 to 2014

Two-thirds literature and language, Old English to contemporary, with linguistics. One-third creative writing in workshops: fiction, poetry, structure and editing.

On LinkedIn

On LinkedIn.

Recent posts: articles, talks and project updates.

About

About.

I started as a journalist, writing for national newspapers like The Mirror UK, then marketing and data journalism work at Mumsnet and Finder, data visualisation engineering at a media agency, and then I was writing API documentation and doing developer advocacy from then onwards.

At Neo4j I write and film courses for GraphAcademy to teach people how to use graph data, build features on the learning platform, and attend meetups and conferences. Outside work I build things like the projects above, mostly out of curiosity. Based just outside London.

  • 2026 to now
    Technical Curriculum Developer
    Neo4j, GraphAcademy
  • 2024 to 2026
    Senior Technical Writer & Developer Advocate
    Upsun (formerly Platform.sh)
  • 2022 to 2024
    Technical Writer, REST and GraphQL APIs
    Amplience
  • 2022
    Data Visualisation Engineer
    PHD Media
  • 2020 to 2022
    Content Marketing & Data Manager
    Finder UK
  • 2018 to 2020
    Commercial Content Creator, then Email Marketing Specialist
    Mumsnet
  • 2016 to 2018
    Journalist
    The Mirror, The Week UK, Grazia UK