2011 in review

Leave a comment

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.

Here’s an excerpt:

A New York City subway train holds 1,200 people. This blog was viewed about 5,000 times in 2011. If it were a NYC subway train, it would take about 4 trips to carry that many people.

Click here to see the complete report.

Woah

Leave a comment

Long time no see!

I just figured I’d write a quick post before my readers swept all hopes for KitchenPC under the rug, along with Kozmo.com, Pets.com and Quikster.  I assure you I am still quite alive, and rumors of my death have been greatly exaggerated.  However, I must admit my focus on KitchenPC has dropped considerably recently.  Allow me to explain.

Shortly after finalizing the spec for the KitchenPC redesign, I was offered a six-month contract at – let’s just say – a large wireless communications company.  It was a tough decision, as I was hoping to take a full three months off and focus 100% on KitchenPC to get the new design out.  It turned out to be a pretty good offer (too good), so I figured why not and accepted.  So the past couple months or so I’ve had a day job, relegating KitchenPC work to my already cramped night and weekend minutes.

That’s not to say I haven’t made any progress though.  I’ve received the new user interface code from Merix and have already begun integrating this in with the site.  It’s turned out to be a massive amount of work; as if I just hadn’t realized before how much of the site I was really changing!  I’m also quite determined to give this iteration the fit and finish it deserves.  This release will be the one I rip off the “Beta” sticker from and declare it real, working software.  For this reason, I’m being extra picky on every little pixel, making the UI feel polished, and not putting up with the annoyances that some developers might let slide for a beta product.  This release needs to be so good that Steve Jobs wakes from the dead just long enough to say, “Well the iPhone 4S was somewhat of a media letdown but damn that new KitchenPC looks sweet!”

I’m hoping to get this new UI completely done within the next month (which is looking more and more like a stretch goal at the pace I’m going) and ready for “next generation content.”  At that point, I’d like to start reaching out to culinary experts, personal trainers, dietitians and others in similar industries to help me put together some pre-made meal plans to really sell the site.  This version of KitchenPC will really be focused on great content, unlike the previous attempt which disappointed users with a plethora or pitifulness.

While that’s going on, I also need to finish up the recipe crawler.  I’ve managed to create a crawler that can crawl any given site, extract recipe content and store it in a database.  It will just be a matter of hooking that up to my existing recipe parsing engine to get this data imported accurately into KitchenPC itself.  This will be no small amount of work either, but I believe my prototyping efforts have proved this possible.

I’ve also started thinking about a strategy to really promote the site when it’s done.  Since I never really worked very hard on the advertising side of KitchenPC (since you have one chance at a first impression, I wanted to really be happy with the product first,) this is something I think I have a chance at doing right now.  One conclusion I’ve come to is I want to hit the media hard and all at once.  This means a coordinated multi-prong effort including press releases, news articles, viral videos, social networking and traditional advertising vehicles.  I want to sell KitchenPC as “hands down the best recipe search engine online” and deliver a clear and concise message across as many channels as I can.  I fully believe in the direction I’m taking the site in, and I think once people see this new concept the first word out of their mouth is going to be “Woah.”

In fact, I’m so confident in this release of KitchenPC, I will go on record right now predicting the amount of traffic I can drive into the site on launch day.  Click on the image below to let me know if you agree with this prediction or not!

This Post Brought To You By The Letter “P”

3 Comments

Ah,the famous business “pivot.” All a tech startup need do to reach eminent fame and fortune is simply pivot once their original idea goes south, right? Clearly, every company anyone has ever heard of got their feet wet in a humorously unrelated business. Nokia started out making rubber boots to compete against the well known Russian imports. YouTube got its start as an online video dating service, and Flickr was some sort of online game. Even Starbucks had absolutely no interest in selling coffee, content with their profitable business manufacturing brewing equipment and distributing coffee beans.

Etymologically, the word pivot in this connotation is rooted in a basketball analogy.  To avoid losing the ball or getting stuck, a player can pivot.  Eric Ries (a well-known expert on pivoting if there ever was one) put it like this: “rather than hit the ground with the product, they ‘pivot’ just in time to save themselves from crashing.”

Learning when to pivot (and to what extent) is perhaps one of the most difficult choices to make as an entrepreneur.  You could have the greatest product on the planet, just no one knows about it because you lack the marketing budget necessary to bring your idea mainstream.  Finding out if your vision has any sort of basis in reality is something that takes market research, time, and flat out asking a lot of people.  It also requires you to face your fears of admitting everything you did was crap, and needs to be thrown in the source code scrap pile.  It leads to depression, as you contemplate the insignificance of your bitty little site on the Internet, like an ant peering up at the milky way.  Maybe that revolutionary idea you had, though still intriguing to your consolatory friends and family, just doesn’t have the oomph required to go viral.

To make matters worse, there’s of course a spectrum of magnitude when it comes to a pivot.  Do you scrap your rubber boot work force and hire a bunch of electrical engineers?  Perhaps you just need to emphasize a single part of your product that seems to click.  Twitter started out as Odeo, a audio-based microblogging platform.  Turned out, setting up recording hardware is somewhat of a hassle and no one cared that much.  However, once they made it simple and text based, Ashton Kutcher started using it the next day (ok this may not be entirely true.)

So what’s the difference between a pivot and just adding a bunch of new features?  In my view, a pivot requires you to re-address the core user scenarios and customer problems addressed by your product.  It may be the problem your business is trying to solve didn’t exist in the first place, or it could be the very business model has been obsoleted by the progression of technology (Blockbuster should have pivoted, instead they’re now all but dead.)

When pivoting, you don’t just burn down the building and forget everything you’ve learned.  Pivoting involves keeping one foot where it is, and simply changing directions.  This provides the advantage of bridging everything you’ve learned from the past and adapting it to a successful vision for the future.  Of course, it also involves pissing off anyone who actually did like your product just fine before, so one should pivot only if certain death lay imminent otherwise.

The point of this post, as promised before, is to comb through what I learned through collecting data from real users and outline my ideas for the future of KitchenPC.  After spending days of self reflection, it’s become clear that KitchenPC needs to pivot.

The First KitchenPC Pivot

Every web startup starts with a business hypothesis; “My theory is that business plan x will work.”  The challenge is to prove or disprove your hypothesis before you run out of money.  My original hypothesis was that people want an easy way to plan meals online using simple tools like a calendar, a grocery list, and pantry management.  The fact I even had a recipe database in the first place was simply a technical requirement, as the ingredient aggregation behind shopping list generation necessitates a very normalized and proprietary data format.  Searching for recipes was almost an afterthought, and I was happy to just be on par with other recipe databases on the Internet.

With that in mind, it’s quite possible there is a market for online meal planning.  I’ve even managed to get a small collection of die-hard users who rave about how KitchenPC has changed their life.  However, this business model caters to the type of user who wants to plan out each meal on a daily basis, manage their inventory as not to waste a single leaf of lettuce or ounce of onion, and print out accurate shopping lists to take to the grocery store on Sunday at 4pm sharp.  Do they exist?  Sure.  Am I going to find a few hundred thousand of them to build a profitable business around?  Not likely, at least not without a pretty massive marketing budget and a joint endorcement from Martha Stewart and Oprah on prime time television, just before the Desperate Housewives season premier airs.

Plus, 57% of users who filled out my recent survey said they just want to find recipes, they really don’t care about meal planning.  Their words, not mine!  Oh wait, those were my words – but the point is, they agreed!

The new KitchenPC will focus on searching, not on planning.  In fact, I see this pivot as more of a bit flip.  The old KitchenPC was perhaps 90% meal planning and 10% searching, the next iteration will be just the opposite.

I can now hear the disembodied voice of Eric Ries saying, “but Mike – a successful pivot requires you to adapt what you’ve learned from the past.  How can we leverage the unique advantages of the current design to provide a better solution for recipe search?”  This is a valid point, and also alludes to another aspect of this pivot.  I’m now transitioning from creating a new market (online meal planning) to entering an existing market (online recipe search.)  This transition requires a whole new thought paradigm in marketing, feature requirements, etc.  Anyone who has read “The Four Steps to the Epiphany” will, of course, know what I’m talking about.  It’s rather pointless to just create a search engine that lets you dig up recipes online.  Google and Bing do that, and they have a whole team of people to make that pretty awesome too.  Sites such as Foodily and Yummly are now my competitors, and I have to provide a better solution to have any sort of chance at gaining significant traction.  The way to stand apart from these sites is to leverage the advantages my site already has, implementation wise.  This advantage is, of course, KitchenPC’s ability to deal with multiple recipes at the same time.

Only 27% of users surveyed said they find recipes one at a time.  The majority of users want to dig up a collection of recipes and work with several at a time.  58% of users want to search based on what a recipe contains or does not contain, by far the most desired from the survey.  A staggering 95% of users expressed interest in pre-built meal plans, allowing them to just grab a bunch of recipes at once and be done with it.  KitchenPC is definitely in a position to offer all of these advantages, and do it right.

Old Features, Out

The following features will be phased out, as there’s simply not enough interest to continue to invest in them.  They also distract from creating a single, unified vision of simplicity.

  • Pantry: The pantry has been wrongly accused of being an inventory management system and mostly scares users away.  The pantry was originally intended for grocery store integration, which was a feature that was never implemented.
  • Calendar: Users are, for the most part, not interested in this level of planning.  Very few users are able to accurately predict when they’ll make a recipe and stick with it.  There is no accountability with the calendar feature, and most recipes just “fall off” the schedule completely ignored.
  • Shopping List: After studying the current shopping list behavior, it became clear that users are not interested in an online shopping list tool.  While these make fun cell phone apps, people are not quite interested in logging on to a website and entering in what they need to buy at the grocery store.  For the most part, the shopping list feature is used in conjunction with combining multiple recipes to figure out what to buy.  This user scenario can be addressed in a much simpler way.
  • Social Networking Features: Talk about a complete market failure.  I spent much of my vacation in Hong Kong working on this feature, and pretty much no one uses it.  Obviously, there is no interest in “following” another user to find out what they’re putting on their calendar, what recipes they uploaded, when they rate recipes highly, or when they leave comments.  Most likely because no one uses those features either.
  • Editing of Recipes: Since KitchenPC is being re-invented as a search engine, there’s actually no need to even have a recipe database.  This will simply be a cache of recipes indexed from other sites on the Internet.
  • Suggestions: Only 6.5% of users wanted KitchenPC to suggest recipes for them.  Since suggestions only work if users take the time to rate recipes, and only around 2% of users have ever done that, I see no reason to maintain this feature.

