The Startup Story – From an Idea to Our First Customer in 7 Days

February 2nd, 2010 Martin Adamek 8 comments

I am a programmer, and while thinking about ideas for a possible startup I always focused on the technical side, thinking it was the only important aspect of it.  A good idea plus good implementation equal success, or maybe not? Seven days after we brought Korekt.me to life changed the way I see it now. I’ll try to sum up the different aspects of a web startup as I saw it. Please keep in mind that this is not a definitive guide, just a diary.

The Idea and The Co-Founder

Korekt.me is an online English proofreading service, and is a service I realized I needed myself to enhance my blog. I thought it would be a good idea to solve my own problem, and would be something that would help me stay focused on customers needs. The money behind the idea was clear, i.e. serve the customer, collect the money, be happy. No advertising or any other uncertain sources of income involved. Also, I felt the competition wasn’t getting it right. I wanted interactivity, shorter turnaround times, low prices. The deciding point was that I had a chance to team up with a great editor, Mira. I considered this to be a serious competitive advantage from day one because we wouldn’t have to fully depend on external editors. The setup seemed ideal – me as the prototype customer, Mira as the prototype editor.

Competition and Decision

A few days after Mira arrived in Prague from the USA and we had planned to meet and talk about the idea, the list of LeWeb’09 Startup Competition attendees was published. What do you think I found? A startup called Wordy.com doing exactly what we were about to do. I can tell you that it was quite a disappointment, but then I realized that without competition no new ideas can be born, and that there were many companies offering proofreading on the market anyway. The problem with proofreading companies already on the market is that none of them operate or provide exactly the services we like (Wordy being the exception). We took this as a challenge to launch before LeWeb, and decided to make it in seven days so as to have a few days for testing. I know, I know… :-)

Name and Domain

Picking the name was surprisingly easy for us. It is a very subjective thing, but I am quite happy with what we have. The more problematic part was making sure the domain related things correctly. Dealing with DNS changes under time pressure is especially painful. Every change took several hours, things were cached here and there, and I ran into problems with Google AppEngine not supporting naked domains. My DNS hosting didn’t support forwarding from the naked domain to www, so we had to make the switch to a different DNS server. I really hate messing with these DNS things.

Design and Implementation

In parallel with all the discussions and DNS setups, I spent a few evenings doing mockups in Balsamiq. What a great tool that is! It is not just about placing a button up or down, the most important role it plays is it helps you understand user interaction and the way your application is going to work. With this in mind, I removed every single feature that was not essential for the user to finish their order, and ended up with just three user screens, passing this over to Martin Cohen, the designer. We then iterated over different versions he published online for me, and step by step managed to get the final design. I asked my friends at Inmite to work on the implementation aspect, and I think they spent a total of 24 working hours on it. We decided for AppEngine Java runtime because their free limits are very nice, we’ve had a good experience with Java in the past, and things should scale, right? :-) Of course, I also had my day job, so I was spending all my evenings and late-nights with all of these other tasks. We also performed intensive testing on random blogs of my friends (I think I should send those fixed versions to them) to measure the average time needed for editing, and to define a fair price based on the outcome.

Infrastructure

Here is the list of things I had to setup, register, link, etc.

  • Domain registration – We use libyanspider.com for the .me domain
  • Version control system – We use Subversion hosted by our friends
  • Google Apps – We use it for email, docs, and AppEngine hosting
  • GetSatisfaction – It’s our customer service of choice
  • AppEngine – We use the Java version
  • PayPal account – They have a nice sandbox, but sometimes it is awfully slow
  • AdWords account – Very good for finding keywords in your industry
  • Google Analytics – You want to be able to see the hockey stick, don’t you?
  • Blog – We run our blog, http://blog.korekt.me on Tumblr
  • Twitter account and Facebook page
  • SMS notifications for new order – We use email forwarding to mobile operator service
  • Freelance license – For now, it saves costs
  • Bank account – Using mBank.cz

The Launch and The Future

Yes, we made it on time, in seven days. Then I asked myself, “Why on earth should anybody go to our page and use our service? And how will they even know we exist?” We started with AdWords and after the first day, a few hours after the deployment of the live version – bang! Our first order arrived. Eight pages of poetry (not exactly the easiest kind of proofreading), our first income! We were quite shocked by how fast it came.

I have to say however, that the coming days have not been as lucky. Once we ran out of credit on AdWords (it eats up money so fast!), visits to our site dropped to a few double digit unique visits per day. We took a sort of break during the Christmas and New Year holiday, and started back up again in January. Our main goal now is to think about marketing, the possible ways we can convince visitors to our site to use our service, the conversion rate, and what things need improvement. We added discount codes, started a blog, and have become active on Twitter and Facebook. The technical things seem to me to be less important. The thing I cared so much about – the implementation – is done, but we will hardly find any bugs if there won’t be anyone to try our service out. One thing didn’t change at all – the importance of UX design. I really hope we are doing well in that category. We are also talking to several smart guys that could help with the service growth, and I hope to eventually learn a lot more in this field.

I am happy about the feedback we are getting from all sides. What is absolutely incredible is the interest from prospective editors. We receive a new CV almost every day from English native speakers with great experience, relevant degrees and certificates, and we haven’t even tried to advertise for the position! What is also very interesting is that when I talk to people about the potential of the service, each of them tells me that we should focus on their particular profession because there is a big need for this kind of service. Well, we sure hope so!

This post was verified by Korekt.me

Categories: Uncategorized Tags:

Twitter OAuth on Java AppEngine

