Using Python, JavaScript and AWS to help traders buy stock across Africa with Boost

Boost simplifies stock ordering for small businesses in Africa. Businesses can order inventory via Boost’s straightforward WhatsApp interface and have it delivered right to their door in a timely fashion. With Boost, a local shopkeeper or restauranteur can easily order whatever produce they need whilst keeping their business open for custom. Boost currently operates in Ghana, Nigeria and South Africa and is expanding rapidly across Africa.

Boost’s platform is predominantly Python-based and hosted on Amazon Web Services (AWS) using AWS Elastic Beanstalk, with data persistence provided by Amazon RDS and Amazon DocumentDB. Vonage powers Boost’s implementation of the WhatsApp Business API. The platform provides web applications  for customers and admins alike, as well as an offline-capable web app for purchasing stock, with data persistence provided by IndexedDB.

Why Lambert Labs?

Boost reached out to Lambert Labs for help across their technology stack, from cloud computing with AWS to Flask API endpoints to UI improvements in the frontend.

At Lambert Labs we are AWS Advanced Partners, are Python experts and have reasonable frontend experience, so we were well placed to help the team at Boost!

What did we do?

This is a snapshot of the work we have completed for Boost thus far:

– Setup an event-streaming system in AWS using Apache Kafka and Amazon EC2. This reliably delivers customers’ messages to a Natural Language Processing (NLP) engine, reducing timeouts and enhancing the overall user experience.

– Programmed an offline app for purchasing stock. Data persistence is provided by IndexedDB.

– Set up a Celery worker cluster in AWS ECS to pass off  a key step in the online ordering process to background workers, and enable other scheduled tasks.

– Implemented “BoostBucks” in the Flask app. This loyalty scheme rewards frequent customers with discounts.

– Set up web asset bundling using webpack, which helps streamline the frontend development process.

– Deployed a secure staging environment on AWS Elastic Beanstalk, with scheduled database sync jobs executed using AWS Lambda and AWS Step Functions.

– Integrated multiple improvements to the database schema.

– Used Slack notifications to directly notify the Boost team of new orders and customers.

Lambert Labs also conducted a Well-Architected Framework Review of Boost’s AWS infrastructure. Our work here was written up as an AWS customer success story.