New Features, In

The new face of KitchenPC will be geared around powerful recipe searching, while providing a simple to understand and minimalist user interface.  Basic recipe searching will be front and center right on the home page, and will be the first thing people see when they enter the site.  Searches can be done by keyword, by ingredient inclusions or exclusions (58% rated this as a high priority) and what meal the recipe can be served for (48%.)  All other searching options will be hidden out of the way and exposed through a “More options” popup.

There will be three ways to search, each targeting a certain user scenario.

Scenario 1: Basic Recipe Search

This will be the default search mode (though trying out other defaults would be a good opportunity for some A/B testing) and provide basic searching abilities to find recipes on the Internet.  This mode targets users who are looking for recipes to make before acquiring ingredients, which appears to be around 33% of users.

Scenario 2: What Can I Make?

This is the next evolution of the meal planning engine.  In this mode, users can enter ingredients and (optionally) quantities, select the number of recipes they want, and generate an optimal set of recipes that will use those ingredients.  This mode targets the 55% of users who claim they dig around the pantry or fridge to see what they have, then figure out what they should make.

Scenario 3: Pre-Built Meal Plans

An overwhelming 95% of survey respondents expressed some sort of interest in pre-built meals (though perhaps the question was loaded, so we’ll see how many users end up using this feature.)  This mode will allow users to simply browse through plan categories and find sets of recipes that accomplish various goals.

For those of you reading this that are virtually yelling at me across cyberspace for my obviously ridiculous decision to remove meal planning and shopping lists from the site, here’s where you can start paying attention.  Just wait.

All three of these search modes will have the common ability to work with sets of recipes displayed on the page.  Every recipe will have a checkbox allowing the user to check or uncheck a result (or individual recipe within a pre-built meal plan.)  At any time where multiple recipes are selected, a “What you’ll need” ingredient aggregation box will make itself visible along the side of the screen.  This view will give you a real-time list of what ingredients and amounts you’ll need to make the selected recipes.  This list is read-only, so there is no longer a need to worry about saving your shopping list, dragging stuff around, or modifying the contents.  This decision was made after a careful study of exactly how people used shopping lists.

Furthermore, selected recipes can be saved as a menu in your cookbook.  Menus are a logical progression of the cookbook that offers simple meal planning without all the fuss.  A group of selected recipes can be added to a new menu, or appended to an existing menu.  A recipe can exist in multiple menus as well (this is very important.)  A pre-built meal plan can be saved directly as a menu, or individual recipes can be added to a new or existing menu.  Menus will have names and optional “notes” associated with each.

When a user goes into their cookbook (which will probably just be called My Menus,) they can easily thumb through all saved menus.  Whenever a menu is displayed, the aggregated ingredients are displayed at the side.  Of course, individual recipes within that menu can be checked and unchecked as well.  There will also be the opportunity to print a menu, which will print each recipe as well as the shopping list required for those recipes.

This feature provides some basic meal planning abilities without the convoluted calendar approach.  A user can create a menu called “Thursday dinner party” and browse the site for recipes to add to it.  There’s nothing stopping anyone from creating a new menu each week, or even each day.  When they’re done, they can print that menu (or access it via the upcoming mobile app) complete with shopping list.

There will also be a built-in menu called “Recipe Queue” that is based around the familiar NetFlix® movie queue.  Users can click one button to “queue up” recipes from anywhere on the site.  There’s really no difference between the recipe queue and any other menu (besides the one-click ability to add to it) until a user goes to de-queue a recipe.  When a recipe is removed from the recipe queue, the user is presented with a popup dialog asking if they indeed made the recipe.  If so, they’ll be asked to rate the recipe, and have the opportunity to add the recipe to another menu.  This will provide a way to close the feedback loop with the user and find out whether they made the recipe or not, and gather input as well.  Users who simply want to browse the site looking for great recipes can just start queuing stuff up without having to worry about menu creation, losing track of their search results, and definitely not having to worry about what date they’ll make the recipe.  For all KitchenPC cares, a recipe can stay on your queue for a year.

So, to summarize, KitchenPC will be re-invented as a powerful recipe search engine that can index millions of recipes out on the Internet through advanced natural language processing abilities and an in-depth understanding of ingredients and relationships.  Users can save and group search results into menus, or browse pre-built search results known as meal plans.  This design is far simpler than the current implementation, but still addresses 90% of what my users do.

What about my recipes that I spent hours uploading to your dumb site?

I knew you’d ask that.  34% of you said you want a place to store your own personal recipes online.  Though this isn’t a majority, I would still feel bad about kicking you to the curb.  That’s why I also plan on supporting “recipe uploading.”  Users will have the ability to upload a recipe directly into a menu from the cookbook page.  This recipe can be uploaded in any text format, including a Word document or PDF file.  The recipe can also simply be a hyperlink, pointing to another recipe on the Internet.  In the case of a hyperlink, KitchenPC will attempt to scan and index that link and assimilate the data into the KitchenPC search cache.  If successful, the recipe will act as any other recipe available through the site.  Of course with custom user recipes, features like ingredient aggregation and shopping list generation won’t be available, and these recipes will be private and not visible by other users.  This will hopefully provide an opportunity for the 28% of users who bookmark recipes in their browser and the 43% who store recipes on their computer to use KitchenPC as a means to store recipe collections in the cloud; a Dropbox of recipes if you will.

I also haven’t forgotten about the 25% of users who jot down notes on recipes, and the 40% who want to change amounts and customize recipes.  Recipes, once saved in a menu, will be editable by that user through the existing recipe editor (yay, I don’t have to throw away that massive chunk of code!)  Users will be able to change any part of the recipe or add their own personal notes and a “fork” of that recipe will be persisted in the database just for them.  This feature might also be exposed as a “Personalize this recipe” link on the recipe viewer.  It would allow the user to modify the recipe and then immediately save it to one of their menus for later retrieval.

And I can get all this when?

Well, I’ve been working on wireframes and specs for all these changes but it’s no small amount of work.  As of yesterday, I also received some new UI prototypes from my Polish designers that incorporate some of my ideas.  With any luck, this new vision should be realized in the coming months depending on how all the various details get finalized.  I figured I’d “tease” my readers now in order to get some feedback on this plan; perhaps I’ll be spammed with hundreds of nasty messages about how these ideas are terrible and no one will ever visit my site again.  I guess better to know sooner than later.  I’m quite excited about this new vision, and I really think this is a huge step in the right direction for KitchenPC.  If not, maybe I can start selling rubber boots online.

 

 

Let me get right on that!

1 Comment

While going over the survey answers, I tried my best to keep an eye out for trends that could help me figure out what users truly want out of KitchenPC.  I believe I get enough traffic now to create a strong user base around, so it’s just a matter of building a product people love which is useful to a wide variety of people.  I’m fairly confident the data I seek is encoded within the depths of the survey results, so now it’s just a matter of extracting it and doing something smart and businessy.

What better way to gather my thoughts than to go over the survey results in a blog post, so exactly that will this post be.  Sorry guys, it’s very long.

1) Where did you first find out about KitchenPC?

I figured this was a good opener to jog peoples’ memories and bring them back to the time where they first used KitchenPC.  Plus, it’s a good way to figure out where people are finding out about my site; even though I’ve yet to spend any real marketing dollars.  Overwhelmingly, most users stumbled across the site through some sort of Internet search or blog link.  This is great, as it means search engines are paying attention to me.  There were also several references to various “cooking clubs,” such as “Cooking.com” and “Cooking Club of America.”  Several users replied with “email”, which of course could mean anything.  Also, there were more than a few “word of mouth” or “from a friend” responses.  One response I truly enjoyed was “my co-workers; I’m a Pampered Chef consultant and they were talking about recipes on your site.”

Most responses to this question were too vague to do any real data mining around.  Several people said “don’t remember” or left it blank.  Other popular responses were “email”, “link”, “online”, “search”, etc.  Very few people actually named any sort of website.  This is just as well as Clicky and Google Analytics both let me mine referral links.

2) What really interests you in a site such as KitchenPC?

This question was designed to get a good grasp of what users expect what they go to my site.  I figure everyone has some sort of goal, which they hope KitchenPC can help them accomplish.  I was quite curious if their goal is searching or meal planning, as it really affects the future of the site.

The huge surprise here was the 58% that said, “I just want to find new recipes to try out, I don’t care about the meal planning stuff.”  Seeing how the entire point of my site is “meal planning,” it’s pretty disheartening to find out over half my visitors don’t really care about that aspect of the site.

However, 59% said “I want to use up leftover ingredients in my fridge, or find out what I can make with ingredients that are on sale.”  This means the meal planner code was not a total waste; a common goal of my typical user is to find uses for certain ingredients.

48% said “I want to become more organized in my meal planning by using the calendar and shopping list features.”  Hmm, perhaps we have an even split.  A little under half my users wants to become more organized in their meal planning, and a little over half just want to find great new recipes.

35% checked “I want a single place to store my own personal recipe collection on-line.”  This tells me there’s a bit of interest in uploading or storing personal recipes on the site, but the amount of friction required in doing so scares almost everyone away.  There were several comments from people who were meaning to do this, just hadn’t gotten around to it yet.  The question is whether or not it’s worth developing these features to appease around a third of my users.

Only around 14% checked “I have no idea, I was just exploring or following some Internet link – I like the little chef guy though!”

There’s a lot of great data buried in these answers.  Perhaps meal planning can be made a lot more passive and less “in your face” through a re-design of the interface.  Is scheduling what recipe to make on each day really useful to anyone?  At the very least, it’s clear that my goals need to align with powerful recipe search, while still targeting scenarios demanded by at least the casual meal planners.  This might be a tricky balancing act, involving trapezes and stuff.

3) Feel free to go into a bit more detail on your initial reaction to KitchenPC?  There must have been some reason you bothered to create an account, right?

When a user takes the time to sign up on your site, it means they have an expectation of what they can get out of it.  There exists an “ideal” implementation of your service within their imagination.  Questions 3 and 4 are designed to capture those expectations and gauge the level of disconnect between what the user thought KitchenPC was and what it actually ended up being after they used it a bit.

