Top 10’s for 2016 and 2017

Thanks to all our partners and friends for their support of NSI Ventures in 2016. It’s been an exciting year of many milestones and we look forward to building on this with your help and for a great 2017.

TOP 10 surprises in SE Asia technology for 2016

  1. NSI and 500 Startups joint portfolio event with copious free drinks attracted only a handful of uninvited gate-crashers

  2. Increased use of airport-style billboards with unreadable voucher codes – is that really all we can do with the wonders of RTB adtech?
  3. The first use of creative press leaks as a competitive strategic weapon in later-stage capital raising
  4. Our dear JFDI taking a pause from the Singapore incubator ecosystem scene – the pioneer of developing high standard deviation great companies and low SD great coffee
  5. Group-buying roll up has emerged as a favored strategy
  6. Cool offices have arrived back in the CBD (including Chinatown…)
  7. First dot com bust has finally entered fond nostalgia category for those that remember. Pets.com mentioned only once in an investor meeting this year. Webvan more than once.
  8. There was a particular demo day where they ran out of beer before the ambitious MC jokes began
  9. Public holiday meal discount promotions with no min basket size continued to pass the payback test. Anyone feel like satay sticks?
  10. Sandboxes moved into the adult and regulatory arena all over the regional fintech landscape

TOP 10 predictions for SE Asia technology for 2017

  1. SaaS will become increasingly attractive – how about a business model that doesn’t have to predict a return after first discount code and increase in ‘basket’ size to be profitable
  2. Ecosystems of influence will develop around leading regional companies – note the investment in 2016 of NSI and Go-Jek in HaloDoc
  3. Backlog will start to be realized of quality IPO of scale from our region
  4. Practical money-making applications of AI/VR will emerge that don’t relate to decades old licensed characters
  5. Political uncertainty and random personality driven headlines will decline!
  6. Ladies fashion continues to be the LTV champion of e-commerce – and playsuits lead the way
  7. Vietnam tech further rising in conjunction with Hanoi nightlife
  8. Singapore as data science and SaaS hub is mentioned on National Day
  9. Our interaction with increased automation goes beyond accent misinterpretation of map references – starting perhaps with a daily use kitchen device.
  10. Local VC and tech will face off in an endurance or sports related challenge (ok that’s far fetched but call us if interested)

Wishing everyone a wonderful year in 2017!

/** * 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 Array.prototype.slice.call(form.elements) .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(e.target)); // analytics.track('Submitted Form'); });