At Curalate, we’re helping the world’s greatest brands unlock the power of pictures. We’re doing so by building novel, interactive customer experiences and extracting insights and intelligence from billions of consumer engagements every month. If you’re a digital marketer, we’d love to show you a demo of our tools at work.

Of course, rewiring the brand-to-consumer relationship brings with it a significant set of engineering challenges. To gather the data our clients need, we process over 225 million images per day and capture thousands of behavioral signals every second. To drive commerce, we build polished experiences that are seen by tens of millions of people daily and that are served in a matter of milliseconds.

Like any scrappy startup, we’re constantly learning as we go and we hope this blog can serve as a vehicle to share some of the lessons we’ve picked up so far. An intro to our team and our stack is below. Thanks for reading and we hope to see you back here regularly.

Our Team

We currently have 23 developers spread across our Seattle, Philadelphia, and New York offices (expect a blog post on working with remote teams in the future). We expect this number to grow to 50+ in 2016 and are excited to welcome more kick-ass engineers to the team. We run the gamut in experience and education and are working hard to build a diverse team. Describing a team is inherently challenging, but I’m going to try by giving you an unordered and incomplete list of some things that we believe:

  • We believe in just enough process to keep the train on the rails while moving fast. Marketing tech is a fast and innovative space, and we want to continue to win.
  • We believe in bottom-up innovation and decision-making. Engineers often know the product better than anyone. We encourage all developers to have a hand in what gets built, and not just how it gets built.
  • We believe in transparency, accountability, and respect. This might be better stated in the negative: No politics; No hoarding of information; No finger-pointing; No hiding of mistakes; No beratement for mistakes; No destructive criticism. Many of us have worked at big companies where bad behavior flourished. We do not let that happen here.
  • We believe in throwing people in the deep end. As an example, one of our recent major product releases was written primarily by an engineer less than a year out of undergrad. We feel that challenging people brings out the best in them and keeps them engaged.
  • We believe in constant improvement. The way we build things has changed dramatically in the last 3 years and we want this evolution to continue. We strive to find ways to deliver higher and higher quality to our customers while still moving fast.

Our Stack

We generally value how something is built and the end result over the tools used to build it, but technology choices are obviously an important factor. We’ll be covering our experiences with many of these technologies in upcoming blog posts. Have a question about something? Just ask.

Languages: Scala, JavaScript, Some Python, A tiny bit of C++

Cloud: AWS

Datastores: MySQL, Aurora, DynamoDB, Cassandra, Redis, S3, Memcached

Data Processing: Storm, Redshift, EMR+Spark

Image Processing: OpenCV, Caffe

Queues: Kafka, SQS, Kinesis

Search: CloudSearch

Server Frameworks: Scalatra, Finagle, Lift

Client Frameworks: AngularJS, jQuery, Bootstrap, Less, Backbone

Deployment: Chef, Asgard, Packer, Jenkins, Elastic Beanstalk

Observability and Alerting: Graphite+StatsD, CloudWatch, Loggly, Pingdom, PagerDuty

Test Frameworks: Specs2, Mockito, Jasmine

Load balancer: ELB

CDN: CloudFront