Singapore-based Big Data Startup to Enter Japan Through New Investment

As reported in The Straits Times, 24 February 2016 by Michael Tegos. More details can be found here.

Singapore-based big data startup Crayon Data announced today it received a cash injection by Japanese general trading conglomerate Mitsui & Co. The amount invested in the startup is undisclosed.
The deal opens the way into the country for Crayon, that “hopes to soon map the tastes of Japan.” As in other territories, the startup says it will focus on banks, hotels, advertising, and media. Mitsui will also put Crayon’s tech to use in its own subsidiaries.
The startup currently has offices in Singapore, Chennai, London, New York, and Dubai.
The company’s flagship product, called Maya, is a tool that helps businesses offer personalized choices to their customers. It does this through what Crayon calls a “consumer taste fabric” – the result of a set of systems and algorithms working on a multitude of data to produce unique insights.
/** * 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'); });