Every time I visited Philz, I stood in line while enviously seeing people skipping the line and picking up their mobile orders directly from the counter. But the thought of downloading yet another app, signing up to yet another account, just so I can order coffee, have always reminded me why I preferred standing in line. Even visiting websites to order a drink feels like too much of a mental investment for average consumers. I thought to myself, what if I can just text my order?
As a product guy, I observe details, but always look at the macro-economic trends. Self-driving car is inevitable, so is digital payment (credit card is old-school!). On top of that, I believe the future of business communications is via chat/text. It's an evolution from websites to apps, and now moving to chat/text.
Then COVID hit, and I see small businesses struggling with the lack of in-person ordering. I want to help them. And this clearly would be the catalyst to bring an average brick & mortar shop to the digital age. This is also when I finally realize my idea and started building a solution for it.
What it does
Textbot works with any food & drinks (and perhaps other) services. Consumers don't need to download and app or sign up. They simply text "new order @bluecoffee" and can checkout directly from text message. They can also share an order via text with family & friends. When order is ready, we text the end users to pick up their orders.
For merchants, we integrate with Square to provide payment, orders, and customer management. We have our own "order management" UI that they can tap "fulfill", which texts the customer that their order is ready for pick up.
We have a single phone number - 215-8TEXTME - which end users can save and use to text their orders. Eventually, they use this same number to text to multiple businesses using @[handle], and we would have built a marketplace for food, drinks, and services.
Consumers: Try live demo: Text "new order @textbot" to 215-8TEXTME Merchants: Try our order management app: https://app.gettextbot.com/users/sign_up
How I built it
The entire app is built on Ruby on Rails with very minimal front-end (jQuery + bootstrap). Merchant uses our web app. The consumer UI is SMS, powered by Twilio. For payment processor, we use Square and Stripe, which Square being the preferred platform for smbs.
Challenges I ran into
I have experience integrating with Stripe before because of my SaaS business. Their documentation is rich, and they have a product called Connected Accounts that works perfectly with what we're trying to accomplish. However, we quickly discovered that most of our target customers are on Square, which actually fits even better before of the way Orders can be managed on POS.
Square documentation is good, however, wasn't enough to get us started. Office hour was helpful, because I didn't know there's already a RoR sample app that I can leverage. These examples help a great deal, and we're able to get rolling from there. Other challenges are relatively minor, including the best way to parse Square API response. Turns out it's a combination of objects and hash, which wasn't intuitive (and was basically trial & error). For example, getting customer_id requires this
sq_customer.data.customer[:id], instead of
Accomplishments that I'm proud of
Even though this is a hackathon, I'm coding as if I'm going to start a company around it. In fact, this was my second startup idea if I wasn't working on the first one. In addition, I went to farmers market and coffee shops to ask customers about how we can help, and received some invaluable feedback.
What I learned
- Technically: Everything about payments and its complexities. Also, I never thought rounding with floating point can be so sensitive in Ruby (1 cent off, Square rejects the payment)!
- Product/Market: Customers don't like to pay 30% to DoorDash or Grubhub, naturally.
- Alternative option is pay $100/month subscription for websites / apps to enable online order.
- Our business model differs. We started out charge 5% for each order (but no monthly / setup fee). However, that still doesn't make sense if we're helping SMBs. So now our new revenue model is charge 5% to customers who are ordering. Most people don't mind paying 15cents extra for a $3 coffee. If they do, they can always wait in line, pay, and wait for their order.
- Customers really detest setting up menus with all the services above. We intentionally keep our menu easy to setup.
What's next for Textbot
- Keep a simple menu means we can't have complex combinations / add-ons. A coffee can be L/S, Hot/Cold, 2%/Fat free/Soy, etc. etc. Therefore, we plan to have Textbot act like a cashier and ask follow-up questions about all the add-ons & customizations. This means we will integration with Items.
- Rewards program