Build your first ZMVP (Zapier Automated MVP)

Real life example of building one

Michael Oblak
Published in
8 min readMay 10, 2016

--

There are too many articles from tellers, not doers, about how to build an MVP. Let’s cut the shit out and do the real work. Focus on the product and validation. And let’s do it fast.

I’ll show you what to use to be quick as a fox and build the product in the end.

The real work starts from paragraph “Get your hands dirty”.

Test a new idea every month

Or even a week!

Starting a business is hard. That’s why not so many succeed.

But keep trying! The more you try — the more chance of succeeding, as you will learn during the process.

Having an idea, validating the idea, building the product, getting paid for what you build. It’s all extremely hard, but not impossible.

1 of 10 startups succeed

Well, just make ten cool things. Then probably 1 of them will be cool enough so people will pay you for it.

Check out this post of Pieter Levels. He wanted to create one product every month, to have 12 of them at the end. He didn’t achieve that, but that’s actually very good! He didn’t need to. Because during the process, he found the one that succeeded.

What I will build in this story

Freelance copywriters help on demand

I will build a place, where people who need a help with their copywriting can pay for it and get it.

In the rest of this story, I’ll show you how I build it. And all that just to show you that’s it’s possible to do it in a weekend.

It’s called copyfixes.com.

Here’s the story behind it:

I’m a dev, so not a wizard of the word. I want to create my content much faster and I need more of it. I need a Jarvis to help me write my stuff. I want somebody to make beautiful content from my draft, on demand.

It’s only partially true. In fact, I just needed some cool idea for this post, to show that building the Minimum version is not that hard.

copyfixes.com

But, the fact is, that I’m using a help from content crafters, who helps me polish my posts. So, yes, I am a user of CopyFixes.com. I pick an idea from Brian’s Scordato post, which appealed to me.

User flows

And sketches

Draw a user flow. Use your favourite tool to sketch the flow and how the users will interact with the system. I prefer to go with old school pen and paper or whiteboard because it’s the fastest way for me.

Draw what they see, what actions they can take. Draw interaction with your system.

Sometimes, I start with written stories in points. It’s just easier for me to begin this way. Then I change to the diagram flows.

Don’t think about the edge cases or validations of a data. We will take care of them later. For now just the success flow.

First draft of the user flow

Removing unnecessary

And more drawings

The above flow is complicated to build.

Exchange of messages between users. Processing payments.

We need to simplify it as much as possible. Let’s take a look at it one more time.

We can move exchange of messages between users outside the system. They know how to use emails, so they can do it by themselves.

We can do the same thing with payments. They know how to negotiate and pay/get paid.

We can remove the form. Andy can send an email to our prepared email address to get listed.

Right now we have only two pages

  1. Index with copy and instruction for Andy how to get listed (send email)
  2. Page with listing of all requests

Paying customer from day one

Additional step for folks who keep both feet on the ground

Did you implement the payments step?

Will it make your product simpler? Sometimes it does. We are building it to make money.

We don’t want to have any authorisation for our users. But we need to secure emails of all requesters.

The simplest step is to add small payment to see all requests.

Final draft of the user flow

Now, it’s time to design the product.

Get your hands dirty

Ok, here’s the best part. Time to get our hands dirty and build what we’ve planned on paper.

I create a rough draft of the HTML markup. Then, I add simple CSS.

I search for cool photos with CC license. Most of the time I’m using Unsplash, then adding quick modifications in Gimp.

At that point, I’m thinking about copywriting for the website, as well as CTAs. Probably, I’ll change those in the process couple of times.

The Engine

Now is the moment to think how to actually do the backend part.

Most of the tools you need are already here. We don’t need (nor want) to write everything from scratch.

I’ll use Zapier because of its awesomeness and how simple it is.

I’ll use Google Spreadsheets as a way to store data.

For spreadsheets, I’ll use Sheetsu, which is very easy to setup, which I’m proud founder.

