I'm a developer, and like every developer I spend from 6 to 10 hours per day sitting at my desk.
This is not so good for my butt.
At the end of my working day I usually do a fast bodyweight workout. I tried several apps for it, but all of them lack of personalization and they are unnecessarily expensive. And, honestly, after 10 hours in front of a 23 inches monitor my tired eyes can't stand a 6 inches smartphone's display.
This is why I created Alexa Fitness Club.
What it does
Fitness Club generates every day a new workout you can do at home, no items are required, everything you need is the weight of your body and from 10 to 20 minutes of your time.
The skill guides you during the entire workout, giving detailed information on each exercise if you need it.
The daily workout is the same for every user and it is optimized on the club's users' feedback for the previous workouts.
If you need a more specific workout program you can ask Alexa to 'activate your training plan', she will use some basic information about you to generate the perfect training plan for your needs which will be optimized on your daily progress.
How I built it
I used the Alexa SDK for Python to develop the skill and I hosted it on an AWS Lambda function. I set up another Lambda function for the workouts generator, it creates a new workout every day for the club's users and generates customized workouts for the subscribers. I store users' sessions and feedbacks in differents DynamoDB tables, the workouts generators use these data to optimize every workout.
How I used In-Skill-Purchasing
The Club's Workout is a 10 to 20 minutes daily workout and it's the same for every user, the next day workout will be optimized on feedbacks Alexa receives from the entire community. A total of 15 different bodyweight exercises are available for the Club's Workout. And all this is free.
For a more personal experience is available a Custom Training Plan, that will be generated on the user's current physical condition and then will be optimized on the feedback he'll provide at the end of each training session. The Custom Training Plan included 15 more premium exercises, with a total of 30 bodyweight exercises available.
The cost of the Custom Training Plan is 2.49 $ per month with 7 days free trial.
I didn't want to make a too aggressive upselling experience, which could annoy many users, so I decided to present the upselling message with a probability of 30% at the start of the skill, only to users who have completed at least one training session.
Challenges I ran into
I have a good knowledge of fitness and how to structure a workout, but I totally underestimated the difficulty to build an algorithm that generates consistent workouts and well-balanced training plans.
I contacted several personal trainers and fitness coach and luckily most of them helped me to optimize my algorithm.
Now I'm working out with Alexa and my Fitness Club skill for around 30 days, 5 times a week after work in my own office, and for the first time in nearly 30 years I started to see my abs :D.
Accomplishments that I'm proud of
I'm proud because I started a training plan and I'm following it consistently for a month and I'm even more proud because I got this huge achievement with something I created.
But I'll be really proud when other people will begin to have benefit from using my skill, becoming the better, fitter and healthier version of themself.
What I learned
I'm a big fan of Serverless Technologies and Microservices Architectures, I used this project to strengthen my knowledge on these topics. I also learned how to create a complex Voice User Interface to manage several different kind of requests taking into account the context and the dialog's state.
What's next for Alexa Fitness Club
I have many ideas on how to improve Fitness Club, here are some:
- To integrate the Alexa Presentation Language (APL) to improve the skill UX with visual experience, display could be used to show information about the workout and video instruction for the next exercise.
- To improve the workout generation algorithm and the training plan scheduler, asking the user for more detailed feedback.
- To use the Cards in the Alexa's App to provide the user information and statistics about his workout and training plan.
These are some ideas came to my mind, but I'd love to hear the voice of users, to build and improve the skill around their needs, this is the perfect way to make Alexa Fitness Club the #1 solution for voice-driven fitness.