Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 4 May 2021

WorkBoard raises $75M as the OKR-focused startup bets on a growing economy, changes to business culture

This morning WorkBoard, a software startup that sells software designed to help other companies plan, announced that it has raised a $75 million Series D. Softbank Group led the investment, which saw participation from prior investors including Microsoft’s M12 venture capital arm, a16z, GGV and Workday Ventures. Per the company, three new investors also took part: SVB Capital, Capital OneVentures and Intel Capital.

More precisely, a host of strategic and venture investors joined up with SoftBank to greatly expand WorkBoard’s capital base in a single investment. Prior to its new round, WorkBoard had raised $65 million, according to its co-founder and CEO Deidre Paknad. Its new round, then, is larger than all of its prior funding combined.

The new funding values WorkBoard at $800 million on a post-money basis, a huge step up from its Series C post-money valuation of $230 million, per PitchBook data.

WorkBoard, like a number of startups that have raised recently, didn’t need more capital to keep operating. Paknad told TechCrunch in an interview that her OKR-focused business still had $35 million in the bank from its preceding rounds. So, what will WorkBoard do with its now $100 million or $105 million bank account? Invest like heck, it appears.

In a sense that should not surprise — TechCrunch included WorkBoard in a roundup of OKR-centered software startups last week, a piece that included the fact that it had grown by 90% from Q1 2020 to Q1 2021, and that Paknad expected her company to “more than double” this year.

Chatting with Paknad, TechCrunch wanted to know why her firm had picked up more capital — so very much new capital — at a time when it didn’t really need the funds. Per the CEO, the company sees the economy and its market at inflection points that make it the right time to deploy capital aggressively.

The company is already at it, adding 82 people in the first 100 days of the year, and expecting to scale from its current employee base of 250 to 400 this year.

What is this moment on which the company is intent to double-down? The economic inflection point is a rapidly scaling economy, with Paknad noting that the Federal Reserve expects the U.S. economy to grow by 6.5% this year, the fastest pace in decades. That figure could imply a ripe moment for software companies to grow at an outsized pace; warm economic waters are great for already hot companies and sectors.

And the second turning point is that after 2020, a year in which many if not most companies had to plan, re-plan and re-re-plan, the CEO said, many firms want to accelerate their planning cadence. And as OKRs are built around a roughly four-times-yearly pace, they are inherently more rapid-fire than the traditional yearly planning to which many companies still hew. So they could be a great fit.

Lots of growth, then, and lots of demand could make for an attractive growth moment for WorkBoard and its OKR-derived startup brethren.

WorkBoard also wants to grow its international footprint; Paknad noted customers in Asia and Europe and a desire to invest more in those markets. And the company wants to keep putting capital to work into its community efforts, something that we’re hearing from a number of aggressively growing startups in recent quarters.

WorkBoard could have raised more capital than it did, with Paknad telling TechCrunch that investors used a number of techniques to reach her in the last year, including some that pushed the boundaries of the word tenuous. In short, growthy SaaS companies of the sort that WorkBoard is proving to be are staring down a buffet of funding sources in today’s market. We forgot to ask her if SPACs were also reaching out, but we’d be surprised if the answer was no.

TechCrunch was also curious about the services side of the WorkBoard business. The company offers coaching, certification and other human-powered services in addition to software. Paknad said that while that part of her company’s services revenue is only around 10% of its aggregate, it’s key to landing customers who want or need the help. So, if we presume that the company is selling human time at around a breakeven rate, we can infer that whatever hit the company takes to its blended gross margins is worth it in terms of implied, if somewhat opaque from a raw-numbers-perspective, revenue growth.

And the CEO said that the services team has a direct line to her product group. That means that whatever its human interactions derive in terms of hints and notes about what might need changing, or building, can be iterated on rapidly.

WorkBoard has delivered rapid growth for years, as TechCrunch reported earlier this year when we put together a compiled list of historical growth rates of companies in its space. Paknad’s company grew its top line by 350% in 2018, 300% in 2019, around 100% in 2020, and the expectation of another double in 2021. That’s smackingly close to the (in)famous triple-triple-double-double-double model of startup growth that gets companies to $100 million in recurring revenue at a venture-ready pace. At which point an IPO is a foregone conclusion that hinges merely on market timing and the maturity of internal controls.

We’ll hit up all the OKR startups in a few months for their Q2 2021 numbers, so expect to hear more about WorkBoard and Ally.io and Perdoo, and Gtmhub and Koan and WeekDone shortly.



from TechCrunch https://ift.tt/3nQ61zN
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support