
Flashlight: Designing a Natural-Language Interface to OS X
In late 2014, I began working on an OS X "hack" to allow people to write "plugins" for OS X's Spotlight search engine. After writing a couple simple plugins – you'd type "weather in Brooklyn" and it'd show you a forecast inside the Spotlight window – I posted it on Product Hunt and went offline. When I came back online, it'd received hundreds of upvotes, writeups in The Next Web and MacStories – and all of a sudden, I was the sole developer and designer of a utility with thousands of users. This is a little overview of how I iterated on Flashlight's design and marketing as the project grew.
The problem: speeding up simple tasks using natural language
I built Flashlight because I saw the potential of natural-language widgets to perform simple tasks incredibly quickly – tasks like creating calendar events, setting reminders, placing phone calls or generating lorem-ipsum text. I chose to integrate these into Spotlight, OS X's native search feature, because it's easy to access, and is already used by millions of people:

Learning and differentiating from competitors
As I began spending more time on Flashlight, I asked myself – why should Flashlight even exist? Similar products exists – I looked at a number of competitors and asked what I could learn from them and how I could differentiate Flashlight from them:

Alfred is a standalone shortcut utility and application launcher that focuses on end-user customizability. I saw Flashlight as a more mass-market alternative to Alfred – it'd integrate more seamlessly into the system, and would focus more on out-of-the-box functionality, rather than customization.

I actually saw Flashlight as a competitor to Google Search – Google understands many of the same natural-language queries as Flashlight in areas like weather and reminders, but Flashlight, as a native app installed on a Mac, had a potential to offer much better integration with users' digital lives.

Natural language vs. syntactic shortcuts
I'd built an API that made it fairly easy to define different phrases that would trigger plugins. Early iterations of Flashlight forcused on verbose, Siri-like commands:
what's the weather in new york
google images of rubber ducks
send an text to chen: what's up?
Very quickly, I learned that users didn't actually like these verbose commands. People asked for shorter, more concise commands that relied on an implied syntax:
weather new york
gi rubber ducks
sms chen: what's up?
Users' feedback about preferring concise shortcuts to more natural language strongly influenced the design of Flashlight in the future. Since less-natural commands are less discoverable, I redesigned the plugin catalog to emphasize example command usage:

Getting feedback and data
Initially, Flashlight product development was driven by two things: my own personal desires, and people who asked me for new features on Twitter. As Flashlight grew, I built out more ways to learn about users' needs and desires for the product:

Ideaboard – a page for users to propose and upvote new functionality with as little effort as possible.

Feedback page – linked from the About box, collecting comments from any user.

Download count tracking helped me learn which plugins were most attractive to users, and deserved the most attention.

GitHub issues – collecting more technical feedback from more technical and involved users.
Each of these sources proved useful in different ways – together, they really helped me prioritize new functionality to develop, and existing functionality to work on.
Brand and Marketing: Explaining Flashlight
Flashlight's initial user base was, naturally, very tech-savvy and developer-skewed – the type of people who read "Spotlight Plugin System" and know what that means. As I developed Flashlight further, I tried to develop the website and brand to appeal to "ordinary users" – and this meant actively showing them what Flashlight let them do. This is apparent in the development of the website:




Outcome
Flashlight was an incredible learning experience – it got hundreds of thousands of downloads, and I heard from hundreds of users whose lives were made more productive by Flashlight. It got press accolades, and even got noticed by Apple. I started as an intern on the Spotlight team in May 2015 – the same day an OS X update inadvertently made Flashlight stop working. Today, Spotlight can actually do a lot of what Flashlight could (though I didn't work on these features directly – they certainly aren't "copied from Flashlight" as some people assume).
