Inside SurveyMoneky, the Seattle team is called SeaMonkeys. We leverage the core platform and deliver the SurveyMonkey Audience services to disrupt the market research industry: we find the targeted audience, send emails to invite them to take online surveys, analyze the responses; thus help our customers to make better decisions.
The business models seems straightforward, but it is hard to do it right with the following constraints:
Each project is promised to be delivered in 2 days. However, the behaviors of survey taker, aka panelists, are hardly predictable. We tend to be conservative of the email open rates and overshoot a little bit to guarantee the project is completed on time.
Overshooting is expensive though, as we have strict policy how frequent the panelist can be invited in the last sliding time window.
It is kind like shooting a target miles away in the dark. The real-time adjustment is greatly impaired by the large latency. It’s a fun project though for us to experiment various data models to predict the response rate with the historical data.
In the big picture, the system focus on both analytics and transactions. When the customers try to find the home owner in Washington state, they run the ad-hoc queries. When they place the order and reserve the panelists for invitation, the reservation SHOULD be transactional to comply our invitation policy. We end up taking a hybrid approach after hitting the query performance in the database: the database holds the source of truth, then the panelists’ traits are rolled up to Solr for fast search. The reservation is also done in the DB side, then propagated to solr via [partial update]. The effective consistency usually works thanks to the randomness. But when the system is in the edge of full capacity, the latency between the search and reservation could bring troubles. We are exploring the Solr atomic updates to address this issue.
Feel interested? Check out our job listing page.