BMJ Cloudflare Hackathon
It’s been a pretty wild 36 hours. Yesterday at about 10 am some of our dev team at BMJ started a hackathon with cloudflare that finished up yesterday at about 5pm. My own hack involved creating a corpus of RAG vectors and that process ran overnight, so I finished off some of my ideas through the course of today.
I’ve seen AI make hackathons be more productive than ever before, and now with our own internal content APIs at BMJ + powerful easy to deploy primatives on platforms like cloudflare, and tools like Claude Fable, and GPT Sol, it’s serioulsy nuts what you can do.
I’ll go into more detail on the lessons I learnt from what I built, but I want to give a big shout out to Franciso Taveira and Ade Oshineye from cloudflare who sat with our teams through yesterday, teaching and guiding them, and providing ample smaple code and demonstriations of the art of the possible.
Our own dev teams are split between London and Dheli and we had a bunch of the Dehli team over this week, so it was great to see them collaborate together, and my thanks to our development partner Coforge for hosting the hackathon, and being a great partner.
You will have heard that AI can help with software development, well there are two ways this is helping. It’s helping our teams learn new tools, and write code faster than ever before, and it’s helping organisations like cloudflare roll out increasingly impressive features and capabilities that our teams can use, and the hackathon showed just how that can help on both fronts. Given a tiny amount of time, working with entirely new tools, the teams did some amazing things.
Here is a bit of detail on what the teams built.
Team 1 - Improving Search Usability
They were interested in improving the search experience for Best Practice mobile.
They built a feature to allow users to search with voice. They also wanted to make the search be customised to the specific user, given some information that they have about the user. To do this they used a thing in cloudflare called a cloudflare worker to sit between the user and the search engine, and the worker can personalise the experience for the user.
They also implemented a chat interface to the search as well and plugged in translation as well, because, why not!
Team 2 - The Authentic Squad
You know with google, you sign in to gmail and you are signed in to calendar and docs. Well that does not work for BMJ products because each product manages its own authentication stack. Wouldn’t it be cool if you were a learning user and a BP user and a journals user and you only had to log in once!
This is what this team built (as a POC). A unified auth service for BMJ.
They created a nice abstracted layered architecture to enable this and built a POC of SSO across two different apps, nominally BP and Learning.
Team 3 - Content indexing
They took on the idea of creating a research assistant, you give it some ideas, and it creates a synthetic document, and then compares that synthetic document to the existing vector store, to show the researcher already published papers that are closest to the idea they were thinking about. The key thing here is that idea of creating a synthetic document to make the matching in the vector space more accurate.
Team 4 - Status on Fire!
The idea is to have your application status page be hosted somewhere different to where you application is hosted, because otherwise when you application goes down your status page goes down, and that’s not so useful.
They went with workers, KV stores, deployed via terraform. The status page has both a scheduled monitor, as well as an admin page where admins can update services if they need to.
As Ben said, one of the main things that they did was to show that they can configure cloudflare through configuration as code, and even though their demo was a thin demo, that it was all done in a repeatable dev ops way was what was impressive here.
Team 5
The problem they wanted to tackle was helping readers find the right article when they do a search. They wanted to create an AI assisted search and summarisation tool to support the reader.
They have created a tool - and they built an API that returns an answer, confidence of the answer, and a list of articles that support that answer. Really nice to see this being turned around in such a short period of time.
Team 6 - me.
I dialled in from Germany and took some of the ideas that Ade - our cloudflare guide through the hackathon - showed at the intro, and I worked with abstracts from all of our articles for the past year to build:
- a journal recommendation engine with a chat helper https://journal-picker.bmj-cloudflare-hackathon.com/picker
- a demo of agentic search for our abstracts - https://search-test.bmj-cloudflare-hackathon.com/
- a topic explorer to show you key topics across all of your journals for the past year - https://topics.bmj-cloudflare-hackathon.com/picker
- an overview of our portfolio showing top authors, top institutions, keywords, related journals, and topic trends metrics for each journal for the past year - https://journal-overview.bmj-cloudflare-hackathon.com/journal?id=jmepb
- a set of information derived from the co-authorship graph of all 233K authors from the past year, including the most prolific authors across all journals, and the most connected authors across all journals - https://author-graph-poc.bmj-cloudflare-hackathon.com/
I’ve set short expiry tokens, and hard spend limitis, so if you try these out and some of them are not working then that’s the reason, as some of the services are on a personal paid for account, but the overall spend is very tiny.
I’m going to write up more about these specifically over the next week or so, becuse I learnt so much from doing this.
Final thought.
Code is not a moat. Moats are now clean data, clean internal interfaces, scalable architecture patterns, trustable UI, trust.