Correlating with the data from question 2, the majority of users mentioned finding or searching.  Quite a few commented on the pleasant UI and overall look and feel of the site.  One comment that really stood out was, “I wasn’t too impressed when I first found it.  Glad for this email to have me come back.  You have done untold hours of work and I will definitely be using the site more!”  Perhaps I am getting somewhere.

One user commented, “…when I started looking around at all the ways you could use this site to get more organized, I realized it was way better than the other sites I was currently using.”  They went on to mention how useful it is to plan out meals in advance and create shopping lists.  Another user commented, “I really like the shopping lists I can create on KitchenPC.  I also like having a place I can put my recipes when I have time to create them.”  Several others mentioned the shopping list feature, which is not surprising as it takes such a prominent position in the UI.

A recurring theme in these responses was being able to store personal recipes:

“Having a place to store my own recipes is always great.”

“I am frustrated with trying to find a recipe from the many sites I may have saved them.” 

“I like saving recipes to a site even if I print them because sometimes I need to find the recipe on the computer again.”

“I have a cluttered [recipe] box and it’s falling apart.  To be able to take my hand written cards and cutouts and store them on-line.”

“My other sites can ‘save’ a recipe to my own personal favorites file, but yours is way ahead of theirs in that you can figure out what ingredients you already have on hand, and then plan out your shopping list, and be reminded of what other ingredients you’ll need from the store…”

There were also several comments from “meal planners”, who were drawn to my site as a tool to help them plan meals in advance.

“The meal planning caught my eye first.  I am always looking for a fast way to figure out what to make for dinner.”

“I love the pantry list feature.  I can add items that are on sale then use the recipe finder to meal plan.”

“I was initially drawn by the ability to plan a set of meals and create a specific list to accomplish the objective.”

“I collect recipes… now I would like to get organized and be able to use a calendar and shopping list each week without trying to figure out what to have for dinner at the last minute.”

“I am a planner.  I have planned our weekly menus for years and know that is why we don’t eat junk food!”

So, these answers are obviously all over the place.  It’s of course impossible to please everyone, but what generalizations can we make about what people are looking for?  Obviously, people are intrigued by the idea of planning out meals and finding out what they need to buy.  Overall, people seem to “get” the site.  However, the site statistics show me that people aren’t really using it.  Shopping lists are mostly generated from a couple recipes, most users have never used the pantry, and almost no one actually uploads a single recipe.  With that said, the ideal of becoming an organized meal planner still exists.  Can KitchenPC do something to help these people?

4) After exploring KitchenPC a bit, did you find it useful?  Which features stood out, and made you go “Hey that’s pretty cool!”

This question follows the previous one to basically ask, “ok so what did you think?”  Did that ideal implementation of KitchenPC in their head match up with what they actually found?  Did I totally screw up everything?  Did the user completely waste their time, or am I actually on to something?

In general, most of the feedback to this question was positive.

“I did find it useful.  Everything stood out, it was great!!”

“Calendar and meal planning was something I didn’t do but do now.”

“I found KitchenPC very useful.  The item that stood out the most was meal planning.  I love that I can plan meals for the whole week and know what I need to go shopping for. [...] It’s a must when you have 3 teenage boys…”

“Meal planning is cool.  Am looking forward to getting more pantry items listed so I can take full advantage of the wonders of this site.”

“I’m beginning to use the meal planning more often, and creating the shopping lists can actually be more helpful in saving money, since I’m focused on what I need versus what I want.”

There were, of course, a few honest criticisms as well.

“I did find it useful, but entering my recipes was troublesome because of the need to have everything unknown to the system get approved.”

“Not very useful.  Needs more professional recipes.”

“The recipes seemed lackluster.”

“Nothing really grabbed me, but that is the kind of person I am… not impressed much.”

“It needs a lot of fine tuning from an organization standpoint.”

Unfortunately, the negative responses lacked actionable criticism; though it’s apparent recipe quality is still an issue.  I have a feeling that will be an ongoing effort for quite some time.  Other sites like AllRecipes and Epicurious can solve this issue through crowd-sourcing.  Crap recipes get buried in the pile, where the best recipes get high ratings and lots of comments and surface to the top of any search results.

5) Which of the following more closely describes how you decide what to cook?

This question has only two possible responses:

I figure out what I want to eat first, and then I go to the grocery store and buy the ingredients required to make those things.

or

I dig around my fridge or pantry to see what I have, then I figure out what I can make with those ingredients.

I absolutely loved the results here.  56% of users chose the latter, indicating they want to make use of their available ingredients, while only 33% said they figure out what to eat first and then go buy stuff to make it.  This makes the meal planner that much more important, as it’s incredibly clear people want to use up leftovers and not make unnecessary trips to the grocery store.

6) When you search for new recipes on-line, which of the following best describes your behavior?

27% said “I just find a single recipe that sounds good and make that.”

Over 42% said: “I like to dig up several recipes at a time, so I can buy all the ingredients at once and have things to cook all week.”

Finally, another 22% said: “I usually will just find a single recipe, but I might find several if I’m planning a big event or party.”

I love the fact that the more rare case is finding a single recipe at a time.  KitchenPC really shines with its ability to work with multiple recipes at once.  This is a strength I don’t really think any other recipe website has, but users clearly want to work in this way.  Users don’t work with recipes one at a time; they’re looking for things to make in the upcoming future.  They’re looking to pair items with other items, and looking to make use of ingredients they have available.  They don’t want a single recipe that calls for parsley if it’ll just be used once and then sit in the fridge for weeks.

7) Where do you keep your favorite recipes so you don’t forget them?

Only 29% of people will bookmark recipes in their browser.  A surprising 75% of people will print them out on paper (I was shocked by this statistic!) and 47% store recipes on their computer in files.  40% use cookbooks and will put sticky notes on recipes they like.

It’s definitely clear that KitchenPC needs to be really good at printing individual recipes, sets of recipes with a shopping list, and entire meal plans.  Since nearly half of people have files saved on their computer with recipes, it seems being a “cloud storage” for recipe files might be a pretty solid business model as well; especially if I can mine and parse those files intelligently.

8) How often do you find yourself “improving” on a recipe, or jotting down personal notes or annotations?

This question also changed a lot of my views.  Only around 7% of respondents said “For the most part, I just stick with the original recipe.”  This was quite eye-opening!  People obviously want to personalize recipes online, jot down notes, change things, and make recipes their own.

25% said: “On occasion, I’ll jot down a note if something’s unclear or I want to remember something about it.”

39% said: “I find myself changing amounts, adding or removing ingredients, all sorts of stuff to make it my own.”

And finally, under 20% said: “I will almost never follow a recipe exactly, I only use them to inspire my own creativity!”

Obviously, the majority of users need to create notes on recipes and personalize things after they try them.  These sorts of features need to be a huge priority in the upcoming versions of KitchenPC.

9) We’re planning on completely redesigning the way you search for recipes with KitchenPC.  In your opinion, which features should we focus on?

I will admit I want to make KitchenPC the most powerful recipe search tool on the Internet.  This means I want users to be able to find recipes in any way, no matter how obscure.  This question was asked mainly to get UI feedback.  Obviously, no one wants to see a daunting page layout with a million different dropdowns, checkboxes and input controls.  Searching needs to be simple, intuitive and fun.  I plan on using this feedback to do UI wireframes for the next generation search page.

So what are the top three ways users want to find recipes?  First, I left the plain old textbox style Google search out because that obviously needs to be front and center.  Out of the choices I gave, the top (with 59%) was to be able to search based on what ingredients the recipe has or does not have.  Second, with 48%, was to search for certain meals; such as breakfast, lunch, dinner or dessert.  Third, at 39%, was to search by cuisine: Mexican, Southern, Indian, etc.

Only around 16% cared if they could search by maximum preparation or cook time.  Only 15% wanted to search based on what the recipe tasted like (sweet, spicy) – take that Yummly!

A mere 12% wanted to browse through recipes by category, and a shockingly low 6.5% wanted a site to suggest recipes to them based on their previous ratings.  Either people just don’t trust that, or they just love to search.

Out of everyone that took the survey, absolutely no one checked the box “searching based on where the recipe came from; I’m loyal only to sources I can trust.”  Though I was surprised to get 0% on this one, the low value didn’t surprise me much as most people I’ve talked to say they find recipes using a search engine, such as Google or Bing.

Though I want to allow searching across all these dimensions, I could see a UI that would just allow keywords, meal, and what ingredients to include or exclude.  All the other options would be accessible through a popup or hover-over interface to “add” new criteria to the search.

10) Any other comments on how we can make KitchenPC the most powerful recipe search engine on the Internet?

This question gets straight to the point.  Obviously, an online meal planner isn’t going to reach mainstream adoption without the recipe searching firepower to attract the masses.  So, what exactly do I need to do to make KitchenPC beat out every other way to find recipes on the Internet?

The feedback on this question was rather generic, with a lot of users leaving complements such as, “not a thing!” or using the space to provide other, non-search related, information.  A few mentioned nutrtional information, and some mentioned features I already have (obviously these options are too hidden or they only glanced at the site superficially.)

One comment sums it up pretty good: “Just keep it simple to navigate”

I guess I’m on my own with regards to search design.  I have a feeling this will be perfected over many iterations of the site, and will rely on advanced recipe parsing techniques to really pull in the required metadata to allow KitchenPC to fully understand a recipe.

11) Regarding KitchenPC’s shopping list feature, which statement do you most agree with?

There were three possible choices here:

15.2% – This feature isn’t useful, who needs to manage a shopping list on-line?

54.3% – The shopping list feature is useful for creating a one-time list of the necessary ingredients for one or more recipes on the site.

23.9% – I would use the shopping list feature to manage my entire life – I want to be able to add non-food items, access this list from my mobile phone, send it to my spouse, etc.

This feedback pairs absolutely perfectly with the real database usage at the moment.  Almost everything on the shopping list is indicative of recipe aggregation, not “casual” shopping list management.  In other words, users are not interested in using KitchenPC to manage their shopping list online or manually entering staple items one at a time.  There’s about a billion iPhone apps for that, and most people just use a scratch pad on their fridge anyway.

What is apparent, however, is using the shopping list engine for the purpose of glancing at a tally of ingredients across multiple recipes.  And the types of ingredients I see in currently stored shopping lists backs this up.  I might even go so far as to say storing a shopping list online is useless (unless it’s heavily tied to a mobile presence or smart kitchen appliances); real time cross-recipe ingredient totals would perhaps be much more useful.

