Show HN: Myra – AI based personal assistant you can text
getmyra.co
getmyra.co
As this feature is in Beta, I do not expect it to be perfect - but they could really improve on NLP in the application and understand my queries better, as it goes off-course if two different queries with different words but same meaning are asked..It is amazing, how this system is implemented but, if anyone is trying to build similar product they should try SMSsync[1] by Ushahidi - its still sort of beta product but gets the job done for a feature similar to this..
[1] http://www.ushahidi.com/product/smssync/
EDIT: I was only talking about how to implement the gateway part of the application quickly and not the whole Myra product, apologies for the mistake..
Regarding the natural language - yes, the language models are trained on a dataset that doesn't yet account for all possible ways of expressing intent. As more users such as you interact with the system, it will get better at handling them.
Myra is able to understand intent via natural language processing. This is independent of the medium you interact with it from - for instance, it could use Slack, Telegram, Gtalk or even email and voice.
This one is fast but still very natural. The suggested query in the onboarding flow obviously works very well, but I tried to throw it for a loop by asking where I can take a party of 20 for dinner in SF tonight (real problem so if anyone has suggestions would love to hear them!).
The response wasn't tremendously useful, but it was still an intelligible and coherent response (recommended 20 Spot--kind of a smart response actually!).
Asking friends, they've suggested Amici's or Buca Di Beppo so I can imagine the algorithm learning or being taught over time to incorporate characteristics like that (large groups). I like that it's a narrow use case to start--focus on that and build from there. Much more optimistic than the wide and shallow approach of Magic and Operator.
The language models here are still being trained, so there will definitely be things it doesn't understand yet - eg, the fact that "party of 20" should translate into "good for groups". But that's great feedback and glad you liked it!
It uses Deep learning models for natural language. Happy to answer tech related questions here.
Just a note: It's limited to San Francisco only for now - and it's still in Alpha - there will be kinks!
I'm really curious about the Whatsapp and Facebook messenger integration, given that they don't seem to have published APIs. How did you do it?
Edit: I was wrong!
If you use those, you'll see that the responses are almost instantaneous, compared to the lag which SMS inherently has. There is a general purpose API that can be used via any platform - Slack, Telegram, Gtalk, or email. Anything that supports text.
When you say "natively integrated" what do you mean? As far as I can tell there are no APIs for either Whatsapp or Facebook Messenger.
I'm using thirdparty open source libraries to integrate FB and Whatsapp into this.
User interactions have really spiked as we speak. Try shifting to FB Messenger (if abroad or not wanting to use SMS) or SMS in the meanwhile!
For building blocks - it's a combination - mixture of word2vec for feature vectors, and some parts of spaCy (though still experimental).
Using your example, why couldn't you use a standard parts of speech tagger, even on a poorly-punctuated sentence?
Also could you expand on the NLP techniques you are actually using? How are you embedding the words/phrases/sentences into the vector space? Are you doing compositional embedding (unsure of the proper phrasing) where you embed a word, the phrase the word is in, the sentence the word is, etc all in the same vector space?
What I meant was that existing libs, in my limited experience, can't do entity recognition (even those that use classifier based chunkers) unless you've got a good dataset of similar conversations. Which I don't yet. So my option was to build something that would take an arbitrary sentence and do so while only having limited training. Does that make sense?
I'm utilizing word/phrase vectors - haven't moved to sentence vectors yet. And they are in the same space. I'm not entirely sure what compositional embedding entails, so presumably I'm not doing that. I would however love to chat offline and get more insight from you on it.
The response times seem instantaneous, which given what's going on under the hood, probably wasn't the easiest to accomplish. The speed went a long way to keep me engaged and trying new queries. What tech stack does any given query hit and what pieces needed the most focus to keep request latency low?
My major question is, when would I use this over Siri?
Siri is usually good enough for the same types of queries I tried. Good enough and faster access to Siri will probably make my use of something like Myra limited in current form.
For a more concrete example, if I am in the Mission and I don't know what's good to eat, I'll hold down my home button on the iPhone and ask siri: "restaurants in the mission". From there it's easy to get into Yelp and then do all my further refinements and actions without needing to text or form any more natural language queries.
Now, if future functionality is in place that gets over that 'good enough' barrier, I think this is on to something.
Kudos.
- Siri doesn't maintain conversational context. If you wanted to find a sushi place in SOMA, and the recommendation was too expensive, you could just say "show me something cheaper" to Myra. For Siri, you'd have to repeat saying "cheap sushi places in the mission" which (doesnt work today and) would show you a whole different set of results. You can also never ask Siri things like "Show me reviews for Foreign Cinema" and "get me a reservation there".
- Siri's not good at answering questions. If you ask it for happy hour places in the mission for instance, or the best outdoor date spot in SF - the results are simply not useful. Myra will not only recommend a place, but also things like when the happy hour time is, and why the japanese gardens in Golden Gate Park are a good outdoor date spot. More importantly, it will factor in things like open times and available reservations when showing you this data.
- Also, when you're having a group conversation with other people, when it's too noisy around you, or you have something private to say - text is always better.
Re: Tech stack - for every query, you are actually seeing live results (for instance, reservation data can't be cached). Doing the NL parts quickly was the most challenging piece so far. It's written in Python.
Hope this helps.
[1] https://medium.com/@mg/there-s-a-chat-for-that-apple-s-bigge...
[2] http://ben-evans.com/benedictevans/2014/8/1/app-unbundling-s...
[3] http://a16z.com/2015/08/06/wechat-china-mobile-first/
[4] http://vurb.com
SMS could do most of that as well, and if you add an "AI" messager it could be pretty powerful. That said, an "AI" email interface would be just as useful.
Especially in things that are defer-able - for instance, in needing to do things like scheduling food delivery for 8pm via doordash, where you don't want to change from "work and email mode" to "pull out my phone to text" mode.
Ultimately, any one browser can't store _all_ the links in the world that you might need to use. You need something like a search engine.
So no, I fundamentally disagree with A16Z and the wechat model - just because it worked on limited scale (think Yahoo directory in 1999) - doesn't mean its the way to the future. My $0.02 anyway :).
http://cl.ly/image/3k2U1c0i372d
And that didn’t work. Then I tried clicking on Messenger link on your site.
http://cl.ly/image/0L1L1T3w0F1P
But none of those are links. And then I tried your FAQ.
And I didn’t really find it. Messaging ‘Help’ didn’t really help. The problem is probably generational and I’m just too old for that feature, but it might be nice to make it easier for old dummies like me. I did, however, finally figure it out. You go to people in the Messenger app and then you + someone, which prompts for a phone number.
http://cl.ly/image/3g0e2x3Y1z3W
This then sent me down the same signup flow and ultimately told me I can’t reuse the same email address.
http://cl.ly/image/3G0r1C2K2R36
Based on that message, I wasn’t sure whether I type in a new email address or type restart. I try the email first.
You then reintroduce yourself and ask for my first name again. I give it again. And then you ask me for my email again. And do that again. And then you say thanks for signing up and give me that postscript about using Facebook for a better experience.
Unfortunately, I stopped there and honestly, I would have stopped a lot sooner. Please note that you sent me down this route and in the end it didn’t feel like a better experience. In fact, based on what I saw, it doesn’t seem like you know whether I was on FB or not.
Basically, be really careful of your recommendations to users on your signup flow. If you present a fork, you should follow it yourself to see how that changes things. I’m going to come back and play with this some more after I get through some other Show HNs, because I love talking to bots! It looks like you have a lot of feedback already. If I have some more unique feedback, I’ll post it as a reply to here. Thanks!
The sign up flow messaging could definitely use more work and I'll be sure to incorporate your feedback into it. One fix would be to be to simply ask for the email again as opposed to restarting the whole flow.
I just debugged what happened with the double signup BTW. Basically, an issue with FB Messenger is that not everyone associates their phone number with FB. If thats the case, Myra gets your FB account ID and not your phone number when you sign up. And as a result - it can't figure out you're the same user. Need to figure out how to fix that. Suggestions welcome actually.
It expects you to type your name again followed by your email. Basically, if something went wrong, you need to type both the name and email again from first principles - it's not waiting for just the email. Did I explain it right?
It's something that we would like to fix going forward.
Edit: Happy to sync offline in case I can help you further.
The tech is evolving. Recurrent NNs, word embeddings. Standard python libraries mostly. Nvidia CUDA backend for speed.
There are a bunch of very nice NL related experiments I've tried that are waiting in ipython notebooks, that we would love to experiment with here in production. If anyone here is interested in working on problems that relate to NLP/Deep Learning, and doing so with millisecond response times, at scale - you know what to do :)
Myra is different from them in that it is first and foremost an intent understanding system, which has the ability to judge which service to use to satisfy it. The ability to help recommend/plan an evening out is the first amongst a broader set of things it can do.
This query should be able to summarize well. It will be great if we can collabrate on data sharing at some level.
The main motivation behind Myra is that it maintains conversational context - so you can ask questions and follow up with it without leaving that context.
Eg: "Find me a restaurant" and "Show me what people say about it".
Just like you would when speaking to a person - and one of the things that most (all?) other AI assistants out there lack.
I've built my own API which can do entity and language parsing. It relies on utilizing word embeddings (such as those described here: http://arxiv.org/pdf/1310.4546.pdf).
This one looks cool though. Would love to try it when/if it rolls out to Los Angeles.
But jokes apart - I think that using apps on the phone is like using bookmarks in 1999. Why do we have single purpose "links" that allow you to a few things, that you need to remember? What is indexing all of these services, and allowing you to get them on demand, just by expressing intent? Almost a search engine - but one that actually gets things done, rather than just displaying information.
(1) Go to the "People" tab [1]
(2) Click the "+" Icon on the top right [2]
(3) Add the phone number you want to message. [3]
[Reference Images]
[1] https://scontent.fsnc1-1.fna.fbcdn.net/hphotos-xfa1/t39.2229...
[2] https://scontent.fsnc1-1.fna.fbcdn.net/hphotos-xap1/v/t1.0-9...
[3] https://scontent.fsnc1-1.fna.fbcdn.net/hphotos-xft1/v/t1.0-9...
Yeah... kindly make that visible UP TOP without having to visit the FAQ. A lot of us use personal assistants to do stuff that doesn't involve venues, dining, retail, or geolocation.
What would you like this assistant to do that would be more useful?
Would you be interested in us opening a generic API to apps like yours so we handle all protocol differences?
Are there less expensive ways to send 10s of thousands of SMS messages per month?
I think this is a very cool idea.
Yes, you're right about the sms overhead. The way to mitigate that is to offer this on every platform which supports text that uses a web connection. Hence the focus on fb messenger, whatsapp and others apart from sms.
This is a bit retarded.
As the welcome page mentions, it currently only answers queries around restaurant recommendations/reservations, and the logistics around them - reviews/times/menus. It would be great if you tried that out. As the system becomes more intelligent and location aware, I'm hoping it will get to answering broader questions such as yours.
(disclaimer: I work at Factual, but a) I'm commenting as an individual, not representing the company; b) I genuinely think this is a good choice for you; c) for a small app like this, the data will likely be free, so I have no financial motivation!)
After that, I think pricing depends on your app. I think it is extremely favourable to small/new startups, but I am am engineer and not a sales guy, so I don't want to say anything that might be both specific and wrong... (I hope this isn't starting to sound like a bait and switch sales pitch; if you want to talk offline my gmail is donallmc).
[Edited to update email]
For instance, "happy hour near mission" works as well as "Whats a good happy hour in the mission that has craft beer".
The thing is - would you rather figure the right app, find it on your phone, open it, wait for it to load, do a search, and have it take an action - and then use the next app to take the next one?
Or simply have a layer that does it transparently?
Further, these long codes switch companies frequently as they get reused when they're no longer in use, and SMS user numbers have been spammed with sms messages as a result.
In that respect, it absolutely makes sense to use a shortcode where you can conform to regulations.
It's important to note though that Myra only responds when asked for information, and never without. So, it makes sure not to spam at all.