Inspiration for Lyfe Trak

• As a data-obsessed human striving towards personal goals who is motivated by understanding progress along the way, I struggled with how to best track everything in one place. I tried several apps and platforms with data scattered throughout, and I ultimately resorted to customizing an Excel spreadsheet to my goals, forcing myself to manually enter daily progress, and spending time each month for analysis and reflection. But I knew there had to be an easier way without the hassle of using disparate, rigid tracking methods or spending significant time doing customized, manual data entry and interpretation.

• As an aspiring product manager interested in building my technical acumen, I decided to tackle this problem for a product management class I started before I found out about this competition. But I needed to make sure that other people were also dealing with the same problem. After doing market research to understand what other options existed, conducting several user interviews, and iterating my problem and hypothesis statement, my solution became very clear.

• A voice interface for tracking metrics that matter could make the manual process for entering data about progress towards goals less time consuming and more convenient and meaningful. Giving the user easy insight into their data could lead to better understanding of how to reach goals and motivation to live life more productively. Therefore, an Alexa skill could serve as a user’s accountability buddy for adding and checking progress towards life goals while relieving the manual interaction burden.

• As soon as I’d started defining an MVP and prioritizing features for my skill, I found out about the Life Hacks competition, and the timing was perfect. This competition was the motivation I needed to actually start building my skill, which I decided to call Lyfe Trak, and the positive feedback I’d received so far indicated that there was demand for this ‘life hack.’

What It Does

• Lyfe Trak helps you easily track progress towards your most important life goals – or anything else you are curious about how much or how often you are actually doing. Just tell Lyfe Trak what progress you’ve made, and it will take care of the rest. Ask how you’re doing on a specific metric or overall for extra motivation, and if you need help defining your goals, Lyfe Trak is here to help.

• You start by setting up metrics for reading, working out, or anything else that you’re interested in tracking. If you don’t know what to track, Lyfe Trak can offer you suggestions for new metrics and also give you different goal setting tips. A metric could be for anything that you want to understand your frequency or duration over time – for example, it could be something for which you have set a personal goal or it could even be a habit that you are hoping to build or break.

• Once you’ve set up a metric, you can add and check progress towards your goals at any time using your Echo device at home/work or the Amazon app on the go. You can add progress for a specific day indicating you’ve done something or for how long you did it, and Lyfe Trak will congratulate you on your progress. You can then check progress to see how many times or for how long you’ve done your metric in any time range. Lyfe Trak also gives you an average for your progress over the time range you specify.

• If you’re curious to know how you’re doing overall across all of your metrics, Lyfe Trak not only gives you a personalized report on how many times you’ve logged progress across your metrics, but it also shares how you’re doing compared to other users tracking progress!

• Additionally, Lyfe Trak can tell you what metrics you are currently tracking and help you delete a metric. Finally, if you get stuck or forget what Lyfe Trak can do for you, you can always ask for help.

How I Built It

• While doing several tutorials about how to build an Alexa skill, I prioritized my skill’s features by talking with potential users about the functionality’s value and determining the level of effort to build.

• Using Trello and loosely following agile methodology, I then planned out the skill build timeline into 5 iterative sprints. Each sprint built on top of existing functionality, and this helped me learn the basics of how to build a skill and then work my way up towards more complicated functionality.

• I started by building out the skill interface including creating intents and writing utterances, and then I wrote the code to handle intents and hosted it on Lambda. Once this was working, I learned about DynamoDB, built out the database architecture, and primarily used the DynastyJS library to connect the database to the skill service. This took some trial and error to make sure that users’ metrics and progress data were accurately recorded and persistent across sessions.

• I started off using an AMAZON.SearchQuery slot type for the metric to allow for users to completely customize their metric, however I ran into issues writing an utterance that included both this metric slot and built-in slot types for date or duration. So I decided to create a custom slot type for metrics and came up with over 100 unique metrics a user could potentially track. I listed out synonyms for these metrics to account for present or past tense (i.e. read vs. reading) and figured out that a user could still specify their own metric with this slot type. I look forward to monitoring which metrics are the most popular across users and what other new metrics users come up with that aren’t already included in my metric library.

• After learning about GUI for Alexa skills, looking at the different templates available, and sketching out mockups for each of the visual screens, I realized that given time and capacity constraints, I had to make tradeoff decisions about improving the existing functionality and introducing new features vs. developing a robust and compelling visual component for Echo Spot/Show. I decided I wanted to stick to my core problem of eliminating the manual effort needed to add and check progress, and also offer some additional context around goal setting. I also needed to address the bugs that had come up along the way, so I decided to deprioritize the visual component to phase 2 of Lyfe Trak. For me and the potential users I talked to, the most valuable part of the complementary visual aspect was a progress dashboard, and I realized that this would require a lot more learning and customization.

• Along the way, I attended Amazon’s extremely helpful Alexa office hours, monitored the Life Hacks Challenge Slack group, and tested my skill frequently with friends and family.

Challenges I Ran Into

• Connecting my skill to the DynamoDB database and making sure it was logging progress accurately while parsing dates and durations was my first challenge related to data input. Fortunately the iso8601-duration node package helped with duration parsing, but it wasn’t fully complete for my use case, so I had to write my own functions to augment it. Dates were especially tricky, since Alexa tries to return a date in the future. I had to include some custom math to ensure that I stored the date that the user actually meant when saying things like “Wednesday” or “April 17th.

