Inspiration
I wanted to create a social network for voice. Something that could be usable in lots of ways, and for many purposes. Keeping up with friends/family/private groups for work, and listening to public posts like you would in Twitter or Instagram.
In the professional world, we use Slack a lot. The public engages in asynchronous, time-lapsed conversations on Facebook. I want to bring the presence of Slack and combine it with the passion and power of voice.
I drive a lot, so I see so many people using their phones while they drive. I imagine there is a lot of social media access going on! The need for people to stay in the loop is huge.
So.. I made SayStream. You can join channels, listen to/react to/respond to posts, follow users, and of course, create your own posts which everyone will hear!
You can also report posts which contain spam, offensive content, profanity, or are of bad sound quality. The next time a user would hear a reported post, they'll be alerted that the post has been reported, and have the option to skip the post. If a post gets a minimum number of reports in any one category, it will be disabled. In this way, we can protect the users and let people moderate the community.
If you're listening to a post and it contains a link, you can say "Get the link" and you will receive an SMS with the link in it. This is an awesome feature which will let people talk about their own projects and have a handy way to send people to their content!
Ways You Can Post to SayStream
You can post to SayStream in the following ways:
- You can 'make a post' from the Alexa skill. It will capture what you said and try hard to turn it into a post.
- You can do a 'quick update' from the Alexa skill. This will ask you a couple questions, and create a piece of content with your responses.
- You can use the companion SayStream app to record an audio post. It gets sent to SayStream and is immediately ready in the Alexa skill.
- You can send an SMS text message to the SayStream #. We use a lot of SMS/Phone functionality!
- You can call the SayStream phone # and record a post. It will get posted immediately to the Main Stream.
You can also attach a link to any post, which will let users who hear your post have the ability to 'Get the Link'. Very handy for promoting your projects, or driving users to your cool outside website.
The Use Cases
Imagine rolling out of bed at 9AM and saying "uuugh, what a crazy dream! I dreamed I entered a DevPost contest and built something incredible that improved the daily lives of many many people".
Your hair was messy, you didn't craft your text, no selfie was forthcoming. Just a pure honest thought, captured in voice.
Now... imagine your voice converted to 1s and 0s and traveling up on to the cloud, out into the smart speakers in the cars of 140 Million people driving to work. It pops into the stream they're listening to, and they hear it. Some smile, some roll their eyes.
They heard it because they're following you on SayStream, or because your post was one that made it into the Main Stream, a public stream where anyone's posts live, for a brief time. Some of them react and your post receives thousands of Thumbs Up style reactions. Some of them say "Get the link", to later on check out the awesome life-changing project you're working on. Phones across the country ding as an SMS link is sent out to the curious. They'll check it out when they're not driving!
One user in particular has their interest piqued, and says "Contact the author", and a personal connection is made to you on the spot. She's been looking for a moonshot project to invest in, and she has a hunch this is it. Something about your voice has her attention. She receives your number and calls you, because you allowed the connection to take place. She's still driving, you're still undressed, but now you're saying hello on the phone and scheduling a chat for later. Real people doing real stuff.
Now imagine your grandmother is at home, retired, hoping today is the day one of her kids or grandkids calls her or stops by for a visit. You're not sure if she's going to be resting or not, so you don't call or text. Instead, you compose a message for her and send it as a private message. In the post, you sing her a sweet little song, and she smiles when she gets it. Then she creates her own post, and answers some basic but important questions like "How are you feeling?". She feels a little less lonely, and gets to listen in on the thoughts of many many other people, which feels a little like eavesdropping, but in such a satisfying way.
Imagine you're working on a project with a few other people. You all work from home, and are in a kind of prolonged brain storming session. You each take turns dropping little posts into a private channel only you 3 have access to, crafting the beginnings of something wonderful. At the end of the day, one of you says "Send this conversation to me", and a transcription of the day's entire conversation is emailed to him.
Now.. imagine you're desperate for help. You've had one doozy of a week and just need some encouragement. You make a post to SayStream. A few seconds later, a response to your post comes into your stream and you hear it read out loud.
_ "You're not alone, tomorrow is another day." _
You didn't know them, they didn't know you. But they felt compelled to help, and you needed it. You take a breath and move forward.
I also listen to a ton of podcasts. The Pitch, Voice Entrepreneur, GaryVee Experience, The Adventure Zone.. I want to be able to have conversations with other people who love these things too, in a highly connected, interactive way. Using my voice!
This is SayStream.
Where did the inspiration come from? I was working on a companion app for some skills I was making, that would allow you to record your voice and have it show up in an Alexa skill. That in and of itself is extremely useful, but I quickly realized the tech had some other incredible uses.
- I work from home quite a lot, and drive quite a lot. I like to leave myself voice memos but then need to go transcribe them later.
- My mother loves her Alexa, but she also loves to keep up on the news and what's going on with family.
- People love to communicate, but texting or calling can be unintentionally intrusive.
- People love to keep in touch with others on social media, but that medium also contains a lack of personality when everyone 'hides behind a keyboard'. We can't hear the emotion or inflection in something that is typed and read.
I realized there were some tremendous implications if I could combine the technologies effectively, and create an audio medium where we could collaborate, connect, work more effectively, and have our needs met as a society. The ultimate life hack.
What it does
You make a post.. and other people hear it in the Alexa skill!
You can post in 3 different ways. You can use an SMS message to compose a post, you can use the companion mobile app to record an audio post in your own voice, or you can create a simple post using the Alexa skill itself.
If you demonstrate a need, or someone can help you out with something you post about, don't be surprised if they get in touch with you. You control the level of interaction you desire, and the privacy levels of your posts.
With the Alexa skill, you can make a post, interact with others' posts, check out the overall pulse/mood of the nation, be interviewed, and otherwise build your profile. You can look up others, and jump into a stream of others thoughts, organized into separate streams (channels). You can also create your own channels and have them be public or private (invitation only)
While using the Alexa skill, simple posts can be made and are driven by basic form input, but result in personalized content that is attached to your stream (and profile). As you build out your user profile by answering questions over time, you'll gain access to streams and other content that you would enjoy more.
There is also a mobile app which can be used to create content to be used inside the Alexa skill. Every audio post is transcribed and checked for profanity before it goes into the main public stream or a sub stream.
A post can also be used to gather information (a survey/questionnaire), be reported for inappropriate content, be responded or reacted to. It can contain a link which the user may ask for, so if you want to let other people know about an awesome project you're working on, or if you want to share a link to a news article, that's easy to do.
So much more is begging to be built, this is truly only the beginning.
Other notes: The mobile app can also be used to create content for other Alexa skills as well. Super easy way to do a quick podcast or flash briefing content from your mobile phone.
Say Stream is being crafted as a piece in a much larger system to help solve the large problems of voice app discovery, monetization, and retention.
How I built it
The mobile app is being built with Unity, in C# The backend is being run on a cloud server, in node.js The Alexa skill is written in node.js, hosted in Lambda All told, there are a little over 18k lines of code in the project so far Using lots of Twilio services for SMS 2-way, voice call and transcription, audio posts from phone Using many different AWS services, transcribe, rekognize, S3, Lambda, API gateway The backend runs behind a load balancer and is ready for scale!
Challenges I ran into
I needed to work out a good registration flow that would work no matter which point a user started from (app, or Alexa skill), and keep things to a minimum due to the very short timeframe I had to create this project Time is the ultimate challenge. I got a late start on this project, though it's been on my list for a long time. Trimming things down to a minimal functional project is quite a challenge.
It was also quite difficult to come up with a good navigation system for going through posts and responses. I still feel like the prompts are too long/wordy and I'll be adding in an accelerated prompt system when users have hit a certain threshold of usage
Accomplishments that I'm proud of
- Using SMS to do some cool things like an alternative interface to compost posts, capture emails
- Creating an SMS image upload for profile pictures to be used on the Echo Show
- Using AWS Rekognize to check images for inappropriate content
- Filtering posts, names, and nick names for vulgarity
- Crowd sourcing interview questions (things the Alexa skill asks you to help build your profile)
What I learned
- Social networks are HARD
- Holy cow it's delightful to use Alexa in this way, to create and release into the world a small brief moment of my day, delivered in my own voice, and to hear other people living life. It's so much more passionate than text, and more authentic than video
- The word 'Speak' is a little authoritarian (according to my daughter), 'Say' is better
- I have a lot to learn
What's next for SayStream
Moderation Features I want to add some Samaritan moderation features. This is a system of post moderation where, if someone marks your post for being inappropriate, it won't be autoplayed/autoread. Instead, we can notify the person who is about to hear your post that it's been marked as potentially offensive, and not autoplay it. Give them the ability to play those things.
This may cut back on people disrupting other people with some nasty stuff that makes it around the rules of appropriation. Have to also consider free speech and let things live, but not if they are hate speech.
If you're a bad guy and enough people are reporting your posts, you may go into a 'jail' for a time, and not be able to post. Have to consider how to counteract trollers who abuse this moderation technique.
Geesh, A Lot is Coming! As I mentioned above, this is really only the beginning of a very large project of passion. It has lots of potential as both a social network for voice, and as a business. I want to expand the types of posts that can be originated within Alexa, and the multi-frame dialogs which capture a good user flow well are difficult to make, will be time consuming.
For this contest release I will need to limit some of the functionality that I've prototyped, and limit user-based costs associated with some features. Looking forward to 'taking the lid off'!
Built With
- amazon-web-services
- c#
- cloud
- jovo
- lambda
- node.js
- unity
Log in or sign up for Devpost to join the conversation.