Proposal: CoopCycle delivery platform

CoopCycle Solidarity Kitchen Proposal

@Leo and @sean_f have been investigating software infrastructure to help us run the solidarity kitchen over duration of the pandemic. This is the result of our findings and its viability for this project. We drafted super late so there might be typos and errors.

What is CoopCycle?

CoopCycle is an open source platform developed for worker co-op delivery services. It’s operational in lots of cities across Europe and in the U.K there is a co-op in York.

The software is a complete logistics and e-commerce system allowing the delivery of a product from A to B. It’s license is designed to reserve the use for worker owned co-operatives only.

We propose to use the platform as an ordering service and also a dispatching service for deliveries. It should allow us to keep admin workload to a minimum whilst being able to scale up to hundreds of orders.

Roles

Administrator (admins)

One or two Administrator accounts for backroom (to assign deliveries and create orders for people calling by phone)
One Adminstrator account for kitchen (to update menus and to accept orders)

Admin Documentation
Orders Documentation

Courier (delivery drivers)

As many courier accounts as we have couriers. They will primarily be using the mobile app.

Courier Documentation

Mobile Apps

Android

iOS

Web App

https://birmingham.coopcycle.org

Info we need from couriers to invite them to the platform

  • Username
  • Email
  • First name
  • Second name
  • Telephone number

Workflow

Inviting a new courier to the app

  1. Courier installs the app
  2. Backroom invites courier to the Birmingham platform birmingham.coopcycle.org by going to Users>Invite and entering info from couriers
  3. Courier accepts the invite and then logs into the app when they are available to do deliveries.

Order by phone

  1. Backroom gets a call on the phone number.
  2. Backroom uses their admin account to order from the Solidarity Kitchen menu on behalf of the recipient (includes address, contact details etc). A note is made of the recipients name and dietary requirements in the order. The order is put through as a quote (to avoid needing to enter card details.)
  3. Kitchen accepts the order
  4. Kitchen makes the order
  5. Backroom assigns the order to a courier as a task
  6. Courier accepts the task
  7. Courier collects the order and delivers it
  8. Courier marks the order as delivered

Order by app

  1. The recipient installs the mobile app or accesses the web app and selects Birmingham and then Solidarity Kitchen.
  2. The recipient orders one of the days set meals.
  3. Kitchen accepts the order
  4. Kitchen adds the order to the meal count for the day.
  5. Backroom assigns the order to a courier as a task
  6. Courier accepts the task
  7. Courier collects the order and delivers it
  8. Courier marks the order as delivered

Positives of using CoopCycle

  1. Reduces admin load on backroom
  2. Recipients can order without calling or emailing us (this is critical at scale, to prevent the phone line being overwhelmed)
  3. Recipients can reorder daily themselves without needing a callback.
  4. Backroom can assign orders to courier as tasks
  5. Route is calculated automatically for couriers. We can potentially also add zoning for allocating deliveries.
  6. Navigation for the couriers is done in the app (uses Google maps)
  7. We can see live location of couriers (when the app is active)
  8. Couriers can mark tasks as delivered and backroom will know instantly
  9. Admins can make orders on behalf of recipients
  10. There can be one than one restaurant

Identified problems with CoopCycle

  1. There is a minimum order of 30p (maybe we could say 50p per meal). Recipients ordering through app or web app will have to enter their card details and pay minimum 30p. However, admins can make orders on behalf or recipients. So if someone can’t access a debit card, then can call our number and we can order for them. See section below.
  2. We haven’t tested the route calculation finding (it does use Google Maps though).
  3. We haven’t tested the system at scale.
  4. We are working on translating more of the CoopCycle documentation into English from French.

Things we need to test

  1. This entire workflow is just a proposal and we have done minimal testing. Enough to know it should work but we may encounter bugs. Leo is in contact with the developers and other collectives on their Slack.

The payment problem

The CoopCycle developers won’t allow us to allow free orders from users who aren’t admins. This is because otherwise there is no verification for people ordering.

They said this is a hard boundary for them as it allows random people to spam orders and make the couriers go to random places.

Also, they said it increases the risk of couriers being robbed or attacked as there are no details to verify a user who makes an order against. If users are forced to pay, then there are at least some card details given that verify the order.

Admins can make free orders on behalf of people using the “Quote” button when ordering. This feature can be used to create orders for people phoning in.

Training

There could be an online training (using screen sharing) carried out by @Leo and @sean_f.

Tech Support

Tech support would be carried out by the Tech/Admin working group (possibly using an issue tracker on the forum).

Stripe test payment info

https://stripe.com/docs/testing

1 Like

Is there any way for us to put together several orders and assign a whole bunch to a single courier? So far we take x orders and they are all delivered once per day. This is very efficient from the kitchen and delivery point of view. For the kitchen because they cook one big batch and distribute it in portions at the end of the day, and for the couriers because they only need to go to the cafe once for collecting orders, and then they follow an optimal route. I´m afraid that if the app doesn´t allow us to work this way it just make the whole project unsustainable, because it would mean that kitchen needs to be packing portions non-stop and couriers need to be on duty all day. I’m also not convinced at all about the payment issue, and I think in the end it wouldn’t really take work from admin people if they have to log all orders through the app.
Happy to discuss the app more in detail at the meeting and really appreciate the work you’ve been doing, but I’m not convinced at the moment.

Is there any way for us to put together several orders and assign a whole bunch to a single courier? So far we take x orders and they are all delivered once per day. This is very efficient from the kitchen and delivery point of view. For the kitchen because they cook one big batch and distribute it in portions at the end of the day, and for the couriers because they only need to go to the cafe once for collecting orders, and then they follow an optimal route. I´m afraid that if the app doesn´t allow us to work this way it just make the whole project unsustainable, because it would mean that kitchen needs to be packing portions non-stop and couriers need to be on duty all day.

It does allow us to set delivery time in a batch yes. We just accept the orders all at a specific time but this is a very good point as its definitely not designed for batch delivery. I am passing our critiques of the current on the CoopCycle developers so they know what problems with their software we are finding.

I’m also not convinced at all about the payment issue,

The payment issue is a big one though I agree. Needs more discussion and I’m not totally convinced either. It could be donated to something or perhaps refunded using Stripe. I do think we should take the driver safety issue seriously. A friend of ours was robbed and badly beaten when delivering for Just Eat this year.

it wouldn’t really take work from admin people if they have to log all orders through the app.

They currently log the order through a spreadsheet so there isn’t a time/effort difference there. What it would allow, is for recipients to place their own orders without us having to take a call or read an email. That would save backroom a hell of a lot of time. They would only be answering say 10% of the incoming requests for food.

Think if our operation was scaled up to 500 deliveries or more. The phone line would be totally jammed. We would need a whole call centre just to take orders. This would allow people to make their orders in a scalable way. Think of Just Eat, Deliveroo, Uber Eats etc. They handle thousands and thousands of orders every day because they use a decentralised model like this.

We could also assign orders to say 50 delivery drivers in one go without having to message then all with directions etc.

Big discussion in meeting:

https://testing.forum.cooperationbirmingham.org.uk/t/minutes-for-meetings/109/11?u=leo

Essentially what was decided was to trial CoopCycle but have backroom enter all the orders so that we don’t have to fuck around with all the pay 30p stuff and keep the food free and there is value to talking with people on the phone.

2 Likes