You're viewing an email archive of The Hustle newsletter. Join free to receive the 5-minute newsletter keeping 2M+ innovators in the loop.

🔁 How ByteDance goes viral

The Hustle

On Sunday morning, football legend Tom Brady was in retirement, and the ball from his final touchdown pass was auctioned off for $518,626. Hours later, Brady came out of retirement, meaning the football will lose almost all of its value, which just utterly sucks for the buyer.

In today’s email:

  • ByteDance: The most valuable startup in the world.
  • Yikes chart: Gen Z’s debt problem.
  • Beverage printers: How one machine makes thousands of drinks.
  • Around the web: Naughty pets, safe camping heaters, free art tools, and more cool internet finds.

🎧 On the go? Listen to today’s 10-minute podcast to hear about Oatly’s wild growing pains, Bob Iger’s move to the metaverse, Pete Davidson’s trip to space, Bytedance’s management wisdom, and more.

The big idea
ByteDance logo

How ByteDance took over the world

It may not surprise you to hear that ByteDance, TikTok’s parent company, is the most valuable startup in the world.

But TikTok isn’t the company’s only massive product.

ByteDance has 3 others that have eclipsed 100m+ daily active users: Toutiao (a news app), Douyin (TikTok’s predecessor), and Xigua Video (an online video platform).

How does ByteDance drop hits so consistently?

Per Harvard Business Review, the secret is ByteDance’s organizational structure — particularly how the company employs shared services.

While companies often share some resources (e.g., legal, HR), ByteDance takes it to another level. The company’s shared service platform (SSP) includes:

  • Technology that can be used or customized across products (e.g., algorithms)
  • Technical staff — like engineers and market analysts — who work on multiple projects instead of a single product line.

The goal of the SSP is to allow ByteDance product teams to stay small and focused on users, and to make it easy to apply lessons from one product to the rest of its portfolio.

Powered by its shared services platform…

… ByteDance has been able to pursue 3 seemingly contradictory strategies simultaneously:

  • Broad exploration: In the span of 2 years, ByteDance created 140+ apps in app stores, spanning 11 verticals
  • Rapid iteration: ByteDance moves fast — releasing products rapidly, terminating underperformers immediately, and cycling employees to new products as needed
  • Selective focus: The company hones in on themes for years at a time — before going all-in on short-form video, the company focused heavily on text and photos

Paired with ByteDance’s data-driven culture, its SSP allows the company to leverage one insight into multiple breakthroughs. Case in point — a spike in video views on Toutiao led to the development of Douyin, and eventually to TikTok.

As a result…

… ByteDance has been valued as high as $400B by some investors. In 2021, the company reached 1.9B active users across 150 countries, and generated $58B in revenue.

The scary part? The nature of ByteDance’s shared services is that each product draws on success from the past — meaning TikTok might be just the beginning.

Share on Facebook Share on Twitter Send as email to a friend View on our website
SNIPPETS

Physical media: CD sales rose from $483.2m in 2020 to $584.2m in 2021 — the 1st time sales of this medium have increased in nearly 20 years. #ecommerce-retail

Huh: This renewable energy storage system works by lifting 35-ton bricks to store energy and lowering them to release it. #clean-energy

Blue Origin’s 4th spaceflight takes off on March 23. Passengers include Party America CEO Marty Allen, SpaceKids Global founder Sharon Hagle, and SNL star Pete Davidson. #emerging-tech

Russia has blocked Instagram, affecting ~80m users. The move follows bans on Facebook and Twitter as Russia attempts to control what information its residents can receive about its invasion of Ukraine. #privacy

Ukraine has now received $100m+ in crypto donations, which it’s used to buy 5.5k+ bulletproof vests, 410k packed lunches, 500 helmets, and more. #fintech-crypto

The People’s Bank of China has accused Tencent’s WeChat Pay of allowing people to move money for illicit purposes, which could mean big fines. As a result, its stock dipped 10%+. #big-tech

Yikes
BNPL chart

Singdhi Sokpo

Buy now, panic later

Today, more than war and death, younger generations are afraid of debt.

It’s one reason “Buy Now, Pay Later” platforms do ~$100B in sales and are growing at a 40% clip. “BNPL” is a friendly jingle, and the youths have taken the bait.

Unfortunately, data shows they’re struggling with the “pay later” part:

  • In the U.S., 50%+ of Gen Zers and millennials say they’ve missed at least 1 BNPL payment.
  • ~8% of the UK’s BNPL Gen Zers have been contacted by debt collectors.

Fortunately, regulators are catching on, and bureaus are now starting to follow BNPL activity on credit reports.

Share on Facebook Share on Twitter Send as email to a friend View on our website
Real-life Replicators
Cana machine

This machine can print thousands of beverages

Martini. Printed, not stirred.

Bay Area startup Cana raised $30m in January to bring its “molecular beverage printer,” the Cana One, to life.

It’s a countertop device that can make thousands of drinks, including coffee and cocktails, using an ingredient cartridge.

Here’s how it works:

Every beverage, no matter if it’s a seltzer or a fine wine, is mostly water.

And just ~1% contains the compounds that give it its unique flavor, aroma, and mouthfeel, Cana CEO Matt Mahar told The Hustle. For example, tartaric acid is key in winemaking, while quinic acid gives coffee its acidity.

But while a glass of wine might contain ~400+ unique compounds, we humans can only register ~30-50.

Cana identified ~150 ingredients that comprise those compounds and concentrated them into a cartridge.

When users choose a drink…

… the cartridge dispenses ingredients in ~30 seconds and mixes them with water.

Also inside the Cana One are a CO2 cylinder for carbonated drinks and 2 additional cartridges: one with liquid sugar, and another with neutral grain alcohol. Users can customize drinks’ sweetness and potency.

The goal is to reduce waste

The soft drink industry alone is estimated to produce and sell 20B-34B plastic bottles per year.

Cana’s cartridges last about a month (or ~200 drinks). New ones auto-ship when customers run low, while old ones are recycled.

Consumer cost is significantly more upfront. Machines are $799 (or $499 for the 1st 10k orders). Cartridges are free, but an app tracks and charges per drink — ~$0.29 for a seltzer to $2.99 for a cocktail.

Yet costs are typically 25%-50% cheaper than stores — not to mention bars, cafes, and restaurants — so big-time LaCroix guzzlers and party hosts would break even sooner than later.

But… is it tasty?

Apparently! A CNET writer found samples to be “quite good, if different,” while TechCrunch said samples had bold flavors with smooth finishes.

And now, here’s a supercut of how we imagine Cpt. Jean-Luc Picard would use the Cana One.

Share on Facebook Share on Twitter Send as email to a friend View on our website
TRENDS

The big business of relationship breakups

The average person spends $1.5k post-breakup.

We know love hurts, but we study trends. That’s a lot of breakup bread for new clothes, nights out, comfort food, and more.

Earlier this year, we highlighted some ethical ways to offer savvy solutions for new singles.

Insights from the Trends signal:

We’re always looking for more of our people.

Try Trends for $1 →
AROUND THE WEB

On this day: In 1869, the Cincinnati Red Stockings became the 1st pro baseball team. That same year, they went 57-0.

🧩 That’s interesting: Before spending millions on Wordle, The New York Times wrote about crosswords as a menace, calling the pursuit a “sinful waste.”

🤓 How to: Here’s an exercise to determine what kind of manager you have, and, based on the results, figure out how to help them best help you. If you like, you can even do the exercise with your manager.

🖼️ Useful: Piskelapp is a free tool for creating animated pixel art.

😼 Aww: An insurance company held a contest to find the UK’s naughtiest pets.

Tweet of the day
Bytedance tweet

Guess what TikTok’s working on in 2022? (Source: Twitter)

How did you like today’s email?

Get the 5-minute roundup you’ll actually read in your inbox​

Business and tech news in 5 minutes or less​

Psst

How'd Bezos build a billion dollar empire?

In 1994, Jeff Bezos discovered a shocking stat: Internet usage grew 2,300% per year.

Data shows where markets are headed.

And that’s why we built Trends — to show you up-and-coming market opportunities about to explode. Interested?

[email-submission-form button-text="Join Free" include-trends-opt-in="true" success-url="https://thehustle.co/signup" default-source="thehustleco" default-medium="home-exit-popup" default-campaign="home-page" form-id="exit-popup-general" optinmonster-conversion="true"]
<script type="text/javascript"> var onloadCallback = function() { grecaptcha.render('verify-your-humanity', { 'sitekey' : '6LdddrcZAAAAALyttpvOqiwQGwq5BNhgDz4tMQGE' }); }; function getCookieValue(a) { var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)'); return b ? atob(decodeURIComponent(b.pop())) : ''; } function getCookie(name) { var cookieArr = document.cookie.split(";"); for(var i = 0; i < cookieArr.length; i++) { var cookiePair = cookieArr[i].split("="); if(name == cookiePair[0].trim()) { return decodeURIComponent(cookiePair[1]); } } return null; } function setHiddenFieldValue(wrappingDiv, searchParams, className, utmName, cookieName, defaultValue) { var el = wrappingDiv.getElementsByClassName(className)[0]; var existingVal = el.getAttribute('value'); if (utmName == 'ref') { var newVal = searchParams.get(utmName) || getCookie(cookieName); } else { var newVal = searchParams.get(utmName) || getCookieValue(cookieName); } if ((existingVal == null || existingVal == '' || existingVal == defaultValue) && (newVal != null && newVal != '')) { el.setAttribute('value', newVal); } } function setHiddenFieldValueFromUtm( wrappingDiv, searchParams, className, utmName, defaultValue ) { var el = wrappingDiv.getElementsByClassName(className)[0]; if (el != null) { var existingVal = el.getAttribute("value"); var newVal = searchParams.get(utmName); if (newVal != null && newVal != "") { el.setAttribute("value", newVal); } } } function initForm() { var wrappingDivs = document.getElementsByClassName('email-submission'); wrappingDivs.forEach(wrappingDiv => { var sp = new URLSearchParams(window.location.search); setHiddenFieldValue(wrappingDiv, sp, 'funnel-source', 'utm_source', 'funnel_source', 'thehustleco'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-campaign', 'utm_campaign', 'funnel_campaign', 'home-page'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-medium', 'utm_medium', 'funnel_medium', 'home-exit-popup'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-referral', 'ref', 'funnel_referral', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-a', 'a', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-c', 'c', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-o', 'o', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-oc', 'oc', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-e', 'e', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-f', 'f', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-r', 'r', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-t', 't', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s1', 's1', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s2', 's2', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s3', 's3', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s4', 's4', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s5', 's5', ''); var error_message = getCookieValue('validate-email-message'); if (error_message && error_message.trim() != '') { var error = wrappingDiv.getElementsByClassName('funnel-error')[0]; var prev_email = getCookieValue('funnel_email'); error_message = prev_email + " is not valid. Please try again"; error.innerHTML = error_message; error.style = ''; } }); if (false) { initCaptchaFormV2(); } } function initCaptchaFormV2() { var v3RecaptchaResponseEl = document.getElementById('recaptcha-response-v3'); v3RecaptchaResponseEl.parentNode.removeChild(v3RecaptchaResponseEl); var wrappingDiv = document.getElementById('email-submission'); var subForm = wrappingDiv.getElementsByClassName('email-submission')[0]; var captchaVersion = document.createElement('input'); captchaVersion.class = 'g-recaptcha hidden-input'; captchaVersion.type = 'hidden'; captchaVersion.name = 'g-recaptcha-response-v2'; captchaVersion.value = 'true'; subForm.appendChild(captchaVersion); var captchaEl = document.createElement('div'); captchaEl.id = 'verify-your-humanity'; subForm.prepend(captchaEl); var captchaApiScriptEl = document.createElement('script'); captchaApiScriptEl.src = 'https://www.recaptcha.net/recaptcha/api.js?onload=onloadCallback&render=explicit'; captchaApiScriptEl.async = true; captchaApiScriptEl.defer = true; document.head.appendChild(captchaApiScriptEl); } function appendCheckboxes_email_submission() { var wrappingDiv = document.getElementById('email-submission'); var optInDivs = wrappingDiv.querySelectorAll('.trends-opt-in'); optInDivs.forEach(el => { el.style.display = null; if (el.getElementsByClassName('trends-opt-in-checkbox').length < 1) { var checkbox = document.createElement('input'); checkbox.setAttribute('id', 'trends_opt_in_email_submission'); checkbox.setAttribute('class', 'trends-opt-in-checkbox'); checkbox.setAttribute('type', 'checkbox'); checkbox.setAttribute('name', 'trends_opt_in'); var label = document.createElement('label'); label.setAttribute('for', 'trends_opt_in_email_submission'); label.setAttribute('class', 'trends-opt-in-text'); label.textContent = "Yes, I'd like to receive additional emails on hot business opportunities from Trends, by the Hustle"; el.appendChild(checkbox); el.appendChild(label); checkbox.click(); } }) } window.addEventListener('DOMContentLoaded', (event) => { initForm(); if (true) { appendCheckboxes_email_submission(); } }); </script> <div class="email-signup" id=email-submission> <div class="funnel-error" style="display:none;"></div> <form class="email-submission " id="exit-popup-general" action="https://cms.thehustle.co/api/v1/contacts/wordpress_create" method="post" autocomplete="email"> <div class="email-form-wrap"> <input class="funnel-source hidden-input" type="hidden" name="source" value="thehustleco"> <input class="funnel-campaign hidden-input" type="hidden" name="campaign" value="home-page"> <input class="funnel-medium hidden-input" type="hidden" name="medium" value="home-exit-popup"> <input class="funnel-form-id hidden-input" type="hidden" name="form-id" value="exit-popup-general"> <input class="funnel-referral hidden-input" type="hidden" name="referral_code"> <input class="funnel-fail-url hidden-input" type="hidden" name="fail_url" value=""> <input class="funnel-a hidden-input" type="hidden" name="a" value=""> <input class="funnel-c hidden-input" type="hidden" name="c" value=""> <input class="funnel-o hidden-input" type="hidden" name="o" value=""> <input class="funnel-oc hidden-input" type="hidden" name="oc" value=""> <input class="funnel-e hidden-input" type="hidden" name="e" value=""> <input class="funnel-f hidden-input" type="hidden" name="f" value=""> <input class="funnel-r hidden-input" type="hidden" name="r" value=""> <input class="funnel-t hidden-input" type="hidden" name="t" value=""> <input class="funnel-s1 hidden-input" type="hidden" name="s1" value=""> <input class="funnel-s2 hidden-input" type="hidden" name="s2" value=""> <input class="funnel-s3 hidden-input" type="hidden" name="s3" value=""> <input class="funnel-s4 hidden-input" type="hidden" name="s4" value=""> <input class="funnel-s5 hidden-input" type="hidden" name="s5" value=""> <input class="funnel-success-url hidden-input" type="hidden" name="success_url" value="https://thehustle.co/signup"> <input id="recaptcha-response-v3" class="g-recaptcha hidden-input" type="hidden" name="g-recaptcha-response" value=""> <div class="signup-icon" style="display:none;"> <svg width="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6Zm-2 0-8 5-8-5h16Zm0 12H4V8l8 5 8-5v10Z" fill="#848B92"></path></svg> </div> <input class="signup-email" type="email" name="email" placeholder="Your email address" required autocomplete="email"> <input class="email-submit om-trigger-conversion" type="submit" value="Join Free"> </div> <div class="validate-mistake-emails-message" style="display:none;"></div> <div class="trends-opt-in" style="display:none;"></div> <div submit-success> <template type="amp-mustache"> <p class="c-message c-message--success">Thank you for subscribing.</p> </template> </div> <div submit-error> <template type="amp-mustache"> <p class="c-message c-message--failed">Your submission failed. Please try again!</p> </template> </div> </form> </div>