We have a small notebook on our coffee table that we use to write notes to each other. The notes never contain mission critical information, like "don't forget to turn the oven off"; instead they tend to short and thoughtful, and it's a fun tradition. We thought this would translate well to a voice experience, because we'd be able to leave notes to each other hands-free, as we're heading out of the house for work, for example. There is also a certain novelty in hearing Alexa read back custom text you've dictated, and we thought this would play into the "fun" aspect of the user experiences we envision.

What it does

The simplest use case is leaving a note. A user might say, "Alexa, open Scratchpad and leave a note for Katie." The user will be prompted to dictate their note and confirm that Alexa heard it correctly. Katie can then say "Alexa, open Scratchpad" and she will be notified she has a new note. Once a user listens to a note, it is erased, unless the user saves it. Saved notes are kept in a separate place, and can be accessed by saying "Alexa, open Scratchpad and listen to saved notes."

How we built it

Once we developed the initial idea, we did some experimentation with capturing literal text. After we were sure this was viable, we focussed our attention on the user experience, and used mockup tools to prototype the dialog flows we envisioned. After iterating extensively, we settled on what we thought the best experience would be, and then built the software to support it. It's a fairly typical Alexa skill tech stack: Node.js on AWS Lambda, using DynamoDB for storage.

Challenges we ran into

The biggest challenge we faced was designing the user interface. The notion of an "inbox" containing recipients, timestamps, message content, etc. is challenging to pull off with voice, because it forces the user to remember lists of items in their head. We decided the best way to approach this challenge was to make the interface as simple as possible. Upon listening to a note, there are only three options:

1) Replay

2) Save

3) Delete

Other pieces of traditional "inbox" functionality (mark as unread, snooze notification, reply, etc.) would be cumbersome to navigate via voice, and our hope is that omitting them actually plays into the fun, special experience of receiving a quick note that disappears once it's been heard (unless you explicitly save it).

Accomplishments that we're proud of

We're proud of the various small features we built to polish the experience. An example is a module that transforms punctuation symbol names to their actual symbols, so a user can leave a note like "hello comma world", and Alexa will interpret it as "hello, world", meaning it will be read back more naturally.

What we learned

This skill needs to capture the literal text a user speaks, and we experimented with a lot of different ways to do this. In the end, we found that the new AMAZON.SearchQuery phrase slots worked quite nicely, but along the way we played around with various NLP training datasets and programmatically built custom slot types. It was a lot of fun and it was interesting to learn about the various datasets that are publicly available.

What's next for Scratchpad

We're extremely interested in the upcoming Alexa Notifications capability, and think that it would take this skill to a new level. Currently, the easiest way to check if someone has left a note for you is to invoke the skill ("Alexa, open Scratchpad"). Having the notification indicator on your Alexa device would vastly improve the experience, so we want to add it as soon as it is available.

Built With

Share this project: