Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 18163 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Показать содержимое robots.txt
# As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# use: how AI systems may consume the content (immediate, reference, or full).
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CloudflareBrowserRenderingCrawler
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
# END Cloudflare Managed Content
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>loser.com — we rebuild it until it's obvious</title>
<meta name="description" content="We take what everyone overcomplicates, understand it to the core, strip it to the atom, and hand it back obvious. Some minds just run different — and that difference is what saw the baddies coming. It's still what keeps us safe.">
<meta name="theme-color" content="#0b0b0d">
<meta property="og:type" content="website">
<meta property="og:title" content="loser.com — we rebuild it until it's obvious">
<meta property="og:description" content="Complexity is usually a toll, not a fact. We refuse to pay it, tear the thing down to first principles, and hand it back obvious.">
<meta property="og:url" content="https://loser.com/">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' fill='%230b0b0d'/%3E%3Ctext x='32' y='46' font-family='Arial,sans-serif' font-size='44' font-weight='900' text-anchor='middle' fill='%23c7f03d'%3El%3C/text%3E%3C/svg%3E">
<style>
:root{
--ink:#0b0b0d; /* base */
--ink-2:#141417; /* raised */
--paper:#f2f2ee; /* text ~15:1 on ink */
--dim:#9aa0a6; /* explicit dim ~6.4:1 (NOT opacity) */
--acid:#c7f03d; /* electric lime ~14.8:1 on ink */
--line:#2b2b31; /* hairlines */
--line-2:#3a3a42;
--disp:"Helvetica Neue",Helvetica,Arial,"Arial Narrow",sans-serif;
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
--wrap:72rem;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
background:var(--ink);color:var(--paper);
font-family:var(--disp);font-size:18px;line-height:1.5;
-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
overflow-x:hidden;
}
::selection{background:var(--acid);color:var(--ink)}
a{color:var(--acid);text-underline-offset:3px;text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--acid);outline-offset:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem)}
.mono{font-family:var(--mono)}
.label{font-family:var(--mono);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--acid)}
.skip{position:absolute;left:1rem;top:-3rem;background:var(--acid);color:var(--ink);padding:.6rem 1rem;font-family:var(--mono);font-size:.8rem;z-index:80;transition:top .15s}
.skip:focus{top:1rem}
h1,h2,h3{font-weight:800;line-height:.98;letter-spacing:-.02em}
.rule{border:0;border-top:1px solid var(--line);margin:0}
/* ---- top bar ---- */
.topbar{display:flex;justify-content:space-between;align-items:baseline;padding:1.5rem 0;border-bottom:1px solid var(--line)}
.mark{font-weight:900;font-size:1.15rem;letter-spacing:-.03em;color:var(--paper);text-decoration:none}
.mark b{color:var(--acid)}
.topbar nav{font-family:var(--mono);font-size:.8rem;letter-spacing:.04em}
.topbar nav a{color:var(--dim);text-decoration:none;margin-left:1.4rem}
.topbar nav a:hover{color:var(--paper)}
/* ---- hero ---- */
.hero{padding:clamp(3.5rem,11vw,9rem) 0 clamp(2.5rem,6vw,5rem)}
.hero .label{margin-bottom:1.4rem;display:inline-block}
.hero h1{font-size:clamp(2.9rem,11.5vw,8.5rem);text-wrap:balance;max-width:16ch}
.hero h1 .u{color:var(--acid)}
.hero p.lede{font-size:clamp(1.15rem,2.4vw,1.6rem);color:var(--dim);max-width:44ch;margin-top:2rem;line-height:1.45}
.hero p.lede b{color:var(--paper);font-weight:700}
.cta-row{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2.6rem}
.btn{display:inline-block;font-family:var(--mono);font-size:.9rem;letter-spacing:.03em;padding:.95rem 1.5rem;text-decoration:none;border:1px solid var(--line-2);color:var(--paper);background:transparent;cursor:pointer;transition:border-color .15s,color .15s}
.btn:hover{border-color:var(--acid);color:var(--acid)}
.btn-solid{background:var(--acid);color:var(--ink);border-color:var(--acid);font-weight:700}
.btn-solid:hover{background:#d4f85e;color:var(--ink)}
/* ---- section shell ---- */
section{padding:clamp(3rem,8vw,6.5rem) 0;border-top:1px solid var(--line)}
.sec-head{max-width:46ch}
.sec-head .label{margin-bottom:1rem;display:inline-block}
.sec-head h2{font-size:clamp(2rem,5.5vw,3.8rem);text-wrap:balance}
.sec-head p.sub{color:var(--dim);font-size:1.1rem;margin-top:1rem;max-width:52ch}
/* ---- manifesto ---- */
.manifesto p{font-size:clamp(1.15rem,2vw,1.5rem);max-width:40ch;margin-top:1.6rem;line-height:1.5}
.manifesto p:first-of-type{margin-top:2rem}
.manifesto b{color:var(--acid);font-weight:800}
/* ---- teardown cards ---- */
.cards{display:grid;grid-template-columns:1fr;gap:0;margin-top:3rem;border-top:1px solid var(--line)}
.card{display:grid;grid-template-columns:3rem 1fr;gap:clamp(1rem,3vw,2.5rem);padding:clamp(1.8rem,4vw,3rem) 0;border-bottom:1px solid var(--line)}
.card .no{font-family:var(--mono);font-size:.85rem;color:var(--dim);padding-top:.4rem}
.card .they{font-family:var(--mono);font-size:.95rem;color:var(--dim);text-decoration:line-through;text-decoration-color:var(--line-2);margin-bottom:1rem}
.card .we{font-size:clamp(1.3rem,3vw,2rem);font-weight:700;line-height:1.14;letter-spacing:-.01em;max-width:30ch}
.card .tag{display:inline-block;margin-top:1.1rem;font-family:var(--mono);font-size:.82rem;color:var(--acid);border:1px solid var(--line-2);padding:.35rem .7rem}
/* ---- who ---- */
.who p{font-size:clamp(1.15rem,2vw,1.45rem);max-width:42ch;margin-top:1.8rem;line-height:1.5;color:var(--paper)}
.who p .dim{color:var(--dim)}
.who .runs{font-family:var(--mono);color:var(--acid);font-size:1rem}
/* ---- signup ---- */
.signup{background:var(--ink-2)}
.signup form{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.2rem;max-width:34rem}
.signup input[type=email]{flex:1 1 16rem;background:var(--ink);border:1px solid var(--line-2);color:var(--paper);font-family:var(--mono);font-size:1rem;padding:1rem 1.1rem}
.signup input[type=email]::placeholder{color:var(--dim)}
.signup input[type=email]:focus{border-color:var(--acid);outline:none}
.signup .msg{margin-top:1.1rem;font-family:var(--mono);font-size:.9rem;min-height:1.4em}
.signup .msg.ok{color:var(--acid)}
.signup .msg.err{color:#ff7a6b}
.fine{color:var(--dim);font-family:var(--mono);font-size:.78rem;margin-top:1rem;letter-spacing:.02em}
/* ---- scout door (quiet) ---- */
.scout-door{border-top:1px solid var(--line);padding:1.6rem 0}
.scout-door .wrap{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.1rem}
.scout-door .label{color:var(--dim)}
.scout-door a{font-family:var(--mono);font-size:.92rem;color:var(--paper);text-decoration:none;border-bottom:1px solid var(--line-2);padding-bottom:2px}
.scout-door a:hover{color:#FFB454;border-color:#FFB454}
.scout-door .amber{color:#FFB454}
/* ---- grue (a nod to Zork) — amber terminal, the light through-line ---- */
.grue{border-top:1px solid var(--line);padding:clamp(2.5rem,7vw,5rem) 0;background:#08080c}
.grue .term{font-family:var(--mono);font-size:clamp(.82rem,2.3vw,1.02rem);line-height:1.75;color:#FFB454;background:#0a0a06;border:1px solid #3a2f18;padding:1.25rem 1.35rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-width:52rem;margin:0}
.grue .pr{color:#a0925a}
.grue .cmd{color:#ffd68a}
.grue .warn{color:#ff7a6b}
.grue .cur{color:#FFB454;animation:blink 1.1s step-end infinite}
@keyframes blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.grue .cur{animation:none}}
.grue .grue-cap{font-family:var(--mono);font-size:.82rem;color:var(--dim);margin-top:1.1rem;letter-spacing:.03em}
.grue .grue-cap b{color:#FFB454;font-weight:400}
/* ---- footer ---- */
footer{border-top:1px solid var(--line);padding:2.6rem 0 3.4rem;color:var(--dim)}
footer .foot-top{font-size:clamp(1.4rem,4vw,2.4rem);font-weight:800;color:var(--paper);letter-spacing:-.02em}
footer .foot-links{font-family:var(--mono);font-size:.82rem;margin-top:1.4rem;display:flex;flex-wrap:wrap;gap:.4rem 1.4rem}
footer .foot-links a{color:var(--dim);text-decoration:none}
footer .foot-links a:hover{color:var(--acid)}
footer .wink{font-family:var(--mono);font-size:.8rem;margin-top:1.2rem;color:var(--dim)}
@media (max-width:640px){
.card{grid-template-columns:1fr;gap:.4rem}
.card .no{padding-top:0}
.topbar nav a:first-child{margin-left:0}
}
</style>
</head>
<body>
<a class="skip" href="#work">Skip to the work</a>
<div class="wrap">
<div class="topbar">
<a class="mark" href="/">loser<b>.com</b></a>
<nav aria-label="Sections">
<a href="#reclaim">what's a loser</a>
<a href="#work">the work</a>
<a href="#next">get it</a>
</nav>
</div>
</div>
<!-- HERO -->
<header class="hero">
<div class="wrap">
<span class="label">loser.com</span>
<h1>We rebuild it until it's <span class="u">obvious</span>.</h1>
<p class="lede">Take what everyone overcomplicates. Understand it to the core, strip it to the atom, hand it back obvious. <b>Some minds just run different — and different is what saw the baddies coming. It's still what keeps us safe.</b></p>
<div class="cta-row">
<a class="btn btn-solid" href="#work">Read the teardowns ↓</a>
<a class="btn" href="#next">Get the next one</a>
</div>
</div>
</header>
<!-- RECLAIM -->
<section id="reclaim" class="manifesto">
<div class="wrap">
<div class="sec-head"><span class="label">// the reclaim</span>
<h2>What's a loser?</h2></div>
<p>Someone who thinks and acts a little differently — and gets called a loser for it.</p>
<p>Go back far enough and that's the one who didn't get comfortable by the fire with everybody else. Who kept an eye on the treeline. Who saw the baddies coming before anyone else did. The tribe called them strange. <b>The tribe survived because of them.</b></p>
<p>That's who this is for. We think differently on purpose. Complexity is a <b>toll, not a fact</b> — so we take the overcomplicated thing down to the atom and hand it back obvious, because we can't <em>not</em> see it that way. Call it losing. It's the thing that keeps everyone from getting eaten.</p>
</div>
</section>
<!-- GRUE — a nod to Zork; the light through-line -->
<div class="grue">
<div class="wrap">
<pre class="term" role="img" aria-label="A text-adventure nod to Zork: it is pitch black, you are likely to be eaten by a grue. Turn on lamp. The light's on — turns out it was never that complicated.">
<span class="pr">></span> open the thing everyone says is too complicated
It is pitch black. <span class="warn">You are likely to be eaten by a grue.</span>
<span class="pr">></span> <span class="cmd">turn on lamp</span>
The light's on. Turns out it was never that complicated.<span class="cur">▋</span></pre>
<p class="grue-cap">// the dark does the eating. <b>we bring the lamp.</b></p>
</div>
</div>
<!-- THE WORK -->
<section id="work">
<div class="wrap">
<div class="sec-head"><span class="label">// the work</span>
<h2>We take what they overcomplicate. We give it back obvious.</h2>
<p class="sub">A running teardown — one overcomplicated thing at a time, rebuilt to the studs. Nothing here is a slide. It runs.</p></div>
<div class="cards">
<article class="card">
<div class="no">01</div>
<div>
<p class="they">Real AI lives in someone else's cloud, metered by the token, forever.</p>
<p class="we">It runs on hardware you can point at. Bring your own model or use ours — either way it behaves, and the meter stops.</p>
<span class="tag">wait — that's it?</span>
</div>
</article>
<article class="card">
<div class="no">02</div>
<div>
<p class="they">A voice agent is a six-figure integration and a committee.</p>
<p class="we">A phone number that answers on the first ring and holds a real conversation. The whole stack, ours.</p>
<span class="tag">that's it.</span>
</div>
</article>
<article class="card">
<div class="no">03</div>
<div>
<p class="they">You need the big vendor, the platform, the seat licenses, the wizard behind the curtain.</p>
<p class="we">You needed the outcome. We kept that and threw the rest out.</p>
<span class="tag">obvious, once you see it.</span>
</div>
</article>
<article class="card">
<div class="no">→</div>
<div>
<p class="we" style="color:var(--dim)">Next teardown's already in the shop.</p>
<span class="tag"><a href="#next" style="text-decoration:none;color:var(--acid)">get it when it drops →</a></span>
</div>
</article>
</div>
</div>
</section>
<!-- WHO -->
<section id="who" class="who">
<div class="wrap">
<div class="sec-head"><span class="label">// who</span>
<h2>Who's the loser?</h2></div>
<p>Brian. Thirty-plus years in tech, <span class="dim">most of it building things for other people</span>. Then he started rebuilding them for himself — smaller, simpler, his.</p>
<p>loser.com is where that gets shown, in the open. <span class="runs">Nothing here is a mockup. It runs.</span></p>
</div>
</section>
<!-- SIGNUP -->
<section id="next" class="signup">
<div class="wrap">
<div class="sec-head"><span class="label">// get the next one</span>
<h2>Get the next teardown.</h2>
<p class="sub">One thing everyone overcomplicates, rebuilt simple — straight to your inbox. No noise. Leave whenever.</p></div>
<form id="signup-form" novalidate>
<label for="email" class="mono" style="position:absolute;left:-9999px">Email address</label>
<input id="email" name="email" type="email" inputmode="email" autocomplete="email" placeholder="you@wherever.com" required>
<button class="btn btn-solid" type="submit">Send it</button>
</form>
<p class="msg" id="signup-msg" role="status" aria-live="polite"></p>
<p class="fine">We keep your email to send teardowns and nothing else. Unsubscribe any time. Your data is yours.</p>
</div>
</section>
<!-- SCOUT DOOR (quiet) -->
<div class="scout-door">
<div class="wrap">
<span class="label">// elsewhere</span>
<a href="/scout">the world of <span class="amber">Scout</span> — the quiet room, still building →</a>
</div>
</div>
<!-- FOOTER -->
<footer>
<div class="wrap">
<div class="foot-top">loser.com</div>
<div class="foot-links">
<a href="/">home</a>
<a href="#work">the work</a>
<a href="/company">company</a>
<a href="/privacy">privacy</a>
<a href="https://scrappylabs.ai">scrappylabs</a>
<a href="mailto:brian@loser.com">brian@loser.com</a>
</div>
<p class="wink">© 2026 Loser.com LLC · we also run ScrappyLabs + Undervoice · we honestly don't get why it's hard either.</p>
</div>
</footer>
<script>
(function(){
var form = document.getElementById('signup-form');
var msg = document.getElementById('signup-msg');
var input= document.getElementById('email');
form.addEventListener('submit', async function(e){
e.preventDefault();
var email = (input.value||'').trim();
if(!email || email.indexOf('@')<0 || email.indexOf('.')<0){
msg.className='msg err'; msg.textContent='Need a real email — try again.'; input.focus(); return;
}
msg.className='msg'; msg.textContent='Sending…';
try{
var r = await fetch('/api/signup', {
method:'POST', headers:{'Content-Type':'application/json'},
body: JSON.stringify({email:email, interests:'disrupt-teardown'})
});
var d = await r.json().catch(function(){return {};});
if(r.ok && d.success){
msg.className='msg ok'; msg.textContent="You're on the list. First teardown lands soon.";
form.reset();
} else {
msg.className='msg err'; msg.textContent = d.error ? d.error : 'Something broke on our end. Try again in a sec.';
}
}catch(err){
msg.className='msg err'; msg.textContent='Network hiccup — try again.';
}
});
})();
</script>
</body>
</html>