{"product_id":"repflow","title":"RepFlow","description":"\u003cstyle\u003e\n.guidaio-v3 { --gv3-bg:#f6f5fb;--gv3-surface:#fff;--gv3-surface-soft:#fbfaff;--gv3-ink:#14132b;--gv3-ink-2:#2b2a4a;--gv3-muted:#6c6a8a;--gv3-line:#ecebf5;--gv3-line-2:#e0deef;--gv3-brand:#5b3df5;--gv3-brand-2:#7c63ff;--gv3-brand-soft:#efeaff;--gv3-brand-ink:#2c1d8a;--gv3-ok:#0f8a5a;--gv3-ok-soft:#e6f7ee;--gv3-warn:#b16800;--gv3-warn-soft:#fff3dc;--gv3-bad:#b3261e;--gv3-bad-soft:#fde7e6;--gv3-radius-lg:22px;--gv3-radius:16px;--gv3-radius-sm:10px;--gv3-shadow-sm:0 1px 2px rgba(20,19,43,.04);--gv3-shadow:0 12px 30px rgba(53,38,124,.07);\n  background:radial-gradient(1200px 600px at 80% -10%,rgba(124,99,255,.18),transparent 60%),radial-gradient(900px 500px at -10% 5%,rgba(91,61,245,.12),transparent 60%),var(--gv3-bg);\n  color:var(--gv3-ink);font-family:Inter,system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;\n  max-width:1240px;margin:0 auto;padding:24px 16px 64px;border-radius:var(--gv3-radius-lg);}\n.guidaio-v3 *,.guidaio-v3 *::before,.guidaio-v3 *::after{box-sizing:border-box}\n.guidaio-v3 a{color:var(--gv3-brand);text-decoration:none}.guidaio-v3 a:hover{text-decoration:underline}\n.guidaio-v3 img{max-width:100%;display:block}\n.guidaio-v3 h1,.guidaio-v3 h2,.guidaio-v3 h3,.guidaio-v3 h4{font-family:\"Space Grotesk\",Inter,sans-serif;letter-spacing:-.01em;margin:0;color:var(--gv3-ink)}\n.guidaio-v3 svg{display:inline-block;vertical-align:middle}\n.guidaio-v3 .hero{position:relative;background:radial-gradient(700px 320px at 90% 0%,rgba(124,99,255,.18),transparent 70%),linear-gradient(180deg,#fff 0%,#fbfaff 100%);border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);box-shadow:var(--gv3-shadow);padding:32px;overflow:hidden}\n.guidaio-v3 .hero-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:28px;align-items:start}\n.guidaio-v3 .hero-head{display:flex;gap:16px;align-items:flex-start}\n.guidaio-v3 .logo-tile{width:72px;height:72px;border-radius:18px;border:1px solid var(--gv3-line-2);background:#fff;box-shadow:var(--gv3-shadow-sm);display:grid;place-items:center;overflow:hidden;flex:0 0 auto}\n.guidaio-v3 .logo-tile img{width:56px;height:56px;object-fit:contain}\n.guidaio-v3 .eyebrow{display:inline-flex;align-items:center;gap:6px;color:var(--gv3-brand-ink);background:var(--gv3-brand-soft);padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}\n.guidaio-v3 h1.title{margin-top:12px;font-size:34px;line-height:1.1;color:var(--gv3-ink)}\n.guidaio-v3 .lede{margin:14px 0 0;font-size:17px;color:var(--gv3-ink-2);max-width:60ch}\n.guidaio-v3 .badge-row,.guidaio-v3 .chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}\n.guidaio-v3 .badge{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-size:12px;font-weight:600;background:#fff;border:1px solid var(--gv3-line-2);color:var(--gv3-ink-2)}\n.guidaio-v3 .badge.ok{background:var(--gv3-ok-soft);color:var(--gv3-ok);border-color:#b8e8cc}\n.guidaio-v3 .badge.warn{background:var(--gv3-warn-soft);color:var(--gv3-warn);border-color:#f1d6a3}\n.guidaio-v3 .badge.bad{background:var(--gv3-bad-soft);color:var(--gv3-bad);border-color:#f5c2c0}\n.guidaio-v3 .badge.brand{background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .tbd-row{margin-top:14px;display:grid;gap:10px}\n.guidaio-v3 .tbd-row .label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gv3-muted)}\n.guidaio-v3 .chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:13px;border:1px solid var(--gv3-line-2);background:#fff;color:var(--gv3-ink-2)}\n.guidaio-v3 .chip.cat{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}\n.guidaio-v3 .chip.dom{background:#ecfeff;color:#0e7490;border-color:#a5f3fc}\n.guidaio-v3 .chip.prof{background:#fdf4ff;color:#86198f;border-color:#f5d0fe}\n.guidaio-v3 .cta-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}\n.guidaio-v3 .btn{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:12px;font-weight:700;border:1px solid transparent;cursor:pointer;font-size:14px}\n.guidaio-v3 .btn:hover{text-decoration:none}\n.guidaio-v3 .btn-primary{background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;box-shadow:0 14px 28px rgba(91,61,245,.28)}\n.guidaio-v3 .btn-secondary{background:#fff;color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .btn-ghost{background:transparent;color:var(--gv3-ink-2);border-color:var(--gv3-line-2)}\n.guidaio-v3 .affiliate-note{margin-top:10px;font-size:12px;color:var(--gv3-muted)}\n.guidaio-v3 .snapshot{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:20px;box-shadow:var(--gv3-shadow)}\n.guidaio-v3 .snapshot h3{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--gv3-brand-ink);margin-bottom:14px}\n.guidaio-v3 .snapshot dl{margin:0;display:grid;grid-template-columns:1fr;gap:12px}\n.guidaio-v3 .snapshot .row{display:grid;grid-template-columns:1fr auto;gap:8px;padding-bottom:12px;border-bottom:1px dashed var(--gv3-line-2)}\n.guidaio-v3 .snapshot .row:last-child{border-bottom:0;padding-bottom:0}\n.guidaio-v3 .snapshot dt{color:var(--gv3-muted);font-size:13px;margin:0}\n.guidaio-v3 .snapshot dd{margin:0;text-align:right;font-weight:700;color:var(--gv3-ink);font-size:13px}\n.guidaio-v3 .snapshot dd small{display:block;font-weight:500;color:var(--gv3-muted);font-size:11px;text-align:right}\n.guidaio-v3 .price-big{font-family:\"Space Grotesk\";font-size:20px;line-height:1}\n.guidaio-v3 .toc{margin:20px 0 24px;padding:10px;background:rgba(255,255,255,.85);border:1px solid var(--gv3-line);border-radius:22px;box-shadow:var(--gv3-shadow-sm);display:flex;flex-wrap:wrap;gap:8px;overflow-x:auto}\n.guidaio-v3 .toc a{padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--gv3-brand-ink);background:#fff;white-space:nowrap;border:1px solid var(--gv3-line-2);box-shadow:var(--gv3-shadow-sm);transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease,border-color .18s ease}\n.guidaio-v3 .toc a:hover{background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;border-color:transparent;transform:translateY(-2px) scale(1.04);box-shadow:0 8px 18px rgba(91,61,245,.25);text-decoration:none}\n.guidaio-v3 .justify{text-align:justify;text-justify:inter-word;hyphens:auto}\n.guidaio-v3 a.chip,.guidaio-v3 a.chip:hover{text-decoration:none}\n.guidaio-v3 a.chip{transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;cursor:pointer}\n.guidaio-v3 a.chip:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(53,38,124,.12);filter:brightness(.96)}\n.guidaio-v3 section.block{background:var(--gv3-surface);border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:32px;margin-top:22px;box-shadow:var(--gv3-shadow-sm);scroll-margin-top:90px}\n.guidaio-v3 section.block.soft{background:var(--gv3-surface-soft)}\n.guidaio-v3 section.block .head{margin-bottom:20px}\n.guidaio-v3 section.block .eyebrow + h2{margin-top:10px}\n.guidaio-v3 section.block h2{font-size:24px;color:var(--gv3-ink)}\n.guidaio-v3 section.block .lead{margin-top:8px;color:var(--gv3-muted);max-width:70ch}\n.guidaio-v3 .grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.guidaio-v3 .grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n.guidaio-v3 .rich p{margin:0 0 14px}.guidaio-v3 .rich p:last-child{margin:0}\n.guidaio-v3 ul.brand-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}\n.guidaio-v3 ul.brand-list li{position:relative;padding-left:26px;color:var(--gv3-ink-2)}\n.guidaio-v3 ul.brand-list li::before{content:\"\";position:absolute;left:0;top:9px;width:14px;height:14px;border-radius:999px;background:var(--gv3-brand-soft);box-shadow:inset 0 0 0 4px var(--gv3-brand)}\n.guidaio-v3 ol.steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px}\n.guidaio-v3 ol.steps li{counter-increment:s;position:relative;padding-left:42px;color:var(--gv3-ink-2);min-height:30px}\n.guidaio-v3 ol.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:30px;height:30px;border-radius:999px;background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;box-shadow:0 6px 14px rgba(91,61,245,.25)}\n.guidaio-v3 .feature-card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:16px;background:#fff;display:grid;gap:8px}\n.guidaio-v3 .feature-card .icbox{width:36px;height:36px;border-radius:12px;background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);display:grid;place-items:center}\n.guidaio-v3 .feature-card .ftitle{font-weight:700;color:var(--gv3-ink);font-size:15px}\n.guidaio-v3 .feature-card .fbody{color:var(--gv3-muted);font-size:13px}\n.guidaio-v3 .pc{border-radius:var(--gv3-radius);padding:20px;border:1px solid var(--gv3-line)}\n.guidaio-v3 .pc.pros{background:var(--gv3-ok-soft);border-color:#b8e8cc}\n.guidaio-v3 .pc.cons{background:var(--gv3-bad-soft);border-color:#f5c2c0}\n.guidaio-v3 .pc h3{font-size:17px;display:flex;align-items:center;gap:8px;margin-bottom:12px}\n.guidaio-v3 .pc.pros h3{color:var(--gv3-ok)}.guidaio-v3 .pc.cons h3{color:var(--gv3-bad)}\n.guidaio-v3 .pc ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}\n.guidaio-v3 .pc li{display:flex;gap:8px;align-items:flex-start;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .pc li svg{flex:0 0 auto;margin-top:3px}\n.guidaio-v3 .pc.pros li svg{color:var(--gv3-ok)}.guidaio-v3 .pc.cons li svg{color:var(--gv3-bad)}\n.guidaio-v3 .bestnot{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .bestnot .card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px;background:#fff}\n.guidaio-v3 .bestnot h3{display:flex;align-items:center;gap:8px;font-size:17px;margin-bottom:12px}\n.guidaio-v3 .bestnot .for h3{color:var(--gv3-ok)}.guidaio-v3 .bestnot .not h3{color:var(--gv3-warn)}\n.guidaio-v3 .plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n.guidaio-v3 .plan{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:22px;background:#fff;display:grid;gap:10px;position:relative}\n.guidaio-v3 .plan.featured{border-color:#c7baff;background:linear-gradient(180deg,#fff 0%,#f7f3ff 100%);box-shadow:var(--gv3-shadow)}\n.guidaio-v3 .plan .pill{position:absolute;top:-12px;right:14px;background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;padding:5px 9px;border-radius:999px;text-transform:uppercase}\n.guidaio-v3 .plan .pname{font-family:\"Space Grotesk\";font-weight:700;font-size:17px}\n.guidaio-v3 .plan .pprice{font-family:\"Space Grotesk\";font-size:24px;font-weight:700}\n.guidaio-v3 .plan .pprice small{font-size:13px;font-weight:500;color:var(--gv3-muted)}\n.guidaio-v3 .plan ul{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:8px}\n.guidaio-v3 .plan ul li{display:flex;gap:8px;align-items:flex-start;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .plan ul li svg{color:var(--gv3-brand);flex:0 0 auto;margin-top:3px}\n.guidaio-v3 .pricing-extras{margin-top:16px;display:grid;gap:10px}\n.guidaio-v3 .offer{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:#fff7e6;border:1px solid #f1d6a3;color:var(--gv3-warn);font-size:14px}\n.guidaio-v3 .offer svg{flex:0 0 auto;margin-top:2px}\n.guidaio-v3 .trust-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}\n.guidaio-v3 .trust-grid .col{display:grid;gap:14px}\n.guidaio-v3 .trust-card{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px}\n.guidaio-v3 .trust-card h3{font-size:15px;margin-bottom:10px}\n.guidaio-v3 .kv{display:grid;grid-template-columns:180px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--gv3-line)}\n.guidaio-v3 .kv:first-child{border-top:0;padding-top:0}\n.guidaio-v3 .kv .k{color:var(--gv3-muted);font-size:13px}\n.guidaio-v3 .kv .v{color:var(--gv3-ink);font-size:14px}\n.guidaio-v3 .availability{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .availability .card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);background:#fff;padding:18px}\n.guidaio-v3 .flag-row{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .flag{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;background:#fff;border:1px solid var(--gv3-line-2);font-size:13px;color:var(--gv3-ink-2)}\n.guidaio-v3 section.block.watch{background:#fffaf0;border:1px solid #f1d6a3}\n.guidaio-v3 section.block.watch .head h2{color:var(--gv3-warn)}\n.guidaio-v3 .setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .setup-card{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px}\n.guidaio-v3 .integrations{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .integration{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:12px;background:#fff;border:1px solid var(--gv3-line-2);color:var(--gv3-ink-2);font-size:13px;font-weight:600}\n.guidaio-v3 .company-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}\n.guidaio-v3 .company-card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);background:#fff;padding:20px}\n.guidaio-v3 .timeline{display:grid;gap:8px;margin:8px 0 0}\n.guidaio-v3 .timeline .ev{padding:10px 14px;border-radius:12px;background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px}\n.guidaio-v3 .social-row{display:flex;gap:8px;flex-wrap:wrap}\n.guidaio-v3 .social{width:36px;height:36px;border-radius:12px;border:1px solid var(--gv3-line-2);background:#fff;display:grid;place-items:center;color:var(--gv3-ink-2)}\n.guidaio-v3 .social:hover{background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .res-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}\n.guidaio-v3 .res{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid var(--gv3-line);background:#fff;color:var(--gv3-ink-2);font-size:13px}\n.guidaio-v3 .res:hover{border-color:#d6cdfb;background:#fbfaff;text-decoration:none}\n.guidaio-v3 .res svg{color:var(--gv3-brand);flex:0 0 auto}\n.guidaio-v3 .res .url{color:var(--gv3-muted);font-size:11px;word-break:break-all}\n.guidaio-v3 .res .res-text{display:grid}\n.guidaio-v3 .alts{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .alt{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:14px;background:#fff;border:1px solid var(--gv3-line-2);font-weight:600;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .alt .av{width:24px;height:24px;border-radius:8px;background:linear-gradient(135deg,#c7baff 0%,#efeaff 100%);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--gv3-brand-ink)}\n.guidaio-v3 .faq{display:grid;gap:10px}\n.guidaio-v3 .faq details{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:14px 16px}\n.guidaio-v3 .faq summary{cursor:pointer;list-style:none;font-weight:700;color:var(--gv3-ink);display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:15px}\n.guidaio-v3 .faq summary::-webkit-details-marker{display:none}\n.guidaio-v3 .faq summary svg{color:var(--gv3-brand)}\n.guidaio-v3 .faq .ans{color:var(--gv3-muted);margin-top:10px;font-size:14px}\n.guidaio-v3 section.block.conclusion{background:radial-gradient(700px 320px at 0% 0%,rgba(124,99,255,.18),transparent 60%),linear-gradient(135deg,#1c163a 0%,#2c1d8a 100%);color:#fff;border-color:#2c1d8a}\n.guidaio-v3 section.block.conclusion .head h2{color:#fff}\n.guidaio-v3 section.block.conclusion .lead,.guidaio-v3 section.block.conclusion .rich p{color:rgba(255,255,255,.88)}\n.guidaio-v3 section.block.conclusion .rich strong,.guidaio-v3 section.block.conclusion .rich b{color:#fff}\n.guidaio-v3 section.block.conclusion .eyebrow{background:rgba(255,255,255,.14);color:#fff}\n.guidaio-v3 section.block.conclusion .btn-secondary{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.25)}\n@media (max-width:1080px){.guidaio-v3 .hero-grid,.guidaio-v3 .trust-grid,.guidaio-v3 .company-grid,.guidaio-v3 .setup-grid,.guidaio-v3 .availability{grid-template-columns:1fr}.guidaio-v3 .grid-3,.guidaio-v3 .res-grid,.guidaio-v3 .plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media (max-width:700px){.guidaio-v3{padding:12px 8px 48px}.guidaio-v3 .hero{padding:20px}.guidaio-v3 section.block{padding:20px}.guidaio-v3 .grid-2,.guidaio-v3 .grid-3,.guidaio-v3 .res-grid,.guidaio-v3 .plan-grid,.guidaio-v3 .bestnot,.guidaio-v3 .availability{grid-template-columns:1fr}.guidaio-v3 h1.title{font-size:28px}}\n\u003c\/style\u003e\n\u003cdiv class=\"guidaio-v3\" itemscope itemtype=\"https:\/\/schema.org\/SoftwareApplication\"\u003e\n\u003cmeta itemprop=\"name\" content=\"RepFlow: AI Workout Tracker \u0026amp; Training Plan Builder\"\u003e\n\u003cmeta itemprop=\"description\" content=\"RepFlow logs every resistance and cardio set, generates periodized AI training plans and tracks consistency. Swiss-run, free forever, Pro from CHF 3\/month.\"\u003e\n\u003cdiv class=\"hero\"\u003e\u003cdiv class=\"hero-grid\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"hero-head\"\u003e\n\u003cdiv class=\"logo-tile\"\u003e\u003cimg src=\"https:\/\/pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev\/e97c41af-cfcd-43bb-8523-710ebdf3b50f\/id-preview-b77672eb--7c184c24-0406-414e-9208-75fc243ea681.lovable.app-1776800091990.png\" alt=\"RepFlow logo\" itemprop=\"image\" loading=\"lazy\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"name-block\"\u003e\n\u003cspan class=\"eyebrow\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Fitness Health · Health Fitness\u003c\/span\u003e\u003ch1 class=\"title\" itemprop=\"name\"\u003eRepFlow\u003c\/h1\u003e\n\u003cp class=\"lede justify\" itemprop=\"description\"\u003e\u003cb\u003eRepFlow\u003c\/b\u003e is a Swiss web app that logs every resistance and cardio set, then builds a periodized training protocol from your body data, schedule and goals. Analytics track volume, frequency and consistency. The free tier is permanent.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"badge-row\"\u003e\n\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Active\u003c\/span\u003e\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e GDPR compliant\u003c\/span\u003e\u003cspan class=\"badge brand\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 12 20 22 4 22 4 12\"\u003e\u003c\/polyline\u003e\u003crect x=\"2\" y=\"7\" width=\"20\" height=\"5\"\u003e\u003c\/rect\u003e\u003cline x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\"\u003e\u003c\/line\u003e\u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Free plan\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"22 7 13.5 15.5 8.5 10.5 2 17\"\u003e\u003c\/polyline\u003e\u003cpolyline points=\"16 7 22 7 22 13\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e Freemium\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\"\u003e\u003c\/path\u003e\u003cpath d=\"m2 22 3-3\"\u003e\u003c\/path\u003e\u003cpath d=\"M7.5 13.5 10 11\"\u003e\u003c\/path\u003e\u003cpath d=\"M10.5 16.5 13 14\"\u003e\u003c\/path\u003e\u003cpath d=\"m18 3-4 4h6l-4 4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e No public API\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\u003e\u003c\/path\u003e\u003ccircle cx=\"9\" cy=\"7\" r=\"4\"\u003e\u003c\/circle\u003e\u003cpolyline points=\"16 11 18 13 22 9\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e 16+\u003c\/span\u003e\u003cspan class=\"badge brand\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Verified by Guidaio\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"tbd-row\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"label\"\u003eCategories\u003c\/div\u003e\n\u003cdiv class=\"chip-row\"\u003e\n\u003ca class=\"chip cat\" href=\"\/collections\/fitness-health\"\u003eFitness Health\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/health-fitness\"\u003eHealth Fitness\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/lifestyle-wellness\"\u003eLifestyle Wellness\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"label\"\u003eTarget domains\u003c\/div\u003e\n\u003cdiv class=\"chip-row\"\u003e\n\u003ca class=\"chip dom\" href=\"\/collections\/sports-fitness\"\u003eSports Fitness\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/freelancers-entrepreneurs\"\u003eFreelancers Entrepreneurs\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cta-row\"\u003e\u003ca class=\"btn btn-primary\" href=\"https:\/\/repflow.ch\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M15 3h6v6\"\u003e\u003c\/path\u003e\u003cpath d=\"M10 14 21 3\"\u003e\u003c\/path\u003e\u003cpath d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Discover RepFlow\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"snapshot\"\u003e\u003ch3\u003eSnapshot\u003c\/h3\u003e\n\u003cdl\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003ePricing model\u003c\/dt\u003e\n\u003cdd\u003eFreemium\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eStarts at\u003c\/dt\u003e\n\u003cdd\u003e\n\u003cspan class=\"price-big\"\u003eCHF3.00\u003c\/span\u003e\u003csmall\u003eCHF · per month\u003c\/small\u003e\n\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eFree plan\u003c\/dt\u003e\n\u003cdd\u003eYes\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eFree trial\u003c\/dt\u003e\n\u003cdd\u003eNo\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eAPI available\u003c\/dt\u003e\n\u003cdd\u003eNo\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eDeployment\u003c\/dt\u003e\n\u003cdd\u003eWeb app\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eLanguages\u003c\/dt\u003e\n\u003cdd\u003eEnglish\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eTool status\u003c\/dt\u003e\n\u003cdd\u003eActive\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eMinimum age\u003c\/dt\u003e\n\u003cdd\u003e16+\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eCountry of origin\u003c\/dt\u003e\n\u003cdd\u003e🇨🇭 Switzerland\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003c\/dl\u003e\u003c\/aside\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cnav class=\"toc\" aria-label=\"Page sections\"\u003e\u003ca href=\"#what\"\u003eWhat is it\u003c\/a\u003e\u003ca href=\"#bestnot\"\u003eWhen to use RepFlow \/ When not to\u003c\/a\u003e\u003ca href=\"#how\"\u003eHow to use\u003c\/a\u003e\u003ca href=\"#proscons\"\u003ePros \u0026amp; Cons\u003c\/a\u003e\u003ca href=\"#pricing\"\u003ePricing\u003c\/a\u003e\u003ca href=\"#trust\"\u003eTrust \u0026amp; Privacy\u003c\/a\u003e\u003ca href=\"#watch\"\u003eWatch-outs\u003c\/a\u003e\u003ca href=\"#setup\"\u003eSetup \u0026amp; Integrations\u003c\/a\u003e\u003ca href=\"#company\"\u003eCompany\u003c\/a\u003e\u003ca href=\"#resources\"\u003eResources\u003c\/a\u003e\u003ca href=\"#faq\"\u003eFAQ\u003c\/a\u003e\u003ca href=\"#conclusion\"\u003eConclusion\u003c\/a\u003e\u003c\/nav\u003e\n\u003csection class=\"block\" id=\"what\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eOverview\u003c\/span\u003e\u003ch2\u003eWhat is RepFlow?\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"grid-2\"\u003e\n\u003cdiv class=\"rich justify\"\u003e\n\u003cp\u003eRepFlow is a web application for people who record their training rather than remember it. The publisher describes it as a \u003ci\u003eHuman Performance Diagnostic Interface\u003c\/i\u003e and, more usefully, as a deliberately small tool with a sharp feature set. It is built around three blocks: an AI protocol engine, a universal set logger and a layer of training analytics.\u003c\/p\u003e\n\u003cp\u003eThe engine writes a periodized weekly plan that rotates muscle groups and is tuned to your experience, available equipment and dominant objective. Six goals can be combined rather than chosen one at a time — hypertrophy, strength, endurance, fat loss, athleticism or general fitness. Crucially, the plan is bounded by reality: you declare which days you can train and how long each session may run, and the engine never overflows that. Prescriptions come out concrete — sets, reps, load and a target effort level.\u003c\/p\u003e\n\u003cp\u003eThe logger is what distinguishes RepFlow from a barbell-only tracker. A single active-session screen handles barbell work, outdoor cardio and machine cardio, with fields that change by themselves: reps and kilograms for lifting, distance and duration for a run, level, speed and incline for a treadmill or an erg. Running, cycling, rowing, treadmill, stationary bike and stairmaster are all covered. Effort is expressed in plain words — Easy, Moderate, Hard, Max — with a contextual hint, instead of an unexplained numeric scale.\u003c\/p\u003e\n\u003cp\u003eSet a date for a marathon, a hyrox, a triathlon or a meet and the plan reorganises itself into base, build, peak and taper, overriding your default mix until that day. Analytics then close the loop: a twelve-month consistency heatmap, seven- and thirty-day volume rollups, total minutes, average sessions per week and days since your last session. Live per-session and per-exercise timers, with a rest countdown, feed the same history.\u003c\/p\u003e\n\u003cp\u003eAccess is browser-based only, through an account created on the sign-in page. There is \u003cb\u003eno API and no mobile app\u003c\/b\u003e, and no integration with watches or sensors: everything is entered by hand. The publisher is a registered Swiss sole proprietorship based in Zürich, and leans on that — Swiss hosting, FADP compliance, data you can export or delete, never sold.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3 style=\"font-size:14px;margin-bottom:12px;color:var(--gv3-brand-ink);text-transform:uppercase;letter-spacing:.08em\"\u003eWhat it does\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eGenerate a periodized weekly training protocol from your profile, equipment and goals\u003c\/li\u003e\n\u003cli\u003eLog resistance, outdoor cardio and machine cardio sets in one adaptive session screen\u003c\/li\u003e\n\u003cli\u003eRebuild the whole plan toward a dated event through base, build, peak and taper phases\u003c\/li\u003e\n\u003cli\u003eTrack volume, frequency and consistency across seven-day, thirty-day and twelve-month views\u003c\/li\u003e\n\u003cli\u003eCap planning to the exact days and session lengths you are actually available\u003c\/li\u003e\n\u003cli\u003eRun live session and rest timers while recording reps, load and perceived effort\u003c\/li\u003e\n\u003cli\u003eExport or permanently delete your entire training history\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"bestnot\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eAudience\u003c\/span\u003e\u003ch2\u003eWhen to use RepFlow \/ When not to\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA quick filter to help you decide if RepFlow is the right fit.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bestnot\"\u003e\n\u003cdiv class=\"card for\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M7 10v12\"\u003e\u003c\/path\u003e\u003cpath d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e When to use RepFlow\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eLifters who record every single set and want to see progressive overload rather than a streak counter\u003c\/li\u003e\n\u003cli\u003eAthletes preparing a dated event — marathon, hyrox, triathlon or a powerlifting meet — who need the plan to rebuild itself toward that date\u003c\/li\u003e\n\u003cli\u003eHybrid trainees mixing barbell work with running, rowing or machine cardio in the same week\u003c\/li\u003e\n\u003cli\u003eCoaches and small training groups, on the Team tier: up to ten athletes, a coach dashboard and a shared protocol library\u003c\/li\u003e\n\u003cli\u003ePeople with a rigid weekly schedule, since the engine only plans on the days and session lengths they declare\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"card not\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M17 14V2\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e When not to use RepFlow\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eAnyone looking for medical or rehabilitation guidance: the terms send you to a healthcare professional and place the risk on you\u003c\/li\u003e\n\u003cli\u003eDevelopers or teams needing an API — none exists, and no documentation subdomain responds\u003c\/li\u003e\n\u003cli\u003eUsers who want a phone app: RepFlow runs in the browser only, with no iOS or Android release\u003c\/li\u003e\n\u003cli\u003eAthletes who expect their watch, chest strap or Apple Health data to sync automatically — every set is typed in by hand\u003c\/li\u003e\n\u003cli\u003eNon-English speakers and under-16s: the interface ships in English only, and the terms set a minimum age of sixteen\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"how\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eGet started\u003c\/span\u003e\u003ch2\u003eHow to use RepFlow\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA typical end-to-end flow, from setup to results.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003col class=\"steps\"\u003e\n\u003cli\u003eCreate an account on the sign-in page with an email address and a password — no card is required for the free tier\u003c\/li\u003e\n\u003cli\u003eCalibrate your profile: body mass, training experience, available equipment, injuries and your primary goal\u003c\/li\u003e\n\u003cli\u003eAdd an upcoming event and its date if you are training toward one\u003c\/li\u003e\n\u003cli\u003eDeclare your schedule — which days of the week you train, and how long each session can last\u003c\/li\u003e\n\u003cli\u003eGenerate your protocol and let the engine write a periodized week with concrete sets, reps, loads and effort targets\u003c\/li\u003e\n\u003cli\u003eOpen the active session screen on training day and log each set as you complete it\u003c\/li\u003e\n\u003cli\u003eUse the rest countdown and the session timer to pace the workout\u003c\/li\u003e\n\u003cli\u003eReview the consistency matrix and the volume rollups to see what is actually progressing\u003c\/li\u003e\n\u003cli\u003eAdjust the profile, schedule or event date and regenerate whenever your circumstances change\u003c\/li\u003e\n\u003cli\u003eRequest a full export by email, or delete the account from settings, whenever you want your data back or gone\u003c\/li\u003e\n\u003c\/ol\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"proscons\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eQuick read\u003c\/span\u003e\u003ch2\u003ePros \u0026amp; Cons\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"grid-2\"\u003e\n\u003cdiv class=\"pc pros\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Pros\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eOne logger for barbell work and cardio alike, with fields that adapt to the exercise instead of forcing everything into a sets-and-reps mould\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eEvent periodization is automatic: set the date and the plan restructures itself\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ePlans are capped by the days and session lengths you actually have, not by an ideal week\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eThe free tier is permanent and card-free, with unlimited set logging rather than a crippled sample\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eAn unusually low paid entry point at CHF 3 per month, VAT included, backed by a 30-day money-back guarantee\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eSix dated legal documents — imprint, privacy, terms, refunds, cookies and a GDPR notice — where most tools of this size publish none\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eThe publisher's identity checks out: the name and address in the imprint match the Swiss commercial register and the federal UID register word for word\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pc cons\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"\u003e\u003c\/line\u003e\u003c\/svg\u003e Cons\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo API and no mobile app: the product is a browser tab and nothing else\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo integration with watches, chest straps or health platforms, so every set is typed manually\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eOnly one sub-processor is actually named — the payment provider; the host, the AI inference provider and the email service stay generic categories\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eThe hosting claim is inconsistent: 'Hosted in Switzerland' on the marketing pages, 'the EU\/Switzerland region' in the FAQ, privacy policy and GDPR notice\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo EU Article 27 representative is designated even though the GDPR notice explicitly addresses EEA users\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo security certification of any kind: FADP compliance is self-declared, with no certificate number and no certifying body\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eThe publisher is a one-person sole proprietorship, so continuity of the service rests on a single individual\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"pricing\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003ePricing\u003c\/span\u003e\u003ch2\u003ePricing \u0026amp; Plans\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cp class=\"rich justify\" style=\"color:var(--gv3-ink-2);margin:0 0 18px;max-width:80ch\"\u003eA permanent free plan is available and requires no payment card. The lowest paid entry point is the Pro plan at \u003cb\u003eCHF 3 per month\u003c\/b\u003e, billed monthly in Swiss francs. Prices are published with VAT included where applicable, which is unusual and means the figure is not directly comparable with an excluding-tax price. The Team plan costs CHF 29 per month. There is no annual commitment and no annual discount; subscriptions can be cancelled at any time, and a 30-day money-back guarantee applies to all paid plans. Payment, invoicing, tax and refunds are handled by Paddle.com Market Ltd as Merchant of Record.\u003c\/p\u003e\n\u003cdiv class=\"plan-grid\"\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eFree — CHF 0 forever\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eunlimited set logging\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003emanual workout plans\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003elast 30 days of analytics\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eone active protocol\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eresistance and cardio modes\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan featured\"\u003e\n\u003cspan class=\"pill\"\u003eMost popular\u003c\/span\u003e\u003cdiv class=\"pname\"\u003ePro — CHF 3 per month, marked as the most popular tier\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eeverything in Free plus AI protocol generation\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eevent periodization\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003efull analytics history\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003emachine cardio and email support\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eTeam — CHF 29 per month\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eeverything in Pro plus up to 10 athletes\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ea coach dashboard\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ea shared protocol library and priority support\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pricing-extras\"\u003e\n\u003cdiv class=\"offer\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"\u003e\u003c\/path\u003e\u003cpath d=\"m9 14 6-6\"\u003e\u003c\/path\u003e\u003ccircle cx=\"9.5\" cy=\"9.5\" r=\".5\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"14.5\" cy=\"14.5\" r=\".5\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e\u003cdiv\u003e\n\u003cb\u003eSpecial offers\u003c\/b\u003e — A permanent free plan advertised as CHF 0 forever, with unlimited set logging and no payment card required · A 30-day money-back guarantee on every paid plan, counted from the initial order date and processed by Paddle · A 14-day right of withdrawal for EU consumers, unless immediate access to the paid features has been expressly requested · No discount scheme is published — no student, unemployed or non-profit pricing, no promotional code and no annual reduction\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"affiliate-note\"\u003ePrices and plans listed above may evolve. Always check the official pricing page before subscribing.\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"trust\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eTrust \u0026amp; Privacy\u003c\/span\u003e\u003ch2\u003eData, GDPR \u0026amp; hosting\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA consolidated view of how RepFlow handles your data.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-grid\"\u003e\n\u003cdiv class=\"col\"\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eGDPR overview\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0\"\u003eImplementation is concrete and documented. Beyond a privacy policy written for the Swiss FADP, RepFlow publishes a separate GDPR notice covering the EEA, the United Kingdom and Switzerland. It cites its legal bases by article — 6(1)(b) contract, 6(1)(f) legitimate interest, 6(1)(c) legal obligation, 6(1)(a) consent — and lists eight rights with their articles, from access (15) to complaint (77), exercised by email with a thirty-day response commitment. Transfers outside the EEA rely on the Commission's Standard Contractual Clauses. The notice also states that AI plan generation produces no decision within the meaning of Article 22.\n\nOne gap is worth naming: \u003cb\u003eno Article 27 EU representative is designated\u003c\/b\u003e, although the publisher is established outside the Union and addresses EEA users directly.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eWho owns the data?\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 12px\"\u003eThe publisher, \u003cb\u003eAmpersand Labs by Davide Morotti\u003c\/b\u003e of Flüelastrasse 10, 8048 Zürich, is the data controller, reachable at hello@repflow.ch. The terms are explicit that you keep every right over the data you submit; the company receives only a limited licence to process it in order to run the service for you — storing your logs, computing your analytics and generating your plans. Nothing in the documents grants a broader commercial use, and the privacy policy states plainly that personal data is never sold. Sharing is limited to vetted sub-processors bound by data-processing agreements. The Swiss Federal Data Protection and Information Commissioner is named as the supervisory authority.\u003c\/p\u003e\n\u003ch3\u003eReuse rights\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0\"\u003eYou may reuse your own data freely and without asking: the terms confirm you retain all rights to what you submit, and the FAQ commits to supplying a full export on request to hello@repflow.ch, delivered within thirty days. Deletion works the same way — from the profile settings or by email, with erasure inside thirty days.\n\nThe company's own use is bounded. It processes your data to deliver the service, to compute the analytics you see on your own dashboard, to prevent fraud and abuse, to meet Swiss legal obligations, and — only with a separate consent you can withdraw — to send marketing. When a plan is generated, a subset of your profile and schedule is sent to an AI inference provider acting as a processor; the policy states that no directly identifying information such as your email or full name travels with that request, and that the provider is contractually barred from training its models on it.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eData retention \u0026amp; training\u003c\/h3\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eRetention summary\u003c\/div\u003e\n\u003cdiv class=\"v justify\"\u003eAccount and training data are kept for as long as the account exists — there is no automatic expiry while you keep using the service. Technical logs, which include IP addresses and access records, are held for a maximum of 90 days. Backups run on a rolling 30-day window.\n\nDeleting the account triggers permanent erasure of personal data within 30 days, with the usual reservation for anything the law requires to be kept longer, such as tax records. You can delete from the profile settings or by emailing the publisher. A full export of your data can be requested the same way and is supplied within 30 days. No anonymization or pseudonymization scheme is described beyond the statement that identifying details are withheld from AI plan generation requests.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eTrains on customer data\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e No\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eSubprocessors disclosed\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e Yes\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eGDPR contact\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003ca href=\"mailto:hello@repflow.ch\"\u003ehello@repflow.ch\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col\"\u003e\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eHosting summary\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 14px\"\u003eThe publisher is Swiss and leans on that. The home page and the features page state plainly that RepFlow is hosted in Switzerland and FADP-compliant. The legal documents are less absolute: the FAQ speaks of managed cloud infrastructure \u003ci\u003ein the EU\/Switzerland region\u003c\/i\u003e, and the GDPR notice says personal data is stored in that same region. The two formulations are not interchangeable, and the difference is never explained.\n\nNo hosting provider, cloud region or data centre is named anywhere. The privacy policy adds that some sub-processors may process data outside Switzerland or the EU, in which case the company relies on the EU Standard Contractual Clauses and their Swiss FDPIC equivalents, plus any additional safeguards required by the European Data Protection Board.\n\nOf the sub-processors that touch the data, only the payment provider, Paddle.com Market Ltd, is identified. The cloud host, the AI inference provider and the email delivery service are listed as categories rather than companies, which leaves the jurisdiction claim impossible to verify from the published material alone.\u003c\/p\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eHosting countries\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cdiv class=\"flag-row\"\u003e\u003cspan class=\"flag\"\u003e🇨🇭 Switzerland\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eHosting regions\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cdiv class=\"flag-row\"\u003e\u003cspan class=\"flag\"\u003eEU\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block watch\" id=\"watch\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eWatch-outs\u003c\/span\u003e\u003ch2\u003eThings to keep in mind\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eRisks and trade-offs to weigh before adopting RepFlow.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cul class=\"brand-list\" style=\"grid-template-columns:repeat(2,1fr);display:grid;gap:12px 24px\"\u003e\n\u003cli\u003eThe publisher was registered in May 2018 but RepFlow itself is a version 1.0 product whose legal documents all date from April 2026 — the company's age says nothing about the maturity of this tool\u003c\/li\u003e\n\u003cli\u003eThe domain was registered in 2014, before the business existed, and has never been captured by the Internet Archive: a long-dormant name put back into service, not an established site\u003c\/li\u003e\n\u003cli\u003eThe home page claims 1.2M+ sets logged, 12k active athletes and 99.9% engine uptime with no source, and the three testimonials are reduced to initials with no verifiable affiliation\u003c\/li\u003e\n\u003cli\u003eHosting is described as Switzerland on the marketing pages but as the EU\/Switzerland region in the legal ones, and no host is named — the Swiss-privacy argument cannot be independently verified\u003c\/li\u003e\n\u003cli\u003eAI-generated training plans are explicitly not medical advice; following prescribed loads and effort targets without judgement carries a real injury risk, especially with a pre-existing condition\u003c\/li\u003e\n\u003cli\u003eProgress dashboards and streak counters can become the point rather than the training: a consistency heatmap rewards showing up, not recovering, and the tool has no way to tell you to stop\u003c\/li\u003e\n\u003cli\u003eBody metrics, injuries and full training history sit with a single-owner business with no security certification, so the practical guarantee rests on one person's diligence\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"setup\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eSetup\u003c\/span\u003e\u003ch2\u003eSetup \u0026amp; Integrations\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"setup-grid\"\u003e\n\u003cdiv class=\"setup-card\"\u003e\n\u003ch3 style=\"font-size:15px;margin-bottom:10px\"\u003eTechnical difficulty\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 14px\"\u003eVery low. There is nothing to install and nothing to connect: RepFlow runs in the browser, and an account is created with an email address and a password. The free tier asks for no payment card. Onboarding is a four-step form — body metrics, experience, equipment, injuries and goal, then the training days and session lengths you can commit to — after which the plan generates itself. The publisher advertises four minutes from signup to first session. No API key, no device pairing and no integration setup is involved, because none is offered.\u003c\/p\u003e\n\u003ch3 style=\"font-size:15px;margin:14px 0 10px\"\u003eDeployment\u003c\/h3\u003e\n\u003cdiv class=\"flag-row\"\u003e\u003cspan class=\"flag\"\u003eWeb app\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"setup-card\"\u003e\n\u003ch3 style=\"font-size:15px;margin:14px 0 10px\"\u003eSupported languages\u003c\/h3\u003e\n\u003cdiv class=\"flag-row\"\u003e\u003cspan class=\"flag\"\u003eEnglish\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"company\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eCompany\u003c\/span\u003e\u003ch2\u003eBehind RepFlow\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"company-card\"\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eCompany name\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cb\u003eAmpersand Labs by Davide Morotti\u003c\/b\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eFounded\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e22\/05\/2018\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eCountry of origin\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇨🇭 Switzerland\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eHeadquarters\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003eFlüelastrasse 10, 8048 Zürich, Switzerland\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eUBO\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003eDavide Morotti\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eUBO country\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇨🇭 Switzerland\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eDomain registrar country\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇨🇭 Switzerland\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eLegal contact\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003ca href=\"mailto:hello@repflow.ch\"\u003ehello@repflow.ch\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eSupport contact\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003ca href=\"mailto:hello@repflow.ch\"\u003ehello@repflow.ch\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"resources\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eOfficial links\u003c\/span\u003e\u003ch2\u003eResources\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eAll the official URLs gathered for verification and reference.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"res-grid\"\u003e\n\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"\u003e\u003c\/path\u003e\u003cpath d=\"M2 12h20\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eHomepage\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/pricing\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"2\" x2=\"12\" y2=\"22\"\u003e\u003c\/line\u003e\u003cpath d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003ePricing\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\/pricing\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/features\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolygon points=\"12 2 2 7 12 12 22 7 12 2\"\u003e\u003c\/polygon\u003e\u003cpolyline points=\"2 17 12 22 22 17\"\u003e\u003c\/polyline\u003e\u003cpolyline points=\"2 12 12 17 22 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eFeatures\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\/features\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/contact\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003crect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"m22 7-10 5L2 7\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eContact\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\/contact\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/terms\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 2 14 8 20 8\"\u003e\u003c\/polyline\u003e\u003cline x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\u003e\u003c\/line\u003e\u003cline x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\u003e\u003c\/line\u003e\u003cpolyline points=\"10 9 9 9 8 9\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eTerms\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\/terms\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/repflow.ch\/privacy\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003ePrivacy policy\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003erepflow.ch\/privacy\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"faq\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eFAQ\u003c\/span\u003e\u003ch2\u003eFrequently asked questions\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"faq\"\u003e\n\u003cdetails\u003e\u003csummary\u003eDo I need a coach to get a usable plan? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNo. The AI engine writes a complete plan from the profile you fill in. If you would rather do it yourself, manual plans are available on every tier, including the free one.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eDoes RepFlow handle cardio as well as lifting? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eYes. Running, cycling, rowing, treadmill, stationary bike and stairmaster are all supported, and the logging fields change by exercise — distance, speed, incline and level appear where they make sense.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCan I train toward a specific race or competition? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eYes. Set the event type and date in your profile and the engine periodizes the plan toward it, moving through base, build, peak and taper and overriding your default training mix until the date.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eIs the free tier a trial that expires? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNo. The Free plan is permanent and needs no payment card. It covers unlimited set logging, manual plans, one active protocol and the last thirty days of analytics. There is no time-limited trial of the paid tiers.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat does the cheapest paid plan cost? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003ePro is CHF 3 per month, billed monthly in Swiss francs with VAT included where applicable. Team is CHF 29 per month. All paid plans carry a 30-day money-back guarantee.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat happens to my logs if I cancel? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003ePro and Team run month to month. Cancelling stops future renewals, access continues to the end of the current billing period, and the account is then downgraded to Free — your logs stay.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhere is my data stored? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eOn managed cloud infrastructure in what the publisher calls the EU\/Switzerland region. The marketing pages say Switzerland outright. No hosting provider or data centre is named, and some sub-processors may operate outside Switzerland or the EU under Standard Contractual Clauses.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eIs my training data used to train AI models? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eThe privacy policy states that only a subset of profile and schedule data is sent to an AI inference provider, without your email or full name, and that the provider is contractually prohibited from using it to train its models.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eIs there a mobile app or an API? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNeither. RepFlow is a web application only. No iOS or Android release exists under the publisher's name, and no public API or developer documentation is published.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eHow do I get my data out, or delete it? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eEmail hello@repflow.ch for a full export, delivered within thirty days. To delete, remove your profile from settings or ask by email; personal data is erased within thirty days, subject to any longer legal retention.\u003c\/div\u003e\u003c\/details\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block conclusion\" id=\"conclusion\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eConclusion\u003c\/span\u003e\u003ch2\u003eShould you pick RepFlow?\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rich justify\" style=\"max-width:80ch\"\u003e\n\u003cp\u003eRepFlow does a narrow job carefully. The combination that actually sets it apart is not the AI label but the pairing of a genuinely universal set logger with a planner that respects the calendar you really have — and, on top of that, event periodization that rebuilds the block toward a date without you rewriting anything. For a lifter who also runs or rows, that removes the usual friction of keeping two apps.\u003c\/p\u003e\n\u003cp\u003eThe commercial terms are unusually clean for a tool this small: a permanent free tier with unlimited logging, a paid entry point at CHF 3 per month with VAT included, no annual lock-in, and a 30-day money-back guarantee. The legal documentation is more complete than the norm at this scale — six dated documents, a separate GDPR notice, rights cited by article — and the publisher's identity is fully traceable: the name and address in the imprint match the Swiss commercial register exactly.\u003c\/p\u003e\n\u003cp\u003eThe limits are just as clear. There is no API, no mobile app and no sensor integration, so every figure is typed by hand. Only the payment provider is named among the sub-processors, which makes the hosting promise hard to audit — and that promise is stated two different ways, \u003ci\u003eSwitzerland\u003c\/i\u003e on the marketing pages against \u003ci\u003ethe EU\/Switzerland region\u003c\/i\u003e in the legal ones. No Article 27 EU representative is designated. Nothing is certified; FADP compliance is self-declared.\u003c\/p\u003e\n\u003cp\u003eIt is also a young product from a one-person business, and the audience figures on the home page cannot be checked against anything. Judged on what is verifiable rather than what is claimed, RepFlow is a credible, inexpensive logbook with a competent planner attached — best suited to someone who logs seriously and accepts manual entry.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cta-row\"\u003e\u003ca class=\"btn btn-primary\" href=\"https:\/\/repflow.ch\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M15 3h6v6\"\u003e\u003c\/path\u003e\u003cpath d=\"M10 14 21 3\"\u003e\u003c\/path\u003e\u003cpath d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Visit RepFlow\u003c\/a\u003e\u003c\/div\u003e\u003c\/section\u003e\n\u003c\/div\u003e","brand":"Ampersand Labs by Davide Morotti","offers":[{"title":"Default Title","offer_id":58389770174795,"sku":null,"price":0.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1038\/0905\/7099\/files\/official-repflow-by-guidaio_5744aa45-cfab-4439-9520-7f5e4db6befc.png?v=1788735000","url":"https:\/\/guidaio.com\/products\/repflow","provider":"Guidaio","version":"1.0","type":"link"}