Wit.ai Raises $3M Seed Round Led by Andreessen Horowitz

15 Oct 2014 news

On May 1st 2000 I met a woman who would change my life – Cybelle.

Cybelle was a chatterbot.The magic of having a conversation with a computer convinced me that this was the future. Cybelle knew a few cool tricks, but she was far from being usable in the real world. I wanted to change that. A few hacker friends and I started to code and in 2002 I started a company with Laurent Landowski and Callixte Cauchois around natural language, VirtuOz.

By 2012 VirtuOz was the market leader for customer service conversational agents (think ‘Siri for the enterprise’) and was acquired by Nuance Communications. Our company had grown to 70 employees and moved to San Francisco. The experience of building the ‘Siri’ for customers of big companies like AT&T, eBay, H&R Block, AOL, gave us a first-hand look at just how difficult and tedious a task speech and natural language truly were. Each natural language interface we created took 3 to 6 months to build and involved direction not only from our development team but also linguists and knowledge management experts. And because of the extremely high cost of setup, there was no solution tailored to smaller businesses or developers. No vendor was getting natural language user interfaces widely adopted, including us.

Despite our enterprise success we still fell short by Cybelle standards. Adding feature after feature to an ever-complex speech toolset, or creating the next big algorithm was not really what we wanted to do. Natural language is hard.The solution is not found in a centralized, managed, closed approach, but an open, distributed, community-based network of developers. We had to build the Github, the Wikipedia, the Bitcoin of natural language.

Last year I started Wit.ai to make this a reality. On September 12th, 2013 from my Palo Alto garage (sorry for the cliché), Willy Blandin and I shared the very first alpha version of our natural language understanding API on Hacker News. 1100 developers signed up in the first 24 hours and started building apps that take natural language input from users. And more than 99% of the developers agreed to share their training data with the community.

Shortly after, Pebble’s founder Eric Migicovsky kindly offered us to work off Pebble’s offices, and we entered Y Combinator.

The enthusiasm of the developers community confirmed our vision. We want Wit.ai to be the platform that developers use to build messenger-based and audio-first apps that are arriving in the next generation of wearables and smart devices. We have assembled a great team of engineers specialized in natural language processing, machine learning and speech. Jennifer Dewalt, from 180 websites in 180 days, also joined us to lead developer and community efforts.

Today we are very proud to announce we have a wonderful team of investors and have raised a $3M seed round. This investment is led by Chris Dixon at Andreessen Horowitz, with participation from Ignition Partners, NEA, A-Grade, SVAngel, Eric Hahn, Alven Capital, and TenOneTen. What makes us so excited about this group is how they share our vision and support our long term goals.

Wit.ai already powers hundreds of apps, wearable devices and home automation systems, but we have only scratched the surface of the problem. From simple commands, we’ll need to teach machines to understand more complex statements, be aware of the context, handle strong ambiguity, and generate natural, fluid interactions. I doubt we’ll ever see a single, monolithic solution provided by one company alone. Instead, a few startups will solve well-defined pieces of the problem. Natural language applications will be made up of these interlocking pieces.

We’re also excited to announce Listen 2014, the first conference focused on voice interfaces for the internet of things. We invite you to join us on November 6th in San Francisco for a fantastic line-up of industry leaders including Adam Cheyer (founder of Siri and Viv) speaking about the past, present and future of voice interfaces.

We’re a small team working hard to bring voice interfaces to the world. We aren’t getting an uber-fancy office or having Coldplay play at our launch party. As YC Paul Graham said, we’re not here to “play house.” So if you are a developer who has a penchant for natural language or a curious and talented engineer whose core priority is not about paleo snacks, we’d love to talk to you!

Alex Lebrun, cofounder and CEO


CalHacks 2014

09 Oct 2014 hackathon,, community

This past weekend Wit was proud to be at CalHacks at UC Berkeley for another wild and crazy weekend of hacking and mentorship. CalHacks was the largest hackathon ever with over 1800 hackers, mentors and sponsors packing California Memorial Stadium and over 200 hacks were presented at the end of the weekend.

Hacking Under the Stars

Hackers working in the stadium plaza under the stars.

We saw some awesome hacks over the course of the hackathon and we were stoked to see so many teams thinking about the future of the internet of things. Our Grand Prize for Best Overall Use of the Wit.ai API went to Jarvis, a voice controlled home automation hack. Jarvis was created by solo hacker Ivan Smirnov using a Moto 360, an Intel Edison board and some relays to control power to three 120v devices. Not only was Ivan working solo, it was his first time hacking on hardware and he totally killed it. Great work, Ivan! Enjoy your new Pebble Steel!

Ivan and Jen

Ivan won our API Grand Prize with his home automation hack, Jarvis.

Picking a winner was hard, though. We saw a lot of other great hacks using Wit.ai. Some of the other cool projects we saw were:

  • Where Yat? - An email based location sharing app that uses Wit.ai to help coordinate meetings between friends.
  • Shelldon - A voice activated shell interface for OS X.
  • OrderBot - A food delivery app where you send a natural language text message about what you want to eat and the app will manage the ordering and delivery.

CalHacks Expo Floor

Over 200 hacks were on display in expo on Sunday.

Congratulations to all of the hackers and especially to the organizers of CalHacks. It was a crazy fun event and we’re looking forward to the next one!

Team Wit


Open Sourcing Duckling, our probabilistic (date) parser

01 Oct 2014 open-source

We’ve previously discussed ambiguity in natural language. What’s really fascinating is that even the simplest, seemingly most structured parts of natural language, like the way we humans describe dates and times, are actually so difficult to turn into structured data.

The wild world of temporal expressions in human language

All the following expressions describe the same point in time (at least in some contexts):

  • “December 30th, at 3 in the afternoon”
  • “The day before New Year’s Eve at 3pm”
  • “At 1500 three weeks from now”
  • “The last Tuesday of December at 3pm”

But wait… is it really equivalent to say 3pm and 1500? In the latter case, it seems that speaker meant to be more precise. Is it OK to drop this information?

And what about “next Tuesday”? If today is Monday, is that tomorrow or in 8 days? When I say “last month”, is it the last full month or the last 30 days?

A last example: “one month” looks like a well defined duration. That is, until you try to normalize durations in seconds, and you realize different months have anywhere between 28 and 31 days! Even “one day” is difficult. Yes, a day can last between 23 and 25 hours, because of daylight savings. Oh, and did I mention that at midnight at the end of 1927 in Shanghai, the clocks went back 5 minutes and 52 seconds? So “1927-12-31 23:54:08” actually happened twice there.

There are hundreds of hard things like these, and the more you dig into this, believe me, the more you’ll encounter. But that’s out of the scope of this post.

wit/datetime

At Wit.ai, the built-in entity that’s the most used by the community of developers is wit/datetime. So we had to work on this problem. From our past experiences with NLP, we knew that a fully rule-based approach was a recipe for disaster. Unfortunately (or not), humans are very bad at following strict (syntactic) rules. On the other hand, temporal expressions are quite regular and hierarchical compared to other sides of language. A fully machine-learned approach like we have in other parts of Wit.ai seemed difficult. So we started to design a hybrid system, based on both rules and examples: Duckling.

Open sourcing Duckling

Today, we are both happy and eager to share our approach with the community by open sourcing Duckling. Duckling is far from perfect, but we think it may help a few developers with similar problems. Meanwhile, as we wrote earlier, natural language is such a hard problem - we need to join forces!

We’ve been using Duckling in production for one year now, and while it’s still a very early-stage library, it parses hundreds of thousands of weird temporal expressions in five languages with a lot of success.

You can try out Duckling and read the documentation here. The code is available on Github.

Next?

Moving forward, we’ll continue to open source more and more of Wit.ai. Please give us lots of feeback about Duckling, and of course, contribute!

Team Wit


Upcoming new API version for better entity format

26 Sep 2014 update

Next week, we’ll be releasing a new version of the API which should make it easier to work with entities such as datetime. The changes in the new version (version 20141021) will only affect the entities field in the outcome object when you receive a response from Wit.ai. To update to the new version, you’ll need to change your version number in the call to the API. The new way to call the API will be:

bash curl -H ‘Authorization: Bearer $TOKEN’ ‘https://api.wit.ai/message?v=20141021&q=hello'

or

bash curl -H 'Authorization: Bearer $TOKEN' -H 'Accept: application/vnd.wit.20141021+json' 'https://api.wit.ai/message?q=hello'

The new format will make it easier for you to parse entities but also paves the way for more information for many entities such as datetime. To compare, if we pass the phrase “Set alarm tomorrow at 7am” to Wit.ai, the response from the old API version (v. 20140620) might look like this:

 curl   -H 'Authorization: Bearer $TOKEN   'https://api.wit.ai/message?v=20140620&q=set%20alarm%20tomorrow%20at%207am'

{
  "msg_id" : "dcdac1af-adad-41dd-aeb6-c40f29a20e08",
  "_text" : "set alarm tomorrow at 7am",
  "outcomes" : [ {
    "_text" : "set alarm tomorrow at 7am",
    "intent" : "alarm_set",
    "entities" : {
      "on_off" : [ {
        "value" : "on"
      } ],
      "datetime" : [ {
        "value" : {
          "from" : "2014-09-27T07:00:00.000-07:00",
          "to" : "2014-09-27T08:00:00.000-07:00"
        }
      } ]
    },
    "confidence" : 0.995
  } ]
}

In the new version, the response will look like the following:

curl   -H 'Authorization: Bearer $TOKEN   'https://api.wit.ai/message?v=20141021&q=set%20alarm%20tomorrow%20at%207am'

{
  "msg_id" : "07a8edd6-3503-4fc7-857d-bc506b85c720",
  "_text" : "set alarm tomorrow at 7am",
  "outcomes" : [ {
    "_text" : "set alarm tomorrow from 7am",
    "intent" : "alarm_set",
    "entities" : {
      "datetime" : [ {
        "type" : "value",
        "value" : "2014-09-27T07:00:00.000-07:00",
        "grain" : "hour",
      } ],
      "on_off" : [ {
        "value" : "on"
      } ]
    },
    "confidence" : 0.999
  } ]
}

The table below illustrates all of the changes in the new API response:

Example   Current format   New format
on July 15th at 5pm (Datetime)   {“value” :
{“from” : “2015-07-15T17:00:00.000-07:00”, “to” : “2015-07-15T18:00:00.000-07:00”}}
  {“type” : “value”,
“value” : “2013-07-15T17:00:00.000-02:00”,
“grain” : “hour”}
from 7am to 8am (Datetime)   {“value” : {“from” : “2014-09-26T06:00:00.000-07:00”, “to” : “2014-09-26T07:00:00.000-07:00”}}   {“type” : “interval”,
“from” : {“value” : “2014-09-26T07:00:00.000-02:00”, “grain” : “hour”},
“to” : {“value” : “2014-09-26T08:00:00.000-02:00”, “grain” : “hour”}}
this afternoon(Datetime)   {“value” : {“from” : “2014-09-26T12:00:00.000-07:00”,”to” : “2014-09-26T19:00:00.000-07:00”}}   {“type” : “interval”,”from” : {“value” : “2014-09-26T12:00:00.000-02:00”, “grain” : “hour”},”to” : {“value” : “2014-09-26T19:00:00.000-02:00”, “grain” : “hour”}}
2 hours (Duration)   {“value” : 7200}   {“type” : “value”, “unit” : “hour”, “value” : 2, “normalized” : {“value” : 7200, “unit” : “second”}}
70 degrees (Temperature)   {“value” : {“temperature” : 70}}   {“type” : “value”, “unit” : “degree”, “value” : 70}
70°C (Temperature)   {“value” : {“temperature” : 70,”unit” : “C”}}   {“type” : “value”, “unit” : “celsius”, “value” : 70}
70 (as an implicit Temperature)   {“value” : {“temperature” : 70}}   {“type” : “value”, “value” : 70}
30 miles (Distance)   {“value” : {“unit” : “miles”,”distance” : 30}}   {“type” : “value”, “unit” : “mile”, “value” : 30}
30 (Quantity or Number)   {“value” : 30}   {“type” : “value”,”value” : 30}
about $20 (Amount_of_money)   {“value” : {“currency” : “$”,”amount” : 20}}   {“type” : “value”, “unit” : “$”, “value” : 20}
one cup of sugar (Quantity)   {“value” : {“product” : “sugar”,”unit” : “cups”,”value” : 1}}   {“type” : “value”, “unit” : “cup”, “value” : 1, “product” : “sugar” }
350ml (Volume)   {,”value” : {,”unit” : “litre”,,”volume” : 23,},}   {“type” : “value”, “value” : 330, “unit” : “millilitre”}


Once we release the new version of the API, any old versions ( any version < 20120924) will be deprecated and a field ‘WARNING’ with the value ‘DEPRECATED’ will be added to any response from a request with an old version. Old API versions will persist until the next subsequent API update (the version after v. 20141021) at which point they will be removed from our system.

Please contact us if you have any questions or concerns.

Team Wit


Hack the North

24 Sep 2014 hackathon,, community

Last weekend we were excited to travel up to Waterloo, Ontario to be a part of the largest hackathon ever in Canada: Hack the North.

Over 1000 undergraduate students attended Hack the North and there were over 200 teams working to make some killer hacks. We had the opportunity to work with lots of hackers in Waterloo, helping them to use Wit.ai in their projects and also providing general mentorship and guidance. At the end of the hacking, 16 teams using Wit.ai presented their projects to us and the level of execution was outstanding. Three out of the top 10 final hacks used Wit.ai in their projects. We had a really tough time picking a winner.

Team Home East

Team Home Ease posing with their voice controlled microwave and toaster oven hack.

We awarded the Grand Prize for Best Overall Use of Wit.ai to team Home Ease for their voice controlled microwave and toaster oven hack. The team of four from University of Waterloo tore off the old interfaces for their appliances and hacked together a new interface system using a Spark Core and the Wit.ai API for voice control. We felt their hack was original, ambitious and overall really well thought out. Congrats, guys and enjoy your Pebble Steels!

Team Open Pokemon

Team Open Pokemon demoing the voice controlled battle portion of their game.

There were a number of other really cool hacks using Wit.ai at Hack the North as well. Some of our favorites included:

  • Open Pokemon - A GPS-enabled mobile/real world Pokemon game that included Wit.ai to power voice controlled actions. (Top 10)
  • Remember All - A Google Glass app that records video and uses Wit.ai to help catagorize and index the clips using the audio. (Top 10)
  • Parrot - A voice controlled text to speech email reader.
  • Jarvis - A multi-featured, voice controlled personal assistant for OS X.
  • Silicon Man - A team of one who taped an iPhone to a visor and hacked an augmented reality system controlled with gesture and voice. (Top 10)

We’ll be featuring some of these awesome hacks in our community showcase and on the blog in the next few weeks.

Next up for Wit.ai is the CalHacks hackathon at UC Berkeley, October 3 - 5. We’re looking forward to another huge, successful weekend of hacking right in our own backyard.

Congratulations to all of the hackers and the Hack the North organizers who put on a great event!

Finalists and Judges

The top 10 teams and judges take the stage.

Team Wit