Awards Granted at HackTCNJ for CrystalCoach

Best Overall Hack - 1st Place Winner

Best User Experience - 1st Place Winner


Everyone wants to be fit. Not everyone knows how, or has the money to afford a personal fitness coach. Introducing Crystal, the personalized A.I. driven, voice interactive fitness coach who will be able to log your daily activities and report back on calories you've burned and what you need to do to achieve that lean, mean beach bod.

What it does

CrystalCoach is a platform where a user can talk to Crystal, a custom crafted fitness coach A.I.

Crystal uses machine learning to receive user input such as their name, and what activities they do throughout the day. Think of her like Alexa, Siri, or Google Now, just spec'd out for fitness activities. You can tell Crystal how many push-ups and sit-ups you did, or how many miles your ran, and you can ask Crystal how many calories you have burned and what she recommends for you to do next.

All of this is personalized towards your own user profile that is generated dynamically along with your conversations with Crystal.

How I built it

CrystalCoach is powered by modern web technologies, libraries and APIs including HTML5, CSS3, jQuery, Angular.js and Node.js.

Upon entering the app (HTML, CSS), jQuery and Angular.js communicate with ResponsiveVoice.js, Google's Web-Speech API and API.AI to initialize voice interaction with the user and Crystal. Upon receiving input, Crystal processes the speech before sending it to API.AI to parse the intents and entities from the user's input. From there, Crystal pipes the intent through the Node.js server hosted on our AWS EC2 Instance before finally coming back to the end user as a fully interpreted response.

Throughout the process, Crystal is recording every input the user makes and making a log of inputs that are of specific fitness types, building up a personalized profile for each individual user. This allows Crystal to make educated decisions about the user, including the amount of calories they've burned and what steps they must take next in order to reach their ideal body type.

Challenges I ran into

Our team initially tried to bootstrap CrystalCoach using the Ionic Framework but after 10 hours of pulling our hairs out (and another 2 hours of pulling our hairs out because of Ionic 2) we pivoted straight to vanilla web technologies and decided to build out our app with the desktop experience in mind first.

Another issue we ran into was attempting to do two projects simultaneously - this almost caused us to finish neither! Splitting the work and using the Agile methodology to power both of our workflows helped tremendously in this case.

Accomplishments that I'm proud of

  1. Pivoting away from Ionic and making the right choice to switch to pure web
  2. Being highly organized using Trello and Facebook
  3. Implementing a custom A.I. agent to interpret user input
  4. Being able to send and receive audio-based input and output in the first place
  5. Tying all of the technologies together through a coherent network of data piping

What I learned

Our team went far in terms of what we learned. Though we had past experience in various web technologies such as HTML, CSS, Javascript and Node.js, using these technologies and applying them to new ones such as API.AI were a challenge and required us to learn much about the connection between all of the technologies in regards to one another.

What's next for CrystalCoach

CrystalCoach is a pet project of my company CrystalFruit imagined within a day and implemented within a day with the goal of becoming a leading provider in robo-advisor-like services in the personal fitness and training market within the next two years.

The next step for CrystalCoach is to be presented at Temple University's BYOBB (Be Your Own Boss Bowl) and to gain attention from potential investors to generate interest and income for the project.

CrystalCoach was developed in under 12 hours at the college hackathon HackTCNJ

Team Members:

  • John Nguyen
  • Chethtra Yen
  • Doreen Lu
  • Harsh Patel
  • Xiao Zheng
Share this project: