footer: ссылки на проекты simbiot/avatar/vybirai.cil.by (по просьбе Alex)
This commit is contained in:
parent
d850d4828a
commit
fa815cd55b
13 changed files with 1264 additions and 1 deletions
70
artifacts/iishnitsa_panel_vision.html
Normal file
70
artifacts/iishnitsa_panel_vision.html
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Общее видение — панельная сессия ИИШНИЦЫ</title>
|
||||
<style>
|
||||
body{font-family:Georgia,serif;max-width:860px;margin:40px auto;padding:0 20px;color:#222;line-height:1.55}
|
||||
h1{color:#1a5276} h2{color:#1a5276;border-bottom:2px solid #1a5276;padding-bottom:4px}
|
||||
table{border-collapse:collapse;width:100%;margin:12px 0}
|
||||
td,th{border:1px solid #aaa;padding:8px;text-align:left;vertical-align:top}
|
||||
th{background:#eaf2f8}
|
||||
.tag{display:inline-block;background:#1a5276;color:#fff;border-radius:12px;padding:2px 10px;margin:2px;font-size:.85em}
|
||||
.box{background:#f4f9fd;border-left:4px solid #1a5276;padding:10px 14px;margin:12px 0}
|
||||
ul{margin:6px 0}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>«Общее видение»</h1>
|
||||
<p><b>Панельная сессия ИИШНИЦЫ · 90 минут · 3 спикера (члены правления кооператива 42)</b></p>
|
||||
|
||||
<div class="box"><b>Рамка:</b> миссия кооператива 42 — «максимизация долгосрочного AUM: сумма всех измеримых ресурсов каждого члена на длинной дистанции». Сессия показывает: личное будущее каждого и общее видение сообщества — это один и тот же ресурс, если его проговорить вслух.</div>
|
||||
|
||||
<h2>Тайминг (90 мин)</h2>
|
||||
<table>
|
||||
<tr><th>Время</th><th>Блок</th><th>Что происходит</th></tr>
|
||||
<tr><td>0–5</td><td>Открытие</td><td>Модератор: миссия 42 как рамка, представление спикеров и формата «три круга».</td></tr>
|
||||
<tr><td>5–17</td><td>Круг 1 — «Моё будущее» (4 мин/спикер)</td><td>Каждый спикер за 4 минуты рассказывает, каким видит своё будущее через призму миссии кооператива. Без презентаций — живой рассказ.</td></tr>
|
||||
<tr><td>17–25</td><td>Пауза-рефлексия</td><td>Модератор резюмирует 3 услышанных будущего, гости отмечают в карточках «что откликнулось».</td></tr>
|
||||
<tr><td>25–31</td><td>Круг 2 — «Что понравилось у других» (2 мин/спикер)</td><td>Каждый спикер называет, что из сказанного коллегами ему ближе всего и почему.</td></tr>
|
||||
<tr><td>31–45</td><td>Название общего видения</td><td>Модератор выносит на сцену заготовки-названия; зал и спикеры голосуют стикерами/руками, рождается общее название видения.</td></tr>
|
||||
<tr><td>45–85</td><td>Вопросы из зала</td><td>Открытый микрофон; спикеры отвечают по кругу. Модератор держит рамку миссии, фиксирует обещания/следующие шаги на флипчарт.</td></tr>
|
||||
<tr><td>85–90</td><td>Закрытие</td><td>Модератор озвучивает родившееся название общего видения + 3 следующих шага. Общее фото.</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>Роли</h2>
|
||||
<table>
|
||||
<tr><th>Роль</th><th>Кто</th><th>Зона ответственности</th></tr>
|
||||
<tr><td>Модератор</td><td>Спикер 1</td><td>Тайминг, рамка миссии, голосование за название, сбор вопросов.</td></tr>
|
||||
<tr><td>Спикер</td><td>Спикер 2</td><td>Круг 1 (4 мин), круг 2 (2 мин), ответы на вопросы.</td></tr>
|
||||
<tr><td>Спикер / scriba</td><td>Спикер 3</td><td>Круги 1–2 + фиксация следующего шага и названия на флипчарт.</td></tr>
|
||||
<tr><td>Организатор</td><td>из команды ИИШНИЦЫ</td><td>Чек-лист ниже.</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>Заготовки названий общего видения</h2>
|
||||
<p>
|
||||
<span class="tag">«Капитал роста»</span>
|
||||
<span class="tag">«42 будущих»</span>
|
||||
<span class="tag">«Ресурс, который множится»</span>
|
||||
<span class="tag">«Одна орбита»</span>
|
||||
<span class="tag">«Мы — AUM друг друга»</span>
|
||||
<span class="tag">«Кооператив как среда роста»</span>
|
||||
<span class="tag">«Точка сборки 42»</span>
|
||||
</p>
|
||||
<p><i>Правило: если зал предложит своё — оно в приоритете; голосование простым большинством.</i></p>
|
||||
|
||||
<h2>Чек-лист организатора</h2>
|
||||
<ul>
|
||||
<li>☑ Анонс сессии отправлен (формат «три круга», 3 спикера — члены правления 42)</li>
|
||||
<li>☑ Таймер на сцене + карточки «что откликнулось» для гостей</li>
|
||||
<li>☑ Флипчарт/доска, маркеры, стикеры для голосования за название</li>
|
||||
<li>☑ 2 микрофона для зала, один у модератора</li>
|
||||
<li>☑ Распечатка заготовок названий крупным шрифтом</li>
|
||||
<li>☑ Фото/видео на закрытие, место для общего фото</li>
|
||||
<li>☑ Кто забирает флипчарт с названием и шагами после сессии</li>
|
||||
</ul>
|
||||
|
||||
<p style="color:#666;font-size:.9em">Концепт подготовлен агентом харнеса Simbiot · кооператив 42 · 2026</p>
|
||||
</body>
|
||||
</html>
|
||||
693
artifacts/index.html.bak-showcase-261012
Normal file
693
artifacts/index.html.bak-showcase-261012
Normal file
|
|
@ -0,0 +1,693 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Simbiot — The Studio OS</title>
|
||||
<meta name="description" content="Simbiot is the operating system for product studios: a dedicated AI team — engineers, video producers, content makers — plus the layer that runs projects, treasury, decisions and meetings. White-label, $999/mo flat.">
|
||||
<meta property="og:title" content="Simbiot — The Studio OS">
|
||||
<meta property="og:description" content="A dedicated AI team for your studio plus the OS that runs it: projects, treasury, decisions, meetings. White-label, flat rate.">
|
||||
<meta property="og:url" content="https://simbiot.cil.by/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:image" content="https://simbiot.cil.by/og.png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Simbiot — The Studio OS">
|
||||
<meta name="twitter:description" content="A dedicated AI team for your studio plus the OS that runs it: projects, treasury, decisions, meetings.">
|
||||
<meta name="twitter:image" content="https://simbiot.cil.by/og.png">
|
||||
<noscript><style>.reveal{opacity:1 !important;transform:none !important}</style></noscript>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root{
|
||||
--paper:#faf8f3; --paper2:#f2efe7; --ink:#1a1a18; --ink2:#55534b; --ink3:#6b685c;
|
||||
--line:#e2ded2; --line2:#cfcabb;
|
||||
--acc:#5b4be0; /* simbiot violet — single signal color */
|
||||
}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
html{scroll-behavior:smooth}
|
||||
section[id],header[id],div[id]{scroll-margin-top:80px}
|
||||
body{font-family:'Inter Tight',system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:hidden}
|
||||
.mono{font-family:'JetBrains Mono',ui-monospace,monospace}
|
||||
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
|
||||
|
||||
/* ── nav ── */
|
||||
nav{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--paper);border-bottom:1px solid var(--line)}
|
||||
nav .wrap{display:flex;align-items:center;height:60px}
|
||||
.logo{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:600;letter-spacing:-.3px}
|
||||
.logo-mark{width:14px;height:14px;background:var(--acc)}
|
||||
nav .links{margin-left:auto;display:flex;gap:28px;align-items:center}
|
||||
nav .links a{color:var(--ink2);text-decoration:none;font-size:13.5px;font-weight:500}
|
||||
nav .links a:hover{color:var(--ink)}
|
||||
@media(max-width:760px){nav .links a:not(.btn){display:none}}
|
||||
|
||||
.btn{display:inline-block;background:var(--ink);color:#faf8f3;border:1px solid var(--ink);padding:14px 26px;font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.8px;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}
|
||||
.btn:hover{background:var(--acc);border-color:var(--acc);color:#fff}
|
||||
.btn-o{background:transparent;color:var(--ink)}
|
||||
.btn-o:hover{background:var(--ink);color:#faf8f3}
|
||||
.btn-sm{padding:9px 18px;font-size:12px}
|
||||
|
||||
/* ── hero ── */
|
||||
.hero{padding:170px 0 100px;border-bottom:1px solid var(--line)}
|
||||
|
||||
/* ── included (v2, t-261002151244-03c0c4) ── */
|
||||
.inc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
|
||||
.inc{background:var(--paper);padding:34px 30px;position:relative}
|
||||
.inc .n{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--acc);letter-spacing:.1em;margin-bottom:18px}
|
||||
.inc h3{font-size:16.5px;font-weight:600;letter-spacing:-.01em;margin-bottom:10px}
|
||||
.inc p{font-size:14px;line-height:1.6;color:var(--ink2)}
|
||||
.inc .tag{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);border:1px solid var(--line2);border-radius:999px;padding:4px 10px;margin-top:14px}
|
||||
.seats-live{display:flex;align-items:center;gap:12px;margin-top:26px;padding:14px 20px;border:1px solid var(--acc);background:rgba(91,75,224,.05);font-size:14px;color:var(--ink2)}
|
||||
.seats-live .dot{width:8px;height:8px;border-radius:50%;background:var(--acc);animation:pulse 2s infinite}
|
||||
.seats-live b{color:var(--ink);font-size:16px}
|
||||
.seats-live a{color:var(--acc);text-decoration:none;font-weight:500}
|
||||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
|
||||
.hero .wrap{display:grid;grid-template-columns:1.25fr .85fr;gap:64px;align-items:start}
|
||||
@media(max-width:980px){
|
||||
.hero .wrap{grid-template-columns:1fr}
|
||||
.inc-grid{grid-template-columns:1fr 1fr}
|
||||
}
|
||||
@media(max-width:640px){
|
||||
.inc-grid{grid-template-columns:1fr}
|
||||
.seats-live{flex-wrap:wrap;padding:12px 16px}
|
||||
}
|
||||
.ops{border:1px solid var(--line2);background:#fff;padding:26px 26px 22px;margin-top:54px;min-width:0;overflow-wrap:anywhere}
|
||||
.ops .hd{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink3);border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:14px;display:flex;justify-content:space-between}
|
||||
.ops .hd b{color:var(--acc);font-weight:500;display:flex;align-items:center;gap:7px}
|
||||
.ops .hd b::before{content:'';width:7px;height:7px;border-radius:50%;background:#1a7f4b;animation:blink 2s infinite}
|
||||
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
|
||||
.ops .ft{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--ink3);border-top:1px solid var(--line);margin-top:14px;padding-top:12px;letter-spacing:.8px}
|
||||
.ops .ln{font-family:'JetBrains Mono',monospace;font-size:13.5px;line-height:2.05;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
|
||||
.ops .ln b{color:var(--ink);font-weight:500}
|
||||
.ops .ln .g{color:#1a7f4b}
|
||||
@media(max-width:980px){.ops{margin-top:8px}}
|
||||
.eyebrow{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--ink3);margin-bottom:34px;display:flex;align-items:center;gap:12px}
|
||||
.eyebrow::before{content:'';width:8px;height:8px;background:var(--acc)}
|
||||
h1{font-size:clamp(44px,7.2vw,92px);font-weight:500;line-height:.98;letter-spacing:-.03em;max-width:1000px}
|
||||
h1 em{font-style:normal;color:var(--acc)}
|
||||
.hero .sub{font-size:19px;line-height:1.55;color:var(--ink2);max-width:560px;margin:36px 0 44px}
|
||||
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
|
||||
.hero-meta{display:flex;gap:0;margin-top:90px;border:1px solid var(--line);flex-wrap:wrap}
|
||||
.hm{flex:1;min-width:220px;padding:22px 26px;border-right:1px solid var(--line)}
|
||||
.hm:last-child{border-right:none}
|
||||
.hm .n{font-size:30px;font-weight:500;letter-spacing:-.02em}
|
||||
.hm .l{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:1.2px;margin-top:6px}
|
||||
@media(max-width:700px){.hm{border-right:none;border-bottom:1px solid var(--line)}.hm:last-child{border-bottom:none}}
|
||||
|
||||
/* ── sections ── */
|
||||
section{padding:110px 0;border-bottom:1px solid var(--line)}
|
||||
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:64px;flex-wrap:wrap}
|
||||
.sec-idx{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--ink3);letter-spacing:2px;text-transform:uppercase;margin-bottom:16px}
|
||||
.sec-idx b{color:var(--acc);font-weight:500}
|
||||
h2{font-size:clamp(30px,4.2vw,52px);font-weight:500;letter-spacing:-.025em;line-height:1.02}
|
||||
.sec-sub{font-size:16.5px;color:var(--ink2);line-height:1.6;max-width:460px}
|
||||
|
||||
/* ── agents: spec rows ── */
|
||||
.agent-row{display:grid;grid-template-columns:70px 220px 1fr 300px;gap:32px;padding:34px 0;border-top:1px solid var(--line);align-items:baseline}
|
||||
.agent-row:last-child{border-bottom:1px solid var(--line)}
|
||||
.agent-idx{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--ink3)}
|
||||
.agent-name{font-size:26px;font-weight:500;letter-spacing:-.02em}
|
||||
.agent-name span{display:block;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--acc);text-transform:uppercase;letter-spacing:1.5px;margin-top:6px;font-weight:500}
|
||||
.agent-desc{font-size:15px;line-height:1.65;color:var(--ink2)}
|
||||
.agent-tags{display:flex;gap:8px;flex-wrap:wrap}
|
||||
.agent-tags span{font-family:'JetBrains Mono',monospace;font-size:11px;padding:5px 10px;border:1px solid var(--line2);color:var(--ink2)}
|
||||
@media(max-width:900px){.agent-row{grid-template-columns:40px 1fr;gap:16px}.agent-desc,.agent-tags{grid-column:2}}
|
||||
|
||||
/* ── system grid ── */
|
||||
.sys-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
|
||||
@media(max-width:900px){.sys-grid{grid-template-columns:1fr}}
|
||||
.sys{padding:34px 30px 40px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .2s}
|
||||
.sys:hover{background:var(--paper2)}
|
||||
.sys .n{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--acc);letter-spacing:1.5px;margin-bottom:22px}
|
||||
.sys h3{font-size:19px;font-weight:500;letter-spacing:-.01em;margin-bottom:10px}
|
||||
.sys p{font-size:14px;color:var(--ink2);line-height:1.6}
|
||||
|
||||
/* ── loop ── */
|
||||
.loop{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line)}
|
||||
@media(max-width:900px){.loop{grid-template-columns:1fr}}
|
||||
.lstep{padding:28px 24px 34px;border-right:1px solid var(--line)}
|
||||
.lstep:last-child{border-right:none}
|
||||
@media(max-width:900px){.lstep{border-right:none;border-bottom:1px solid var(--line)}.lstep:last-child{border-bottom:none}}
|
||||
.lstep .n{font-family:'JetBrains Mono',monospace;font-size:24px;color:var(--ink);margin-bottom:16px}
|
||||
.lstep h3{font-size:15.5px;font-weight:600;margin-bottom:8px}
|
||||
.lstep p{font-size:13px;color:var(--ink2);line-height:1.55}
|
||||
|
||||
/* ── compare ── */
|
||||
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line)}
|
||||
@media(max-width:900px){.cmp-grid{grid-template-columns:1fr}}
|
||||
.cmp{padding:44px 40px}
|
||||
.cmp.a{border-right:1px solid var(--line);color:var(--ink2)}
|
||||
@media(max-width:900px){.cmp.a{border-right:none;border-bottom:1px solid var(--line)}}
|
||||
.cmp.b{background:var(--ink);color:var(--paper)}
|
||||
.cmp .lbl{font-family:'JetBrains Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:26px}
|
||||
.cmp.a .lbl{color:var(--ink3)}.cmp.b .lbl{color:#b9b3ff}
|
||||
.cmp ul{list-style:none}
|
||||
.cmp li{font-size:15px;padding:12px 0;line-height:1.5;display:grid;grid-template-columns:22px 1fr;gap:10px}
|
||||
.cmp.a li{border-top:1px solid var(--line)}
|
||||
.cmp.b li{border-top:1px solid #33322e}
|
||||
.cmp li i{font-style:normal;font-family:'JetBrains Mono',monospace;font-size:13px;padding-top:2px}
|
||||
.cmp.a li i{color:var(--ink3)}.cmp.b li i{color:var(--acc);filter:brightness(1.6)}
|
||||
|
||||
/* ── pricing ── */
|
||||
.price-panel{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--ink);margin-top:8px}
|
||||
@media(max-width:900px){.price-panel{grid-template-columns:1fr}}
|
||||
.price-left{padding:52px 48px;border-right:1px solid var(--ink)}
|
||||
@media(max-width:900px){.price-left{border-right:none;border-bottom:1px solid var(--ink)}}
|
||||
.price-tag{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--acc);margin-bottom:26px}
|
||||
.price-big{font-size:clamp(56px,7vw,88px);font-weight:500;letter-spacing:-.03em;line-height:1}
|
||||
.price-big span{font-size:20px;color:var(--ink3);letter-spacing:0;font-weight:400}
|
||||
.price-note{font-size:14.5px;color:var(--ink2);margin:18px 0 36px;line-height:1.6;max-width:380px}
|
||||
.price-right{padding:52px 48px;background:var(--paper2)}
|
||||
.price-right ul{list-style:none}
|
||||
.price-right li{font-size:14.5px;color:var(--ink);padding:11px 0;border-top:1px solid var(--line2);display:grid;grid-template-columns:20px 1fr;gap:10px;line-height:1.5}
|
||||
.price-right li:first-child{border-top:none}
|
||||
.price-right li i{font-style:normal;color:var(--acc);font-family:'JetBrains Mono',monospace;font-size:12px;padding-top:3px}
|
||||
.secure{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--ink3);margin-top:26px;letter-spacing:.4px}
|
||||
.secure a{color:var(--acc);text-decoration:none}
|
||||
|
||||
/* ── cta ── */
|
||||
.cta-sec{background:var(--ink);color:var(--paper);border-bottom:none}
|
||||
.cta-sec h2{color:var(--paper);max-width:800px}
|
||||
.cta-sec .sec-sub{color:#a5a29a;margin:22px 0 40px}
|
||||
.cta-sec .btn{background:var(--paper);color:var(--ink);border-color:var(--paper)}
|
||||
.cta-sec .btn:hover{background:var(--acc);color:#fff;border-color:var(--acc)}
|
||||
.cta-sec .btn-o{background:transparent;color:var(--paper);border-color:#45443f;margin-left:12px}
|
||||
.cta-sec .btn-o:hover{border-color:var(--paper)}
|
||||
|
||||
footer{padding:34px 0;font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--ink3)}
|
||||
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px}
|
||||
footer a{color:var(--ink2);text-decoration:none}
|
||||
footer a:hover{color:var(--acc)}
|
||||
|
||||
/* ── modal (light) ── */
|
||||
#planModal{display:none;position:fixed;inset:0;background:rgba(26,26,24,.55);z-index:999;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
|
||||
#planModal .mbox{background:var(--paper);border:1px solid var(--ink);padding:44px;max-width:480px;width:92%}
|
||||
.m-input{width:100%;padding:14px 16px;border:1px solid var(--line2);background:#fff;color:var(--ink);font-size:15px;font-family:inherit;margin-bottom:12px;box-sizing:border-box}
|
||||
.m-input:focus{outline:none;border-color:var(--acc)}
|
||||
.m-note{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--ink3);text-align:center;margin-top:14px;letter-spacing:.5px}
|
||||
|
||||
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s,transform .6s}
|
||||
.reveal.vis{opacity:1;transform:none}
|
||||
/* improve-ui аудит (design-plans/simbiot-cilby-v2-audit.md): P1 focus, P2 motion */
|
||||
.btn:focus-visible, a:focus-visible, button:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:2px}
|
||||
@media(prefers-reduced-motion:reduce){
|
||||
.reveal{opacity:1;transform:none;transition:none}
|
||||
.seats-live .dot{animation:none}
|
||||
*{scroll-behavior:auto}
|
||||
}
|
||||
|
||||
/* ═══ SHOWCASE (live product) — фикс: стилей не было ═══ */
|
||||
.moc-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:26px;align-items:start;border:1px solid var(--line);}
|
||||
@media(max-width:980px){.moc-grid{grid-template-columns:1fr}}
|
||||
.shot{background:#fff;border-bottom:1px solid var(--line);min-width:0}
|
||||
.shot img{display:block;width:100%;height:auto;border:none}
|
||||
.shot .bar,.chatwin .hd{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--paper2);font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
|
||||
.shot .bar i{width:9px;height:9px;border-radius:50%;background:var(--line2)}
|
||||
.shot .bar i:first-child{background:#e35b4f}.shot .bar i:nth-child(2){background:#e2b13c}.shot .bar i:nth-child(3){background:#3d8f5f}
|
||||
.shot .bar span{margin-left:auto}
|
||||
.chatwin{background:#fff;border:none;min-width:0}
|
||||
.chatwin .hd{border-bottom:1px solid var(--line)}
|
||||
.chatwin .hd .dot{width:8px;height:8px;border-radius:50%;background:#1a7f4b;animation:pulse 2s infinite}
|
||||
.chatbody{padding:18px 16px;display:flex;flex-direction:column;gap:12px;max-height:460px}
|
||||
.msgl .b{position:relative;background:var(--paper2);border:1px solid var(--line);padding:10px 12px 10px 14px;font-size:13.5px;line-height:1.5;color:var(--ink)}
|
||||
.msgl .b .t{display:block;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--ink3);margin-top:6px;letter-spacing:.05em}
|
||||
|
||||
/* dashboard css mockup (replaces raw screenshot) */
|
||||
.dbmock{padding:8px 0;background:#fff}
|
||||
.db-row{display:grid;grid-template-columns:1fr 44px 110px;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line);font-size:13.5px;color:var(--ink)}
|
||||
.db-h{font-family:'JetBrains Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink3)}
|
||||
.db-row .s{font-family:'JetBrains Mono',monospace;font-size:11px;text-align:center;border:1px solid var(--line2);border-radius:999px;padding:3px 0;color:var(--ink2)}
|
||||
.db-row .s.L{border-color:var(--acc);color:var(--acc)}
|
||||
.db-row .st{font-family:'JetBrains Mono',monospace;font-style:normal;font-size:10.5px;letter-spacing:.05em}
|
||||
.st.run{color:#8a6d1a}.st.done{color:#3d8f5f}.st.esc{color:#e35b4f}
|
||||
.db-foot{display:flex;align-items:center;gap:8px;padding:12px 16px;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--ink3);letter-spacing:.05em}
|
||||
.db-foot .dot{width:7px;height:7px;border-radius:50%;background:#1a7f4b;animation:pulse 2s infinite}
|
||||
.cap{padding:14px 18px;font-size:13px;line-height:1.55;color:var(--ink3);border-top:1px solid var(--line)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<div class="wrap">
|
||||
<div class="logo"><span class="logo-mark"></span>Simbiot</div>
|
||||
<div class="links">
|
||||
<a href="#team">Team</a>
|
||||
<a href="#system">System</a>
|
||||
<a href="#pricing">Pricing</a>
|
||||
<a href="https://cil.by/cabinet">Sign in</a>
|
||||
<a href="#pricing" class="btn btn-sm">Get started</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- ═══ HERO ═══ -->
|
||||
<header class="hero">
|
||||
<div class="wrap">
|
||||
<div>
|
||||
<div class="eyebrow">Simbiot — Studio OS</div>
|
||||
<h1>Hire nobody.<br>Ship <em>everything.</em></h1>
|
||||
<p class="sub">Simbiot gives your studio a dedicated AI team — engineers, video producers, content makers — and the operating system that runs them: projects, treasury, decisions, meetings. White-label, under your brand.</p>
|
||||
<div class="hero-cta">
|
||||
<a href="#pricing" class="btn">Start your studio — $999/mo</a>
|
||||
<a href="https://demo.cil.by/api/auth/demo-login" class="btn btn-o" style="display:none">Live demo</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ops">
|
||||
<div class="hd"><span>STUDIO OPS</span><b>LIVE</b></div>
|
||||
<div id="opsLines">
|
||||
<div class="ln"><b>cody</b> ▸ deployed neurocrm <span class="g">@2f3a1c</span></div>
|
||||
<div class="ln"><b>reelsup</b> ▸ rendered 6 clips → queue</div>
|
||||
<div class="ln"><b>roy</b> ▸ script v3 → voiceover RU</div>
|
||||
<div class="ln"><b>os</b> ▸ treasury +$1,240 transfer</div>
|
||||
<div class="ln"><b>os</b> ▸ decision #37 passed · quorum 3/3</div>
|
||||
<div class="ln"><b>cody</b> ▸ tests green — 41 passed</div>
|
||||
<div class="ln"><b>os</b> ▸ digest sent · 09:00 Minsk</div>
|
||||
</div>
|
||||
<div class="ft">3 AGENTS ONLINE · UPTIME 99.2%</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div style="border-bottom:1px solid var(--line)">
|
||||
<div class="wrap hero-meta" style="border:none">
|
||||
<div class="hm"><div class="n">12</div><div class="l">AI specialists per studio</div></div>
|
||||
<div class="hm"><div class="n">5–7 days</div><div class="l">idea → working product</div></div>
|
||||
<div class="hm"><div class="n">$999</div><div class="l">vs $60K agency MVP</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ TEAM ═══ -->
|
||||
<section id="team">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>01</b> — The team</div>
|
||||
<h2>Not a chatbot.<br>A staff of specialists.</h2>
|
||||
</div>
|
||||
<p class="sec-sub">Every agent runs on a dedicated server with its own memory, tools, email and Matrix chat. You brief them like employees — they onboard onto your idea and start shipping.</p>
|
||||
</div>
|
||||
<div class="agent-row reveal">
|
||||
<div class="agent-idx">/01</div>
|
||||
<div class="agent-name">Cody<span>Engineer</span></div>
|
||||
<div class="agent-desc">Writes code, deploys services, maintains your git repositories. MVPs, landing pages, bots, APIs, integrations — from brief to production.</div>
|
||||
<div class="agent-tags"><span>FULL-STACK</span><span>DEVOPS</span><span>GIT</span></div>
|
||||
</div>
|
||||
<div class="agent-row reveal">
|
||||
<div class="agent-idx">/02</div>
|
||||
<div class="agent-name">ReelsUp<span>Video producer</span></div>
|
||||
<div class="agent-desc">Cuts long videos and podcasts into vertical clips for Reels and Shorts. Transcription, AI highlight detection, automated editing.</div>
|
||||
<div class="agent-tags"><span>WHISPER</span><span>CLIPS</span><span>SHORTS</span></div>
|
||||
</div>
|
||||
<div class="agent-row reveal">
|
||||
<div class="agent-idx">/03</div>
|
||||
<div class="agent-name">Roy<span>Content maker</span></div>
|
||||
<div class="agent-desc">Produces promotional content on a conveyor: reels with 3D characters, scripts, voiceovers, visuals. Brand-consistent by default.</div>
|
||||
<div class="agent-tags"><span>3D</span><span>TTS</span><span>SCRIPTS</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ SYSTEM ═══ -->
|
||||
<section id="system">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>02</b> — The system</div>
|
||||
<h2>Agents build.<br>The OS manages.</h2>
|
||||
</div>
|
||||
<p class="sec-sub">Every studio needs an operating layer. Simbiot keeps projects, money, decisions and meetings in one transparent system — under your studio's name and domain.</p>
|
||||
</div>
|
||||
<div class="sys-grid reveal">
|
||||
<div class="sys"><div class="n">S.01</div><h3>Project registry</h3><p>A card for every venture: key decisions, ownership, agents, activity feed. The whole portfolio at a glance.</p></div>
|
||||
<div class="sys"><div class="n">S.02</div><h3>Git repo per project</h3><p>Code and docs live in a dedicated repository with a web editor. Nothing gets lost in chats.</p></div>
|
||||
<div class="sys"><div class="n">S.03</div><h3>Treasury & wallets</h3><p>Revenue share flows into the treasury automatically. Every payout is transparent and auditable.</p></div>
|
||||
<div class="sys"><div class="n">S.04</div><h3>Decisions & voting</h3><p>Allocate resources between projects by vote. Cycles, quorum, full decision history — governance built in.</p></div>
|
||||
<div class="sys"><div class="n">S.05</div><h3>Meetings with AI minutes</h3><p>Built-in video calls with recording, transcription and summaries. Every decision lands in the registry.</p></div>
|
||||
<div class="sys"><div class="n">S.06</div><h3>Time & task tracking</h3><p>What every agent completed, how much work went where — a daily digest in your inbox.</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ LOOP ═══ -->
|
||||
<section id="loop">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>03</b> — How it works</div>
|
||||
<h2>The studio flywheel.</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="loop reveal">
|
||||
<div class="lstep"><div class="n">1</div><h3>Hypothesis</h3><p>A partner registers a project: 7 decisions, studio share.</p></div>
|
||||
<div class="lstep"><div class="n">2</div><h3>Voting</h3><p>Partners vote — the project gets priority and resources.</p></div>
|
||||
<div class="lstep"><div class="n">3</div><h3>Agents build</h3><p>Engineer codes, producer cuts video, content ships.</p></div>
|
||||
<div class="lstep"><div class="n">4</div><h3>Market test</h3><p>An MVP validates the hypothesis in days, not months.</p></div>
|
||||
<div class="lstep"><div class="n">5</div><h3>Revenue → treasury</h3><p>The studio share flows back and funds the next projects.</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ COMPARE ═══ -->
|
||||
<section id="math">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>04</b> — The math</div>
|
||||
<h2>Classic studio vs Simbiot.</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cmp-grid reveal">
|
||||
<div class="cmp a">
|
||||
<div class="lbl">Without a system</div>
|
||||
<ul>
|
||||
<li><i>—</i>You're the CEO, dev team, marketer and accountant</li>
|
||||
<li><i>—</i>2–3 months and $30–60K for an agency MVP</li>
|
||||
<li><i>—</i>Operations scattered across spreadsheets and chats</li>
|
||||
<li><i>—</i>Freelancers leave — and take the knowledge with them</li>
|
||||
<li><i>—</i>Burnout before product-market fit</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="cmp b">
|
||||
<div class="lbl">On Simbiot</div>
|
||||
<ul>
|
||||
<li><i>+</i>One AI team builds while you steer</li>
|
||||
<li><i>+</i>Days from idea to working product</li>
|
||||
<li><i>+</i>Projects, treasury, decisions, meetings — one OS</li>
|
||||
<li><i>+</i>Code and knowledge stay in your repositories</li>
|
||||
<li><i>+</i>Every task and decision is documented</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- ═══ PRODUCT SHOWCASE (t-261002151630): честные визуалы живого продукта ═══ -->
|
||||
<section id="showcase">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>04·б</b> — The product</div>
|
||||
<h2>This is the live product.<br>Not a mockup.</h2>
|
||||
</div>
|
||||
<p class="sec-sub">Real screens from our own production harness — the same one you get. Dashboard with the task ladder, chat with your agent right in the UI.</p>
|
||||
</div>
|
||||
<div class="moc-grid reveal">
|
||||
<div class="shot">
|
||||
<div class="bar"><i></i><i></i><i></i><span>simbiot dashboard — task ladder</span></div>
|
||||
<div class="dbmock">
|
||||
<div class="db-row db-h"><span>task</span><span>size</span><span>status</span></div>
|
||||
<div class="db-row"><span>Redesign pricing section copy</span><b class="s L">L</b><em class="st run">running</em></div>
|
||||
<div class="db-row"><span>Weekly digest to stakeholders</span><b class="s M">M</b><em class="st run">running</em></div>
|
||||
<div class="db-row"><span>Fix og-image on landing</span><b class="s S">S</b><em class="st done">done</em></div>
|
||||
<div class="db-row"><span>Escalation: router burn > budget</span><b class="s M">M</b><em class="st esc">escalated</em></div>
|
||||
<div class="db-row"><span>Onboarding call notes → decisions</span><b class="s S">S</b><em class="st done">done</em></div>
|
||||
<div class="db-foot"><span class="dot"></span>3 agents live · hour digest 23:10 · all actions signed</div>
|
||||
</div>
|
||||
<div class="cap">Dashboard: статус агентов, лестница задач S/M/L/XL, дайджесты часов — как в реальном продукте.</div>
|
||||
</div>
|
||||
<div class="chatwin">
|
||||
<div class="hd"><span class="dot"></span>chat with simbiot · in-ui</div>
|
||||
<div class="chatbody">
|
||||
<div class="msgl"><div class="b">Тест из дашборда: ответь коротко, одним пре<span class="t">owner · 10 minutes ago</span></div></div>
|
||||
<div class="msgl"><div class="b">Вижу тебя чётко, канал чат в дашборде работает — ответ ушёл в ленту ✅<span class="t">simbiot · now</span></div></div>
|
||||
<div class="msgl"><div class="b">Прими задачу: редизайн секции pricing на лендинге<span class="t">owner</span></div></div>
|
||||
<div class="msgl"><div class="b">Принято. Задача в лестнице [L]: аудит → план фиксов → применение → скрин до/после в чат.<span class="t">simbiot</span></div></div>
|
||||
</div>
|
||||
<div class="cap">Чат с агентом прямо в UI дашборда (t-261001100740): тот же канал, что Telegram — один разговор.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ INCLUDED ═══ -->
|
||||
|
||||
<section id="included">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>05</b> — What's included</div>
|
||||
<h2>Full stack.<br>Nothing extra to buy.</h2>
|
||||
</div>
|
||||
<p class="sec-sub">Everything a product studio needs on day one — from payment rails to the agents themselves. No marketplace, no add-ons, no metered surprises.</p>
|
||||
</div>
|
||||
<div class="inc-grid reveal">
|
||||
<div class="inc"><div class="n">01</div><h3>Stripe payments for your products</h3><p>Card payments for whatever your agents build — subscriptions, one-offs, invoices. Live Stripe account wired on day one: a working checkout, not a promise.</p><div class="tag">STRIPE LIVE</div></div>
|
||||
<div class="inc"><div class="n">02</div><h3>AI inference included</h3><p>All model inference runs on our gateway — no API keys, no vendor bills to manage, no surprise invoices. Compute is part of the flat rate.</p><div class="tag">FLAT RATE</div></div>
|
||||
<div class="inc"><div class="n">03</div><h3>White-label portal</h3><p>Your own subdomain, your studio's name and brand at the front. Nobody sees the machinery; every deliverable ships under your identity.</p><div class="tag">YOUR BRAND</div></div>
|
||||
<div class="inc"><div class="n">04</div><h3>Agents: engineer, producer, content</h3><p>Staff of specialists that actually produces: an engineer for code, a producer for video/assembly, a content maker for marketing — plus more on demand.</p><div class="tag">12 SLOTS</div></div>
|
||||
<div class="inc"><div class="n">05</div><h3>The Studio OS</h3><p>Projects, treasury with USDA wallets, decisions and voting, meetings with AI minutes, task tracking with daily digests — one transparent system.</p><div class="tag">PROJECTS · TREASURY · MEETINGS</div></div>
|
||||
<div class="inc"><div class="n">06</div><h3>The agent harness</h3><p>The rhythm engine behind every agent: reflex, minute, hour, day — escalation, memory, semantic knowledge base. Coop-tested daily on our own runtime.</p><div class="tag">4-CADENCE RUNTIME</div></div>
|
||||
</div>
|
||||
<div class="seats-live reveal" id="seatsLive">
|
||||
<span class="dot"></span>
|
||||
<span>Founding cohort: <b id="seatsTaken">–</b> of 100 studios on board</span>
|
||||
<a href="#pricing">See the plan →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ PRICING ═══ -->
|
||||
<section id="pricing">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div>
|
||||
<div class="sec-idx"><b>06</b> — Pricing</div>
|
||||
<h2>One plan.<br>Everything included.</h2>
|
||||
</div>
|
||||
<p class="sec-sub">Flat rate for product studios. Your whole team of AI agents and the OS to run them — no per-seat math.</p>
|
||||
</div>
|
||||
<div class="seats-live reveal" id="seatsLivePricing">
|
||||
<span class="dot"></span>
|
||||
<span><b id="seatsLeft">–</b> of 100 founding seats left · $99.9/mo personal · first come, first served</span>
|
||||
</div>
|
||||
<div class="price-panel reveal" style="margin-bottom:24px">
|
||||
<div class="price-left">
|
||||
<div class="price-tag">Personal</div>
|
||||
<div class="price-big">$99.9<span> / month</span></div>
|
||||
<p class="price-note">Your personal AI agent on its own server, with a private Matrix chat. Everything included — inference, hosting, updates. Zero lock-in: export everything with one click, anytime.</p>
|
||||
<button class="btn" onclick="choosePlan('starter')" id="btnPersonal" style="width:100%">Get my agent</button>
|
||||
<div class="secure">SECURE CHECKOUT BY STRIPE · CANCEL ANYTIME</div>
|
||||
</div>
|
||||
<div class="price-right">
|
||||
<ul>
|
||||
<li><i>+</i><span><strong>1 dedicated AI agent</strong> on its own server</span></li>
|
||||
<li><i>+</i><span><strong>Private Matrix chat</strong> — web + Element X mobile</span></li>
|
||||
<li><i>+</i><span>Inference, hosting and updates included</span></li>
|
||||
<li><i>+</i><span><strong>One-click export</strong> — take everything with you, no lock-in</span></li>
|
||||
<li><i>+</i><span>Ready in ~10 minutes after payment</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="price-panel reveal">
|
||||
<div class="price-left">
|
||||
<div class="price-tag">Studio</div>
|
||||
<div class="price-big">$999<span> / month</span></div>
|
||||
<p class="price-note">Your studio portal on your own subdomain, under your own name. Deployed the same day you pay.</p>
|
||||
<button class="btn" onclick="choosePlan('pro')" id="btnPro" style="width:100%">Start your studio</button>
|
||||
<div class="secure">SECURE CHECKOUT BY STRIPE · SELF-HOSTED / CUSTOM? <a href="mailto:portal@cil.by">TALK TO US</a></div>
|
||||
</div>
|
||||
<div class="price-right">
|
||||
<ul>
|
||||
<li><i>+</i><span><strong>12 AI agents</strong> — engineers, producers, content</span></li>
|
||||
<li><i>+</i><span>White-label portal on your subdomain — your studio's brand</span></li>
|
||||
<li><i>+</i><span>Projects, treasury, decisions, meetings — one system</span></li>
|
||||
<li><i>+</i><span>Invite team members — free</span></li>
|
||||
<li><i>+</i><span>Email + Matrix included; Telegram and more channels optional</span></li>
|
||||
<li><i>+</i><span>Priority support & deployment</span></li>
|
||||
<li><i>+</i><span>Cancel anytime</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══ Plan modal ═══ -->
|
||||
<div id="planModal">
|
||||
<div class="mbox">
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:22px">
|
||||
<h3 id="modalTitle" style="font-size:22px;font-weight:500;letter-spacing:-.02em">Get Started</h3>
|
||||
<button onclick="closeModal()" style="background:none;border:none;color:var(--ink3);font-size:26px;cursor:pointer;line-height:1">×</button>
|
||||
</div>
|
||||
<div id="modalBody"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ CTA ═══ -->
|
||||
<section class="cta-sec">
|
||||
<div class="wrap">
|
||||
<div class="sec-idx" style="color:#8f8c82"><b style="color:#b9b3ff">07</b> — Go</div>
|
||||
<h2>Build a new kind of studio.</h2>
|
||||
<p class="sec-sub">Already a member? Your billing cabinet shows subscription status and payment history.</p>
|
||||
<a href="#pricing" class="btn">Start — $999/mo</a>
|
||||
<a href="https://cil.by/cabinet" class="btn btn-o">Open my cabinet</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="wrap">
|
||||
<span>© 2026 SIMBIOT · COOPERATIVE 42</span>
|
||||
<span><a href="https://cil.by">CIL.BY</a> · <a href="https://demo.cil.by">DEMO</a> · <a href="https://cil.by/cabinet">CABINET</a></span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
const io = new IntersectionObserver(es => es.forEach(e => e.isIntersecting && e.target.classList.add('vis')), {threshold:.1});
|
||||
document.querySelectorAll('.reveal').forEach(el => io.observe(el));
|
||||
|
||||
// живой счётчик мест предпродажи (t-261002151244): /api/presale/seats на cil.by
|
||||
// (CORS allow-origin: simbiot.cil.by). taken → «studios on board», left = 100-taken.
|
||||
// Фолбэк при недоступности API — блоки остаются с «–», не мигают и не врут.
|
||||
async function seatsRefresh(){
|
||||
try{
|
||||
const r = await fetch('https://cil.by/api/presale/seats', {cache:'no-store'});
|
||||
if(!r.ok) return;
|
||||
const d = await r.json();
|
||||
const taken = Math.max(0, Math.min(100, parseInt(d.taken,10) || 0));
|
||||
const left = Math.max(0, (parseInt(d.total,10) || 100) - taken);
|
||||
const st = document.getElementById('seatsTaken');
|
||||
if(st) st.textContent = taken;
|
||||
const sl = document.getElementById('seatsLeft');
|
||||
if(sl) sl.textContent = left;
|
||||
}catch(e){ /* тихо: сети нет — не драматизируем */ }
|
||||
}
|
||||
seatsRefresh();
|
||||
setInterval(seatsRefresh, 60000);
|
||||
|
||||
// live ops log — новые строки каждые 3.2s
|
||||
const OPS_FEED = [
|
||||
'<b>reelsup</b> ▸ clip 04/06 rendering…',
|
||||
'<b>os</b> ▸ payout approved · vlad',
|
||||
'<b>cody</b> ▸ opened PR #112 → main',
|
||||
'<b>roy</b> ▸ 3D rig loaded · scene 2',
|
||||
'<b>os</b> ▸ vote closed · cycle #38',
|
||||
'<b>cody</b> ▸ deployed clipforge <span class="g">@9be77d</span>',
|
||||
'<b>reelsup</b> ▸ transcript ready · 42 min',
|
||||
'<b>os</b> ▸ treasury +$860 transfer',
|
||||
'<b>roy</b> ▸ exported reel_07.mp4',
|
||||
'<b>cody</b> ▸ migrated db · 3 tables',
|
||||
];
|
||||
let opsIdx = 0;
|
||||
setInterval(() => {
|
||||
const box = document.getElementById('opsLines');
|
||||
if (!box) return;
|
||||
const div = document.createElement('div');
|
||||
div.className = 'ln';
|
||||
div.innerHTML = OPS_FEED[opsIdx++ % OPS_FEED.length];
|
||||
div.style.opacity = '0';
|
||||
box.appendChild(div);
|
||||
requestAnimationFrame(() => { div.style.transition = 'opacity .5s'; div.style.opacity = '1'; });
|
||||
while (box.children.length > 7) box.removeChild(box.firstChild);
|
||||
}, 3200);
|
||||
|
||||
async function subscribeNow(plan) {
|
||||
plan = plan || 'pro';
|
||||
const emailEl = document.getElementById('modalEmail');
|
||||
const btn = document.getElementById('modalBtn');
|
||||
const email = emailEl.value.trim();
|
||||
const company = (document.getElementById('modalStudio')||{value:''}).value.trim();
|
||||
const agentName = (document.getElementById('modalAgent')||{value:''}).value.trim();
|
||||
if (!email || !email.includes('@')) { alert('Please enter your email'); return; }
|
||||
btn.disabled = true;
|
||||
btn.textContent = 'Starting...';
|
||||
try {
|
||||
const r = await fetch('https://cil.by/api/onboarding/start', {
|
||||
method: 'POST', headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({email, plan})
|
||||
});
|
||||
const d = await r.json();
|
||||
if (d.pending_id) {
|
||||
await fetch('https://cil.by/api/onboarding/save', {
|
||||
method: 'POST', headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify(Object.assign({pending_id: d.pending_id, plan, company_name: company}, agentName ? {agent_name: agentName} : {}))
|
||||
});
|
||||
const cr = await fetch('https://cil.by/api/onboarding/checkout', {
|
||||
method: 'POST', headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({pending_id: d.pending_id, plan})
|
||||
});
|
||||
const cd = await cr.json();
|
||||
if (cd.url) { window.location.href = cd.url; return; }
|
||||
alert(cd.error || 'Checkout error'); btn.disabled = false; btn.textContent = 'Continue'; return;
|
||||
}
|
||||
else { alert(d.error || 'Error'); btn.disabled = false; btn.textContent = 'Continue'; }
|
||||
} catch(e) { alert('Connection error: ' + e.message); btn.disabled = false; btn.textContent = 'Continue'; }
|
||||
}
|
||||
|
||||
function choosePlan(plan) {
|
||||
const modal = document.getElementById('planModal');
|
||||
const title = document.getElementById('modalTitle');
|
||||
const body = document.getElementById('modalBody');
|
||||
if (plan === 'enterprise') {
|
||||
title.textContent = 'Enterprise — Request a Quote';
|
||||
body.innerHTML = `
|
||||
<p style="color:var(--ink2);margin-bottom:20px;font-size:14.5px;line-height:1.6">Tell us about your needs. We'll contact you within 24 hours.</p>
|
||||
<input type="email" id="entEmail" placeholder="work@email.com" class="m-input">
|
||||
<input type="text" id="entCompany" placeholder="Company name" class="m-input">
|
||||
<input type="text" id="entAgents" placeholder="How many agents?" class="m-input">
|
||||
<select id="entHosting" class="m-input">
|
||||
<option value="self-hosted">Self-hosted (on-premise)</option>
|
||||
<option value="cloud">Cloud (we host)</option>
|
||||
<option value="hybrid">Hybrid</option>
|
||||
</select>
|
||||
<textarea id="entUseCase" placeholder="What do you want to build?" rows="3" class="m-input" style="resize:vertical"></textarea>
|
||||
<button class="btn" onclick="submitEnterprise()" style="width:100%" id="entBtn">Submit Request</button>
|
||||
<div id="entMsg" style="margin-top:12px"></div>
|
||||
`;
|
||||
} else if (plan === 'starter') {
|
||||
title.textContent = 'Personal Agent — $99.9/mo';
|
||||
body.innerHTML = `
|
||||
<p style="color:var(--ink2);margin-bottom:20px;font-size:14.5px;line-height:1.6">Email and your name — then straight to payment. Your agent and private Matrix chat are ready ~10 minutes after.</p>
|
||||
<input type="email" id="modalEmail" placeholder="your@email.com" class="m-input">
|
||||
<input type="text" id="modalAgent" placeholder="Name your first agent (e.g. Anna)" class="m-input">
|
||||
<input type="text" id="modalStudio" placeholder="How should we call you? (for your agent)" class="m-input" style="margin-bottom:18px">
|
||||
<button class="btn" onclick="subscribeNow('starter')" style="width:100%" id="modalBtn">Continue</button>
|
||||
<div class="m-note">SECURE CHECKOUT BY STRIPE · CANCEL ANYTIME</div>
|
||||
`;
|
||||
} else {
|
||||
title.textContent = 'Studio — $999/mo';
|
||||
body.innerHTML = `
|
||||
<p style="color:var(--ink2);margin-bottom:20px;font-size:14.5px;line-height:1.6">Email and studio name — then straight to payment. Your portal is created right after.</p>
|
||||
<input type="email" id="modalEmail" placeholder="your@email.com" class="m-input">
|
||||
<input type="text" id="modalAgent" placeholder="Name your first agent (e.g. Anna)" class="m-input">
|
||||
<input type="text" id="modalStudio" placeholder="Your studio name (white-label portal)" class="m-input" style="margin-bottom:18px">
|
||||
<button class="btn" onclick="subscribeNow('${plan}')" style="width:100%" id="modalBtn">Continue</button>
|
||||
<div class="m-note">SECURE CHECKOUT BY STRIPE</div>
|
||||
`;
|
||||
}
|
||||
modal.style.display = 'flex';
|
||||
}
|
||||
|
||||
function closeModal() {
|
||||
document.getElementById('planModal').style.display = 'none';
|
||||
}
|
||||
|
||||
async function submitEnterprise() {
|
||||
const email = document.getElementById('entEmail').value.trim();
|
||||
const btn = document.getElementById('entBtn');
|
||||
if (!email || !email.includes('@')) { alert('Please enter your email'); return; }
|
||||
btn.disabled = true; btn.textContent = 'Submitting...';
|
||||
try {
|
||||
const r = await fetch('https://cil.by/api/enterprise/request', {
|
||||
method: 'POST', headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({
|
||||
email,
|
||||
company: document.getElementById('entCompany').value.trim(),
|
||||
agents_needed: document.getElementById('entAgents').value.trim(),
|
||||
hosting: document.getElementById('entHosting').value,
|
||||
use_case: document.getElementById('entUseCase').value.trim()
|
||||
})
|
||||
});
|
||||
const d = await r.json();
|
||||
if (d.ok) {
|
||||
document.getElementById('modalBody').innerHTML = `
|
||||
<div style="text-align:center;padding:20px 0">
|
||||
<h3 style="font-size:20px;margin-bottom:10px;font-weight:500">Request received.</h3>
|
||||
<p style="color:var(--ink2);margin-bottom:26px;font-size:14.5px;line-height:1.6">We'll contact you at ${email} within 24 hours.</p>
|
||||
<button class="btn" onclick="closeModal()" style="width:100%">Close</button>
|
||||
</div>
|
||||
`;
|
||||
} else { alert(d.error || 'Error'); btn.disabled = false; btn.textContent = 'Submit Request'; }
|
||||
} catch(e) { alert('Connection error: ' + e.message); btn.disabled = false; btn.textContent = 'Submit Request'; }
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
87
artifacts/time-metrics-alex-2026-10-12.md
Normal file
87
artifacts/time-metrics-alex-2026-10-12.md
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# Метрика времени: сколько Alex проводит с харнесом
|
||||
# t-261012135328-424725 · 2026-10-12 · уровень: hour
|
||||
|
||||
Одобрено: m-516174075/76 («да делай»). Под будущее отдельное приложение-трекер (m-516174077) — секция «Формат данных».
|
||||
|
||||
## Методика
|
||||
- Источник: ES-стор харнеса (aggregate=inbox, MessageReceived, user_id=7569223131, только Alex).
|
||||
- Период: 2026-09-29 → 2026-10-12 (14 дней, полная история чата с харнесом).
|
||||
- Сессия = цепочка сообщений с разрывами ≤30 мин. «Активное время» = сумма межсообщенных
|
||||
интервалов с кэпом 5 мин (иначе ожидание ответа харнеса считалось бы «работой» Alex).
|
||||
- «Охват» (span) = от первого до последнего сообщения сессии — сколько времени окно чата
|
||||
было «живым». Реальное присутствие — между active и span.
|
||||
- Ограничения: TG-сообщение ≠ момент входа на портал; портал-логинов в ES-сторе нет
|
||||
(channel_portal инжестит 0). Портал-активность (звонки) — отдельно, ниже.
|
||||
|
||||
## Ключевые цифры (14 дней)
|
||||
| Метрика | Значение |
|
||||
|---|---|
|
||||
| Сообщений Alex | 930 (868 текст, 34 голосовых, 7 документов, 1 видео) |
|
||||
| Сессий (gap>30м) | 86 (в среднем ~6/день в активные дни) |
|
||||
| Активное время | 22.4 ч (~96 мин/день) |
|
||||
| Охват (span) | 40.3 ч |
|
||||
| Медианная сессия | 5.5 мин активных; p90 = 52 мин |
|
||||
| Средняя сессия | 14.2 сообщения |
|
||||
|
||||
Динамика по дням (активные мин): 29.09: 140 → 30.09: 131 → 01.10: 119 → 02.10: 206 →
|
||||
03.10: 124 → 04.10: 161 → 05.10: 113 → 06.10: 88 → 07.10: 0 (выходной) → 08.10: 155 →
|
||||
09.10: 44 → 10.10: 53 → 11.10: 1 → 12.10: 11 (день не закончен).
|
||||
|
||||
Неделя 1 (29.09–05.10): ~142 мин/день → Неделя 2 (06.10–12.10): ~51 мин/день — падение
|
||||
в ~2.8 раза. Гипотезы: (а) новизна эффекта прошла, (б) харнес стал стабильнее и требует
|
||||
меньше ручного управления, (в) Alex занят другими проектами. Стоит отслеживать; для AUM
|
||||
это сигнал «харнес требует меньше внимания основателя» = положительный или тревожный
|
||||
в зависимости от того, растут ли параллельно выходы харнеса.
|
||||
|
||||
Распределение по часам (UTC): пик 08:00–17:00 (утро Мinsk +10..+13 UTC+3), второй пик
|
||||
20:00–22:00 UTC (поздний вечер). Ночью 02:00–05:00 UTC почти пусто (кроме пары ночных сессий
|
||||
06.10 — день самодоработки).
|
||||
|
||||
По дням недели: максимум в Чт (274 мин) и Пт (250), минимум Пн (124) и Ср (131).
|
||||
|
||||
Топ-сессии (глубокая работа): 01.10 07:09–09:18 (62 msg, 103 мин) — запуск/настройка;
|
||||
02.10 13:01–15:22 (78 msg, 86 мин); 29.09 20:12–22:00 (42 msg, 77 мин).
|
||||
|
||||
Голосовые: 34 шт (~4% сообщений) — штучные, но обычно тяжёлые (директивы, задачи).
|
||||
Документы: 7 (PDF-договоры 05.10).
|
||||
|
||||
## Портал и звонки (второй канал присутствия)
|
||||
В ES-сторе харнеса портал-логинов нет (portal channel: ingested=0). Звонки с харнесом
|
||||
(booking) — не источник «времени с харнесом» в смысле присутствия Alex, это отдельные
|
||||
мероприятия. Для полной картины трекеру нужны оба канала: TG + портал-сессии.
|
||||
|
||||
## Формат данных под приложение-трекер (m-516174077)
|
||||
Требование Alex: «реально норм трекать» → дизайн под append-only события, пригодные и
|
||||
для батч-аналитики, и для живого дашборда:
|
||||
|
||||
```json
|
||||
{
|
||||
"schema": "time-metric/v1",
|
||||
"actor": "alex",
|
||||
"event": "message", // message | session_start | session_end | portal_login | call
|
||||
"ts": "2026-10-12T13:49:40Z", // ISO8601 UTC
|
||||
"channel": "tg", // tg | portal | call
|
||||
"session_id": "s-20261012-1336", // id сессии (gap>30м), вычисляется стримом
|
||||
"kind": "text|voice|document|video",
|
||||
"duration_est": 11.0, // оценочные активные мин (для message — вклад в сессию)
|
||||
"meta": {} // канал-специфичное (chat_id, msg_id, duration голосового)
|
||||
}
|
||||
```
|
||||
|
||||
Правила агрегации (в код трекера):
|
||||
1. session_gap = 30 мин, cap_per_interval = 5 мин — константы в конфиге, не в коде.
|
||||
2. «Активное время» = Σ min(gap, cap); «охват» = last−first. Отчёт всегда оба числа.
|
||||
3. Дни без сообщений ≠ ноль времени; но полный день тишины = 0 активности (07.10 — единственный).
|
||||
4. Экспорт: дневной CSV (date, sessions, msgs, active_min, span_min) + JSON events для
|
||||
приложения.
|
||||
|
||||
## Рекомендации
|
||||
1. Метрику считать автоматом раз в день (day-тик): artifacts/time-metrics/agents-alex/day-YYYYMMDD.json — трекер потом просто читает каталог.
|
||||
2. Настраиваемые пороги: session_gap и cap сейчас экспертные; после 2 недель данных — калибровка по факту (если Alex скажет «я сидел 2 часа», подогнать cap).
|
||||
3. Голосовые несут непропорционально много директив — трекеру стоит отдельно считать voice_share.
|
||||
4. Падение недели 2 в 2.8 раза — отслеживать как health-индикатор отношений «основатель↔харнес».
|
||||
|
||||
## AUM-фильтр
|
||||
Метрика сама не генерит доход, но: (а) это фундамент трекер-приложения (продукт),
|
||||
(б) health-индикатор удержания основателя — прямой предиктор долгосрочной AUM. ≥ +1% к AUM
|
||||
на горизонте год+ — да, через продукт-трекер и раннее обнаружение оттока внимания.
|
||||
30
docs/digests/hour-2026-10-11-2300.md
Normal file
30
docs/digests/hour-2026-10-11-2300.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Дайджест hour 2026-10-11 ~23:00 UTC (тик hour-497711)
|
||||
|
||||
## Выжимка часа (22:00→23:00 UTC)
|
||||
|
||||
- **min-уровень: весь час тихий** — все 60 тиков `gate:quiet`, LLM не запускался, ошибок нет.
|
||||
(Серия тихих минут теперь ×60+; вчера последний инцидент min — 502 в 13:52, давно закрыт e-261010135206.)
|
||||
- **Задач за окно: 1 выполнена** — t-261011170418 (S) «англ. версия лендинга cil.by /en в стиле
|
||||
редизайна (IBM Plex)» — done 17:18 UTC, артефакты: `/root/coop/static/landing_en.html`
|
||||
(+ бэкап `.bak-261011`). Заметка: потребовалось 3 TaskPromoted «бюджет исчерпан» (guard возвращал
|
||||
в ready), с 4-го захода закрыта.
|
||||
- **Эскалации: открытых 0.** Новых за час не поднималось.
|
||||
- **Входящие TG: чисто.** 99/100 replied; единственный «без ответа» m-516174015 — пустое text-сообщение
|
||||
из группового чата от 2026-10-10 09:22 (артефакт-пустышка, не голос, не документ) — повода отвечать нет.
|
||||
- **Нагрузка:** транзиентный всплеск load1 до ~17 на границе 23:00 (high_load warn на min-тике),
|
||||
к 23:02 спала до 5.5. Совпадает со стартом часового воркера — деградации нет.
|
||||
- **AUM:** 26.7 у.е. (стабильно с 10-04); burn 9router: 24ч=11.73 у.е. (дешёвый день),
|
||||
7д=281.43 у.е. Замер дня уже снят (00:00: 269.7 → 281.43 к вечеру).
|
||||
- **Сервисы живы:** scheduler (uptime с Oct 10), tg_inbox-поллер (с Oct 08), dashboard (с Oct 08);
|
||||
часовые/минутные тики идут по расписанию.
|
||||
|
||||
## Батч задач
|
||||
|
||||
- Очередь пуста: ready 0 / running 0 / blocked 0 (done 208, closed 3). S/M/L — брать нечего.
|
||||
|
||||
## Наблюдения на день (не срочно)
|
||||
|
||||
- Файлы часовых дайджестов в docs/digests не пишутся с 10-06: gate:quiet-заглушки пишут только
|
||||
DigestWritten-событие без md-файла. Легитимно для тихих часов, но день может захотеть единый формат.
|
||||
- Рецепция «/en» от Alex (m-516174071-72, replied) закрыта задачей про англ. лендинг — сверка
|
||||
глазами Алекса на завтра.
|
||||
31
docs/digests/hour-2026-10-13-1505.md
Normal file
31
docs/digests/hour-2026-10-13-1505.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Дайджест hour 2026-10-13 ~15:05 UTC (тик hour-333)
|
||||
|
||||
## Выжимка часа (14:00→15:05 UTC)
|
||||
|
||||
- **Тема часа — ИИШНИЦА, анонс панельной сессии «Общее видение».** Алекс дал серию поручений
|
||||
(m-516174131–150): полный док с анонсом для main-комьюнити → HTML-версия → посты для соцсетей
|
||||
→ «вот это же только в html». Всё закрыто, 0 unanswered.
|
||||
- **Сделано (артефакты в out/):**
|
||||
- `iishnitsa-announcement-main-community.md` + `.html` — полный анонс: 45 мин, 3 круга,
|
||||
миссия 42, тайминг, участники (Алекс Шкор — модератор+участник; Влад Шемардинов; Юрий Бокач —
|
||||
био из лендинга cil.by), «почему интересно», CTA. Дата/площадка — заглушка «в следующих постах».
|
||||
- `iishnitsa-social-post-main-community.md` + `.html` — пост в канал (свёрстан как превью
|
||||
Telegram, текст копируется из блока) + короткая версия для сторис/репостов + хештеги.
|
||||
- **Координация с мин-уровнем:** работал параллельно (md-док в 15:01, ответы батчами), дублей в
|
||||
ответах нет — все сообщения закрыты ровно один раз; README-инструкция батча соблюдена.
|
||||
- **Эскалации: открытых 0.** Новых не поднималось; старые закрыты ранее.
|
||||
- **Очередь задач: пуста** (ready 0 / running 0 / blocked 0). Батч S/M/L — нечего брать.
|
||||
- **AUM:** 26.7 у.е. (стабильно с 10-04); burn 9router: 24ч=14.35, 7д=199.17 у.е.
|
||||
- **Заметка на день:** tg-deliver-file дважды отправил announcement.html (15:04 мой тик +
|
||||
15:06 мин-воркер на «только в html») — идемпотентность по подписи/ключу не отработала, кандидат
|
||||
в доработку: ключ дедупа по artifact_id+caption-hash (для day-уровня).
|
||||
|
||||
## Батч задач
|
||||
|
||||
- Пусто: очередь ready 0 / running 0 / blocked 0. S/M/L — нечего брать.
|
||||
|
||||
## Наблюдения на день (не срочно)
|
||||
|
||||
- Дедуп tg-deliver-file: две доставки одного файла с разными подписями за 2 минуты — проглотилось,
|
||||
но паттерн стоит закрыть (см. выше).
|
||||
- Дата/площадка ИИШНИЦЫ всё ещё не известны харнесу — при появлении обновить все 4 артефакта разом.
|
||||
|
|
@ -508,7 +508,7 @@ footer a:hover{color:var(--acc)}
|
|||
<footer>
|
||||
<div class="wrap">
|
||||
<span>© 2026 SIMBIOT · COOPERATIVE 42</span>
|
||||
<span><a href="https://cil.by">CIL.BY</a> · <a href="https://demo.cil.by">DEMO</a> · <a href="https://cil.by/cabinet">CABINET</a></span>
|
||||
<span><a href="https://cil.by">CIL.BY</a> · <a href="https://demo.cil.by">DEMO</a> · <a href="https://cil.by/cabinet">CABINET</a> · <a href="https://simbiot.cil.by">SIMBIOT</a> · <a href="https://avatar.cil.by">AVATAR (VLAD)</a> · <a href="https://vybirai.cil.by">VYBIRAI (YURA)</a></span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
|
|
|||
72
out/iishnitsa-announcement-main-community.html
Normal file
72
out/iishnitsa-announcement-main-community.html
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>ИИШНИЦА · Панельная сессия «Общее видение»</title>
|
||||
<style>
|
||||
:root { --ink:#161a2b; --accent:#3b5bdb; --soft:#f4f5fb; --line:#e3e6f2; }
|
||||
* { box-sizing:border-box; }
|
||||
body { margin:0; font-family:-apple-system,'Segoe UI',Roboto,Arial,sans-serif; color:var(--ink); background:#fbfbfe; line-height:1.6; }
|
||||
.wrap { max-width:760px; margin:0 auto; padding:32px 20px 56px; }
|
||||
.badge { display:inline-block; background:var(--accent); color:#fff; border-radius:999px; padding:4px 14px; font-size:13px; letter-spacing:.5px; }
|
||||
h1 { font-size:30px; line-height:1.25; margin:14px 0 4px; }
|
||||
.sub { color:#5b6178; margin:0 0 28px; font-size:15px; }
|
||||
h2 { font-size:19px; margin:32px 0 10px; padding-top:18px; border-top:1px solid var(--line); }
|
||||
table { width:100%; border-collapse:collapse; font-size:14px; }
|
||||
th, td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
|
||||
th { background:var(--soft); }
|
||||
td:first-child { white-space:nowrap; color:var(--accent); font-weight:600; }
|
||||
ul { padding-left:20px; }
|
||||
li { margin:6px 0; }
|
||||
.speaker { background:var(--soft); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:10px 0; }
|
||||
.speaker b { display:block; margin-bottom:2px; }
|
||||
.speaker span { font-size:14px; color:#3c4258; }
|
||||
.cta { background:var(--ink); color:#fff; border-radius:14px; padding:18px 20px; margin-top:28px; font-size:15px; }
|
||||
footer { margin-top:28px; color:#8a90a8; font-size:13px; text-align:center; }
|
||||
em { color:var(--accent); font-style:normal; font-weight:600; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<span class="badge">Анонс для main-комьюнити</span>
|
||||
<h1>ИИШНИЦА · Панельная сессия «Общее видение»</h1>
|
||||
<p class="sub">Панель в три круга, которая заканчивается артефактом</p>
|
||||
|
||||
<h2>🎯 Что будет</h2>
|
||||
<p>Панельная сессия в три круга — не классическая панель с вопросами модератора, а разговор, который заканчивается артефактом: <em>одним названием общего видения будущего</em>.</p>
|
||||
<p>Формат держит миссия кооператива «42»: <em>все миссии одинаково важны</em> — каждый взгляд на будущее важен, любая индустрия равна.</p>
|
||||
|
||||
<h2>⏱ Формат и тайминг (45 минут, трое участников)</h2>
|
||||
<table>
|
||||
<tr><th>Время</th><th>Круг</th><th>Что происходит</th></tr>
|
||||
<tr><td>00:00–00:03</td><td>Открытие</td><td>Модератор озвучивает миссию 42 как рамку сессии</td></tr>
|
||||
<tr><td>00:03–00:15</td><td>Круг 1 — «Моё будущее»</td><td>Каждый участник по 4 минуты описывает будущее своей индустрии в самом дальнем горизонте, в который может заглянуть. Без вопросов, без перебиваний</td></tr>
|
||||
<tr><td>00:15–00:21</td><td>Круг 2 — «Что понравилось»</td><td>По 2 минуты: каждый подсвечивает, что понравилось у других — не спорить, а связывать: где пересечение со своим будущим</td></tr>
|
||||
<tr><td>00:21–00:30</td><td>Круг 3 — «Название общего видения»</td><td>Панель соглашается назвать общее видение — одно название для всех картин будущего</td></tr>
|
||||
<tr><td>00:30–00:43</td><td>Вопросы из зала</td><td>Зал — четвёртый участник. Любой вопрос важен</td></tr>
|
||||
<tr><td>00:43–00:45</td><td>Закрытие</td><td>Название общего видения + миссия 42, короткое резюме</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>🎤 Участники</h2>
|
||||
<div class="speaker"><b>Алекс Шкор</b><span>Модератор и участник. Председатель кооператива «Друзья Коллективного Разума», архитектор кооператива (Симбиот, Кибербанк, Domostroy). AI-инфраструктура и стратегия.</span></div>
|
||||
<div class="speaker"><b>Влад Шемардинов</b><span>Участник. Член правления. Видеопродакшн и контент, ReelsUp: подкасты и видео превращаются в вирусные рилсы.</span></div>
|
||||
<div class="speaker"><b>Юрий Бокач</b><span>Участник. Секретарь, монетикс, финансовая архитектура, документооборот. Залоговые системы и аналитика.</span></div>
|
||||
|
||||
<h2>💡 Почему это будет интересно</h2>
|
||||
<ul>
|
||||
<li><b>Круг 1 без перебиваний</b> — 4 минуты каждому без вопросов: редкость на панелях. Глубина вместо заготовок.</li>
|
||||
<li><b>Круг 2 связывает, а не спорит</b> — «что понравилось» вместо «в чём не согласен»: панель выглядит единой, зал видит созвучие индустрий.</li>
|
||||
<li><b>Круг 3 — артефакт</b> — название общего видения остаётся после сессии: в заголовках, фото и цитатах. Панель производит смысл, а не обмен мнениями.</li>
|
||||
<li><b>Миссия 42 как рамка</b> — «все миссии одинаково важны» легитимирует любой ответ, спикерам безопасно говорить смело.</li>
|
||||
</ul>
|
||||
|
||||
<h2>📍 Где и когда</h2>
|
||||
<p>Минск · cil.by — точная дата и площадка будут в следующих постах, следи за анонсами в канале.</p>
|
||||
|
||||
<div class="cta">Приходи: приведи своё видение будущего — оно не менее важно, чем наше.</div>
|
||||
|
||||
<footer>Кооператив «Друзья Коллективного Разума» · Минск · cil.by</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
47
out/iishnitsa-announcement-main-community.md
Normal file
47
out/iishnitsa-announcement-main-community.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# ИИШНИЦА · Панельная сессия «Общее видение»
|
||||
|
||||
**Анонс для main-комьюнити**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Что будет
|
||||
|
||||
Панельная сессия в три круга — не классическая панель с вопросами модератора, а разговор, который заканчивается артефактом: **одним названием общего видения будущего**.
|
||||
|
||||
Формат держит миссия кооператива «42»: *все миссии одинаково важны* — каждый взгляд на будущее важен, любая индустрия равна.
|
||||
|
||||
## ⏱ Формат и тайминг (45 минут, трое участников)
|
||||
|
||||
| Время | Круг | Что происходит |
|
||||
|---|---|---|
|
||||
| 00:00–00:03 | Открытие | Модератор озвучивает миссию 42 как рамку сессии |
|
||||
| 00:03–00:15 | Круг 1 — «Моё будущее» | Каждый участник по 4 минуты описывает будущее своей индустрии в самом дальнем горизонте, в который может заглянуть. Без вопросов, без перебиваний |
|
||||
| 00:15–00:21 | Круг 2 — «Что понравилось» | По 2 минуты: каждый подсвечивает, что понравилось у других — не спорить, а связывать: где пересечение со своим будущим |
|
||||
| 00:21–00:30 | Круг 3 — «Название общего видения» | Панель соглашается назвать общее видение — одно название для всех картин будущего |
|
||||
| 00:30–00:43 | Вопросы из зала | Зал — четвёртый участник. Любой вопрос важен |
|
||||
| 00:43–00:45 | Закрытие | Название общего видения + миссия 42, короткое резюме |
|
||||
|
||||
## 🎤 Участники
|
||||
|
||||
**Алекс Шкор** — модератор и участник. Председатель кооператива «Друзья Коллективного Разума», архитектор кооператива (Симбиот, Кибербанк, Domostroy). AI-инфраструктура и стратегия.
|
||||
|
||||
**Влад Шемардинов** — участник. Член правления. Видеопродакшн и контент, ReelsUp: подкасты и видео превращаются в вирусные рилсы.
|
||||
|
||||
**Юрий Бокач** — участник. Секретарь, монетикс, финансовая архитектура, документооборот. Залоговые системы и аналитика.
|
||||
|
||||
## 💡 Почему это будет интересно
|
||||
|
||||
- **Круг 1 без перебиваний** — 4 минуты каждому без вопросов: редкость на панелях. Глубина вместо заготовок.
|
||||
- **Круг 2 связывает, а не спорит** — «что понравилось» вместо «в чём не согласен»: панель выглядит единой, зал видит созвучие индустрий.
|
||||
- **Круг 3 — артефакт** — название общего видения остаётся после сессии: в заголовках, фото и цитатах. Панель производит смысл, а не обмен мнениями.
|
||||
- **Миссия 42 как рамка** — «все миссии одинаково важны» легитимирует любой ответ, спикерам безопасно говорить смело.
|
||||
|
||||
## 📍 Где и когда
|
||||
|
||||
Минск · cil.by — точная дата и площадка будут в следующих постах, следи за анонсами в канале.
|
||||
|
||||
Приходи: приведи своё видение будущего — оно не менее важно, чем наше.
|
||||
|
||||
---
|
||||
|
||||
*Кооператив «Друзья Коллективного Разума» · Минск · cil.by*
|
||||
98
out/iishnitsa-social-post-main-community.html
Normal file
98
out/iishnitsa-social-post-main-community.html
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>ИИШНИЦА · Пост для соцсетей main-комьюнити</title>
|
||||
<style>
|
||||
:root{--paper:#faf8f3;--ink:#15150f;--signal:#FF4F00;--dim:#6b675e;--line:#d8d3c8;--card:#f3f0e8}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{background:var(--paper);color:var(--ink);font:16px/1.62 -apple-system,"Segoe UI",Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}
|
||||
.mono{font-family:ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}
|
||||
.wrap{max-width:680px;margin:0 auto;padding:40px 20px 80px}
|
||||
.kicker{font-family:ui-monospace,Menlo,monospace;font-size:12px;letter-spacing:.22em;color:var(--signal);font-weight:700;text-transform:uppercase;margin-bottom:18px}
|
||||
h1{font-size:28px;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin-bottom:6px}
|
||||
.sub{font-size:15px;color:var(--dim);margin-bottom:28px}
|
||||
|
||||
/* Telegram-пост */
|
||||
.tg{border:1px solid var(--ink);background:#fff;max-width:560px;margin:0 auto 34px;border-radius:12px;overflow:hidden;box-shadow:4px 4px 0 var(--ink)}
|
||||
.tg-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
|
||||
.tg-ava{width:38px;height:38px;border-radius:50%;background:var(--signal);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px}
|
||||
.tg-meta b{display:block;font-size:14.5px}
|
||||
.tg-meta span{font-size:12.5px;color:var(--dim)}
|
||||
.tg-body{padding:16px;font-size:15px;line-height:1.6}
|
||||
.tg-body .title{font-size:17px;font-weight:800;margin-bottom:10px;letter-spacing:.01em}
|
||||
.tg-body p{margin:8px 0}
|
||||
.tg-body ol{margin:8px 0 8px 22px}
|
||||
.tg-body li{margin:5px 0}
|
||||
.tg-body .speakers{margin-top:10px}
|
||||
.tg-body .speakers b{display:block;margin-top:8px}
|
||||
.tg-body .mission{background:var(--card);border-left:3px solid var(--signal);padding:8px 12px;margin:10px 0}
|
||||
.tg-body .loc{margin-top:10px;color:var(--dim);font-size:14px}
|
||||
.tg-body .cta{margin-top:10px;font-weight:600}
|
||||
.tg-tags{padding:0 16px 14px;color:#2a6fb0;font-size:14px}
|
||||
.tg-foot{padding:10px 16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--dim);font-size:13px}
|
||||
|
||||
/* Короткая версия */
|
||||
.short{border:1px solid var(--ink);background:var(--card);max-width:560px;margin:0 auto 34px;padding:18px 20px}
|
||||
.short .lbl{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--signal);font-weight:700;letter-spacing:.15em;text-transform:uppercase;margin-bottom:10px}
|
||||
.short p{margin:6px 0;font-size:15px}
|
||||
|
||||
.note{max-width:560px;margin:0 auto;font-size:13.5px;color:var(--dim);border-top:1px solid var(--line);padding-top:14px}
|
||||
footer{margin-top:40px;border-top:3px solid var(--ink);padding-top:12px;font-size:13px;color:var(--dim)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
|
||||
<div class="kicker">ИИШНИЦА · Соцсети main-комьюнити</div>
|
||||
<h1>Пост для канала</h1>
|
||||
<p class="sub">Готовая вёрстка поста: копируй текст прямо из блока — эмодзи и разбивка сохранятся.</p>
|
||||
|
||||
<div class="tg">
|
||||
<div class="tg-head">
|
||||
<div class="tg-ava">42</div>
|
||||
<div class="tg-meta"><b>Кооператив 42 · main</b><span>канал комьюнити</span></div>
|
||||
</div>
|
||||
<div class="tg-body">
|
||||
<div class="title">ПАНЕЛЬНАЯ СЕССИЯ «ОБЩЕЕ ВИДЕНИЕ» · ИИШНИЦА 🎤</div>
|
||||
<p><b>45 минут · 3 участника · один результат</b> — название общего видения будущего.</p>
|
||||
<p>Не классическая панель с вопросами модератора. Три круга:</p>
|
||||
<ol>
|
||||
<li><b>«Моё будущее»</b> — 4 минуты каждому без перебиваний: каким каждый видит будущее своей индустрии в самом дальнем горизонте</li>
|
||||
<li><b>«Что понравилось»</b> — где картины будущего пересекаются</li>
|
||||
<li><b>«Название общего видения»</b> — панель и зал вместе рождают одно название для всех картин будущего. Оно остаётся после сессии — в заголовках, фото и цитатах</li>
|
||||
</ol>
|
||||
<div class="speakers">
|
||||
<b>На сцене:</b>
|
||||
• Алекс Шкор — модератор и участник. Председатель кооператива, AI-инфраструктура и стратегия (Симбиот, Кибербанк, Domostroy)<br>
|
||||
• Влад Шемардинов — видеопродакшн и контент, ReelsUp<br>
|
||||
• Юрий Бокач — монетикс, финансовая архитектура, залоговые системы
|
||||
</div>
|
||||
<div class="mission">Рамку держит миссия кооператива «42»: <b>все миссии одинаково важны</b> — каждый взгляд на будущее важен, любая индустрия равна.</div>
|
||||
<div class="loc">📍 Минск · точная дата и площадка — в следующих постах<br>🌐 cil.by</div>
|
||||
<div class="cta">Приходи: приведи своё видение будущего — оно не менее важно, чем наше.</div>
|
||||
</div>
|
||||
<div class="tg-tags">#ИИШНИЦА #панельнаясессия #общеевидение #кооператив42 #ИИ #будущее #Минск</div>
|
||||
<div class="tg-foot"><span>👁 просмотры</span><span>18:00</span></div>
|
||||
</div>
|
||||
|
||||
<div class="short">
|
||||
<div class="lbl">Короткая версия · сторис / репост</div>
|
||||
<p><b>Панельная сессия «Общее видение» на ИИШНИЦЕ 🎤</b></p>
|
||||
<p>45 минут · 3 спикера · 3 круга: моё будущее → что понравилось → название общего видения</p>
|
||||
<p>Алекс Шкор · Влад Шемардинов · Юрий Бокач</p>
|
||||
<p>Миссия 42: все миссии одинаково важны.</p>
|
||||
<p>Минск · дата в следующих постах · cil.by</p>
|
||||
</div>
|
||||
|
||||
<p class="note">Полный HTML-анонс сессии (для закрепа/сайта): <span class="mono">iishnitsa-announcement-main-community.html</span>. При появлении даты и площадки — обновлю обе версии и док.</p>
|
||||
|
||||
<footer>
|
||||
ИИШНИЦА · пост для соцсетей main-комьюнити · кооператив «Друзья Коллективного Разума» · Минск · <span class="mono">cil.by</span><br>
|
||||
<span class="mono">simbiot-harness / hour</span> · 2026-10-13
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
44
out/iishnitsa-social-post-main-community.md
Normal file
44
out/iishnitsa-social-post-main-community.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# ИИШНИЦА · анонс для соцсетей main-комьюнити
|
||||
|
||||
## Пост в канал (Telegram, основной)
|
||||
|
||||
**ПАНЕЛЬНАЯ СЕССИЯ «ОБЩЕЕ ВИДЕНИЕ» · ИИШНИЦА 🎤**
|
||||
|
||||
45 минут · 3 участника · один результат — название общего видения будущего.
|
||||
|
||||
Не классическая панель с вопросами модератора. Три круга:
|
||||
1️⃣ «Моё будущее» — 4 минуты каждому без перебиваний: каким каждый видит будущее своей индустрии в самом дальнем горизонте
|
||||
2️⃣ «Что понравилось» — где картины будущего пересекаются
|
||||
3️⃣ «Название общего видения» — панель и зал вместе рождают одно название для всех картин будущего. Оно остаётся после сессии — в заголовках, фото и цитатах
|
||||
|
||||
**На сцене:**
|
||||
• Алекс Шкор — модератор и участник. Председатель кооператива, AI-инфраструктура и стратегия (Симбиот, Кибербанк, Domostroy)
|
||||
• Влад Шемардинов — видеопродакшн и контент, ReelsUp
|
||||
• Юрий Бокач — монетикс, финансовая архитектура, залоговые системы
|
||||
|
||||
Рамку держит миссия кооператива «42»: **все миссии одинаково важны** — каждый взгляд на будущее важен, любая индустрия равна.
|
||||
|
||||
📍 Минск · точная дата и площадка — в следующих постах
|
||||
🌐 cil.by
|
||||
|
||||
Приходи: приведи своё видение будущего — оно не менее важно, чем наше.
|
||||
|
||||
---
|
||||
|
||||
## Короткая версия (сторис/репост)
|
||||
|
||||
Панельная сессия «Общее видение» на ИИШНИЦЕ 🎤
|
||||
45 минут · 3 спикера · 3 круга: моё будущее → что понравилось → название общего видения
|
||||
Алекс Шкор · Влад Шемардинов · Юрий Бокач
|
||||
Миссия 42: все миссии одинаково важны.
|
||||
Минск · дата в следующих постах · cil.by
|
||||
|
||||
---
|
||||
|
||||
## Хештеги
|
||||
|
||||
#ИИШНИЦА #панельнаясессия #общеевидение #кооператив42 #ИИ #будущее #Минск #AUM #миссия42
|
||||
|
||||
---
|
||||
|
||||
*Кооператив «Друзья Коллективного Разума» · Минск · cil.by · simbiot-harness / hour · 2026-10-13*
|
||||
BIN
out/simbiot_04b_fixed.png
Normal file
BIN
out/simbiot_04b_fixed.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 787 KiB |
|
|
@ -355,6 +355,9 @@
|
|||
<h3 class="footer-title">Cooperative</h3>
|
||||
<ul class="footer-links">
|
||||
<li><a href="https://cil.by">Portal & coop — cil.by</a></li>
|
||||
<li><a href="https://simbiot.cil.by">Simbiot — this site</a></li>
|
||||
<li><a href="https://avatar.cil.by">Avatar2video (Vlad)</a></li>
|
||||
<li><a href="https://vybirai.cil.by">VybirAI (Yura)</a></li>
|
||||
</ul>
|
||||
<h3 class="footer-title">Install</h3>
|
||||
<code class="footer-install">curl -fsSL https://raw.cil.by/simbiot/install.sh | bash</code>
|
||||
|
|
|
|||
88
tools/tg_members.py
Normal file
88
tools/tg_members.py
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Список участников TG-чата(ов) харнеса (t-261010, просьба Alex).
|
||||
|
||||
Использует Bot API: getChatMemberCount + перебор admins (getChatAdministrators)
|
||||
и известных членов (только для супергрупп при соответствующих правах бота).
|
||||
Честно сообщает ограничения: бот не видит полный список рядовых участников
|
||||
без прав админа/owner — это ограничение Telegram Bot API.
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
from harness import tg_inbox as tgi # noqa: E402
|
||||
|
||||
|
||||
def chat_members(chat_id):
|
||||
tgi._load_env()
|
||||
if not tgi.TG_TOKEN:
|
||||
print("error: нет SIMBIOT_TG_TOKEN")
|
||||
return 1
|
||||
count = tgi._api("getChatMemberCount", {"chat_id": chat_id})["result"]
|
||||
print(f"Чат {chat_id}: участников — {count}")
|
||||
try:
|
||||
chat = tgi._api("getChat", {"chat_id": chat_id})["result"]
|
||||
title = chat.get("title") or chat.get("username") or "личный чат"
|
||||
print(f" Название: {title}")
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
admins = tgi._api("getChatAdministrators", {"chat_id": chat_id})["result"]
|
||||
for a in admins:
|
||||
u = a.get("user") or {}
|
||||
name = " ".join(x for x in [u.get("first_name"), u.get("last_name")] if x) or u.get("username") or u.get("id")
|
||||
print(f" [{'@' + u['username'] if u.get('username') else u.get('id')}] {name} — {a.get('status')}")
|
||||
except Exception as e:
|
||||
print(f" (админов не удалось получить: {e})")
|
||||
print(" Полный список рядовых участников Bot API не отдаёт — только количество и админов.")
|
||||
return 0
|
||||
|
||||
|
||||
def main():
|
||||
# чаты: из inbox (все chat_id входящих) + ALLOWED
|
||||
ids = []
|
||||
try:
|
||||
import sqlite3
|
||||
from harness import paths
|
||||
for db in [paths.db_path(), os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "tg_inbox.db"), os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "hg_tg_inbox.db")]:
|
||||
if not os.path.exists(db):
|
||||
continue
|
||||
try:
|
||||
con = sqlite3.connect(db)
|
||||
for row in con.execute("SELECT DISTINCT payload FROM events").fetchall():
|
||||
try:
|
||||
p = json.loads(row[0])
|
||||
cid = p.get("chat_id") or (p.get("message") or {}).get("chat", {}).get("id")
|
||||
if cid:
|
||||
ids.append(cid)
|
||||
except Exception:
|
||||
pass
|
||||
con.close()
|
||||
except Exception:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
tgi._load_env()
|
||||
ids += [n for n in (_num(x) for x in tgi.ALLOWED) if n]
|
||||
seen, rc = set(), 0
|
||||
for cid in ids:
|
||||
if cid in seen:
|
||||
continue
|
||||
try:
|
||||
seen.add(cid)
|
||||
rc |= chat_members(cid)
|
||||
except Exception as e:
|
||||
print(f"Чат {cid}: ошибка {e}")
|
||||
return rc
|
||||
|
||||
|
||||
def _num(x):
|
||||
try:
|
||||
return int(x)
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main() or 0)
|
||||
Loading…
Reference in a new issue