
This is the first installment of a series geared towards walking you through the stages of transforming a cool business concept into an actual startup. If you're an idea person curious about the entrepreneurial process, this series is for you.
I'll draw from my experience as a self-starting, serial entrepreneur. I began my career at Microsoft launching new products from small teams: the first, an educational failure, Microsoft At Work Fax (seriously, watch the video), the second, the more successful MSNBC.com.
In 1999, I left Microsoft to start a digital gift certificate company, Giftspot, which was later acquired by GiftCertificates.com (reverse stock splits of 500:1 and 300:1 washed out any return). Beginning in 2008, I launched a Facebook application product with grants from the John S. and James L. Knight Foundation. Last year, I experimented with a place-based community startup, Geogram, and this year, with email filtering app Simplify Email and Twitter marketing app Birdhouse. I've learned from all of these efforts and will aim to put these lessons to work for you.
Earlier this year, I grew interested in simplifying the meeting scheduling process. In my view, the proprietary calendar systems such as Google Calendar, Apple Calendar and Microsoft Outlook have failed to make scheduling as easy as it could be. My big complaint is the number of back and forth emails typically required to schedule the average meeting. I had an idea for a planning application that would make the process much less annoying.
I love the creative process and I enjoy sharing my knowledge with others. I thought it would be valuable to set forth the internal process I use as I go through the process of formulating a new product idea, clarifying its business concept, and moving through the stages of implementation.
Following stories of the entrepreneurial path is always interesting, and there are a couple of recent entries that may complement this series.
This year, Stanford is open sourcing its How to Start a Startup class with many industry experts, such as Sam Altman, Paul Graham and Marc Andreesen. Also, Planet Money co-founder Alex Blumberg recently launched a podcast on his own foray into technology startups, which you can follow at HearStartup. He's a bit of a novice as an entrepreneur, but in part because of his access, the content is intriguing and entertaining and he's making amazing progress. I think he'd agree his wife is obviously the smarter one, and it's amusing to hear her laugh at him.
Have you ever tried to schedule a meeting with someone, but it evolved into replying to such a long thread of emails that you were annoyed with the person before you ever got together?
Planning meetings is still too hard. With all of the platforms, data and tools available to us, this process should be easier than it is. It should not require seven back and forth emails to schedule a meeting between two people, but if often does. I can make this easier.
What's my innovation? From a user experience standpoint, my intention is to create a single web page for each meeting that allows people to more easily interact with each other—to quickly schedule without the hassle of repetitive emails.
There are a number of data sources and technologies that can also help improve the experience: HTML5 geolocation, the Google Places API, calendar free/busy times and email APIs such as Mailgun.
For example, a service can quickly learn your favorite places for meetings and suggest places that are mutually convenient to both parties. It can automate reminder emails and provide links in these emails for common tasks, such as notifying someone you're running late, rescheduling, or canceling.
Furthermore, since we're creatures of habit, we can set up meeting templates which suggest common types of meetings, and frequently used days, times and places. Reusing these templates can make planning meetings faster and easier.
For the purposes of this series, and to learn as much as I can about the idea as quickly as possible, I'm going to focus on a smaller scope. I'm building a solution to help two people schedule a meeting. I'm excluding meetings with multiple people, parties, etc. In part, scheduling groups has been handled by other services.
The Tuts+ tutorial How to Create a Minimal Viable Product is a useful exploration of the pros and cons of limiting scope during the initial phase of a startup.
Should I build mobile first? Maybe. But I'm not focusing on building a mobile app in this series—at least not initially. There are a variety of reasons, but primarily, I don't have the resources to launch the service as a mobile app at this time.
I've named my product idea Meeting Planner.
There are some ideas for products that I build for myself and, ultimately, I'm not concerned if they are financially viable; Simplify Email was one such product. I was tired of struggling with unsubscribe forms, email filters and unsolicited email, so I built my own solution.
If you have an idea that intrigues you—whether or not it's supported by a business model—I encourage you to pursue it, and this tutorial series will likely be useful to you.
If you're looking to start a viable, sustainable business with your idea, one that can support you and your family, then it's essential you analyze the economic value of solving the problem you're aiming for. In other words, can you find a way that people will pay for the service you're providing?
For example, I'm a huge fan of Dropbox but I've never paid them anything. As an individual user, I'm not their target audience for revenue. But I've probably invited a lot of users who now pay them. I'm also a longtime Google Analytics user, and I've never paid anything for the service, but Google has found other ways to integrate the data I provide to deliver revenue, namely by providing a higher quality search engine.
Who is the target market for my concept? Anyone that plans one on one meetings, from businesspeople to anyone with friends.
I'll be the first to acknowledge that this particular idea might not be strong enough to run a sustainable business. However, I think the idea has potential, and it's very suitable for writing a series on entrepreneurialism and launching on PHP.
As an entrepreneur, it's important to have a clear plan for earning revenue. It's also ideal if you can integrate some version of this mechanism into the product early on, so that you can test your theory and give your users a taste of your plans for the actual product.
The primary revenue model for Meeting Planner is to sell local businesses the right to feature themselves as premium meeting places, e.g. Starbucks may want to appear on your meeting invitation to woo you away from those pesky independent coffeehouses. A restaurant could offer discounts to encourage you to have your lunch meeting with them.
If Meeting Planner becomes wildly successful, the company might be attractive to larger companies that wish to maintain influence over the growing audience of users, many likely business professionals. There are internet investment companies that might be interested, but it may even appeal to the calendaring bigwigs such as Google, which bought Doodle, the group meeting planner.
The competition for Meeting Planner is the status quo. Google Calendar, Apple Calendar, Microsoft Outlook, email, texting, the phone, and face to face interactions. While these services have improved a lot in recent years, the process of planning a meeting with someone outside of your own company can be quite time consuming and aggravating, and can involve way too many emails. None of these apps have focused on removing these pain points.

For example, I often run into this problem responding to Google Calendar events: it happens when someone sends the invite to a different email address than what I use for Google services:

Or worse, the primary navigation adds the meeting to my Google calendar, which I don't use.
For the most part, these apps do a poor job at leveraging my preferences to make the process smoother.
Services such as Doodle and Evite are more appropriate for scheduling group events. My MVP wil focus completely on improving the experience of planning one to one meetings.
When choosing a brand name for a small startup, I'm often looking for domain names that are available. It can be difficult to find available domains these days, but the growth of new extensions (gTLDs) has proven helpful. I often use Domainr to help me search. I'm also focused on available Twitter handles.
Geogram.com is the only domain I've purchased for my startup ideas; generally I try to make use of what's freely available.
MeetingPlanner.com was taken, but fortunately MeetingPlanner.io was available. Since @meetingplanner on Twitter was also taken, I chose @meetingio as my Twitter handle. Learn more about purchasing and registering domains here.
I no longer bother with Facebook pages, as the platform has eroded the free reach capability so much; it's really only useful as a vehicle for paid advertising.
I have a number of go-to tools that I use these days for my web development.
I use the Yii Framework for PHP (see also the newly released Yii2). Yii's made me incredibly fast and efficient at writing and reusing code—and getting to a minimum viable product. I also know that I can make Yii scale as needed.
Like most of you, I'm a Github user. We'll make the Meeting Planner code available to you on the Tuts+ Git repository open source with each tutorial.
This past year, I've switched from Amazon's AWS hosting services to Digital Ocean. My primary motivation for this was the increased speed of Digital Ocean's SSD drives and lower costs. Amazon can match Digital Ocean's speed, and has some nice sophisticated features, but is more expensive. Digital Ocean also received high customer marks on support and performance in WPShout's recent hosting review.
While I've not made any decisions yet, I like Tender and Lighthouse for customer support and issue tracking. But Zendesk offers less expensive entry-level options for support. I also like UserVoice for having customers suggest and rank feature requests.
If I need a company blog beyond these tutorials, I'll set up an instance of WordPress. There are some nice coming soon/landing pages at Envato's ThemeForest which you can also use to preview your upcoming site. However, for now, I'll just use Yii to maintain a "coming soon" home page.
My focus now is to build out a minimum viable product as quickly as I can. How fast can I learn the lessons Meeting Planner has in store? What will work and what won't? What's the idea's primary potential, and what are its weaknesses? What will the level of interest be among my target audience, and what feedback will they have for me? I hope you're intrigued by the series and eager to follow the development of Meeting Planner.
Please feel free to add your questions and comments below; entrepreneurs will likely have a lot of valuable ideas to add. I'm especially interested in alternate viewpoints and approaches. There's no right way to do this; in fact there are likely many right ways. There are also lots of pitfalls.
You can reach me on Twitter @reifman or email me directly. My instructor page will link to future articles in this series as soon as they appear.
The Best Small Business Web Designs by DesignRush
/
4Create Modern Vue Apps Using Create-Vue and Vite
/
8Pros and Cons of Using WordPress
/
-2How to Fix the “There Has Been a Critical Error in Your Website” Error in WordPress
How To Fix The “There Has Been A Critical Error in Your Website” Error in WordPress
How to Create a Privacy Policy Page in WordPress
/
7WordPress Website Maintenance Guide For Beginners
/
8How Long Does it Take to Learn JavaScript
/
1The Best Way to Deep Copy an Object in JavaScript
/
-3
3
-6Adding and Removing Elements From Arrays in JavaScript
/
-2Create a JavaScript AJAX Post Request: With and Without jQuery
/
85 Real-Life Uses for the JavaScript reduce() Method
/
-7How to Enable or Disable a Button With [removed] jQuery vs. Vanilla
/
4How to Enable or Disable a Button With [removed] jQuery vs Vanilla
/
-3Confirm Yes or No With JavaScript
/
-5How to Change the URL in [removed] Redirecting
/
-215+ Best WordPress Twitter Widgets
/
-227 Best Tab and Accordion Widget Plugins for WordPress (Free & Premium)
/
1221 Best Tab and Accordion Widget Plugins for WordPress (Free & Premium)
/
-1130 HTML Best Practices for Beginners
/
-631 Best WordPress Calendar Plugins and Widgets (With 5 Free Plugins)
/
325 Ridiculously Impressive HTML5 Canvas Experiments
/
-4
1How to Implement Email Verification for New Members
/
3How to Create a Simple Web-Based Chat Application
/
730 Popular WordPress User Interface Elements
/
-3Top 18 Best Practices for Writing Super Readable Code
/
1Best Affiliate WooCommerce Plugins Compared
/
-1218 Best WordPress Star Rating Plugins
/
1410+ Best WordPress Twitter Widgets
/
320+ Best WordPress Booking and Reservation Plugins
/
5Working With Tables in React: Part Two
/
-2Best CSS Animations and Effects on CodeCanyon
/
-1730 CSS Best Practices for Beginners
/
5How to Create a Custom WordPress Plugin From Scratch
/
310 Best Responsive HTML5 Sliders for Images and Text… and 3 Free Options
/
-516 Best Tab and Accordion Widget Plugins for WordPress
/
-518 Best WordPress Membership Plugins and 5 Free Plugins
/
625 Best WooCommerce Plugins for Products, Pricing, Payments and More
/
110 Best WordPress Twitter Widgets
1 /
1212 Best Contact Form PHP Scripts for 2020
/
-420 Popular WordPress User Interface Elements
/
-410 Best WordPress Star Rating Plugins
/
-412 Best CSS Animations on CodeCanyon
/
-112 Best WordPress Booking and Reservation Plugins
/
120 Best WordPress Calendar Plugins and Widgets
/
-312 Elegant CSS Pricing Tables for Your Latest Web Project
/
824 Best WordPress Form Plugins for 2020
/
-214 Best PHP Event Calendar and Booking Scripts
/
-1Getting Started With Django: Newly Updated Course
/
-1Create a Blog for Each Category or Department in Your WooCommerce Store
/
28 Best WordPress Booking and Reservation Plugins
/
-15Best Exit Popups for WordPress Compared
/
19Best Exit Popups for WordPress Compared
/
-411 Best Tab & Accordion WordPress Widgets & Plugins
/
-1212 Best Tab & Accordion WordPress Widgets & Plugins
1 /
2New Course: Practical React Fundamentals
/
2Short Course: Better Angular App Architecture With Modules
/
3Preview Our New Course on Angular Material
/
5Build Your Own CAPTCHA and Contact Form in PHP
/
-1Object-Oriented PHP With Classes and Objects
/
1Best Practices for ARIA Implementation
/
-5Accessible Apps: Barriers to Access and Getting Started With Accessibility
/
-3Dramatically Speed Up Your React Front-End App Using Lazy Loading
/
1715 Best Modern JavaScript Admin Templates for React, Angular, and Vue.js
/
-1615 Best Modern JavaScript Admin Templates for React, Angular and Vue.js
/
319 Best JavaScript Admin Templates for React, Angular, and Vue.js
/
3New Course: Build an App With JavaScript and the MEAN Stack
/
11Hands-on With ARIA: Accessibility Recipes for Web Apps
/
710 Best WordPress Facebook Widgets
13Hands-on With ARIA: Accessibility for eCommerce
/
6New eBooks Available for Subscribers
/
-9Hands-on With ARIA: Homepage Elements and Standard Navigation
/
11
-4Site Accessibility: Getting Started With ARIA
/
5How Secure Are Your JavaScript Open-Source Dependencies?
/
-4New Course: Secure Your WordPress Site With SSL
/
-3Testing Components in React Using Jest and Enzyme
/
-9Testing Components in React Using Jest: The Basics
/
-515 Best PHP Event Calendar and Booking Scripts
/
-3Create Interactive Gradient Animations Using Granim.js
/
9How to Build Complex, Large-Scale Vue.js Apps With Vuex
1 /
-2Examples of Dependency Injection in PHP With Symfony Components
/
-5Set Up Routing in PHP Applications Using the Symfony Routing Component
1 /
9A Beginner’s Guide to Regular Expressions in JavaScript
/
9Introduction to Popmotion: Custom Animation Scrubber
/
-6Introduction to Popmotion: Pointers and Physics
/
-10New Course: Connect to a Database With Laravel’s Eloquent ORM
/
-5How to Create a Custom Settings Panel in WooCommerce
/
-14Building the DOM faster: speculative parsing, async, defer and preload
1 /
320 Useful PHP Scripts Available on CodeCanyon
3 /
51How to Find and Fix Poor Page Load Times With Raygun
/
1Introduction to the Stimulus Framework
/
-11Single-Page React Applications With the React-Router and React-Transition-Group Modules
/
1
712 Best Contact Form PHP Scripts
1 /
-3Getting Started With the Mojs Animation Library: The ShapeSwirl and Stagger Modules
/
1Getting Started With the Mojs Animation Library: The Shape Module
/
-3Getting Started With the Mojs Animation Library: The HTML Module
/
6Project Management Considerations for Your WordPress Project
/
-78 Things That Make Jest the Best React Testing Framework
/
2Creating an Image Editor Using CamanJS: Layers, Blend Modes, and Events
/
-1New Short Course: Code a Front-End App With GraphQL and React
/
2Creating an Image Editor Using CamanJS: Applying Basic Filters
/
-13Creating an Image Editor Using CamanJS: Creating Custom Filters and Blend Modes
/
-1Modern Web Scraping With BeautifulSoup and Selenium
/
1Challenge: Create a To-Do List in React
1 /
-2Deploy PHP Web Applications Using Laravel Forge
/
-3Getting Started With the Mojs Animation Library: The Burst Module
/
7
-910 Things Men Can Do to Support Women in Tech
/
-3A Gentle Introduction to Higher-Order Components in React: Best Practices
/
-5Challenge: Build a React Component
/
-4A Gentle Introduction to HOC in React: Learn by Example
/
2A Gentle Introduction to Higher-Order Components in React
/
-6Creating Pretty Popup Messages Using SweetAlert2
/
5Creating Stylish and Responsive Progress Bars Using ProgressBar.js
/
1818 Best Contact Form PHP Scripts for 2022
/
-3How to Make a Real-Time Sports Application Using Node.js
/
-2Creating a Blogging App Using Angular & MongoDB: Delete Post
/
-15Creating a Blogging App Using Angular & MongoDB: Show Post
/
10Creating a Blogging App Using Angular & MongoDB: Home
/
8
4Creating a Blogging App Using Angular & MongoDB: Login
/
11Creating Your First Angular App: Implement Routing
/
13Persisted WordPress Admin Notices: Part 4
/
-3Creating Your First Angular App: Components, Part 2
/
4Persisted WordPress Admin Notices: Part 3
/
4
8Persisted WordPress Admin Notices: Part 2
/
-2Create Your First Angular App: Storing and Accessing Data
/
5Persisted WordPress Admin Notices: Part 1
/
-4Error and Performance Monitoring for Web & Mobile Apps Using Raygun
/
5Using Luxon for Date and Time in JavaScript
7 /
-6How to Create an Audio Oscillator With the Web Audio API
/
-5How to Cache Using Redis in Django Applications
/
120 Essential WordPress Utilities to Manage Your Site
/
-6Introduction to API Calls With React and Axios
/
16Beginner’s Guide to Angular 4: HTTP
/
13Rapid Web Deployment for Laravel With GitHub, Linode, and RunCloud.io
/
10Beginners Guide to Angular 4: Routing
/
-8Beginner’s Guide to Angular 4: Components
/
3Creating a Drop-Down Menu for Mobile Pages
/
6Introduction to Forms in Angular 4: Writing Custom Form Validators
/
5Getting Started With Redux: Connecting Redux With React
/
15Getting Started With Redux: Learn by Example
/
14Getting Started With Redux: Why Redux?
/
12Understanding Recursion With JavaScript
/
-1How to Auto Update WordPress Salts
/
-3How to Download Files in Python
/
-3
-21Eloquent Mutators and Accessors in Laravel
1 /
15
-11
1210 Best HTML5 Sliders for Images and Text
/
8Site Authentication in Node.js: User Signup
/
-3Creating a Task Manager App Using Ionic: Part 2
/
3Creating a Task Manager App Using Ionic: Part 1
/
2Introduction to Forms in Angular 4: Reactive Forms
/
2
4Introduction to Forms in Angular 4: Template-Driven Forms
/
424 Essential WordPress Utilities to Manage Your Site
/
-325 Essential WordPress Utilities to Manage Your Site
/
-11Get Rid of Bugs Quickly Using BugReplay
1 /
-17Manipulating HTML5 Canvas Using Konva: Part 1, Getting Started
/
610 Must-See Easy Digital Downloads Extensions for Your WordPress Site
/
-322 Best WordPress Booking and Reservation Plugins
/
-4Understanding ExpressJS Routing
/
-615 Best WordPress Star Rating Plugins
/
11Creating Your First Angular App: Basics
/
-1Inheritance and Extending Objects With JavaScript
/
-9Introduction to the CSS Grid Layout With Examples
1 /
4
6Performant Animations Using KUTE.js: Part 5, Easing Functions and Attributes
/
-8Performant Animations Using KUTE.js: Part 4, Animating Text
/
-12Performant Animations Using KUTE.js: Part 3, Animating SVG
/
-8New Course: Code a Quiz App With Vue.js
/
-2Performant Animations Using KUTE.js: Part 2, Animating CSS Properties
/
2
9Performant Animations Using KUTE.js: Part 1, Getting Started
/
110 Best Responsive HTML5 Sliders for Images and Text (Plus 3 Free Options)
/
-3Single-Page Applications With ngRoute and ngAnimate in AngularJS
/
-13Deferring Tasks in Laravel Using Queues
/
-4
2Site Authentication in Node.js: User Signup and Login
/
11Working With Tables in React, Part Two
/
-17Working With Tables in React, Part One
/
3How to Set Up a Scalable, E-Commerce-Ready WordPress Site Using ClusterCS
/
-4New Course on WordPress Conditional Tags
/
3
-11Building With Vue.js 2 and Firebase
6 /
13
-8Best Unique Bootstrap JavaScript Plugins
/
-6
-2Essential JavaScript Libraries and Frameworks You Should Know About
/
6
2Vue.js Crash Course: Create a Simple Blog Using Vue.js
/
-13Build a React App With a Laravel RESTful Back End: Part 1, Laravel 5.5 API
/
3API Authentication With Node.js
/
-4Beginner’s Guide to Angular: HTTP
/
7Beginner’s Guide to Angular: Routing
/
-2Beginners Guide to Angular: Routing
/
-3Beginner’s Guide to Angular: Services
/
3Beginner’s Guide to Angular: Components
/
1How to Create a Custom Authentication Guard in Laravel
/
6Learn Computer Science With [removed] Part 3, Loops
/
-5Build Web Applications Using Node.js
/
1Learn Computer Science With [removed] Part 4, Functions
/
4Learn Computer Science With [removed] Part 2, Conditionals
/
12Create Interactive Charts Using Plotly.js, Part 5: Pie and Gauge Charts
/
-8Create Interactive Charts Using Plotly.js, Part 4: Bubble and Dot Charts
/
16Create Interactive Charts Using Plotly.js, Part 3: Bar Charts
/
-11Awesome JavaScript Libraries and Frameworks You Should Know About
/
-5Create Interactive Charts Using Plotly.js, Part 2: Line Charts
/
-8Bulk Import a CSV File Into MongoDB Using Mongoose With Node.js
/
-6Build a To-Do API With Node, Express, and MongoDB
/
-8Getting Started With End-to-End Testing in Angular Using Protractor
/
10TypeScript for Beginners, Part 4: Classes
/
-17Object-Oriented Programming With JavaScript
/
410 Best Affiliate WooCommerce Plugins Compared
/
5Stateful vs. Stateless Functional Components in React
/
8Make Your JavaScript Code Robust With Flow
/
-3Build a To-Do API With Node and Restify
/
7Testing Components in Angular Using Jasmine: Part 2, Services
/
2Creating a Blogging App Using React, Part 6: Tags
/
-9React Crash Course for Beginners, Part 3
/
3React Crash Course for Beginners, Part 2
/
6React Crash Course for Beginners, Part 1
/
2Set Up a React Environment, Part 4
1 /
9Set Up a React Environment, Part 3
/
-9New Course: Get Started With Phoenix
/
-8Set Up a React Environment, Part 2
/
1Command Line Basics and Useful Tricks With the Terminal
/
8How to Create a Real-Time Feed Using Phoenix and React
/
-3Build a React App With a Laravel Back End: Part 2, React
/
3Build a React App With a Laravel RESTful Back End: Part 1, Laravel 9 API
/
-5Creating a Blogging App Using React, Part 5: Profile Page
/
-3Pagination in CodeIgniter: The Complete Guide
/
22JavaScript-Based Animations Using Anime.js, Part 4: Callbacks, Easings, and SVG
JavaScript-Based Animations Using Anime.js, Part 3: Values, Timeline, and Playback
Learn to Code With [removed] Part 1, The Basics
/
510 Elegant CSS Pricing Tables for Your Latest Web Project
/
-8Getting Started With the Flux Architecture in React
/
-2Getting Started With Matter.js: The Composites and Composite Modules
/
2Getting Started With Matter.js: The Engine and World Modules
/
1410 More Popular HTML5 Projects for You to Use and Study
/
-22Understand the Basics of Laravel Middleware
/
-2Iterating Fast With Django & Heroku
/
9Creating a Blogging App Using React, Part 4: Update & Delete Posts
/
4Creating a jQuery Plugin for Long Shadow Design
/
-12How to Register & Use Laravel Service Providers
2 /
-13Unit Testing in React: Shallow vs. Static Testing
/
4Creating a Blogging App Using React, Part 3: Add & Display Post
/
14Creating a Blogging App Using React, Part 2: User Sign-Up
20 /
-5Creating a Blogging App Using React, Part 1: User Sign-In
/
69 More Popular HTML5 Projects for You to Use and Study
/
16Creating a Grocery List Manager Using Angular, Part 2: Managing Items
/
89 Elegant CSS Pricing Tables for Your Latest Web Project
/
-1Dynamic Page Templates in WordPress, Part 3
/
-3Angular vs. React: 7 Key Features Compared
/
6Creating a Grocery List Manager Using Angular, Part 1: Add & Display Items
/
2New eBooks Available for Subscribers in June 2017
/
6Create Interactive Charts Using Plotly.js, Part 1: Getting Started
/
10The 5 Best IDEs for WordPress Development (And Why)
/
-133 Popular WordPress User Interface Elements
/
2New Course: How to Hack Your Own App
/
-10How to Install Yii on Windows or a Mac
/
4What Is a JavaScript Operator?
/
-6How to Register and Use Laravel Service Providers
/
9
waly Good blog post. I absolutely love this…