12) If KitchenPC started offering free, pre-built meal plans which contained 3-5 recipes along with a shopping list of what you needed to buy, what types of plans would you be interested in seeing?

As announced previously, pre-built meal plans is one of the super high-priority features I’ve been planning for quite some time.  AllRecipes already has it, but their implementation is messy and serious data overload.  I thought I’d take the time to ask users what sorts of meal plans they’re interested in so I can begin to prioritize this effort.

By far, the winner was “Healthy recipes!  I want to eat better, and have a balanced diet.” with over 67% checks.  Following that was “Meal plans that make great use of a small number of ingredients – I only want to buy like 10 things at the grocery store, and cook for a week.” with just over 55%.  Obviously, people are concerned with being healthy and saving money.  Wait, I needed a user survey to find that out?

24% wanted “Specialty meal plans, such as gluten-free, vegetarian/vegan, etc.” and 29% wanted beginner recipes that were easy to cook.  42% wanted entire menus for single events (parties, holidays, that sort of thing).

The icing on the cake here was that only 5% answered with, “I don’t think I’d use this feature.”  Clearly, there’s a huge demand for these sorts of pre-build meal plans; the Internet is just waiting for someone to do it right.

13) Any other comments on pre-built meal plans?

The comments here also aligned with the typical user being health and budget conscious.  ”I shy away from recipes with huge ingredient lists, especially ones with specialty spices that I don’t regularly use and would not buy for one recipe,” replied one user.

“Make it easier if people are low on funds and can’t buy some foods.”

“make them so they are user friendly with few ingredients or ingredients you may have in your pantry…”

“I think this is a great way to save money and eat healthy”

“…recipes using items on sale at the local supermarket.”

“meals for two.”

14) Now’s your chance to really wow us with your ideas and win great prizes!  Did any of the above questions get you thinking?  Which direction can we take the site in to really make you a regular user?

This last question was where I wanted users to just go overboard with all sorts of crazy ideas and feedback.  It was there chance to just give it to me plain and simple; what’s it going to take to turn you into a regular user?  What can I do to turn you into a fan, so you’ll tell all your friends about the site?

Most comments were about keeping things simple, not to “bother” users with constant emails or deals on fancy new kitchen gadgets, or just general ideas for what they’d like to see.

Again, many ideas around saving money, eating healthy and high quality recipes.  While reading these comments, it became somewhat clear that users don’t actually want a site with hundreds of thousands of recipes.  They want a site with high quality recipes that are well written, easy to follow, cost effective to make, and taste great.  People don’t want ten of the same recipe, or random junk that no one is ever going to make.

One comment I particularly enjoyed was:

“I want accurate, high quality recipes.  Some sites you can search for recipes, but they will have 10 of basically the same thing, or the recipe is written so poorly, you can’t follow it.  How about being able to search by season?  …I don’t want grill recipes when it’s 20 degrees below zero.  That would also be helpful when shopping for ingredients; to use the produce that is in season and therefor budget friendly.”

Seasonal metadata is definitely something I’m planning on adding to the database, and this could also be accomplished through seasonal pre-built meal plans.  Great ideas!

Another great comment, which I saw alluded to several times in the feedback, was regarding single people.

“Be more friendly and open to single people who live alone, especially seniors!  Recipes and information should be geared towards them as well!”

Though people cooking alone may not be my main demographic (though I’m one of them,) I think I could have an entire meal plan section for single serving recipes.  These recipes could be quick and use common, non-perishable ingredients, or they could be easy to freeze and re-heat later.  I could see the potential for single cooks flocking to my site in great numbers if I could pull this off right.

Another user commented:

“A way of finding recipes that can be made using a special appliance; food processor, rice cooker, ice cream maker, waffle maker, etc.  Many appliances are under utilized and can make cooking much easier and more fun.  Especially frustrating is buying an appliance and not knowing many ways to use it that are not in the instruction manual.”

This, again, could be accomplished through pre-built meal plans.  I could see an “appliance” section and a meal plan for things to do with your ice cream maker.  Searching based around appliance would more likely require metadata on recipes that would be hard to index or acquire, but it’s definitely something to think about for the future.  It seems a lot of people think I can just magically know everything about a massive database on recipes, or that I have a team of people who can go through these recipes one by one and grep for any sort of culinary information I require.  Oh well, I like that they dream.

“Is there any way you could make a meal plan for say, a holiday dinner, and then tap into a feature where you could get other substitute recipes for one part of it?  …that would be a truly bangin’ feature.”

This request is basically a marriage of my recipe modeling engine and pre-built meal plans.  And the answer is absolutely!  In fact, it would be a waste if I did not do exactly that!  I love the idea of seeing a pre-built plan, but the user hates one of the recipes.  They simply click “Thumbs down” on it, and the meal planner is loaded and finds a suitable replacement that will use the same ingredient overlap.

One user went all out on a randomized splurge of culinary vision.  For my site to truly wow them, they’d like to see cooking videos, voice input of ingredients, cook-offs, forums, recipe swaps, great phone apps, coupons, articles on how to eat right, and automatic ingredient substitution.  I’ll see how many of those I can get to in the next ten years.

One user really did a nice job laying out the exact UI flow they want.

“I want to be able to keep lots of recipes, plan my menus, and get my list sent to me on my iPhone… so it’s a combination of food.com, plantoeat.com and ziplist.com – and I am willing to pay for the service!”

Well don’t fret, I plan on making it very easy to do exactly this, and for free!  However, donations are always appreciated.

So now what?

Ok, that was a boatload of information.  It’s extremely difficult to zoom back a bit and look at the big picture, rather than micro-analyzing each little response.  If I tried to cater to everyone who took the time to provide feedback, I’d need a team of 20 developers and two years of development time.

I think the general idea is people want to quickly find great recipes, figure out what they’ll be making during the week, and finding out what they’ll need to buy.  While doing this, they want to save money by making the best use of what they have, stay healthy by finding recipes that cater to their dietary needs, all while expanding their culinary horizons.  Furthermore, they want to easily remember recipes they liked, jot down notes and make modifications to recipes they’ve cooked, and store their own private recipes online easily and without fuss.  Ok, well that’s easy enough – let me get right on that!

Survey Winners!

1 Comment

Last month, I sent most of my registered users a link to a short survey to fill out to get a feel of how they liked the site, what features they used, and other aspects of their meal planning habits.  The usefulness of the results far exceeded my expectations, and I’ve decided to write a three part blog series to go over the results.  Since I decided to incentivize my respondents with a few prizes, the first post will announce those winners and illustrate how I came to choose them.  The second part will go over what I learned from the survey, and the third post will announce some decisions I’ve made around what direction to take the site based on this user feedback.  So stay tuned for some exciting news!

First off, I was originally planning on offering a top prize (a Cuisinart food processor), a second place prize (an All-Clad 10″ fry pan) and a third place prize of a 11″x14″ bamboo cutting board.  After spending several hours trying to stack rank answers against each other, it became increasingly apparent that there were simply too many excellent responses to just give away three prizes.  So I decided to stick with the food processor and fry pan, but send bamboo cutting boards to anyone I thought did a great job.  I also decided to “disqualify” any results sent in from friends and family, as the goal here is to connect with real life customers.  A lot of these respondents have probably only used the site a few times, and sending them a nice fry pan or cutting board will, hopefully, plant my brand name into their mind every time they use it.  Plus, they’re bound to tell a few people how they came across their fancy new kitchen gadget.  Not to knock on my friends or family, but such a gift would probably be wasted upon them if valued for said purpose.

So, in the end I decided to send out seven prizes in total.  The winner of the food processor (the most expensive gift) stuck out at me right away, and I pretty much knew it was the winner right when I read it.  Choosing between the fry pan recipient and the first cutting board awardee proved to be quite difficult.  Both answers were incredibly helpful, honest and well thought out.  I found myself trying to “score” each response along different dimensions; how actionable the feedback was (“you should do this”,) how detailed the answers were, how clear it was that their responses were based on real usage, and anything else I could think of.  Yet, the scores came out even no matter what I did.  I almost decided to give out two fry pans, but eventually I came to a conclusion.

Unfortunately, giving away stuff is harder than it seems.  Two of the seven winners (including the second place fry pan winner) never replied to my emails after several attempts.  Either they don’t really care enough, or my email just got lost in the spam folder.  I don’t want to harass them if they’re clearly not interested, so I gave up.  I thought about giving the pan to the very close third place winner, but she also failed to respond.  Perhaps some good advice would be to set a time limit for people to claim their prizes if you run such a survey.

I also asked their permission to share their names in this post, to which all of them agreed.  So congratulations to the following winners!

First Place: Tish Raymond (York, PA)

Tish stumbled across KitchenPC while Googling for Tandoori Chicken recipes, and liked the matches on my site the best.  She decided to look around the site, and liked it enough to sign up.  It was quite clear from her comments that she uses the site to figure out what to make from the ingredients she has on hand, plan out her shopping list, and store the recipes she’ll be cooking later in the week.  One comment I really liked was “[KitchenPC is] head and shoulders above the crowd of other sites I use.  I don’t know who designed this site, but whomever it was, you’re not paying them enough!” – I’d love to pass along that comment to my designers over in Poland, but I’m somewhat afraid they’d start charging me more!  Either way, thanks for the great feedback, Tish, and enjoy your new food processor!

Runner-Up: Jennette McGrew (Magnolia, IA)

Jennette provided some great feedback regarding pre-built meal plans.  She’s looking for user friendly recipes with very few ingredients and a short prep time.  She’s also looking for recipes easy to freeze, so I get the idea she’s someone who cooks a lot at once and serves it later.  KitchenPC should be perfect for her!

Runner-Up: Crystal Williams (Dayton, OH)

Crystal was one of the many respondents who mentioned the pantry, but she mentioned she uses it to add items that are on sale and then finds ways to use those ingredients.  This is incredibly valuable feedback for me, as the pantry wasn’t really designed for this purpose.  These sorts of comments make it even more clear that KitchenPC fails as any sort of “inventory management system,” but illustrates new uses that users are coming up with themselves.  Crystal also provided all sorts of great ideas for features she would like to see on the site.

Runner-Up: Christine Kelly (Tacoma, WA)

