Tapdaq's mediation product allows app publishers to show ads from any ad network. I designed and built a machine learning system that selects the best paying network for each ad shown.
The system uses factors like ad network performance history, app type, device and user details to predict which network will give the best payout. It makes a new decision for each ad impression in each app, so publishers earn the most revenue possible from their portfolios.
Huge volumes of ad impressions and events occur across all of Tapdaq's apps, all of which are captured and used to make predictions. I designed and built a collection of microservices, using technologies including Apache Kafka and Google BigQuery, to provide large scale machine learning with guaranteed response times.
The nature of the prediction problem required a novel combination of machine learning techniques, including reinforcement learning and supervised learning.
"We were delighted to have Ollie join our team to help us understand a critical part of our new product.
His careful planning, clear communication and technical ability surpassed all of our expectations, not only that, he gelled in well with the team right away, and was able to work side-by-side with our engineers to integrate his efforts into our existing infrastructure.
Ollie's work has had a radical impact on our business, and I would certainly recommend him to anyone who wants to shift the needle in terms of business value."
Nick Reffitt, CTO
Trouva is an award winning, highly curated online marketplace for independent homeware and lifestyle boutiques. Working with their team, I designed and built a new product discovery feature and recommendation system to improve user experience and drive engagement, and helped create an internal boutique analytics product.
The recommendation system uses a combination of user behaviour and enriched boutique data to learn and produce optimal recommendations for users. A machine learning subsystem determines similarity between boutique styles and uses it in the recommendation process, capturing and scaling Trouva’s curatorial vision.
A flexible and extensible architecture allows the system to make recommendations from any kind of entity (boutiques, products, categories etc.) to any other kind, letting Trouva make personalised recommendations across all parts of the product and in their marketing.
I designed and built a machine learning system to rate photo quality and factor it into search results, giving Picfair a market-leading photography search engine.
The machine learning system is deployed into production as a scalable microservice, so as Picfair grows they can just add more servers to handle incoming images. It's seamlessly integrated into the existing tech stack, with testing, server monitoring, a clean API and interfaces for the Rails and Elasticsearch codebase.
I designed and built an interactive visualisation of London's property market, a system to find stories from rental trends each month, and data-driven marketing pages for Rentify's marketing team.
All of these tools are powered by a central data product. Combining Rentify's exclusive lettings data with 3rd party sources including London Datastore and Land Registry records, it creates a rolling, proprietary analysis of the London property and rental market.
The Promise was a powerful historical drama set in Israel and Palestine. Channel 4 expected strong and wide ranging reactions to the program, and wanted a way to show this conversation while maintaining editorial guidelines and balance.
I designed a topic modeling system to group the conversation into themes in a way that reflected Channel 4's editorial policy, built an interactive visualization to let viewers see and explore the conversation, and designed a server architecture to make it work at scale.
Behind the scenes, a data service collects tweets matching the hashtag #c4thepromise. Natural language processing techniques clean the text content, then store the words and sentences in a graph data structure. The topic modeler processes the graph and exports an optimised data format to a separate web app, which serves the visualization and client data requests at scale.