Crayon Data: Simplifying Choices for the World

As reported in IE Singapore on 9 January 2017. More details can be found here.

Crayon Data, a Singapore-based big data company that is touted as one of the fastest growing in Asia. The founder talks about the company’s success, and their aim of working with top global companies.
With so many choices facing consumers nowadays, it is easy to be overwhelmed by the available options. 
Its co-founder and chief executive officer Suresh Shankar says: “Choice discovery is wasteful and inefficient, with an enormous amount of time and effort being spent by both consumers and enterprises to find relevant information and choices.”
This is where the SimplerChoices platform comes in.
Crayon Data’s proprietary platform harnesses the power of big data, covering one billion tastes, 25 billion taste connections, 25 million products, 31 million users and 15 categories.
SimplerChoices uses a complex machine-learning technique to apply cognitive thinking algorithms to collected data. It then generates massive, global consumer tatste graphs that plot affinities and connections across various categories, entities and products.
/** * helper function to take the form and * get back a js object with field/value mappings * ignoring submit fields and fields whose name we can't ascertain */ function serialize(form){ return .filter(isInputElement) .filter(isNotSubmit) .filter(hasFieldName) .reduce(function(data, node, index) { data[getFieldName(node)] = node.value return data; }, {}); } /** * Check if this form element is of type input */ function isInputElement(node) { return node.tagName.toLowerCase() === 'input'; } /** * Check if this is a 'submit' input element */ function isNotSubmit(node) { return node.type !== 'submit'; } /** * Ensure field has a derived name */ function hasFieldName(node) { return getFieldName(node) !== 'unknown'; } /** * Attempt to ascertain "name" of field. * * they don't give inputs real `name` attributes, so * best guess is to hack around the element's label text, * falling back to the placeholder text. (their html is * not semantic and often labels erroneously reference * parent divs instead of sibling input elements) * * strip out the stars they show when validation fails * * if label is misplaced _and_ there's no placeholder, * this function is insufficient */ function getFieldName(input) { if (!input.labels.length) return input.placeholder || 'unknown'; var labelText = input.labels[0].textContent.trim(); return ~labelText.indexOf(' *') ? labelText.slice(0, labelText.indexOf(' *')) : labelText; } /** * Listen for form submissions and send identify * if you'd like an event too, just delete the '//' in the track line */ document.forms[0].addEventListener('submit', function(e) { analytics.identify(serialize(; // analytics.track('Submitted Form'); });