YC Prototypes #2: Building Magic in 2.5 hours | Anvil
Day 2: Let’s make Magic (YC W15)
It’s Y Combinator’s week of Demo Days, and we’re prototyping one YC startup each day. (If you missed it, check out the first in this series, where we prototyped an e-parking service in an hour and a half.)
Magic (YC W15) is an SMS concierge that can do anything. Text them a request, however outlandish, and they will make it happen. Let’s put ourselves into the founders’ shoes, when they were just starting out. We don’t know if anyone wants this service, so we need a working product they can use. What do we need to build?
-
We need to see and respond to texts from our customers.
-
We need to charge customers for the things we provide (with a commission, of course). They shouldn’t need to enter their credit card every time.
-
We need to share this work between several people.
With Anvil, it turns out we can build this all in a couple of hours. Watch me build a fully working product in this time-lapse video, then scroll down for the play-by-play:
1. Two-way Conversation (45 mins)
We use Anvil’s built-in data tables to store customers and events (messages, notes, etc), and build pages to display them. We use the Users service to authenticate operators (ie us).
Within half an hour, we’ve got the basics: We can receive SMS using an HTTP endpoint
2. Take Payment (45 mins)
Now a customer can ask for something, we need them to pay for it! To make purchases truly frictionless, we’ll take their credit card once, then keep it on file for anything they need in the future.
Anvil’s Stripe support makes this simple. We make an app to collect the customer’s card details, and then we send them a link to open that app on their phone:
After that, the card is on file, and we can charge them at the click of a button. (We also note our profit margin for future reference.)
3. Coordinate many operators (50 mins)
If this app takes off, we’ll need help. We don’t want any messages to fall through the cracks, so we text all our operators when a new customer arrives. But we don’t want to notify every operator about every message – they’ll get drowned!
Instead, let’s track which customers need attention, and let operators “claim” customers. (We make sure two operators can’t claim the same customer by accident.)
The operator can mark a customer as Done (request resolved, no longer needs attention), or Can’t handle (still needs attention – “un-claim” the customer and text other operators for help).
If we need more information from the customer, the operator can select “Tell me when they reply”. The operator can go do something else: when the customer replies, we send an SMS to this operator only.
Prototype Complete (2 hours 20 minutes)
We’ve built the infrastructure for an SMS concierge in just a couple of hours. We can help people by text, take payment, and even coordinate a large team of operators if it suddenly gets popular. It’s a fully-working product that can take revenue right away, and scale as we grow.
Here’s how our final app works:
You can grab the source code yourself – click below to open the apps in the Anvil editor:
Want to dig into how these apps work? Our tutorials show you all the pieces these apps are made from, and more.