By Neo4j Staff | March 23, 2012
Flavorwocky, an amusing name for a clever idea that highlights the connectedness of everyday life. With a little bit of coding, the simple idea about related flavors became Luanne Misquitta’s winning entry for the Neo4j Heroku Challenge. What was her recipe for success?
It Starts With an Idea
“The idea came to me while I was doing nothing in particular,” Luanne explains in her blog, “to build a simple app that would help one find ingredients whose flavors complement one another.” Foodies everywhere will recognize the classic “pairing of flavors” whether wine with an entree, or cross-cultural fusion recipes. Luanne focused on the generalized notion for ingredients, because “knowing which ingredients have flavor affinities can produce some amazing new dishes.”
Why Flavorwocky? Luanne had asked her husband, “what should I call the app?”, and he suggested “jabberwocky.” Appreciating the playfulness, she adapted it to the domain, exclaiming “behold — Flavorwocky.”
To the Whiteboard!
Luanne elaborated on the idea, realizing that “a graph is a good fit for this domain, so, using Neo4j, we model the way ingredients in a great dish pair together based on their flavor affinity.” Sketching out the domain was easy, translating directly into the graph. There are high-level Categories for groups like vegetables, spices, and dairy. Ingredients are related to the category first, then to each through a weighted PAIRS_WITH relationship. For convenience (anticipating the fun visualization) the Categories also have a color property.
To implement the application, Luanne decided on Grails 2.0, using straight-up REST calls to Neo4j. Her husband Aldrin has a nice blog post detailing how to get started with a project using Neo4j+Grails running on Heroku.
To provide a nice user experience, Luanne turned to the d3.js library to visualize the related ingredients.
The result, is a “version of this app [which] captures flavor pairings and how well ingredients pair together, and then allows one to search by ingredient and view complementary combinations. Needless to say, this just scratches the surface of the possible features for an app like this.”
Agreed, Luanne. It’s insight like yours that inspires new possibilities. Thanks for sharing your work, and congratulations on winning the Challenge.