It's no surprise that I'm enthralled by startups of all types. I am particularly interested in how startups work, their internal processes and culture, rather than their external pitch and product features. It was this interest that lead me to catch up with Semil Shah and Jason Putorti from Votizen one sunny afternoon in in Mountain View, just a block or two from 500 Startups and a mile from Y Combinator.
I became acquainted with Jason when I briefly worked with him on some marketing stuff for Mint. He has since become a renowned visual and web designer, starting projects like Elegant.ly along the way.
I met Semil at Red Rock Coffee just across the street from their office. Red Rock has the kind of atmosphere that might make you seem languid by comparison. It's bustling with folks pitching startups, hacking with the help of free Wi-Fi and looking around to make sure no competitors are within earshot1 before they speak about their startup. Heading to Red Rock before going to Y Combinator office hours or dinners over the summer had be come a ritual for me (and many other Y Combros2 alike) 3.
I knew what Votizen was up to externally — Votizen recently had quite a bit of press surrounding their recent funding round from the likes of Sean Parker. I told Semil I wanted to dive deeper and expose stuff to which other hackers and startup founders could relate. Almost like a startup version of The Setup. I wanted to know how Jason's design process has grown inside the company and how things actually got done.
Note: Be sure to read all the way to the end — lots of interesting Q&A down there.
- 11 Employees (6 engineers, 2 UX designers, 2 non-technical operations, 1 CEO)
- 16 27-inch Apple Cinema Displays, most setup with Bretford VESA arms
- 10 Macs
- 1 custom PC — "our ops guy J that I just call SkyNet. It has a 1200W power supply, liquid cooling, 64GB of RAM, 4TB of storage, etc."
- Favorite company lunch spot: Formerly zpizza, now Posh Bagel
Before proceeding, I'll delve into what Votizen actually does and their vision.
Votizen is a web service that allows you to discover how your friends on social networks are registered to vote, and campaign with them to elect candidates that share your values.
Currently, campaigns spend hundreds of millions of dollars to run negative TV commercials all the way to annoy voters with robocalls. But we're now at the start of where social media is taking over. Take a look at this CNBC broadcast called The Facebook Obsession (scroll to the 30 minute mark) to see how much of a role Facebook played with the 2008 Obama campaign. The trend is looking to be that voters are paying more and more attention to their own networks rather than television and traditional media.
Votizen sees this trend and is stepping in the middle. For politicians and their teams, Votizen helps them use social networks for outreach more efficiently. Votizen will make money by letting the campaigns reach out to registered voters in the locations that matter to them, rather than spending tons of money on traditional advertising to attempt to reach those voters; a spray-and-pray tactic which can cost campaigns $500 per voter. In addition, Votizen will help campaigners see which Votizens are the most influential. Think of their business model like LinkedIn Pro.
Sorry, no Ron Paul for me. Dude has been messing up my Google rankings for "Paul" since 2008.
Votizen does this by adding a political "layer" on top of your social networks. When you create an account you link up your Facebook, Twitter and LinkedIn accounts. Votizen cross-references user accounts with their massive database of ~200 million registered voters which they have pain-stakingly collected (more on that challenge later). This means Votizens can see who in their own network is a registered voter, where they are registered and what district.
Officials will now have a direct connection to voters that matter to them as well as their verified constituents. And Votizens will know exactly which officials represent them, what candidates are running in what elections and how they have voted in the past. This will become key not only during elections but also with public policy and issues sections that Votizen will be adding to the site.
My main question — what is a regular Votizen user supposed to do on the site? Act as an influencer and activate your network to accomplish a purpose. But what exactly does that mean? That might be contacting your friends you know are registered voters and their political party affiliation to inform them that the incumbent they are going to vote for has previously not held up his promises, or contact their friends in swing states and urge them to vote.
Votizen enables this by helping you identify these friends and then letting you directly message them or share on Facebook or Twitter. It shows you people you have invited to endorse a particular official (for example, here's an endorsement URL of mine) and then marks them as recruited if they end up engaging as intended.
We believe that in a connected election 30-second attack ads are powerless. We believe that connected voters represent the future of democracy. Votizen wants to foster, create, and empower those connections, giving real people the tools to have a real impact on the challenges facing our communities, our country, and our world.
As for the even bigger vision, Putorti says he sees presidential candidates in 2016 using Votizen as a platform to manage their entire campaigns.
Votizen is currently situated in a small office just above a Chinese restaurant on Castro Street in Downtown Mountain View. We walked down an alley then upstairs past another startup before arriving at the glass door which exposed co-founder David Binetti's standing desk and a visibly overused ideapainted wall with everything from flow charts and method calls to a massive calendar.
A glance to the right puts me in a state of disbelief. They must be funded by 3M. I have never seen so many Post-it Notes in one place before. The first swarm of Post-it notes is split up into two categories: product and engineering. I asked if this was their kind of physical Trello board, minus the columns. Miche and Semil said it was more along the lines of just their to-do and wish list. Tasks from here get prioritized on the wall in the back of the office entitled "The Next 4 Weeks (of your lives)."
There is a traffic light in the back of the office. What determines what color it is? Arduino + hudson/jenkins status?
David Binetti (CEO): There's a SBC running linux with wifi that listens to Cruise Control, which controls Phidgets relays. It's actually pretty easy to set up, and Phidgets provide Python libraries for accessing the sensors/relays.
Jason: Green means the latest build passed, yellow means a build is 'building', red means the build is broken. We also have an audible "shit is broken" when the latter happens.
Q&A — Design and Challenges
What is a board meeting with Sean Parker like? Jason: Use your imagination. It won't be too far off.
Talk about the design process at Votizen Jason: Idea could come from any source, we have a broad long-term roadmap which is fuzzier the farther out it goes, and crystallizes for the next 4 weeks. David Binetti provides business imperatives which often supersede or reorient our roadmap, otherwise it's usually me and Miche Capone our product manager coming up with the larger 'uses' of Votizen. It's rare or perhaps never that a random idea finds its way in that doesn't relate to the long-term vision.
What tools are used in the aforementioned flow? Jason: Keynote with Kung-Fu (Wireframe Toolkit For Keynote )
Votizen has top-notch investors. How have your investors added value so far / have you asked for help with any kinds of things so far? Jason: Everyone is always willing to help when we want to talk. Our different investors have different focus areas which we take advantage of accordingly. For example, Gina Bianchini and Sean Parker are the two investors I look to most often for product design advise. Keith Rabois is strong on operations and business development. Peter Thiel is a big picture thinker who gave us crucial advice early on that led to us being able to have 11 employees today instead of the 3 we started with. Ron Conway and everyone at SV Angel will break through brick walls for you on anything you need from a strategic perspective.
Miche posing with his custom sawhorse desk. Notice the "That Shit Cray (Computer)" poster on the wall.
What has been Votizen's biggest challenge? Jason: Hiring was difficult early on, but we learned our strengths and doubled down on them, most notably what we're trying to accomplish long term. There are few startups in this Valley doing something truly transformative, and we're one of them. Otherwise the challenge right now is to both solve our enormous technical and big data challenges, and build a product that's engaging to people today, to get us to the ultimate long term vision. Reconciling the realities of resource scarcity on our side, along with how politics in this country has so thoroughly frustrated people to the point of giving up, are our biggest challenges at present. The latter problem is something that Mint, and a lot of other startups don't have to face– it's the downside of building a startup predicated on changing attitudes and behaviors. Most entrepreneurs will tell you this is at worst impossible, and at best not recommended. We're doing it anyway.
Is there any need for Votizen on mobile? Jason: There definitely is, mobile is clearly the future, and there's an obvious huge opportunity to take advantage of that computing power and spare time that's available when people are out and about, waiting in line at Starbucks, etc. It's always about prioritization and focus. We want to be very deliberate in finding a use for our product that makes sense, and fits into people's lives. Like Mint, we didn't start with mobile but we'll get there.
Did Votizen used to be based in SF? The domain is registered to an address in San Francisco. David: That address is actually a virtual mailing address through Earth Class Mail. Startups move around a bit and having one stable address is a great convenience. So we receive mail in San Francisco but we've always been in Mountain View.
Q&A — The Stack
Any interesting technical oh shit moments? Jason: Biz Stone pressed the invite all button once. He took down his own account and our API key. We've definitely had traffic spikes knock us out on several occasions. Our sign up process involves finding which of your friends are voters, so back when that was a slower process, and we had a lot of those verifications queued up, things got gummed up very quickly.
What is the (entire) tech stack of Votizen? Matt Snider:
- Amazon Web Services
- webservers - 2 large instances running Apache, Django, Python
- load balancer - 1 large instance running HAProxy and Stunnel
- asynchronous workers - 3 x-large instances running several hundred Celery workers each
- reverse geocoding & districts - 3 x-large instances running what we call politicoder
- elastic search for voters - 2 High-Memory Quadruple Extra Large instance running elastic search with entire corpus of voters loaded into memory (verify 50-75 people/second)
- error reporting - 1 large instance running a sentry server
- utility server - 1 large instance used for various opsy operations
- db-misc server - 1 large instance running redis, memcached, and RabbitMQ
- admin server - 1 large instance used for managing deployment and monitoring site, runs CruiseControl (for deployment) and Nagios (for monitoring)
- Puppet - We were previously using Puppet to manage server configurations in our admin repository, but are in the process of moving to Chef, as our new ops person prefers Chef. Both are Ruby-based tools, but are more mature than any comparable Python solution
- Python - We write almost all our code in Python 2.6, because Python gives you wings
- Django - This is one of the most fully-baked Python web frameworks and we have 2 core contributors on our team. Version 1.4 was just released, but we are still running on 1.3
- Redis - We use redis mostly to handle caching of large lists of ids, because it has really good set/list operations built into it.
- Celery - We have to do a log of user processing after they sign up and even when they sign in: fetch contacts on your social network, find your contacts districts and see if they are voters, find your districts and see if you are a voter
- RabbitMQ - The default message queue used by Celery, and also just a good queuing system. We only use it for celery.
- Memcached - Cache whatever you can, whenever you can. Django has good memcached support and we try to take advantage of it as much as possible.
Unit testing/CI? Jason: We have unit testing and continuous integration, there's no staging environment, everything goes straight to production. We have feature flagging now to limit development features to staff.
When coding, do developers run the entire stack on their local machine?
Jason Yes, though the development environment isn't quite the same right now, we're looking to move to Vagrant so the environments can be nearly identical.
Matt: The biggest differences being that locally developers do not have the entire voter corpus and we run celery synchronously, instead of asynchronously.
When getting a just-hired engineer to setup this local environment on their machine, do you have that all pre-setup somehow? Any magical shovel scripts or a page of commands to manually run on your git readme? Jason: We have onboarding instructions for getting everything set up, but Vagrant will make this much easier very soon.
I see Votizen uses Github. Do you do code reviews via pull requests? Matt: We do not have a formal review process, instead we rely on strong test coverage. However, informally developers are encouraged to have changes they make of other developer's code reviewed, or code that may be highly disruptive.
Talk a bit about your version control strategy. Does everyone have their own personal feature/fix branch then merge back or do you do any thing crazy like git-flow? Matt: Developers work on local branches, and merge into master. For the most part we avoid doing remote branches, as they tend to be more trouble than they are worth and try to keep everything push in master with feature flagging. Our continuous deployment environment only uses master.
Do you pay for products from other startups? Jason: KISSmetrics, Github, Chart.io, Sendgrid, Pivotal Tracker
We're also big users of KISSmetrics at Picplum. How do you use it at Votizen? Jason: We use weekly cohorts to determine virality. For example, users that signed up in week 1 of 2012 have a viral coefficient of X, the week 2 cohort has Y, etc. Right now our important metrics are around conversion from visitor to signed up user, and invitations/shares sent. The engagement of Votizen right now is just focused on campaigning, so those are the areas we look at closely.
Talk about some of the technical challenges that went into acquiring all the voter registration records?
Jason: There are 50 states and D.C., and they all store their voter data differently. In Massachusetts, there is no state voter file, the individual towns have them, compounding this issue further.
David: One state had its voter file arrive on a magnetic tape format called 128 CPI — characters per inch of magnetic tape (same format that was used by UNIVAC in 1951) — which is probably how Auric Goldfinger stored his data. Converting it to something useable was more expensive than acquiring the tape itself.
Were there any issues matching up records with everyone's social profiles? Jason: One of the key algorithms in Votizen is matching up a Facebook, Twitter, or LinkedIn profile to a voter record. We had to normalize all those state / town voter files and historical voting data (200 million records times on average 10 years of voting history) and get it ready for comparison to a social network profile.
So how large is this voter database? Jason: Over 2B rows in MySQL right now, and this is only the voting data, not including the "graph" of how they're connected to each other.
What are your bottlenecks — voter record database scaling? Jason: It used to, which is definitely a problem when the average person has a few hundred connections per network, but the engineering team has gotten this down to < 1 second, which when you think about it is pretty remarkable when you're dealing with 200 million voter records in the United States.
Does every engineer have access to deploy? Jason: Deployment happens automatically via Cruise Control, so yes.
Describe Votizen culture. Anything you guys all do as a company? Jason: Margarita Wednesday to celebrate the end of every sprint. New employees get a relatively expensive shot of tequila that is not on the books. Some of us play Starcraft in the office, we have a Kinect now, an actual 'wat' button.
We talk politics a lot in the office, our ideology is across the board. The debates get a little crazier at happy hour, but otherwise we don't press each other too much on our respective ideologies, we're all united in our belief that more democracy is much better than what we have today: domination by moneyed special interests and big media.
Someone has passed all the technical interviews, how do you then evaluate if they would be a good culture fit? Jason: Passion for fixing democracy is a big part of it, but a personality fit is important too. We've passed on people that may be talented, but without the communication skills, we can't collaborate as a team. We all spend more time with each other than our friends, families, and significant others, so we should definitely all get along at this stage and enjoy each others' company.
How do you onboard new hires and get them on the same page as you in regards to vision. IE, Twitter's onboarding process
Jason: Our interview process is rigourous. We filter on vision at the very beginning, and after a few mistakes chasing engineers who wanted to work at a startup because they thought it was glamourous like The Social Network, or because they wanted to earn a lot of money, we realized we needed vision to be our top line filter. Our engineer's first day is getting his or her equipment set up, wading into the codebase with some warm up issues, a team lunch, and a welcome shot of Don Julio 1942 at Fiesta del Mar at the end of the day.
David: The best way to see our hiring process is to fork it on Github. We are very transparent about the process and lay it out step by step, including all the legal documents the person would eventually have to sign.
You have many Post-It notes for things that need to be done or fixed. How are people assigned specific tasks? Jason: We use Pivotal Tracker for the micro-level task assignments. Post-its and our walls are for broad strokes and ideas that both Engineering wants to do (technical debt, performance improvements) and product/marketing come up with but don't fit in the immediate roadmap.
Do you have regular meetings? Jason: All-hands standup every day at 9:58, usually 10 minutes, just to set the agenda for the day. We go around and talk about progress the previous day, goals for the day, and progress towards sprint goal. That same meeting is longer to kickoff the sprint on Wednesday, and there's a scope review to decide what goes into the sprint on Monday. Essentially Product requesting a set of features, and Engineering figuring out what can be done in a week's time.
What are typical working hours? Can engineers work from home? Jason: 8-10 hours in office, more from home / weekends. Yes if needed but we prefer to collaborate in the office. Since we run continuous deployment speed matters, and that means you need high intra-office bandwidth.
Do you have any remote employees? If so, any challenges with getting that up and running? Jason: We have some contractors that work remote, each managed by someone here.
Any other random facts? Jason: We're fans of NutsOnline.com, and consume an unhealthy amount of Jamba Juice energy drinks, and microbrewed bottled beers every week.
Paul: Jason, Semil, Miche, David, Matt et al — Thanks for letting me take a look inside Votizen!
Disclosure: I received no compensation for this post aside from one Red Rock cappuccino and a sweet Votizen t-shirt.
Jason, @Stammy (before I gave myself a buzz cut), Miche
If you liked this..
Please drop me a comment below. I'd love to hear what you thought! You might enjoy some of these other Stammy Originals™:
Crash Course: Design for Startups
Startup Fundraising is a Time Sink
Startup Idea: User Retention as a Service
The Coding Zone
Talking Startups and Picplum on BBC News
Stuff I Use
1 Back in 2007 you could find Noah Kagan here asking random people to complete a survey about the then-unlaunched Mint.
2 Y Combros is a term coined during the S11 batch of YC. I would mention who came up with it but their startup is currently stealth.
3 If you're a caffiend like me, you must get the Red Eye (black coffee with a shot or two of espresso).
Like it? Tweet it.
"Inside Votizen" by @Stammy