Christine is definitely my target user.  She uses the site to plan meals for the whole week and figure out what she needs to buy at the store.  She had some great ideas around linking recipes; for example, taking one recipe and trying to figure out what would go with it.  It did get me thinking a bit about exactly what this means.

Runner-Up: Heidi E. (Andover, MA)

Heidi and her husband are tired of eating the same thing over and over again.  She likes the quality of the recipes on KitchenPC and likes how she can save them easily.  She spends one or two days searching for recipes, then starts cooking.  She’s looking for heart-friendly meal planning and to save money.

A huge thank you to everyone who responded!

All 93 responses were great.  Almost everyone filled in the text boxes and gave detailed answers.  It was clear everyone who took the time to respond was a real user with valid feedback.  Some of the trends I noticed when combing through the results were incredibly surprising, and as a whole, the feedback was overwhelmingly positive.  It’s clear to me that KitchenPC has a real future and that there’s people out there that are anxious for it to succeed.

Going by the numbers

Leave a comment

This evening, I’ve been playing around with a few numbers to try to get a better sense of how features are being used on the site.  I figure these could be interesting data to cross-reference with some of the trends that will shortly be obtained from the user survey that went out on Monday.  In the spirit of openness, and all around reader curiosity, I’ve decided to share some of these numbers.

Rather than focusing on raw success metrics of the site (how popular it is, user growth, how often the average user comes back, etc) I’ve decided to make this a post on raw feature usage.  The idea is to help decide which features should be done away with and which features are worth looking at in further detail.  Enjoy!

Percentage of users who use the shopping list: 13.8%

This metric includes the percentage of user accounts who currently have at least one item saved in their shopping list.  This doesn’t include users who have previously used the shopping list, but currently don’t have any items stored.

Percentage of users who use the calendar: 6.1%

This is the percentage of users who have recipes saved somewhere on their calendar (either in the past or the future).  This is a pretty good representation of the calendar’s popularity (or, lack there-of) since very few users will go remove all their recipes from the calendar and right now, I don’t automatically clean up old entries.

Percentage of users who use the pantry: 10.3%

Currently, this is the percentage of users who have at least one ingredient saved in their pantry.  Again, it does not include users who have used the pantry in the past but currently don’t have any items saved.

Percentage of users who have recipes in their cookbook: 16.6%

This percentage of users has at least one recipe they’ve liked enough to save it to their personal cookbook.

Percentage of users who have blacklisted ingredients: 1.4%

Only a small fraction of users have decided to blacklist an ingredient.  It could be that this feature is very hard to discover (it only appears in the account profile page), or perhaps people just don’t find it very useful.

Percentage of users who have commented on a recipe: 2.0%

Leaving a comment on a recipe is definitely quite easy to do; perhaps users just don’t really care enough to share their feedback, or they don’t quite get a sense of community when using KitchenPC.  For all I know, this is the same percentage on major recipe websites.

Percentage of users who have rated a recipe: 2.0%

This is one statistic I’d really be interested in improving.  I spent quite a bit of time working on features that take the user’s previous ratings into account while finding other recipes.  The “Suggested Recipes” on the home page does this, as well as the meal planner.  I would for sure be interested in finding a good way to encourage recipe ratings.

Average recipes in calendar: 3.5

The average user who has used the calendar has an average of 3.5 recipes.  This is at least a little encouraging, as it suggests people have actually given the calendar a shot and tried it out with a few recipes.  The top calendar user currently has 35 recipes on their calendar.

Average pantry items: 7.2

The average user who has a pantry has around 7.2 ingredients stored.  What’s interesting about this is the range of this number, which goes from a single item up to 88 items.  I’m very curious as to who’s using the pantry feature to store 88 different ingredients and amounts.  Perhaps they have a use-case for this that I haven’t really thought of.  I might dig more into these “anomalous accounts” and see what they’ve been up to on the site.

Average blacklisted items: 3.8

Though this feature is almost entirely not used, it’s interesting to see that the average user stores 3.8 ingredients they want to avoid.

Average shopping list size: 10.2

The average active shopping list has 10.2 items, which I would guess positively correlates with the average number of ingredients in a single recipe.  For those of you who are curious, the biggest shopping list in the database is 120 items.

Top 10 most popular ingredients in a shopping list:

This is a list of the top ten most popular shopping list items, and how many users have each item on their list.

  1. Eggs: 60
  2. salt: 58
  3. all-purpose flour: 50
  4. onions: 49
  5. olive oil: 40
  6. garlic: 40
  7. black pepper: 40
  8. granulated sugar: 38
  9. chicken breasts: 36
  10. unsalted butter: 34
Obviously, these ingredients correlate to the popularity of the ingredients across recipes.  This means that users are mostly generating shopping lists based on recipes they plan on cooking.  It also means that users probably don’t bother to remove ingredients they already have, since a lot of these things (such as salt, flour and sugar) are things most people have sitting in the pantry.  Perhaps the average user prints out the shopping list and just crosses things off that they already have.  It could be argued that people cannot be bothered to check their inventory while on their computer, they just want to tally up what they need and don’t really see the shopping list as a “master list of things to buy” as the name suggests.  I did allude to this behavior in one of my survey questions, so we’ll see if my theory can be strengthened by those results.
Top 10 most popular pantry items:
  1. All-purpose flour: 25
  2. chicken breasts: 24
  3. white rice: 18
  4. eggs: 18
  5. granulated sugar: 18
  6. light brown sugar: 17
  7. pasta (spaghetti): 15
  8. soup – cream of mushroom: 14
  9. olive oil: 14
  10. garlic: 13

This statistic strongly argues how misunderstood the pantry feature is.  Almost every item on there is a fairly common ingredient, many appearing in shopping lists as well.  Furthermore, ingredients such as flour, rice, sugar, pasta, and olive oil are ingredients that have a pretty long shelf life.  These are not ingredients users would want to purposely create meal plans against to use up.  I think users still feel that the pantry is intended as an inventory management solution, and I get the feeling that users are simply “trying out” this feature rather than using it for anything too serious.

Top 10 most common blacklisted ingredients:

  1. crimini mushrooms: 3
  2. whole turkey: 2
  3. blue cheese: 1
  4. pink salmon: 1
  5. smoked bratwurst: 1
  6. guacamole: 1
  7. raw shrimp: 1
  8. baby zucchini: 1
  9. turkey legs: 1
  10. chicken breasts: 1
I almost didn’t include this list, since it’s probably not statistically representative of any sort of user trend or behavior.  However, I look at it and find it rather humorous.  With the exception of perhaps “raw shrimp”, none of the ingredients listed are really things you’d want to “blacklist” for any legitimate health reason or allergy.  I was expecting these things to be things like nuts, milk, eggs, wheat, etc.  It could be that this list simply represents a set of users trying out this feature to see how it works.
What does it all mean?

I think the first thing people will notice is there’s really no “killer feature” of KitchenPC.  It still appears to be a playground that a few curious early adopters are toying around with, but not using for anything seriously.  This could mean the site really doesn’t address any valid user scenarios, or it could be the user experience is lacking and no one has really taken the necessary time to figure out the site.

To me, it means I can feel a lot more comfortable making bold decisions or major architectural changes without the risk of annoying too many customers.  It also means the meal planning aspect of the site is either not very useful, or too difficult to use and doesn’t really convince any users to change their habits.

I also think there are some improvements I can make around “closing the loop” on the meal planner.  Right now, it seems scheduled recipes get somewhat lost on the calendar, and the user has no accountability to report back on whether they made those things or not.  Services such as NetFlix really take advantage of this loop, as they can email users after watching a movie to comment on it, rate the picture quality, or provide a rating on the movie itself.  I need to think of a way to do the same with recipes.  I’ve talked in previous posts about scrapping the idea of a calendar in general, and providing an “upcoming meal queue” that would have an associated real-time shopping list.  When the user gets around to making one of these recipes, they’d simply “de-queue” the item from the list and right then and there I could ask them to rate it or provide feedback.

I hope to really be able to drill down into the survey feedback to get a sense of what users think of the site.  I think reading the free-form comments left by each user will be very enlightening.  I do expect to easily pass 100 user responses in the survey, which is plenty of data to make some business decisions based on.

Baked beans are off!

Leave a comment

Originally when I was planning on writing this post, it was going to be about the KitchenPC User Survey that was sent out to about 2,000 users this morning.  I was planning on going over why I sent out the survey, how the various questions tied into pending business decisions, and about using the opportunity to cross-promote my other company, Qwk.io.

During the course of the day, I became distracted with another subject.  A rather important business question that I have not really seen discussed in any detail recently.  Is the medium of electronic mail a still viable approach for connecting with your user base?

One of the benefits of launching a product is it puts you in the quite convenient position of having users.  These users represent extremely valuable data points that [at least should] influence every decision you make; from relatively minor features to major business pivots.  This is the theory behind RERO and other MVP-centric software development philosophies.

However, once you actually have those users, what’s the best way to really close the loop with them?  Just because they took some time to sign up for your site doesn’t mean they care one way or another about your website, or lose sleep at night thinking about how they can empower you to create the revolutionary new product your hard work entitles you to.

Social networks provide a great way of reaching your customers.  Twitter and Facebook in particular provide a unique way for pushing new information out to a group with similar interests and allowing social interaction to organically grow.  They can create a culture for your brand; not just a guy with a giant microphone on top of an ivory tower.

My goal, in this case however, was to solicit direct feedback from my existing user base in order to help me assemble my plans to re-visit some of the thinking and assumptions that went into KitchenPC.  My Twitter feed basically yields zero interaction; the entire medium, in the opinion of this humble entrepreneur, is nothing more than companies pushing meaningless dribble amongst themselves with no one actually reading anything anyone else is saying.  Facebook is not much better.  KitchenPC related news posted on my Facebook page might yield a feedback rate of around 1%, which equates to about 4 or 5 users actually interacting with the content in any way.

This leaves direct email as the most viable option for trying to reach out to my existing user base to answer a survey.  My weapon of choice was MailChimp, as it provides a whole host of features for managing email campaigns and offers a free-tier suitable to amateur spammers such as myself.  I spent a good chunk of the weekend crafting a survey and piecing together an email to send out to my modest user base of around 2,000 registered users.  To apologize for the intrusion and encourage detailed feedback, I decided to offer a few existing prizes for the most helpful feedback as well.

