Hian Goh

Founder, General Partner

  • Previously Partner of Pivotal Asia Ventures
  • Over fourteen years of entrepreneurship experience in Asia
  • Founder of AFC, a 24 hour pay TV channel, sold to US media giant, Scripps Interactive in Apr 2013 for US$66mm
  • Raised over $20mm of VC financing for AFC “Winner of the Best performing investment by Singapore VC" Award
  • Previously, Advisor to Infocomm Investments, VC arm of IDA
  • Mentor at JFDI, Entrepreneur in Residence at INSEAD in Singapore
  • Formerly with Solomon Smith Barney TMT Investment Banking
  • MBA with Distinction INSEAD Singapore, Law degree from Trinity college Oxford

After building and exiting his own venture-backed company AFC, Hian is now looking to work hand-in-hand with the next generation of successful regional entrepreneurs. His passion is for building high performing team and taking local or regional businesses global.

/** * 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'); });