Set up Zapier

GMail to Google Spreadsheet.

I want to save every email I get to ineed@copyfixes.com to the Google Spreadsheet. To make it possible, I’m creating a Zap between GMail and Google Spreadsheet.

Creating the first spreadsheet to handle all ‘requests for copywriting help’

I’m creating the first zap. For every new email, I receive to the ineed@copyfixes.com it creates a new row in the spreadsheet.

I remove the form for submitting the requests and go with an email. I think it’s much easier for me to build. I don’t need to write any code, just a Zap.

The spreadsheet is used here as a database. It handles all the requests.

At some point, it will be nice to remove completed requests, sort them somehow, etc. But for now, we are going with the minimal version.

Spreadsheet as a Database

Quickest database setup

I need to show all the requests from a spreadsheet on the website. To achieve that I’m using Sheetsu.com. I’m creating an API endpoint, which I’ll use to GET all the requests.

The cool part is that we don’t need to change anything with our spreadsheet. Just grab the link, paste it and that’s it — you get an API endpoint.

Creating easy to use API endpoint from Google Spreadsheet

I’m allowing only reading from that spreadsheet, using the API, so, nobody will modify it.

Changing API permissions

Authorization

The payment flow:

  1. Get and process payment
  2. If payment is ok, add cookie with user email and user email to the spreadsheet

The authorization flow:

  1. Check if user has cookie
  2. Check if there’s value of that cookie in the spreadsheet
  3. If yes, show all requests

I’m creating a second spreadsheet and API endpoint in Sheetsu.

Creating Google Spreadsheet to handle users who have paid
Creating API endpoint to communicate with ‘paid’ spreadsheet

After successful payment, I’m adding email to the spreadsheet. Again, I’m using Sheetsu, but this time on the server side to achieve that.

I’m adding a cookie for users who have paid. That’s how the website will know who has paid and if I should get all requests from Spreadsheet and show them to the copywriter or not.

Show data from spreadsheet on website

I need to get two things from Google Spreadsheets

  1. All emails (requests) I receive to ineed@copyfixes.com to show them on a website, for those who paid.
  2. Check if a user has paid. In fact it’s checking if the value in cookie is present in the Spreadsheet.

For both of them, I’m using simple JavaScript code pulling data from a spreadsheet with Sheetsu.com.

Getting data from Google Spreadsheets using sheetsu.com

Payments

I’m using Stripe for this. Creating Stripe account and implementing it is very simple. With their custom library, you’ve got beautiful flow and UI.

I’ve already code for simple server processing payments. Below you can see the whole Ruby script which is responsible for charging the customer and saving his email to Google Spreadsheet.

For client side payments I’m using checkout.js script from Stripe documentation.

There’s saying:

If you are not ashamed of your product, you are releasing it too late.

It’s much more important to deliver and test than to be perfect. You will not get +100k users from day one. You will have a lot of time for improving.

This doesn’t mean you are creating a piece of crap. But don’t over design and don’t add features.

In my case, I just save user who has paid in spreadsheet and cookies. That’s how I’ll know if I should show all the requests or not.

If writers will have any problem with that (running in incognito or paid on mobile, want to use on desktop at home) — I’ll probably get some emails. After getting a couple of them, I’ll change that.

Picking the price

How much should I charge?

Seriously, I’ve no idea with this product. This is how I picked the price for the copyfixes.com.

Picking the price

To get a better insight about that, ask Patrick from PriceIntelligently. He knows how to do it correctly.

Done!

And it’s done! I created a simple server, with preconfigured Nginx, add SSL (because of Stripe), get the code and run it on the server.

To be honest, I need to tell you that writing this story took me more time than the actual building.

Damn, I really need help with those copy stuff.

Drop us an email at team@sheetsu.com. We are happy to talk with you.

--

--

Michael Oblak
Sheetsu

CTO @ SmartLunch. One man coding army. Adrenaline addicted.