Background
Hello everyone, my name is Tyler van der Hoeven.
I’m the frontend developer at Baremetrics and the maker of several successful side projects. Tiny Bank, Tiny Stats and Yak Farm to name the main ones. I also run a small creative solutions studio, Tiny Anvil, building web and mobile apps.
Working closely with Stripe within Baremetrics and utilizing their billing service within my various side projects is what first brought me into contact with the Stellar program. I’ve been an interested sideline member since they first launched and I’ve been actively involved in the cryptocurrency industry for about four years. Recently however, along with many many other developers, my interest has grown into action. I’ve been working on an algorithmic trading bot utilizing the Coinbase GDAX API and most recently on an idea to submit into Stellar’s build challenge. After a few months tossing ideas around and a few false starts I think I’ve finally got something I’m ready to more fully flesh out.
Setting the Stage
The idea is very simple, and aimed primarily as a strong proof of concept rather than a profitable business model or startup proposal. Again coming from Baremetrics where we are a subscription service ourselves and serve other subscription businesses the idea of getting paid for your service on a recurring basis is something very near and dear to my daily life. Within the subscription model you’ve got two basic structures. A traditional “subscription” wherein you sign up for a plan and pay that at simple set intervals ($35 every month, year, 12 weeks, etc.) and a usage based subscription wherein you pay for units as it were of usage. These can be time, like phone minutes, tokens, or really any arbitrary unit that you purchase and then use or burn up.
Currently the former is much more popular within the tech and web industry. You pay a fixed fee per time interval and then use the service as much or as little as you like within that time. Now whether you’re aware or admit it or not both of these models are technically exactly the same. The only difference is the emphasis on either the unit or the time. In the first you're very often limited by a plan scope. Up to 100 users per month, up to 10 GB of data per hour, up to 10,000 emails sent per year. The only difference between this and charging per unit rather than per time interval is just that. The limits remain it’s just the granularity of freedom within those units or time. So for example a user on a 10 GB of data plan may only use 1 GB while another user may use all 10. Both will be charged equally. Now this in my opinion is bad for both parties. Both the service provider and the service user. It’s unfair for the provider in that what's costing them isn’t being paid for equally by actual usage and it’s unfair for the user in that they may be being billed for far more then they are actually using. Now this may eventually, in the grand scheme of things balance out but day by day and especially in the early days of a startup’s lifecycle this can be devastating to not be getting paid at a very granular level for the service you are actually providing.
The reason usage based billing isn’t more popular is due to many and various factors. Far too many for me to get into now. A primary few though are:
- How to accurately calculate and generate usage costs.
- How so summarize usage costs into larger/estimable periodic bills.
- Calculating usage values off variable currencies.
- Creating and managing the backend systems to generate, send and resolve variable invoices.
There are many other reasons but these are definitely a few of the key ones. All of which, as I’m sure you’re guessing by now, are solved or greatly lightened, by utilizing the Stellar network.
Solving the Problem
So what’s the big idea? Well the idea as I’ve said is quite simple, and there really aren’t too many moving parts. You’ve got Stellar providing a standardized token system which provides the financial platform to move the “units”, whatever those wind up being, around. My application will actually generate our own “currency” (Popcoins) as the “gas” that will move around the service as units are used in the various services that implement this service. XLMs will serve as the engine of access to the Stellar network, Popcoins will serve as the universal unit of measurement across all implemented services and the new *Stripe Connect will serve as the invoicing system to create, bill and resolve invoices.
*At least for now, eventually once more popular banks federate into the system and standard currencies can be exchanged this requirement will also be filled by Stellar. That will be the day services like this one will become huge and really take off.
Popcoin will be an API service that developers install into their own systems to generate variable usage costs at as micro or macro a level as they desire. For example an API developer could place calls into their system that slowly burn a users “gas” as they make calls. Some more expensive calls could cost 10 units while others could cost 1 or even fractions of units. Once a users units are all used up they receive an invoice from Popcoin requesting a refill which upon completing they may resume using the service. This could, and would actually, be a preemptive alert users receive before their units are dry, much like a car warns you when your tank is getting low, not after all the gas is already gone.
The beauty of the service and the fact that both subscription models are essentially the same is you could also set your unit of burn to be time rather then direct usage. So every month burn 100 units and trigger the next invoice. You could also very easily set up automatic payments that just auto bill much like you probably do for your house rent, car lease or credit card. Variable costs at set intervals. Beautiful, and the same system.
Next Steps
While the idea is simple there will be quite a lot of code and design work to do. I've got people in place, it's just a matter of finding the time. I’m also curious if anyone has any great ideas or improvements or suggestions. I’m hoping to have a version ready by the July 15th deadline but if not I’ll definitely be looping back in for the October competition.
So what do you guys think? Great idea or am I crazy and destined for failure?
Milanote mind map of the idea
Trello board of current tasks
IA document
API docs
FAQs doc
Updates
- [2017-06-30] Basic backend infrastructure is complete
- [2017-07-04] Test app is online 🍿?.ws
- [2017-07-06] Basic frontend design is in place
- [2017-07-08] Integrated backend logging, security checks and synchronization services
- [2017-07-11] Finished, built out and shipped the final designs
- [2017-07-12] Finished documentation. It's go time!
- [2017-07-13] Toggled to production. Officially beta ready