I did my best job to make the email as friendly and non-spammy as possible.  I was careful to only send the mail to users who had the “Join Mailing List” checkbox checked in their user profile (more on that later), and I even decided to make the “Reply To” address a real, monitored KitchenPC account so recipients could even reply to the email to yell at me.  At 7am this morning, the email went out and by the time I woke up, I already had several “alerts” from the folks at MailChimp.

MailChimp, and props to them for this mentality, is heavily anti-spam.  They do an excellent job tracking user interaction with emails, will assist you in complying with federal anti-SPAM regulations, and allow recipients of your emails to report abuse directly.  MailChimp will tolerate a “complaint” percentage of 0.1% (basically one out of a thousand) before it sends you a warning.  If complaints still persist, your account is suspended.

Out of the 2,000 or so emails I sent out, there were 7 complaints.  All reported the mail as “spam”, and only 2 people bothered to use the “Unsubscribe” link provided.  Thus, my account was shut down on the very first email I ever sent out.  I was a spam outlaw, no better than the Nigerian drug lords and penis pill people.

Now, in my opinion, these numbers seem pretty reasonable.  I’m pretty sure any time you email a few thousand strangers, at least 7 are going to click the “Spam” button.  Different people have different ideas of what spam actually is.  Very few are aware of the actual legal definition, and treat this as “Well, I don’t find this email interesting so I declare it spam.”

MailChimp is also very pushy on an opt-in approach, which seems fantastic in theory.  If you have proof of opt-in, it’s not spam, right?  In my experience, this approach is futile.  When I first launched KitchenPC, I decided to make the “Join Mailing List” checkbox off by default.  However, after a few hundred user signups, there were exactly zero users who had turned on the checkbox.  Even though the checkbox was clearly visible and people were most definitely visiting the account settings page, strangely enough no user looked at this checkbox and thought to themself, “Oh I absolutely must get in on that action!”

I figure you’d probably need hundreds of thousands of users before you could collect any sizable mailing list using an opt-in approach.  In other words, having an opt-in email news letter for your site is probably about the same as not having one at all.

When I changed the default to “on” for my mailing list, very few people bothered to turn it off.  Last night when I imported the current user list, only around 60 people has manually unchecked that box indicating they were not interested in being contacted.  My reasoning on the subject was that opt-out is perfectly fine, as long as you’re not running some scam site and allow people to easily unsubscribe from future emails.  Worst case, you send out one email and a bunch of people unsubscribe and are not bothered again.  I have absolutely no interest in bothering people who are simply not interested in KitchenPC.  I knew I would never be one of those ridiculous sites that have a message saying, “Your request has been received.  Please allow 60 business days for this to take effect.”  Or the sites that simply error out when you unsubscribe, or do nothing at all.  I spent over 6 months trying to get out of TicketMaster’s mailing list, including several phone calls.  Yet, my subscription is simply re-activated every time I purchase a new concert ticket.

Unfortunately, the culture of email has shifted towards the paranoid.  People have been trained over the years to never trust an unsubscribe link.  In fact, the majority of unsubscribe links will just alert the sender that they’ve reached an active email address, and will result in them sending you more spam.  Thus, this approach doesn’t work too well either.

So, an opt-in email list is basically unfeasible for a small start-up since far less than 1% will opt-in to anything.  Sending out emails with a working and valid unsubscribe option is out due to the mistrust of the average Internet user.  Using a site such as MailChimp to send emails requires you to comply with federal regulations governing complaint limits and other practices, which basically only harm small businesses trying to legitimately connect with their customers; actual spammers simply laugh at these rules and ignore them completely.

This begs the following question; is mass mailing a viable approach for closing the customer loop?  Right now, my opinion is no.  I believe this will certainly be the last email I send all my users for a while.  I’m pretty sure any further email campaigns I do will once again result in my account being suspended due to complaints.  This would, of course, lead to ISPs and mail providers adding my domain to a list of potential spammers, which is definitely something I don’t want.  Before I could consider continuing down this route, I would really need to rethink a lot about the right way to manage these sorts of email campaigns.  Can I integrate in with MailChimp’s APIs to handle unsubscriptions in real time?  Can I stop emailing a user if they never read nor opened the previous email?  Is there a viable way to reach a few thousand users without pissing off more than 2?

I’ll end this post on an optimistic note.  Even with the less than 1% complaint rate with the survey email campaign, both Qwk.io and KitchenPC have been extremely active all day.  Over 100 visits to each site, as well as a huge spike in blog traffic, Twitter traffic, and Facebook traffic.  Almost 30% of the receipients opened the email, and over 9% clicked on at least one link in the mail.  Only around 5% of the emails bounced (meaning 95% of my users put in valid email addresses.)

As of now, 60 people have already filled out the survey, anxious to win that brand new Cuisinart food processor.  Perhaps annoying a few people is just the name of the game when trying to connect with your user base.

Chef Watson

6 Comments

In February, IBM placed its newest supercomputer, Watson, up against the two winningest Jeopardy! contestants in a man-versus-machine showdown.  Watson easily bested its rivals, demonstrating a very real future for natural language interaction between humans and computers.  Traditionally, computers have only been truly competent while processing explicit, concise instructions void of the ambiguities and “common-sense” references that litter human languages.  This limitation in technology is really the basis for all difficulties interacting with machines.  It’s the reason we yell at computers when they do what we say and not what we mean.  It’s the reason for your mother calling you up to ask why “her Internet” is not working.  It’s the subject of much comedy as well, as we can all relate to these experiences.  Then again, it’s also the reason why us software engineers get paid the big bucks.  If anyone could just open up Visual Studio and have a nice chat with the computer about their new idea, perhaps I’d have to find a different line of work.

KitchenPC is all about data organization.  Specifically, the organization and categorization of recipes.  Until KitchenPC is able to really understand a recipe, it cannot pivot this data into interesting results for the user.  The problem is, recipes are written in human languages and cannot be easily parsed by a computer.  In other words, recipes have to be converted from “human-ese” to a disciplined and precise format that KitchenPC can make sense of.  Up until now, I’ve been using people to do this translation.  Hired people, users, friends, myself; all going through a painstakingly slow process to read a recipe and enter the exact same information back into KitchenPC, while clarifying any part of the recipe in which KitchenPC may not understand.  Over the last couple weeks, I’ve been trying out a new approach that may change all this; teaching KitchenPC how to understand the raw recipes themselves.  Just like Watson understanding Jeopardy! questions, this requires a deep understanding of natural language, grammar, and common-sense.  It requires a lot of insight into how the human brain breaks down instructions and fills in assumptions based on previous knowledge it has acquired.

Luckily, I can limit my domain to the culinary arts.  KitchenPC does not need to know how to assemble IKEA furniture (I fret no computer would be able to understand that!) – and its vocabulary doesn’t need to encompass the entire English grammar, only that which is useful to baking a cake.  KitchenPC must be able to break down references to common ingredients and make the same assumptions about its use as a typical chef.  In this article, I’d like to share a few of the challenges I ran across while building Chef Watson.

My Test Data

Building a parser is a bit like teaching a child; it starts out with the ability to learn, but a very basic knowledge.  At first, the parser says “Why?” a lot and you have to teach it.  However, you first must give your parser a world to explore.  I decided to download several thousand recipes from various websites and build a database of about 2,600 distinct ingredient usages as a set of test cases.  Each time the parser wasn’t able to understand one, it would stop and ask for clarification.  I would have to figure out exactly what it doesn’t understand and add the correct words or phrases to its vocabulary.  This was by far the most pain staking part of the process.  Along the way, I developed some specialize tools to expedite this part of the process.

Basic Ingredient Grammar

Basic ingredient parsing

Luckily, most ingredient usages can be expressed with a finite set of grammatical templates.  Often this is something like “an amount”, then “a unit” followed by a name of an ingredient.  For example, “5 cups brown sugar”.  However, this ingredient could also be expressed as “5 cups of brown sugar” or “brown sugar: 5 cups.”  The first step for my parser was to build a template engine that allowed me to define the different ways an ingredient could be expressed, without worrying about the vocabulary for each individual token quite yet.  This was rather like building a regular expression parser, where I could test if a phrase was a match for a given grammatical template.  Rather than rip apart the input trying to decipher what’s what, you can now just loop through your templates and test for a match.  If there’s no match, move on to the next template.

Like I said, a good parser needs to create an abstraction between grammar and vocabulary.  Each component of this gramar needs to support any number of synonyms that increase the matching power of that template.  Such as a match for amount could be satisfied by 1, 1 1/2, one, or the indefinite article “a“.  The unit cups might be cup, or the abbreviation ”c.”  Pounds could be expressed as pound, lb, or lbs.

An ingredient might also be clarified with adjectives, such as “5 cups packed brown sugar” or “3 cups chopped carrots”.  The parser needs to know how the different words pair up.  ”packed” brown sugar has a higher density than unpacked brown sugar, thus five cups is effectively more in terms of weight.  KitchenPC already has a massive database of ingredients and forms that it uses to do conversions and build shopping lists, or search for matching recipes based on available amounts.  In my case, it was just a matter of parsing out the various phrases in the input and matching them to a database of known possibilities.  If the amount was expressed in weight, I would look for a “weight” form for the ingredient (8oz brown sugar.)  If the amount was expressed in volume, I’d look for a volumetric form (1 cup brown sugar.)  So far, so good.

Two-phase approach

The solution I found to work the best was a two-phase matching approach.  First, try to understand all the words you come across.  Make sure they’re all part of your vocabulary, and they match at least one gramatical template.  If you run into extra words that aren’t in any of your dictionaries, error out.  Once you have this, then try to construct a valid ingredient usage by assembling the match data.  ”purple walrus” does not match any known template, so there’s no point in attempting to create an ingredient usage based on that input.  ”5 milk” does match a valid template (the amount ingredient template), but since the ingredient “milk” does not have a default “whole unit” measurement, the parsed input cannot be constructed into a valid ingredient usage.  Worry about each problem separately; build a data structure that describes the input you’ve collected, then construct a validated result based on that input.

You say tomato, I say red tomato

Unfortunately, my database only has a single name for each ingredient.  Recipes might call for “flour” when it really means “all-purpose flour.”  It may call for “glace cherries” which I would call “candied cherries.”  This required me to build a rather large synonym database which mapped common names of various ingredients together, and also could be used to set defaults for generic ingredients (for example, “milk” would be mapped to “2% milk”)

This also came in handy for parsing out random adjectives.  For example, “3 ripe bananas” should be parsed as “bananas: 3″ with a prep note of “ripe.”  For this reason, ingredient synonyms can optionally contain a prep note to use when that alias is parsed.  This came in handy for ingredient synonyms such as “boiling water” or “room temperature butter.”  You want to link these to their root ingredient, but you don’t want to lose the qualifying adjectives for the reader.

Then there’s the issue of plural versus singular (1 cherry or 5 cherries).  I first considered stemming the input first, but it was both tough to find a suitable NLP dictionary of stems that worked well for me, and suffix stripping algorithms caused all sorts of chaos in my tests.  This might be a good approach for a more general natural language parser, but since I’m confined to a very known set of vocabulary, I just decided to handle plurals and singulars as regular ingredient synonyms.  It took a bit more time to build, but I trust the results a lot more.

A clove of lettuce and a head of garlic?

Some ingredients can be expressed in units applicable to only those ingredients.  A mapping of custom units had to be built so the parser could understand these types of units.  My approach was to build a list of all known units (heads, slices, cloves, etc) and once parsed, be relatable to an ingredient form.  If no relation was found (such as a clove of cheese), the parser would error out.

Preparing your ingredients

Many ingredient usages have a preparation step that is actually not relevant to the ingredient or form expressed.  Such as “3 carrots, sliced” would mean to take 3 whole carrots, then slice them.  The fact that you slice them doesn’t alter the measurement or form the way that “3 cups sliced carrots” would.  However, the word “sliced” must be preserved as a preparation instruction (which KitchenPC calls a “prep note.”)

I took the approach that an adjective that occurred after the ingredient would be interpreted as a prep note and not a form.  For example, “3 cups of cherries, pitted” would call for 3 cups of whole cherries measured, then taken out of the measuring cup and pitted.  Where-as “3 cups of pitted cherries” would want you to pit a bunch of cherries until you filled up 3 cups.

I decided against treating anything after a “comma” as a prep note, since this could yield false positives which could completely change the meaning of the ingredient.  I value accuracy over sheer parsing percentage, so I’d rather drop the match than parse it incorrectly.  For this reason, I created a dictionary of approved prep notes.  I decided to allow any ingredient form to also be a prep note.  For example, “shredded” is a form of cheese, thus I would allow the prep format “8oz cheese, shredded” (which of course yields the result “cheese: 8oz (shredded)” and has nothing at all to do with the “shredded” form of cheese.)

Now for the weird stuff

So, this all works pretty well if everyone decides to use proper formatting for all their ingredients, and only uses forms with their logical units of measurement.  You’d probably run into very few problems parsing professional cook books with these methods, and I was able to get a parsing accuracy of over 90% with this alone.  But we can do better, right?

My parser will first attempt to generate a match with the rules above, however if no match is found, I look at the match data again and try to make a few assumptions based on common sense.  I call this code path “anomalous parsing.”

Anomalous parsing

The first anomaly this “sub-parser” can handle is called “prep to form fall-through.”  This basically allows a prep note to clarify which form it refers to, and works only with volumetric usages if no default volumetric pairing is known.  Confused?  Okay, let me provide some examples.

The usage “3 cups apples” is invalid, since whole apples doesn’t have a default volumetric form.  You’d have to say “3 cups chopped apples” or “3 cups sliced apples” for it to know what you were talking about.  However, if the usage was expressed as “3 cups apples, chopped” then most humans would understand that as “3 cups of chopped apples”, though it would be considered extremely sloppy.  However, if you were to say “3 cups grapes, chopped” then “grapes” does in fact have a default volumetric form (you can fill up a measuring cup with grapes very easily.)  Thus, this usage would be parsed as “3 cups of whole grapes” with a prep note of “chopped.”  Prep to form fall-through only comes in handy when the prep note perfectly matches a known form and the only other option would be to error out.

The second anomaly parser handles mismatched unit types.  I call this “auto-form conversion.”  A parsed form is tightly coupled with a set of units that the form can be expressed in.  For example, “shredded cheese” is assumed to be expressed in volume, such as “5 cups shredded cheese.”  However, what if I said, “8oz shredded cheese?”  A normal person born on this planet would know what I was talking about: take 8oz of cheese, then shred it.  An ounce of cheese is an ounce of cheese no matter what you do to it, thus “shredded” is actually a prep note in this case.  If a valid assumption can be made about a form, even if the unit type is incompatible, we can convert this usage into another form.

There would be two possibilities to “correct” this usage.  The first would be to convert “8oz shredded cheese” into cups, and get roughly 2 cups.  However, this would result in a bunch of weird irrational numbers all over the place and really confuse a lot of people.  The other approach is to reinterpret the usage as “weight” and demote the word shredded into a prep note.  I took the latter approach, and parse “8oz shredded cheese” as “cheese: 8oz (shredded)”

Auto-form conversions are also applicable to whole units.  For example, “3 mashed bananas” would be interpretted as “3 whole bananas” with a prep note of “mashed.”

If both the regular parser and anomalous parser fail, I return an error indicating exactly where it failed and what aspects could not be parsed.

But wait, it gets even more ridiculous!

With my parser so far, I was able to get around 97% match accuracy with my sample data which was fantastic!  However, I noticed a lot of the same ingredients were throwing the parser for a loop.  These ingredients had something in common with each other; and posed a huge challenge to overcome.

Some ingredients are actually a preparation or modification of another existing ingredient, to which further forms may be yielded from.  Huh?  Take for example, “3 cups of finely ground graham cracker crumbs.”  Yes, that’s a real use-case from my test data.  In this case, the ingredient is “graham cracker crumbs”, however graham cracker crumbs are something that can be derived from whole graham crackers, by violently smashing them with your fist.  There are several examples of these “prepared ingredients” that I came across, mostly in the “crumbs” variety.  Egg yolks and egg whites come to mind, as do chocolate squares (a square broken off from a whole chocolate bar.)

Sub-Ingredient Parsing

My first approach to solve this problem failed miserably.  I attempted to make “crumbs” a synonym for the “crushed” form of graham crackers, and then added a template to handle the form immediately following the ingredient.  This blew up in my face by yielding a mess of false positives, and also breaks when a further form is specified before the ingredient (such as “finely ground”)

I thought long and hard about how to interpret these anomalies.  One way would be to enter these in as real ingredients, so that they could have actual forms and be parsed as such, and then modify the ingredient aggregation code to convert from form to sub-ingredient to real ingredient.  This would be a huge architectural change that would affect the entire site.  Not worth it.

Luckily, there’s very few of these anomalies.  In fact, so few that I came up with a hacky approach that allows me to handle these one-off cases without polluting the rest of the code.  I basically handle these things in the grammar template layer.  I’m able to store anomalous usages in the database and transcribe them to “what the user actually meant.”  Thus, in the database exists a row for “graham cracker crumbs” that links to “graham crackers” and the form “crushed.”  When the parser runs into the phrase “graham cracker crumbs”, it rearranges the input so that it gets treated as “crushed graham crackers” instead.  After this interception, the normal parser can take over from there.  In other words, “3 cups graham cracker crumbs” will be seen by the usage assembler as “3 cups crushed graham crackers”, just as if the user typed that in, and yield a result of “graham crackers (crushed): 3 cups”

The important thing to note here is I include the entire phrase, and not just the word “crumbs.”  This allows me to further link entire phrases such as “finely ground graham cracker crumbs” to a finely ground form type.  I’m not too worried about a huge number of combinations as these are very rare and will be used as a last resort.  One way to think about this feature is an automatic “find and replace” for whatever the user entered.

The benefit of this approach is I can define any number of these one-off cases and basically correct any arbitrary weirdness on the fly to something that makes sense.  So long as KitchenPC is internally able to represent the concept of that usage, I can now instruct the parser to handle anything.  Pretty cool, huh?

What’s next?

One thing I really like about this parser is it errors on the side of caution.  If it doesn’t understand exactly what the user said, the match is dropped.  The last thing I would want is to import recipes incorrectly and have a bunch of flakey recipes.  It also acts as a “filter” of sorts to weed out crap recipes; if you don’t care enough to write recipes correctly using clear and concise ingredient usages, I really don’t want your recipe on my site.  There’s enough recipes out there on the Internet to scrape, I can ignore the ones with “some sort of meat” or “35 purple M&Ms”

Right now, I have a success rate of just over 98% and every single one of those matches has been validated.  I figure for any given recipe, my chances of being able to import that recipe is 0.98n where n is the average number of ingredients in a recipe.  If we say there’s an average of 10 ingredients per recipe (that’s just a wild guess), that puts me at around 80% or so.

This would make for a mighty fine recipe scraper which could comb the Internet for hundreds of thousands of recipes to import, making my previously hired work-force completely an utterly obsolete.  This pleases me to no end.  I’m hoping to implement a crawler that will make use of this parsing engine in the coming weeks.

The parser will also lend itself to many UI improvements.  This might entail a different “version” of the parser that would allow for a bit more ambiguity.  For example, it might accept anything after a comma to be a prep note, or make more guesses about how forms could be converted.  This parser would only assist a user, rather than completely validating input.  Elements of the UI could be filled out automatically with the information the parser is able to grasp, and the rest could be filled in or corrected by a user.  This would make features such as pasting in several ingredients at a time possible, as well as bulk adding items to your shopping list, pantry, or meal planner.  This parser will be vetted through the crawler, but eventually exposed through several extremely useful usability improvements on the site.

I also hope to show off the parser a bit more, perhaps with some video showing the various test harnesses I’ve created for the parser or perhaps an interactive demo where my readers can play “stump the parser.”  Stay tuned!

HELLOOOO? Is there anybody HOME?

Leave a comment

This evening I decided to make a quick little code change to KitchenPC.  It only took about 20 minutes, but I think it makes a huge difference in how people will see the site.

The majority of my visitors who go to the home page are not logged in.  They see a generic version of the home page with a few suggested recipes (basically just a query for random recipes with a five-star rating that also have images) and an empty shopping list.  There’s also a mocked-up News Feed section with one hard-coded item that says “See what your friends are up to”, enticing them to create an account.  Since user subscriptions are extremely rare on the site, I decided to use the news feed area to show recent happenings.  Users who are not logged on will now see the last 30 events that took place on the site.  For logged on users, the News Feed will behave exactly the same.