January 28th, 2010 Martin Adamek 3 comments

After a few struggles I finally managed to authenticate to Twitter using OAuth on AppEngine with Java. After trying out a few other options, I used oauth-signpost – a simple Java OAuth API. Although their desktop application sample worked with no surprises, once I tried the web application, I ran into 401s. The obvious problem was on my Twitter application settings page, I had forgotten to set my application type to ‘Browser’. Also, callback URL is required, so I had to use the right APP_ID and CALLBACK.

Twitter App Settings

Then I ran into another problem. In the desktop example, there is one instance of OAuthConsumer, and one instance of OAuthProvider, and they live happily within the main method block. But in the web app, the entire action is split into two parts. First, you have to retrieve a request token and redirect the user to the Twitter OAuth page:

There are two attributes stored in a session, so don’t forget to enable sessions in your appengine-web.xml (note that sessions are persisted in datastore):

Second, you need to retrieve the access token with a new request, processing the callback after successful Twitter authentication. But at this stage, if you don’t have that earlier created consumer and provider, you need to create them again. But not just create, you need to initialize them to the state they are after retrieving a request token. Simply said, you need to do this:

That’s it. Now, you can run your Twitter API queries and hopefully also enjoy announced and increased API rate limits for OAuth in the very near future.

This blog post was verified by korekt.me

Categories: AppEngine, Twitter Tags:

A New Adventure

December 11th, 2009 Martin Adamek 6 comments

Two weeks ago I launched my first startup. It is a big moment for me because ever since I left Sun a year ago I have wanted to do so, even though I didn’t have a concrete idea. I mean, I had a few, but none of them seemed to be the right one.

While writing a blog post a few months ago, I realized how bad my English really is. It’s not disastrous, but far away from being a pleasing experience for any native speaker. I wished then that there was a service where I could upload my draft and it would be proofread and edited by a skilled editor in a reasonable time, for a reasonable cost. If I am putting such an effort into writing and publishing content, I should also care about how it is presented.

After some time Mira, a cousin of my wife, returned back to Prague from the US and decided to stay here permanently. I knew she was always crazy about spotting English mistakes in restaurants and everywhere else, had the proper certificates and was going to have a period of free time while looking for a new job. It seemed like a good opportunity, so we’ve put our heads together and decided to try it – to build an online English proofreading service.

Korekt.me

Our goal is to build a simple yet useful service that will help bloggers, website makers, students, you name it, to polish their content. To make them feel better and more confident about how they represent themselves to the outside.

We are not raising any capital for this. No angels, no investors, just pure bootstrapping. And because I am too busy at my daily job, I decided to get it done by somebody else. Sounds crazy I know, I should do it all myself for free in the evenings. But because when I want anything I want it RIGHT NOW, I decided to outsource it. What a good idea that was! Implementation was done by a Prague startup called Inmite and the design by Martin Cohen, and both Michal from Inmite and Martin did a really good job. Of course there was so much additional work around it that I spent long nights doing analysis, wireframes, discussions, setups, fixes, etc., sleeping just few hours a day. But, after all, the advice from experienced entrepreneurs to release early and often seems to make sense.

Now we are out of private beta and available to everybody. We are not done yet, many things will come, many things will change, but we are out and we are serving our customers. We want to hear what’s bad, what should be different, and we will listen. We promised to ourselves to take personal care of everything, and to make your writing as good as if it was our own.

And yes, I am eating my own dog food and this blog post has been checked by Korekt.me.

Categories: Startups Tags:

APNdroid 2.0 coming

October 3rd, 2009 Martin Adamek 28 comments

I am happy to announce first development builds of APNdroid 2.0. Thanks to Dmitry Pavlov (widget, russian translation, code improvements), Julien Muniak (Locale plugin), ‘juraad’ (Czech translation) you can download fresh test build of what’s going to be APNdroid 2.0.

So what’s new?

  • We have a home screen widget! I can’t count how many people requested this.
    widget-on widget-off
  • We have Locale plugin. Requested again and again and again…
    locale-plugins locale-settings locale-situation
  • We would like to add support for MMS exclusion (that means new settings)
  • Switching data on/off should be much faster, once we will verify one optimization

Overall, I am really happy that these guys jumped in. I had really a problem to find some time to work on APNdroid, but new commiters are just awsome. Also, application just passed 50.000 downloads and is getting more and more downloads per day. Increase of downloads is accelerated by articles on AndroidGuys and Lifehacker!

So if you are brave enough, go to the apndroid.googlecode.com and grab the .apk file from Downloads section and file any bugs or enhancements. Don’t forget to enable installation from unknown sources in phone settings.

Categories: Android Tags:

Android Market Statistics

August 5th, 2009 Martin Adamek No comments

Now, that I have found few minutes to have a look at APNdroid and released its source code, I will post also some interesting numbers. If you have a look at AndroidStats you can see that APNdroid rank in Market was falling constantly for some time.

apndroid-rank-20090804

I thought it was obvious, as new apps were coming in every day. Interesting thing is that once number of daily downloads of APNdroid touched the values somwhere above 200, situation has changes. Rank is getting higher now. This is APNdroid rank in Market overall:

apndroid-ranknos-20090804

This is visualization of daily downloads:

apndroid-dloads-20090804

And this is nice view of total downloads/active installs/comments grow since I started to track it back in February. If you are interested in which tracking tool I am using – it is Google Docs SpreadSheet :-) And yes, there are already 30.000 downloads…

apndroid-stats-20090804

Categories: Android Tags: