In this live demo at the Meteor Summer Hackathon, Alex Atallah and Doug Safreno present their award‑winning project, Thoris (also called Sorus), an assistive‑automation tool for writing. The system tackles three high‑level tasks—organization, research, and diction—by providing real‑time, context‑aware synonym suggestions, Wikipedia look‑ups, and topic‑driven image retrieval via Flickr. Their implementation leverages WordNet for synonym lookup, AlchemyAPI for semantic analysis, and custom ranking that intersects WordNet glosses with the document’s vocabulary. They showcase the Meteor platform’s built‑in reactivity, which enables instant feedback as users type, and discuss how Meteor’s session variables simplify collaborative development. The talk includes a Q&A where they clarify that the thesaurus logic is a custom, “hacky” algorithm rather than a hidden Markov model, and argue that Meteor is a strong fit for highly reactive NLP applications. The presentation concludes with thanks to the Meteor community and an invitation for further questions.
Chapters
Next up we have Alex and Doug who won a prize at the Meteor Summer Hackathon. Which prize did you guys win?
Best API integration.
Nice. All right. And they're going to show you Thoris. Thoris.
The the is silent. So Doug and I are interested in assistive automation in general. Particularly the task of automating some of the things going into writing menial essays and annoying emails to your boss. And 3 of those high-level tasks are organization, research, and then diction. And research and diction are 2 tasks that we think have a strong reactive component to them. It's something that should be done as you type, kind of like spellcheck. Nothing really much has gone on top of spellcheck in the past, like, decades since it happened. But we wanted to build something using Meteor that could help you come up with synonyms as you typed that best fit your essay. So we developed Sorus. And Doug is going to go through a sample thing that you could write in.
[SPEAKING RUSSIAN] So hi, everyone. My name is Doug. I work at a company. Apple and Google are cool companies. We'll see which one it likes more. Oh, I guess it likes iPhones more.
So you can see a couple of things going on here. One is synonyms.
Yeah. So we have 3 key features. One is context-aware synonym suggestion. The second is Wikipedia. And the third is topic detection, which is manifested here as just hitting the Flickr API and being like, "Yo, what's the coolest picture for this topic?" So, yeah, Alex will walk through a little bit on what context-aware synonym suggestion entails.
[Speaker:ALEX_ATALLAH] So, we used many— a couple of different APIs. We used WordNet to look up synonyms and then we rank these synonyms based on how well they fit into the context of your whole essay. Let's enter another sample query here. If I say I want to live in a big house, you'll see a couple other APIs in the works. In addition to like WordNet suggesting things like household, which you can go down and select, you can see the AlchemyAPI, it— like integrating with Flickr to change the background and theming your application and user interface towards the idea of a household or a house.
It's also context-aware. So for instance— well, it's aware of the grammatical structure of your sentence. So for instance, George Washington is recognized as one Wikipedia entry, but if you add a period, You get George W. Bush and Washington, D.C. So yeah, we were excited to have our project win Best Integrated with Third-Party APIs at the Meteor Hackathon. We'd like to thank the Meteor community for supporting us, and we'll now take questions if there are any.
Thank you. Yeah? [Speaker:AUDIENCE] Do you use a third-party API to do your rate limiting? Them or do you—
or are the context-aware thesaurus suggestions things built on, you know, your own custom implementation? [Speaker:ALEX ATALLAH] The question was, are the thesaurus synonym suggestions custom or do we use a separate HMM? And they are custom. It's kind of a hacky algorithm, but basically we take the gloss, in other words, like a definition and a couple examples of a synonym from WordNet and then we intersect that set of words with the set of words that you use to create your document. And the size of that intersection, we use to rank synonyms.
Yeah.
Any other questions?
All right, cool.
Oh, one there.
[SPEAKING CHINESE] —a limited amount of JavaScript language for things like, you know, sentiment analysis.
Where do you think Meteor is the best choice for this kind of application?
Well, maybe we would have— we might have different opinions on this because we haven't talked about this, but— all right, the question was, where do you— what do you see this evolving into from here? And I think of natural language processing as like, it's not a value that people have in their heads. It's not like, "Secure my computer," or, "Help me like produce better documents." It's a way of interacting with computers. And so NLP things like this are better suited as package libraries. So I think that's the best, like an ideal target for this kind of thing.
I think the second part of that question was also like, was— Meteor the best choice for this. And for us, it was a really good choice because we were trying to build in— because all of the interactions that we're doing and all of the logic that we're handling has to be so quickly reactive to what the user is typing. And all that reactivity comes baked into Meteor. So for us, we think it was a pretty good choice.
[Speaker:ALEX ATALLAH] It also made collaboration a lot easier because when we worked on separate topics, people would just publish some session variable. And I would just expect that one to come up when Doug was finished with it.