To avoid too much clutter, I only show new recipes, modified recipes, five-star ratings, and comments on recipes.  I don’t show anything “personal” such as calendars or cookbooks, or new subscriptions.

I think this sort of information makes the site look a little more “active”; as if people are actually home.  Maybe seeing other activity on the site will create more buzz and excitement, and foster a sense of community.  Of course, it there’s only a few posts a week, the strategy could backfire and create the illusion that nobody is home.

What’s your take on the change?

What’s Cooking? (Part 5) – Grocery Store Integration

Leave a comment

Ever since the days of Kozmo.com and HomeGrocer, I’ve been fascinated by the idea of online grocery shopping.  Something just seems so convenient about the food I need showing up at my house, eliminating the need for wandering the aisles of the grocery store like a lost puppy.  Contrary to popular belief, I’m pretty sure the “professionals” can pick out better pears than I can too.  Everyone has always figured online grocery shopping would be the next huge thing, WebVan even managed to raise somewhere north of $900 million dollars in VC funding to build such an infrastructure, with nothing but pure speculation to back up their business plan.  Of course, what everyone thought would someday be the norm turned out to be a passing fad, and led to the spiraling death of many early dot-com giants.

My early prototypes for KitchenPC were based on this idea of allowing users to purchase groceries online.  The scenarios were perfect; users would plan out their meals, generate very accurate shopping lists complete with the exact amounts they needed to buy, and KitchenPC would “shop” for them utilizing various connected grocery vendors, figuring out what products to buy in what quantities automatically.  I even created a fake online grocery store called MikeMart with several hundred products.  The shopping algorithms involved were also somewhat interesting, and perhaps unique in this space.  For example, if the user needed 1.5 pounds of cheese, and the store sold cheese in half pound SKUs and 1 pound SKUs, what would be placed in the cart by default?  Three half-pound blocks of cheese would meet the exact requirements of the shopping list, however what if two one-pound blocks were cheaper per pound?  If the user kept changing the default “three half-pound blocks” to “two one-pound blocks”, I would notice this trend and flag the user as a “bulk shopper”, i.e. one who appreciates a good deal when they see it.  The next time, KitchenPC would find them the best deal on cheese per pound even if it meant buying more cheese than they need.

The revenue model around this idea was also completely revolutionary.  First, KitchenPC would be analogous in the online grocery business to what Expedia did for online flight booking.  I would not have to be bothered with the expense and logistics of the groceries themselves.  No warehouses, no refrigerated delivery trucks, and none of the other things that caused the downfall of such business ventures of yore.  Instead, I’d add value onto other businesses by taking on the meal planning and recipe aspect and letting grocers do what grocers do best.  In exchange, I would charge these online vendors a certain percentage of orders placed through my site.

The second revenue model based around this concept is similar to shelf placement in grocery stores.  Grocery stores are smart enough to place the most revenue generating items at eye-level on the shelves, even offering the spots to manufacturers who pay them.  There’s an entire industry along this subject.  I would be able to do the same on a virtual scale.  If a user needs cheese, the grocery store could promote their own brand of cheese through KitchenPC, and this brand would be the default choice in the cart.  The user could of course change this if they fancied another brand, but if the user completed the checkout with this “promoted” cheese, I would charge the sponsor a few cents.  This is already superior to banner ads and other traditional online marketing, since product manufacturers or grocery stores would be guaranteed that their marketing dollar had a positive return.  For example, Kraft could simply send me twenty-bucks and I’d hold it in an account.  Each time someone bought a Kraft product promoted on my site, I’d deduct a nickel from that amount.  There would be no set minimum or maximum, and when the balance reached zero I’d simply stop promoting that product.  Multiple promotions could be cycled randomly, or targeted to certain users based on an analysis of what types of products they tended to buy.  A wise man once said, “You’ll waste half your advertising budget but you won’t know which half.” – KitchenPC would beg to differ.

A third revenue model was based around data collection.  Every time you swipe your member rewards card at the grocery store, all you’re doing is feeding valuable trend data into their database.  If there’s a correlation between shoppers who buy product X and product Y, if you buy product X you might get a coupon for product Y.  Manufacturers pay a lot of money for these sorts of data.  The data I could collect would be about quantity.  If you walk into a grocery store today and buy 10 pounds of flour, they don’t know if you’re a professional baker and will use all this flour the next day, or if you’re just stocking up because it was on sale.  As KitchenPC has access to your meal plan, I would know exactly how much flour you needed and how much you actually purchased.  I could develop trend models around different incentives to get shoppers to buy more of a product than what they need.  These sorts of data could be sold to manufacturers who are trying to figure out price points and size SKUs for various products.  I could tell Kraft, “Hey Kraft, if you made a 3/4lb SKU of cheddar cheese at price x, I predict this number of people would buy it.”

So, I had all this working and it was pretty cool stuff.  I even considering going into the public beta with the MikeMart integration just to try to attract some potential partners.  However, after taking a more realistic look at the initial user survey I decided the feature must be cut.  The Polish designers were already at the upper end of my budget for web design, and porting that UI over would only add to the expense.  Plus, out of the 300+ people I surveyed, only around 30% of them had ever bought groceries online.  Out of that 30%, the majority of them had only tried it out once, or would purchase groceries online every few months for major events.  I only found 6 people (out of over 300) who said they purchased groceries online on a regular basis.  These sorts of data simply don’t justify a massive undertaking for online grocery store integration.  Plus, the revenue models just didn’t scale.  Everything I had planned revolved around the majority of users purchasing their groceries online, and I just didn’t see that happening; at least not right away.

Another huge deal breaker was the chicken and egg problem involving getting grocers to sign up.  From a technical point of view, websites had to implement a special web service that conformed to a certain WSDL to allow KitchenPC to search their inventory, transfer order information, look at delivery schedules, etc.  Rather than transferring a user to another site, I wanted to provide a seamless experience for placing orders all on KitchenPC.  Buying a ticket through Expedia does not require you to have an account on AlaskaAir.com, so a KitchenPC user would not need an account on Safeway or Amazon Fresh or any other store.  I could simply transfer all the order information directly and securely.  However, any major vendor of groceries was sure not going to talk to me unless I had hundreds of thousands of users and I’d probably need some serious VC connections to even get in the door.  At that point, I decided the best approach is to build a great meal planning product first, and then worry about shopping integration later on.  Well, I think that “later on” is worth looking at once again, and I’ve also come up with some changes to make this design far simpler; and also allow the chicken and egg to hatch paradoxically simultaneously.

Regarding the minority of Internet users who purchase groceries online, this may be a fact; however, even if that number is still only a few percent, this equates to millions of potential users who would like my site.  Marketed correctly and combined with other revenue sources, I think online grocery store integration could still be a viable piece of the revenue puzzle.  Plus, the type of person who wants to plan all their meals up front and efficiently use each ingredient overlaps well with the demographic that would want to buy groceries online.  They’re busy people and don’t make frequent last minute trips to the grocery store.  Imagine finding a week’s worth of meals for your family on Sunday, checking off the ones you like, and clicking a single button to get all the ingredients delivered to your house the next day.  Most busy heads of household would love this sort of feature!

Next, it’s exactly the kind of gimmicky feature that ends up making headlines.  No one has done this before, so really who cares if it works!  I’m sure it would be a CNet article or be mentioned in at least a few major food or parenting blogs.  The press alone could drive in a ton of new traffic, even if I only supported a few small mom and pop grocers in the Seattle area.

As for implementation, I have some new ideas up my sleeve.  After doing so much work with HTML crawling the last few weeks, I came up with a new paradigm for vendor interaction; simply allow order placement through grocery stores without their permission!  The plan would be to scrape their inventory weekly using a crawler and index this information locally, exactly as a search engine would do.  I would be able to simulate orders through HTTP directly with the vendor by passing in the user’s data.  In exchange, I would charge the user a dollar as a service fee for using KitchenPC.  Sure, the user could logon to the site directly and save a dollar, but I would expect most users to rather pay a buck than type in 30 or 40 ingredients one at a time when KitchenPC could match all the products automatically; especially when they’re already entering the credit card data anyway.

Stores could also elect to be “preferred vendors.”  A preferred vendor would show up in bold or be highlighted in some way.  A preferred vendor would pay that dollar themselves instead of the user.  Thus, a user could save a dollar by using a preferred vendor.  This would allow my site to integrate with a handful of grocery vendors right away, and then perhaps recruit some preferred vendors down the road especially if I were armed with data showing how much business I’ve been sending them.  Eventually, I’d be able to forge relationships with enough vendors to work out the web-service based interaction with the site and could abandon the hacky HTML scraping technique.

Coincidently, I ran into a “Customer Engagement Manager” at a entrepreneur meet-up I went to on Tuesday.  She works at a website called MyGofer.com, which specializes in shopping for people.  I don’t know much about the company yet, but they appear to be backed by Sears from the looks of things and they provide a service to send out shoppers for you to collect things you need.  They seem to collect their own pricing data on various grocery items so you can see how much you’re spending before you place your order.  After talking to her a bit about KitchenPC, she said she’d be more than willing to meet up for lunch one of these days to discuss more on the subject.  I’ve come across a few of these “personal shopper” businesses on the web recently, which leads me to believe it’s the right time to pursue this sort business venture.  Plus, most of the core code for these sorts of features on my site is already done and works quite well.

So when can you expect grocery store integration through KitchenPC?  Sadly, I must say not for a while but it’s something I’m definitely going to pursue.  I saved the last part of this blog series for somewhat of a “stretch goal” but I thought I’d share this with my readers none the less, at least to create a bit of buzz.  Who knows, perhaps the CEO of Safeway is reading and loves the idea.  I do think this vision really ties in with online meal planning, and I don’t think there’s another site out on the web that’s in a better position to really nail that goal than KitchenPC.  So, it remains a long term goal and definitely one I’m excited about.

I really appreciate everyone who read all five parts of this blog post!  Hopefully, you’re as excited as I am about the future of KitchenPC.  After taking a year off “work”, whether or not I can continue with KitchenPC full time much longer is up in the air, but at the very least it will remain a part time project of mine to work on as time allows.  There’s still such a huge amount of work left to do, but I think I have a much more clear “road map” now; and the site will only get better I promise!  Thanks for reading.

Older Entries Newer Entries

Follow

Get every new post delivered to your Inbox.