Nymble is building Kitchen Robots for your home that cook the tastiest food, every day, on autopilot. You get fresh food, customized exactly for your taste — all without putting in time and effort.
A natural question that a lot of people ask us is what type of recipes do our bots use? Is it the kind which we humans see or have we invented a new “bot” way of cooking? The answer is YES and NO.
The essential nature of the recipe and way of cooking is exactly the same. You have to add ingredients in the right quantity at the right time and cook them for the right duration. But obviously, bots cannot read English. So human recipes need to be converted into a form that a bot can understand. Something in the form of zeros and ones.
And that is where the title of the post comes into the picture — the story of how we developed software tools to help our Chefs adopt human recipes into a bot-readable form.
When we first started, our Chef used to sit down with a Software Developer and dictate the exact sequence of instructions that he wanted the bot to execute. But we quickly realized that Chefs are finicky artists. They are never satisfied with their creations — for every recipe, there were multiple changes required after each cook and we quickly realized that this would not be the best use of the Software Dev’s time.
The fundamental block of the recipe that the bot sees is a JSON object. So the Software team made templates of JSON blocks and gave it to the Chef to just replace certain values and arrange the blocks together.
But having a Chef take care of multiple nested levels of indentation, commas and brackets is something we didn’t anticipate. And we quickly ran into issues.
That is when we decided to build an internal tool for visualizing, creating & managing recipes. The first version of our tool — the Recipe Editor was born. A visual interface to create recipes for our bot. It had two major components.
- A section to add metadata like cuisine, tags, cooking time, ingredients for a recipe.
- A horizontal timeline view represents the sequence of instructions getting executed as a function of time. This representation was inspired by a video editor timeline.
This started well. Our Chefs could create as many recipes as they wanted. And do changes all day. It also allowed them to create multiple versions of the same recipe, test all of them and arrive at a final decided version.
In fact, the biggest testament of the tool came from the Software Team itself where Developers also started using it create recipes for testing their code.
After our first set of 125+ alpha trials across Bangalore and San Francisco, where each user got access to our Kitchen Robots to use for a week — we got a ton of feature requests from our users. This translated into having to build a lot of new functionality for the Recipe Editor.
- With multiple Chefs now working in the KitchenOps team and making changes to finetune recipes, it became important to implement version control and track who is making what change.
- Approving changes made to recipes in production became an important aspect. One wrong change could ruin dinner for a lot of people.
- Our users now also wanted to customize their recipes — to the last bit. This necessitated changing the fundamental structure of the recipe themselves. So recipes instead of being static and holding hard-coded fixed numbers for qty of ingredients and instructions, now became dynamic to react to changes of serving sizes and user taste preferences.
And that is how the Recipe Editor evolved to a sparkling new form.
Frontend tech-stack: Vue2, Typescript, Vuex, Vue router
Some lessons learned:
- Start with the crudest tools available and work your way upwards from there. Our first version was — us putting together JSON blocks in an IDE.
- Having some engineering bandwidth to be able to work on building internal tools yields exponential benefits.
- Software has eaten the world, and is now coming for your dinner!
- If you want to build similar Software — we are hiring! Please visit — https://angel.co/company/eatwithnymble/jobs