• What was even more difficult was the data output piece – the skill is only valuable if you can check progress accurately and within a specified time period. Testing this raised several edge cases that I had to address, such as if a user said they did something yesterday, or wanted to check progress over the last 2 weeks.

• Figuring out the most optimal way to use DynamoDB was also tricky, because Dynasty didn’t include all of the functionality I needed, such as querying based on a sort key, as well as batch-deletion. I ended up having to learn how to use Dynamo directly, which was more difficult than just interacting through Dynasty.

• While I generally knew what I was getting into with building this skill (navigating the skill interface, honing my JavaScript skills, learning DynamoDB), I did not anticipate the additional level of effort for the visual component. The templates seemed simple enough to work with, but they were not exactly what I envisioned when I sketched out my visual mockups. I was especially interested in creating a dynamic, customized dashboard of progress to show when the user checked progress and very quickly realized that this would require significant time and customization. It was a difficult decision to deprioritize this, but ultimately I am happy with the improvements I made instead and look forward to diving into this in phase 2 of Lyfe Trak.

Accomplishments I'm Proud Of

• For my final product management class presentation, I was the only student that actually had a live demo working for my product. The audience’s enthusiasm for using my skill was palatable and gave me courage to keep building and improving.

• I feel good that I spent so much time defining the problem and talking to users before I actually started building, because my vision, features, and metrics were very clear heading into the skill build process. For my class work, I had to define specific success metrics and KPIs for my product. I feel that these metrics (a key one being entry into this competition) helped me stay focused throughout the build and will absolutely guide my measurement of user engagement after Lyfe Trak is live (including obtaining 100 users in the first month and aiming for over 3 sessions per user).

• I stayed extremely organized throughout the build process and am grateful to Trello for helping me do this. I have also kept close track of everything on my “wish list” and can’t wait to continue improving my skill and working towards my ultimate future vision articulated below.

What I Learned

• I learned that talking to potential users throughout the process and testing with different people frequently to gather feedback is an important part of the skill build process, because everyone interacts with Alexa in a different way. Getting out of my own head and defined utterances was critical to making the skill more dynamic and user-friendly.

• On the technical front, I learned A LOT about Amazon services, including the Alexa Skills Kit, AWS overall, Lambda, DynamoDB, and S3, and about how they all fit together. While I knew basic JavaScript, this was an opportunity to apply what I knew and grow my skills while building something I would use regularly (vs. for a class project in college). Throughout the process, I became much more comfortable searching and asking for help when I needed it on Alexa blogs, during Alexa office hours, and from software engineering friends.

• While I started with a product roadmap and clearly defined features, I learned to be flexible and adjust along the way. While it was difficult deprioritizing features, even some that I’d already started working on, I ultimately felt like I made the right decisions with the end user in mind.

What's Next for Lyfe Trak

• I have so many ideas! I am especially curious to monitor user engagement and plan skill updates based on interaction and feedback, and I have several feature ideas in my backlog to introduce in the next phase - maybe for a future Life Hacks competition!

• My biggest goal for the future is to give users control over their progress data by creating an integration to a user’s Google Drive account. In this way, their progress data is populated automatically into a Google Sheet so that the user can do additional analysis on their data if they are interested, and even integrate it with other data sources (i.e. Fitbit data through an IFTTT integration). I believe that giving the user access to their data can lead to better insights about how to reach goals and live life more productively.

• My other favorite future vision idea is to build off of the concept of Amazon’s Dash and IoT buttons so that users can assign their button a specific metric and simply press the button to indicate that they’ve done something. For more simple metrics, this further addresses my original problem of reducing data input effort. Personally, I would place this on my bathroom mirror to track how often I flossed my teeth.

• Phase 2 will definitely include a major visualization component for complementing the user’s understanding of available functionality and how to invoke it, as well as building out a dynamic dashboard showing a user’s progress for a specific metric or across multiple metrics.

• Someday, I hope to ultimately create a voice API for other habit tracking apps so that users have the option to add progress to whatever app/platform they are currently using by voice rather than manual input. This could expand my user base and unlock revenue opportunities.

• Other features in my backlog for phase 2 of this skill include the following: o More customization for how users define progress towards metrics (i.e. pages read, miles run, etc), and more personalized, motivational responses depending on what progress a user has made. o Send users a personalized weekly email summary of their progress o To measure progress over a specific time period, offer an option to set a timer and track duration progress in real-time (i.e. “Alexa, tell Lyfe Track to start timer for reading.”) o Daily check in dialogue with users covering all metrics they are interested in tracking on a daily basis, and expand these to include mood tracking and a productivity scale (i.e. how productive were you today on a scale from 1-5?) o While I did create a “change metric” intent to handle this utterance scenario, this option does not yet exist. However this would be valuable if a user wanted to change the type of metric (done, duration, or something else). o I included a subtle reminder intent, but it directs the user to set a reminder for adding progress using the Alexa companion app or reminder skill, rather than doing this within Lyfe Trak. I definitely want to consider additional ways to not only increase regular user engagement with the skill, but also to encourage people to make more progress towards the metrics they’ve set up.

Built With

Share this project: