Menu Zavřít

S podnikáním začali v USA, teprve pak šli do Česka. Ultimátním cílem bratrů Samkových je zdigitalizovat s Rouvy celý cyklistický svět

20. 5. 2025
Doba čtení: 6 minut
  • Petr a Jiří Samkovi začali podnikat nejdříve v USA, teprve pak se dostali do Evropy a do Česka. Dnes jejich aplikaci pro indoor cyklistiku Rouvy využívají stovky tisíc uživatelů, do pár let jich chtějí mít milion
  • Firma roste každoročně o desítky procent, její loňské tržby přesáhly 400 milionů korun. Klíčovými trhy jsou i nadále USA, Velká Británie a německy mluvící země
  • Letošek se v případě Rouvy nese ve znamení produktových inovací, marketingu a brandových aktivit. S globální expanzí by mohlo pomoci partnerství s nejsledovanějším triatlonovým podnikem na světě Ironman

Máte chuť se projet na kole podél křišťálově čistých jezer ve Švýcarsku, zkusit slavná stoupání jako Passo dello Stelvio, anebo snad některou z tras závodu Ironman? Že není čas tam zajet? Nevadí, stačí sednout doma na trenažer a zapnout cyklistickou aplikaci Rouvy bratrů Samkových.

Společnost Virtual Training, která za Rouvy stojí a do níž v roce 2021 investičně vstoupil Pale Fire Capital (PFC), zaznamenala za letošní čtyři a půl měsíce již několik výrazných úspěchů. Tak předně se už potřetí vtěsnala mezi tisícovku nejrychleji rostoucích firem v Evropě v prestižním žebříčku FT1000 britského deníku Financial Times. Dále se stala partnerem nejsledovanějšího triatlonového podniku na světě Ironman a Ironman 70.3. A aby toho nebylo málo, akvírovala svého velkého australského konkurenta, kterým je, totiž byla platforma FulGaz.

Proti proudu

Příběh Petra a Jiřího Samkových začal již v roce 2006 na Šumavě, v okolí rodného Vimperka, kde jako studenti sportovního gymnázia trávili hodiny jízdou na horských kolech. A protože je zimní příprava doma na válcích nebavila, rozhodli se ji zpestřit pomocí videozáběrů reálných tras, které simulovaly skutečnou jízdu.

Outstream Placeholder

„Postupně jsme zjišťovali, že o něco podobného je zájem a shodou okolností jsme se dostali do USA k výrobci trenažerů, s nímž jsme někdy na přelomu let 2011 a 2012 podepsali exkluzivní smlouvu o spolupráci. My jsme dělali software, oni hardware a starali se o marketing. Ovšem náš vlastní byznys s Rouvy začal až v roce 2017, kdy se trh hodně změnil a my zjistili, že můžeme spolupracovat s více výrobci. A tak jsme se rozhodli osamostatnit,“ popisuje pro Euro.cz úplné začátky Petr, který dnes firmě šéfuje, zatímco jeho bratr Jiří má na starost vývoj technologie.

A protože už ve Spojených státech působili, začali podnikat právě tam, teprve potom šli do Evropy a Česka. „Stále jsme rostli, ale pak přišel covid, který vše násobně urychlil. Ovšem tou dobou jsme už nabízeli poměrně vyspělou technologii, navíc podpořenou partnerstvím s velkými cyklistickými seriály typu Tour de Suisse, takže jsme byli připraveni. V roce 2021 jsme si řekli, že je čas využít některou z mnoha nabídek investorů – a protože PFC nabízelo skvělé marketingové know-how včetně jeho efektivní škálovatelnosti, domluvili jsme se právě s nimi,“ říká Petr Samek.

Růst a globální expanze

O tom, že šlo o dobré rozhodnutí, svědčí každoroční zhruba 40procentní růst (vloni se dokonce přehoupl přes 50 procent – pozn. red.). Celkové tržby společnosti zároveň přesáhly hodnotu 400 milionů korun, přičemž aktivní uživatelé, kterých je zhruba 300 tisíc, ujeli na trenažerech téměř 200 milionů kilometrů a nastoupali přes dvě miliardy výškových metrů. Klíčovými trhy Rouvy jsou stále USA, firmě se nicméně daří rovněž ve Velké Británii a v německy mluvících zemích (region DACH).

„Rouvy je velmi úspěšná investice, která potvrzuje, že zkušenosti Pale Fire Capital pomáhají českým firmám prosadit se na mezinárodních trzích a dosahovat globálního dopadu,“ shrnuje pro Euro.cz investor a partner PFC Jan BartaSpolečnost už několik let vykazuje meziroční růst skoro o 50 procent a díky dynamice celého sportovního segmentu i novému zaměření na triatlonovou komunitu, které se letos manifestovalo například partnerstvím s prestižní celosvětovou sérií Ironman, vnímáme Rouvy jako mimořádně perspektivní projekt s výrazným dalším potenciálem,“ podotýká.

Naživo a z první řady. Jihoafrická firma chce změnit svět sportovního streamování, čeští DEPO Ventures budou u toho
Přečtěte si také:

Naživo a z první řady. Jihoafrická firma chce změnit svět sportovního streamování, čeští DEPO Ventures budou u toho

Ambiciózní plány mají v Rouvy i na tento rok. „Chceme opět růst minimálně o 40 procent, což by se mohlo podařit i proto, že hodně investujeme do produktových inovací, stejně jako do marketingu a brandových aktivit. Rovněž partnerství s Ironmanem by nám mohlo pomoci jak s růstem uživatelů v USA a povědomí o značce na tamním trhu, tak s globální expanzí,“ věří Petr Samek.

V rámci nové spolupráce Rouvy akvírovalo již zmíněnou platformu FulGaz, kterou značka Ironman vlastnila. Podle Samka se z ní stane doplňkový produkt, protože do vývoje něčeho podobného se česká firma pouštět nechce. Australská aplikace je jednoduchá a konzervativní, natočená jen GoPro kamerou, zatímco Rouvy jde cestou interaktivity, možnosti závodění, předjíždění a společných vyjížděk. Proto budou obě firmy zatím fungovat samostatně, přičemž FulGaz bude z Česka řídit Samkův kolega Erik Hegely.

„Netflix pro cyklisty“

Jen u jedné akvizice každopádně Rouvy končit nechce, takže se dívá i po dalších možnostech, jak rozšířit portfolio. To vše navíc podporuje i vlastním vývojem, aby tak uživatel mohl z jeho produktů těžit celoročně. „Chceme přidávat tréninkové platformy, doplňkové sporty a kompenzační aktivity. Už teď lidé na našem webu najdou rady expertů na zdravou výživu a doporučení pro cyklisty od našich trenérů,“ doplňuje Petr Samek s tím, že dalším tématem, nad nímž spolu s bratrem uvažuje, je indoor běh – i s ohledem na fakt, že disciplína je součástí Ironmana.

Poslední novinkou je velký update aplikace Route Creator, která umožňuje každému nahrávat si vlastní trasy. Ty jsou zpracovány ve 3D grafice pomocí nástroje vyvinutého Rouvy – a následně je možné je sdílet s ostatními uživateli. Zmíněná aplikace obsahuje i chytrou mapu, která usnadní hledání nových lokalit. Touto cestou chtějí bratři Samkovi zdigitalizovat cyklistický svět a vybudovat jakýsi „Netflix pro cyklisty“. Výhodou oproti konkurenci je jejich technologie, která umožňuje přidat novou trasu během pár dnů, přičemž zákazníka to vyjde maximálně na pár desítek dolarů.

Současně Rouvy investuje do podpory efektivního tréninku uživatelů a přípravy na sezonu. Do konce roku budou také zdigitalizované všechny akce Ironman v rámci Global Series nebo etapové závody Haute Route. A před zimní sezonou přibudou desítky dalších destinací, třeba méně obvyklá Bolívie, Srí Lanka či střední Asie. „Ve čtvrtém kvartálu přijdeme s podporou kompetitivnosti, aby lidé mezi sebou mohli soutěžit, ale detaily si zatím nechám pro sebe,“ doplňuje Petr výčet novinek s tím, že dalším velkým cílem jejich byznysu je dosáhnout během několika let na metu jednoho milionu uživatelů.

WT100_25

Od Tour de France až po Madagaskar

Aktuálně lze s Rouvy absolvovat kolem dvou tisíc prémiových tras, takzvaných „augmented roads“, které kombinují 2D prostředí s 3D prvky a avatary. Jejich délka činí v součtu přes 30 tisíc kilometrů – tedy mnohem více, než je běžný cyklista schopen ujet za rok. Trasy jsou z celého světa, včetně exotických lokalit typu Madagaskaru či Islandu. Pro výkonnostně orientované uživatele jsou v nabídce náročné etapy závodů ze série Grand Tours, tedy konkrétně Tour de France, Giro d’Italia a La Vuelta a España, jež znají lidé z televize.

Chytré a ekologické město, které přežije i v extrémních podmínkách. V Ománu staví novou aglomeraci pro sto tisíc obyvatel
Přečtěte si také:

Chytré a ekologické město, které přežije i v extrémních podmínkách. V Ománu staví novou aglomeraci pro sto tisíc obyvatel

„Na jaře je nejoblíbenější Mallorka, kam se všichni těší, na začátku sezony pak vedou rovinaté trasy třeba z Namibie či Ománu, na podzim si lidé z USA oblíbili národní park Yellowstone,“ vyjmenovává Petr Samek s tím, že v nabídce je i mnoho míst z Česka. Třeba známé stoupání na Šumavě Svojše nebo trasy závodů jako Kolo pro život a Czech Tour, s nimiž Rouvy také spolupracuje.

  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }