Ocado Technology https://www.ocadotechnology.com We’re putting the world’s retailers online using the cloud, robotics, AI, and IoT Tue, 27 Mar 2018 10:36:18 +0000 en-GB hourly 1 https://wordpress.org/?v=4.9.4 128434464 Episode 4: How to hire in a world where unicorns don’t exist https://www.ocadotechnology.com/podcast/episode-4-how-to-hire-in-a-world-where-unicorns-dont-exist/ https://www.ocadotechnology.com/podcast/episode-4-how-to-hire-in-a-world-where-unicorns-dont-exist/#respond Tue, 27 Mar 2018 09:36:50 +0000 https://www.ocadotechnology.com/?p=1959
Following on from the last episode of Pi & Mash, we’re mixing things up, turning the tables around and taking a look at how technology companies can ensure their teams have all the skills needed to stay at the cutting edge of innovation. We’ll also myth-bust the idea of the ever-elusive unicorn candidate and find out what our guests have to say about job hunting in this ever changing industry.

Useful Links

Technology Careers

Getting Hired – A guide

What is Data Science?


Guests in order of appearance:

Ant Davis – Security Response Engineer (and podcaster, in his spare time)

Andreia Silva – Data Science Team Lead

Marcin Druzkowski – Senior Research Data Scientist

AJ King – Organisational Scientist

Alex Howard Whitaker – Cloud Services Engineer

Zara Belmar – Technical Recruiter

Written and hosted by Holly Godwin

Produced by Green Barge Audio with original music by Nic Sims


https://www.ocadotechnology.com/podcast/episode-4-how-to-hire-in-a-world-where-unicorns-dont-exist/feed/ 0 1959
How to add a Django form to a project https://www.ocadotechnology.com/blog/how-to-add-a-django-form-to-a-project/ https://www.ocadotechnology.com/blog/how-to-add-a-django-form-to-a-project/#respond Thu, 22 Mar 2018 14:48:36 +0000 https://www.ocadotechnology.com/?p=2335 All of our Code for Life projects use the free, open source Django framework, which means it’s really worthwhile for us to get to grips with the framework’s architecture. One of the many benefits of Django is that it provides a form handling service (for a general tutorial on Django forms, click here).

Like most websites, the Code for Life portal includes forms for logging in, registering and contacting the Ocado Technology team responsible for the project.

This tutorial will take you through how forms are organised, using the above mentioned website as an example.

To add a Django form you need to:

  1. Create the form class
  2. Write the form functionality in Python
  3. Call the Python method in the URLs file
  4. Add the form in HTML

Create the form class

First, you need to create your all important form class using a Python file: this will contain your form’s widgets, and will dictate the logic behind the data validation.

  1. Go to the forms folder. Here are the files which contain the forms of the project.
  2. Choose the file which is relevant to your form – ie: in the portal project, the teach.py file defines all forms that a teacher requires. If there is no suitable file, create it! 
  3. Define your form class like so:

    class FormName(forms.Form): 
  4. Define the widgets.
    This is where you decide on what fields to include within your form, and their properties. For example the code below defines a field (an input box) for entering your first name and sets a maximum character limit of 100 as a property of that field:

    first_name = forms.CharField(
         label=”First name”,
                    ‘placeholder:’ ‘Grace’

    From the user’s perspective they will see the input field for their first name and a placeholder ‘Grace’ which helps them to understand how to fill in the box, if they are struggling to remember what a ‘first name’ is…

    Have a look around the current forms to find out how to define other widgets, such as email fields, drop downs, password fields, etc. 

  5. Define methods for validation.
    This is where you should handle things like making sure:
    – A unique field isn’t entered twice
    – Passwords are valid and match the confirmation password, etc…

    When the data inputted isn’t valid, you may raise the following error:

    raise forms.ValidationError(“error message”)

    To read more about forms and field validation, click here.

Your form class is now complete. Go celebrate with a nice cup of tea. 

Define the view (form functionality)

Now you have to code what it is that you want the form to do. This is where data processing, sanitisation, models creation and redirections happen.

  1. Go to the views folder. Here are the files which contain the views of the project. 
  2. Choose the file which is relevant to your form. In the example of the code for life portal project, this is once again the teach.py file. 
  3. Define your method for form handling:

    def method_name(request):

    Feel free to add any other arguments that you might require to process your form.

  4. If your form deals with handling sensitive data and/or changing the state of your app, then it has to do this through a POST request (POST requests submit data to be processed, from an HTML form to the identified resource):
    if request.method == ‘POST’:
         #data handling
  5. Import the form you’ve just created:

    from portal.forms.teach import FormName
  6. Call the form class you’ve just imported:

    form_name = FormName(request.POST)

    You can now use the form_name variable to perform checks, such as whether the form is valid upon submission.

  7. Define the HTTP redirect once the form is valid and submitted. There are two ways of doing so:

    return HttpResponseRedirect(reverse_lazy(‘url_name’))


    return render(request, ‘path/to/template/file’, 
         {‘HTML_attr1’: attr_name1,
          ‘HTML_attr2’: attr_name2})

    There are a couple of things to note here.

    – The first method is a simple redirect to a page, which doesn’t require you sending any attributes to the HTML (more on this later).
    – In this case, the ‘url_name’ value is the url name of your web page, as defined in the urls.py file (more on this later).

    – The second method does the exact same thing, but also offers the possibility of sending some attributes to the HTML, which can be used within the HTML code when that page is rendered.
    – The ‘path/to/template/file’ is the file path to the HTML file that contains the code for the page you want to render, found in the templates folder.

    In the second case you have to pass in the form name as one of the HTML attributes, so the HTML page can know which form to show on the page. In the end, it would look something like this:

    return render(request, ‘path/to/template/file’, 
         {‘form_name_attr’: form_name,
          #other attributes})

Call the Python method in the URLs file

This is where you indicate that you want this form to show up at a specific URL.

  1. Navigate to urls.py. 
  2. Import the Python method you just created. 
  3. Create a new URL like so:

    url(url_regex, method_name, name=”url_name”),

    Where ‘url_regex’ is the pattern for your in-browser URL, method_name is your method you just defined, and url_name is the name of the URL you want to give it. The ‘url_name’ value is what is used in the ‘request_lazy(‘url_name’) seen earlier.

Add the form in HTML

Now all that’s missing is the actual form within the HTML page.

  1. Navigate to the templates folder and choose the HTML file you want your form to be in (if it doesn’t exist, create it!). 
  2. Create the form tag in HTML:

  3. If the form handles a POST request, make sure to add:
    <form method=”post”>
         {% csrf token %}
  4. Add the form fields using the HTML attributes passed from the Python method:

    For example:

    {{ form_name_attr.first_name }}
    {{ form_name_attr.first_name.errors }}

    This tells the HTML to add the ‘first_name’ text field of your form (see step 1 of this blog), followed by the error messages that can arise from invalid data input.

  5. Add a submit button to submit the form:

    <button type=”submit” name=”form_purpose”>Submit</button>

    The important bit here is the type=“submit” which is what indicates that, upon pressing the button, the logic within the Python method gets launched and the form data is processed.

    NB: The name attribute comes in handy if you have many forms on one page and need to differentiate between them in the Python method.

And here you have it! 

We hope our handy guide helps you to create your own HTML forms. For more information about the Code for Life projects visit our GitHub page.

Florian Aucomte, Technology Intern – Code for Life

https://www.ocadotechnology.com/blog/how-to-add-a-django-form-to-a-project/feed/ 0 2335
How to make data more human with Google Data Studio https://www.ocadotechnology.com/blog/how-to-make-data-more-human-with-google-data-studio/ https://www.ocadotechnology.com/blog/how-to-make-data-more-human-with-google-data-studio/#respond Thu, 15 Mar 2018 08:23:43 +0000 https://www.ocadotechnology.com/?p=1854 Code for Life now has over 130,000 registered users as far afield as Australia and Brazil, meaning we produce a lot of data in need of analysis for communication purposes, reports and user research.

An official Code for Life report requires many data sets, including the exact number of registered users or the countries these users are from. We also analyse in-game data like the real time spent on each of our levels in the Rapid Router game. Our data sets are gathered from various sources ranging from our Cloud SQL database to Google Analytics, Facebook, Twitter and beyond, which can make it hard to get a holistic overview of the project and its progress. We also have to consider that some people reading our reports don’t necessarily understand data jargon, like sessions, bounce rates or returning visitors. We therefore end up having different reports from different sources which are not easy to customise to our needs.

We needed to find a tool to help us sift through our data and draw meaningful conclusions.

The solution? Google Data Studio!

There are several visualisation tools, like Excel and Tableau, that allow users to access data and create reports, but unlike Google’s new visualisation and analysis tool, many are not easily customisable, nor available for all operating systems, and they don’t all allow connections to multiple data sources. 

This free, cloud-powered tool (currently in beta in the UK) already provides integration with multiple data sources. You can create reports that are easy to share and automatically refresh, so they will always be up to date every time you view them!

It is also dynamic in view mode; you can use your mouse to hover over charts to check values you are interested in, filter the dates you want to view and click for further details. In edit mode, on the other hand, you can create and customise beautiful reports quickly and easily.



Tah-daah! This is an example report!

Let’s look at some useful features, by going step by step through a real example: understanding how visitors find our website and checking if our product backlog reflects our findings. 

We start with a blank canvas containing just a few design elements.



You can select the calendar icon from the overhead header and choose a time range, so that your report will always be up to date. Here for instance we’ve chosen the last seven days.



We also decide to add a number of visitors scorecard, but the dark grey text color doesn’t quite fit on our blue header – this is easy to solve.



We can change the style of the scorecard:



While we’re at it, let’s also add a comparison with the previous period.



Now the “Visitors” scorecard looks better against the blue background.



Great – now let’s see how people find our website by adding a chart of referrals.



We can now pull our referral data and make it easily digestible using a pie chart.



Google Data Studio allows a lot of customisation. In our case, we’ve added a note to explain to our stakeholders what Organic and Direct mean, using the text box in the tool bar. 

This chart represents the traffic for all of our visitors, and we can see it’s mostly organic and direct. But we are also interested to know whether we get the same results for returning visitors.



Looks like for returning visitors search engines are used even more!

Let’s now find out what keywords they are they using to find it? Let’s add a table that will allow us to see more than 10 results by using the table icon in the toolbar. 



Let’s remove the ‘not provided’ and ‘not set’ results that clutter our nice table by using a filter and widen the time range to one month in order to get more significant results. 



Now it make sense that returning visitors that already know about our project type Code For Life-related keywords to find us again. Next, we’d like to understand which keywords new visitors use.



If we switch to view mode, we can actually browse through all the results.



So the first “generic” keyword used to find our website is the 32nd. It means that most users type something related to the Code For Life project or our first game Rapid Router to find the website. The number of keywords here is not really significant because Google Search now encrypts all search queries. But this actually confirms what user interviews had already suggested; that Code For Life is mostly marketed through word of mouth.

Now let’s go back to Edit mode, and add a table that tells us the list of referral websites visitors use to find us – the online equivalent of word of mouth.

We copy the previous table, and add a filter to remove direct and search engine traffic types:



That’s awesome! These results suggest that if we want more traffic, one way would be to make sure we get included in more websites like the ones above, but also that we make sure people find us by typing the right keywords in search engines, like “Coding resources for schools” for example. 

What does our backlog say about prioritising outreach and community related user stories?

Google Data Studio allows us to add different data sources, which is awesome. To be fair, we haven’t found a way to safely get data from our database, as currently Cloud SQL can only be added as a data source without SSL protection, which we don’t allow for good reasons. But it’s important to remember Data Studio is still in beta and already very promising.

Our backlog is in a Google Spreadsheet, that we can safely add as a data source to Data Studio. The goal is to create a very basic product graph, showing us user stories prioritised by Cost To Delay and Strategy.



Of course, some of the metrics don’t fit yet, but we can change it as we can create new metrics, aggregate some others, etc.



Here, we easily transform our t-shirt sizes Costs of Delay into numbers. We do the same with Strategy:



Now, let’s say the aggregates for these new metrics are average (and not cumulated):



If we add a filter to only see the stories concerning outreach and community, we get the following results:



And the final graph looks like this:



Of course, this is just an example of how you can use Google Data Studio to quickly and efficiently create human-readable and shareable data boards.

Happy data analysis!

Celine Boudier, Code for Life Team Leader

https://www.ocadotechnology.com/blog/how-to-make-data-more-human-with-google-data-studio/feed/ 0 1854
Episode 3: Tech in Colour https://www.ocadotechnology.com/podcast/episode-3-tech-in-colour/ https://www.ocadotechnology.com/podcast/episode-3-tech-in-colour/#respond Tue, 13 Mar 2018 05:30:51 +0000 https://www.ocadotechnology.com/?p=1956

During the next two episodes we’ll be taking a step inside the Ocado Technology offices to find out more about the scope of opportunities available in technology today, taking a closer look at the ever evolving industry culture from both sides of the interview table. In such a fast paced, quick changing environment, technology is requiring an ever growing range of skills, and they’re not always what you would expect…

Useful Links

Technology Careers

Getting Hired – A guide


Guests in order of appearance:

Celine Boudier – Code for Life Team Lead

Alex Howard Whitaker – Cloud Services Engineer

AJ King – Organisational Scientist

Zara Belmar – Technical Recruiter

Ant Davis – Security Response Engineer (and podcaster, in his spare time)

Written and hosted by Holly Godwin

Produced by Green Barge Audio with original music by Nic Sims


https://www.ocadotechnology.com/podcast/episode-3-tech-in-colour/feed/ 0 1956
Using Google Cloud and machine learning to improve fraud detection https://www.ocadotechnology.com/blog/using-google-cloud-and-machine-learning-to-improve-fraud-detection/ https://www.ocadotechnology.com/blog/using-google-cloud-and-machine-learning-to-improve-fraud-detection/#comments Wed, 07 Mar 2018 09:30:41 +0000 https://www.ocadotechnology.com/?p=2157 As the world’s largest online only supermarket, our systems handle millions of events every minute as our customers navigate our website and apps, add items to their trolleys, choose delivery slots, and check out their orders.

These interactions result in petabytes of data collecting in our data lake stored in Google Cloud. One challenge facing any retailer operating online is isolating and recognizing the rare incidents classified as fraud in a smart and efficient way.

For those unfamiliar with online fraud, it typically covers any instance where an order is delivered but not paid for. Fraud can happen as a result of a genuine mistake (a customer entering the wrong personal details or using an expired card accidentally) but, occasionally, it can also be the result of malicious intent. If left unchecked, fraud can propagate to other systems and companies and affect our customer service.

Therefore, we needed a clever way of predicting and recognizing these incidents among millions of other normal events. The answer to this complex challenge was to use the cloud and machine learning (ML). Our data science team had already successfully deployed many ML projects into production so it made sense to design our own solution using the experience and competencies we had gained from elsewhere in the business.

In addition to augmenting our contact center, machine learning pervades our end-to-end e-commerce, fulfilment and logistics platform. For example, ML is already powering the way we recommend products on our webshop or how we generate search results designed in order to avoid suggesting meat to vegetarians or products containing gluten to celiacs.

The motivation behind using ML for fraud detection was twofold: speed and adaptability. Machines are fundamentally more capable of quickly detecting patterns compared to humans. Also, as fraudsters change their tactics, machines can learn the new patterns much quicker.



Traditionally, fraud detection agents are employed to make judgement calls on whether they think a certain interaction is likely to be fraud or not. Decisions are based largely on intuition and can leave companies in a position of playing a cat and mouse game with fraudsters. For example, if fraud agents notice a correlation between baskets containing an unusually large order of alcohol and confirmed instances of fraud, they might then continue to look out for this trend in future. However, once fraudsters pick up on this, a new trend may start for say household goods, and so the game of catch up continues.

A machine learning model on the other hand can learn and adapt far quicker, evolving based on the current environment and even predicting future trends; the model can also look at many more factors than a human or fixed rule based engine can. The work of fraud agents is then made more manageable, as they no longer have to frantically analyze thousands of data points to establish fraud. Instead, they simply perform a final check to confirm whether they should cancel the order or not based on the prediction made by the model; it’s a perfect case of humans and machines working together in harmony.

However, just because we could improve our fraud detection process with a ML model didn’t make it easy to implement. Confirmed fraud cases are incredibly rare; given a typical fraud rate of one in every thousand orders (0.1%), a machine learning model that is only 99.9% accurate could still miss several instances of fraud.

Therefore, our fraud detection ML model had to be incredibly accurate.

So, how did we do it? From the data we had collected from past orders, including cases of fraud, we created a list of features which included the number of past deliveries, the cost of baskets, and other information. The more features we included in the training data, the more reliable the model could be, so we made sure that we were providing our model with as much information as possible (and we will continue to add more as time goes on).

After collating our data, we then had to decide upon an algorithm capable of learning from the information. Eventually we implemented a deep neural network on TensorFlow, as it was precise and easy to deploy into production. Using TensorFlow was a natural choice as we had already made the move over to Google Cloud for data analytics so using TensorFlow alongside our data stored on the Google Cloud Platform worked well. It also made our model scalable and transferable, which has in turn empowered our developers.

In order to brainstorm ideas and improve our proof-of-concept model, we hosted hackdays where our multidisciplinary team of data scientists and software engineers explored new features, tested new models, analysed and visualised new data and explored monitoring. The main goal of getting everyone in a room was to manipulate our data in order to gain insights into the problem and provide more information for our model. These hackdays allowed us to focus solely on the task at hand and took our model to the next level.

We now have a model that predicts results in real-time and provides the likelihood of fraud as a probability, using the following process:

  • The customer order information is stored and analysed using BigQuery.
  • The information is then processed using Dataflow, where the data is normalised, (a process whereby numerical features are re-scaled around the origin, and categorical features are transformed into a sequence of integers). This reformatting is necessary for many ML algorithms, including Deep Neural Networks built using TensorFlow.
  • Dataflow is also used to transfer the data from BigQuery to Datastore and Cloud storage.
  • Datastore provides fast data access, allowing for pre-computed features to be accessed when running real time predictions.
  • Cloud Storage efficiently stores data using a file system.
  • Cloud ML consumes the data from Cloud Storage and produces models as APIs.
  • The Ocado fraud detection model, powered by TensorFlow, then reads the data from Datastore and then, using the Cloud ML APIs, makes real-time predictions.



The model has been a great success, improving Ocado’s precision of detecting fraud by a factor of 15x. However, we are keen to continue improving. We are now tackling our next challenges: investigating algorithms that could allow us to explain our predictions in more detail, assessing whether we can transfer learnings from one retailer to another, and considering what tools could help us to streamline our process.

Looking back, this project wouldn’t have been possible without the close collaboration between many technology and retail teams in Ocado: the ML model has been consuming data from our order management, payments, CRM, and e-commerce teams. We have been using the tools developed by our data engineering, data platform, and machine learning services teams. We also relied on the data governance team to help us set up the Google Cloud projects and interact with our colleagues in the fraud team.

In such a fast changing industry we are always trying to stay ahead of the game, exploring the latest technologies and thinking of creative ways to implement our cutting edge ideas.

Have you found any innovative uses for machine learning models using TensorFlow?

Holly Godwin, PR Executive

https://www.ocadotechnology.com/blog/using-google-cloud-and-machine-learning-to-improve-fraud-detection/feed/ 5 2157
Ocado Technology signs five year lease to expand its software development team in Sofia, Bulgaria https://www.ocadotechnology.com/press-releases/ocado-technology-expands-software-development-team-sofia/ https://www.ocadotechnology.com/press-releases/ocado-technology-expands-software-development-team-sofia/#comments Tue, 06 Mar 2018 11:48:01 +0000 https://www.ocadotechnology.com/?p=2210 Ocado Technology, the technology division of Ocado, has signed a five year lease for two floors in a new building currently under construction at 13 Henrik Ibsen street in Sofia, Bulgaria in order to expand its existing team in Bulgaria. Totalling 2,000 m2 of floor space, the office will become home to a diverse group of Ocado technologists based in Sofia from July 2018.

The Sofia software development center will ultimately house around 150 engineers working on Ocado Technology’s world-class systems and solutions in the areas of robotics, machine learning, simulation, data science, warehouse control, in-store picking, and more.

Richard Haywood, head of Ocado Technology Sofia, comments: “While our partnership with Questers has been very helpful to establish ourselves in Sofia, the time is now right for Ocado Technology to set up our own dedicated and standalone software development center here in Sofia. I am very proud of what the team has achieved so far and I am very excited that we are now moving into a brand new office. This will help us grow further and build a collaborative environment to enable the team to continue to solve challenging problems.”  

Ocado Technology initially opened the Sofia development center in 2016 by collaborating with Questers, a technology “build, operate and transfer” services company. Ocado Technology Sofia has successfully attracted nearly 50 highly qualified employees in little over a year. Based on the quality of technologists hired, Ocado Technology has decided to create a significant independent presence in Sofia.

The development center in Sofia is Ocado Technology’s fourth location outside the UK, alongside two offices in Poland and one in Spain. Working with Colliers International, a leading real estate consultancy, Ocado Technology have found a great location for the office situated next to Paradise Mall, with easy access to the city center via the Vitosha metro station, the Ring road and local buses and trams. The building is developed by Artestroy, which has vast experience in construction completing 39 residential and office projects in Sofia since 1993.

About Ocado Technology

Ocado Technology is developing world-class systems and solutions in the areas of robotics, machine learning, simulation, data science, forecasting and routing, inference engines, big data, real-time control, and more.

Ocado Technology enables Ocado.com, the world’s largest online-only supermarket, to serve more than 645,000 active customers in the UK. The fusion between the Ocado retail and Ocado Technology divisions creates a virtuous circle of innovation that leads to disruptive thinking. Ocado Technology also manages the online presence of Morrisons (the UK’s fourth largest supermarket chain) as well as that of Fabled by Marie Claire, Fetch, and Sizzle.

For more information about Ocado Technology, visit www.ocadotechnology.com


Richard Haywood, Head of Ocado Technology Bulgaria, richard.haywood@ocado.com, +359 89 891 6949

Alexandru Voica, Head of Technology PR and Communications, alexandru.voica@ocado.com, +44 7584 587760

https://www.ocadotechnology.com/press-releases/ocado-technology-expands-software-development-team-sofia/feed/ 1 2210
March 2018 https://www.ocadotechnology.com/news/march-2018/ https://www.ocadotechnology.com/news/march-2018/#respond Tue, 06 Mar 2018 11:13:33 +0000 https://www.ocadotechnology.com/?p=2207 UK’s largest online retailers record 23% jump in sales
5th March – Independent

Ocado CTO discusses artificial intelligence with Elixirr during Retail Week Live 2018
6th March – Elixirr

Tesco and Morrisons fastest-growing supermarkets of UK big four
6th March – Kantar

Ocado unveils AI-powered retail fraud detection system
7th March – Computing

How Ocado is putting machine-learning to use in combatting fraud
7th March – Internet Retailing Expo

Ocado improves fraud detection with machine learning
8th March – CloudPro

EMEA businesses thrive in a multi-cloud world
8th March – Bdaily News

Robots Are Learning to Handle With Care
11th March – The Wall Street Journal

Ocado has ‘need to know’ projects that even some staff don’t know about
11th March – Business Insider UK

Best uses of AI and machine learning in business
12th March – Computer World UK

Sobeys predicts e-commerce dominance with Ocado
14th March – Supermarket News

The connected business – how firms like Ocado are leading the way
20th March – information age

Online grocery CEOs: Using stores to fulfill orders is not the answer
20th March – FoodDive

How Ocado broke down its monoliths to create a scalable, saleable Smart Platform
22nd March – Computing

How electric vehicles are changing the future of delivery in the UK
22nd March – Gadette

How Ocado modernised its legacy IT architecture to create the Ocado Smart Platform
23rd March – V3

Roland Plaszowski: A Look Inside the Cloud and Microservices Architecture at Ocado
23rd March – InfoQ

https://www.ocadotechnology.com/news/march-2018/feed/ 0 2207
The design sprint that brought us the homepage for the Ocado iPad app https://www.ocadotechnology.com/blog/the-design-sprint-that-brought-us-the-ocado-homepage-for-ipad/ https://www.ocadotechnology.com/blog/the-design-sprint-that-brought-us-the-ocado-homepage-for-ipad/#respond Thu, 01 Mar 2018 12:30:26 +0000 https://www.ocadotechnology.com/?p=2164 Sometimes a sprint is better than a marathon. Deciding to design the homepage of the iOS app for iPad was a big challenge that involved time, effort and dedication from various different departments within Ocado. Choosing a sprint allowed the team to not only create the new iPad homepage design from scratch, but also have it fully user tested first version, all within a week!

This becomes an achievable goal when using the sprint methodology, because everyone involved contributes their ideas throughout the design process, rather than the traditional approach of a designer creating a complete product, presenting said product, receiving feedback from the various teams and then beginning another redesign – a process that can have countless iterations. Gathering everyone in a room for a week meant we could learn fast from our mistakes, agree on our goals and vision and reduce the internal feedback process considerably.

Other than the obvious benefits associated with a design sprint, the other reason was… well, why not? After all, we are a technology division and pride ourselves on our drive to progress and try new things, so why not explore new methodologies and techniques?


How did we do it? This can be summed up with one word – “teamwork”.

As this was a new approach we decided to follow the guidelines of the sprint book, which gave us a recipe to follow. We did, however, adapt the process somewhat and adjusted the guidelines to our needs.

A timeline of the Ocado iPad homepage design sprint

Before delving into the details, it is important to set out your agenda. There were some questions that needed answering before we could begin: What do we want to focus on? Who do we want to invite? When are we going to run it? How are we going to communicate this approach to the business? Do we need any materials? (Pens, whiteboard, post-its? Obviously any technologist will know we always need more post-its).

It is important for a design sprint team to be diverse in their skill set – make sure you have a range of employees with different roles and specialisms. You also need to ensure there’s someone who has a clear vision for every element of the design – the business goals, research and user experience, product vision, technical knowledge.

A design sprint team should have around seven or eight members. If there are more, it will be harder to reach a consensus on any feature ideas. After answering the initial questions (and buying enough post-its to wallpaper the entire building), we cleared everyone’s calendars for a week and started calling Ocado customers who favoured the iPad app to prepare for the user testing phase ready to begin. The pressure was on.


Before we get into how we did it, please be aware that this is an account of the highlights of our own  design sprint. We do not necessarily suggest you use this as an exact guideline for your own design sprint. For that purpose, please read the book.



The purpose of our Monday morning session was to gain a general understanding of the business goals. Members of the sprint team from user research, retail and product owners presented all the information they had related to the long term vision, strategy, KPIs, statistics and market penetration of Ocado for iPad. Our aim was to provide a better landing page for users transitioning from the mobile version of the Ocado.com webshop to the native iOS app, by designing a homepage for the app that felt familiar and easy to navigate. We started by building a flow map representing the user journey of a typical customer visiting Ocado.com to place their first order.



First, we settled on an area of focus – the homepage – with the help of our appointed sprint lead. The sprint lead was a member of the team who helped us make judgement calls quickly; they had the final say whenever a decision was needed. We wanted to make sure we stayed on track throughout the week ahead, so we all wrote out our ideas about the vision and mission for the project, which would act as a reminder for the upcoming exercises. Can we create a transparent transition between web and mobile, and help the customer find the products they need in a fast and intuitive way?


Tuesday brought two new challenges: The morning was about research. We knew that we wanted to redesign our iPad homepage, but now it was time to explore how our peers and competitors were designing retail webshops for the iPad. We spent the majority of the morning browsing; collecting images from Pinterest, Dribble and the internet at large to start the ideas flowing. By midday we were debating good and bad user experience and had a lot of new ideas buzzing around. These ideas, alongside the business goals and user research from Ocado, got us thinking about how to design a coherent homepage.

It was then time for the first sketches; boxes containing a word, sentences, a flow, an image – anything you liked, really.  

Everyone penned their first ideas and stuck them up on the wall. The team then took a silent vote on the ideas they thought were most promising, and began to share any concerns and suggestion. By the end of the day, each member had created their own wireframes (a more advanced and detailed sketch) and a three page storyboard detailing how they imagined the iPad homepage.


Wednesday’s aim was to select one storyboard or idea to use as a basis for the sprint and to then create a more detailed version. After discussions, the team lead chose from the eight storyboards on the wall. Their task was to select the approach that showed the most promise in terms of the business goals and the vision of the design sprint.

We spent the day creating a detailed storyboard. Instead of three pages, we now used as many as needed to tell the story: a user visits Ocado.com from their device and sees a notification at the top right corner – ‘Why not try the Ocado app?’ – the customer then goes to the Apple Store and downloads the app. The customer opens the app for first time and are offered an onboarding experience when they land on the homepage (the onboarding process is when you receive tips and instructions on your first visit to a page).

This level of detail helped to build the prototype that would be needed on Friday for the user testing.




The penultimate day could probably be summed up easily as ‘divide and you will conquer’.

We had put aside the day to build the prototype, but this seemed like an insurmountable task – we had to break it up and divide the responsibility in order to have a chance of creating a real world product by the end of the following day.

Everyone in the room chose a role. A small group was in charge of the graphic design, others started building the technical background for the prototype, someone else decided to find the right images and copy, another member started creating the script for the user testing and lastly somebody took charge of reviewing all the inconsistencies across message, navigation and colours. The challenge was to make the prototype as real as possible, while understanding the time limitations.


The moment of the truth arrived on Friday. After four days of intense work, we watched remotely as the user testing took place in our head office in Hatfield. While the session was ongoing, the team made notes on customer reactions and patterns in how the prototype app was used, in order to compare and analyse the results. The good news was that we made significant progress; everybody understood the homepage and navigated it successfully – the user experience was, on the whole, positive.



What we learned

  1. Never underestimate the power of a design sprint. We didn’t know what to expect when we started the workshop, and it was amazing how quickly we could learn internally for other areas in Ocado and externally with customers.
  2. Never underestimate the power of the MVP; building something small, testing it, gathering feedback from our customers, improving upon it and continuing to  build. The faster we test, the faster we learn.
  3. If we want a change in the way we work, we should make it happen by ourselves, instead of waiting for someone to wave a magic wand. The methodologies and the technologies are all there, it is just a matter of taking that first step.

Stage one of the iPad redesign is in production and has been launched to 100% of customers. There was lots of great feedback, but there is always room for improvement (tip: never let yourself become complacent).

In a week we proved the concept, followed the idea through and tested the prototype for the iPad homepage. We’re now keen to hear from you! What have you achieved with your own design sprints?

Patricia Botta, Senior UX Designer

https://www.ocadotechnology.com/blog/the-design-sprint-that-brought-us-the-ocado-homepage-for-ipad/feed/ 0 2164
Episode 2: Just say no! https://www.ocadotechnology.com/podcast/episode-2-just-say-no/ https://www.ocadotechnology.com/podcast/episode-2-just-say-no/#respond Tue, 27 Feb 2018 05:30:27 +0000 https://www.ocadotechnology.com/?p=1947

This episode delves into the dreaded to-do list. Featuring guests Susannah and Anna; experts within product management, who want to wave goodbye to backlogged work for good, and AJ, who explores the psychological ramifications of an unmanageable list of work undone. Maybe we could all see ourselves saying no to ever-growing workloads after this episode of Pi & Mash.

Useful Links

Product Owner Blog – Anna Miedzianowska’s personal blog

Basecamp (formerly 37 Signals)


Guests in order of appearance:

Anna Miedzianowska – Head of Product at Ocado Technology

Susannah Ellis – Product Owner

AJ King – Organisational Scientist

Written and hosted by Holly Godwin

Produced by Green Barge Audio with original music by Nic Sims


https://www.ocadotechnology.com/podcast/episode-2-just-say-no/feed/ 0 1947
Why Ocado Technology adopted a cloud-first strategy https://www.ocadotechnology.com/blog/why-ocado-technology-adopted-a-cloud-first-strategy/ https://www.ocadotechnology.com/blog/why-ocado-technology-adopted-a-cloud-first-strategy/#respond Thu, 22 Feb 2018 10:07:21 +0000 https://www.ocadotechnology.com/?p=2138 Using the cloud, Ocado Technology is able to integrate hundreds of AWS-based microservices into a Google Cloud data lake that powers artificial intelligence capabilities across its infrastructure. Ocado uses the cloud to power the Ocado Smart Platform (OSP) and offer its solutions to large bricks-and-mortar grocery retailers worldwide.

Find out why the cloud has revolutionized the way Ocado Technology works from CTO Paul Clarke, including how moving to the cloud has accelerated the pace of innovation and has made development more cost effective:



The scalability the cloud is crucial to the delivery of OSP as a service. If you are interested in hearing more about our use of the cloud, Ocado Technology will be delivering two talks at QCon London 2018.

Alex Harvey, Head of Robotics and Autonomous Systems, and Paul Sweetman, Head of Software Architecture, will be delivering a headline talk on Tuesday 6th March. Their presentation will make up part of the Architecture You’ve Always Wondered About track, where the biggest names in technology will discuss their practices and proofs, looking into hot topics including self-driving cars, next-gen architecture and deep learning.

The talk will encompass the OSP journey as whole. This comes at a significant time, as it was only at the end of 2017 that Ocado signed their third international deal with Sobeys, the second largest grocery retailer in Canada, which had been preceded only a few months previously by the deal with Group Casino in France.

Alex and Paul will discuss all things OSP, including the control protocols for the army of 1,100 robots that will power the OSP Customer Fulfillment Center (CFC) in Andover, optimising delivery routes as customers shop and using machine learning to predict which products will be in high demand.



The architecture of this cloud-native platform has allowed Ocado to fulfill an order of 50 grocery items in under five minutes, a process that took Ocado’s first generation warehouses within the region of two hours. The talk will cover how Ocado Technology built built a solution combining AWS-based microservice architecture and Google Cloud-powered data analytics, with a swarm robotics grid controlled by an intelligent air traffic system running on private cloud that is unlike anything currently available on the market.  

And that’s not all: Carlos Garcia, OSP Fraud Team Lead, and Przemyslaw Pastuszka, ML Engineer, will be contributing to the Distributed Stateful Systems track the following day. Here they will present Ocado’s ML solution to fraud detection using Google Cloud – more to come in our blog later this month.

Dont miss out! Find out more about the week’s events by visiting qconlondon.com

Holly Godwin, PR Executive

https://www.ocadotechnology.com/blog/why-ocado-technology-adopted-a-cloud-first-strategy/feed/ 0 2138