#!/usr/bin/env python # -*- coding: utf-8 -*- """Генерация PPTX: (1) разговор с Леонидом, (2) питч Simbiot (Seedance).""" from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN BG = RGBColor(0x0A, 0x0C, 0x12) ACCENT = RGBColor(0x8B, 0x5C, 0xF6) ACCENT2 = RGBColor(0x7C, 0x6C, 0xF5) TEXT = RGBColor(0xF0, 0xEE, 0xFF) MUT = RGBColor(0x9A, 0x97, 0xB8) def add_slide(prs, title, bullets, kicker=None): s = prs.slides.add_slide(prs.slide_layouts[6]) s.background.fill.solid(); s.background.fill.fore_color.rgb = BG w, h = prs.slide_width, prs.slide_height # accent bar bar = s.shapes.add_shape(1, Emu(0), Emu(0), Emu(w), Inches(0.09)) bar.fill.solid(); bar.fill.fore_color.rgb = ACCENT; bar.line.fill.background() if kicker: tb = s.shapes.add_textbox(Inches(0.7), Inches(0.45), Inches(11.8), Inches(0.4)) tf = tb.text_frame; p = tf.paragraphs[0]; r = p.add_run(); r.text = kicker.upper() r.font.size = Pt(12); r.font.color.rgb = ACCENT2; r.font.bold = True tb = s.shapes.add_textbox(Inches(0.7), Inches(0.85), Inches(12.0), Inches(1.0)) tf = tb.text_frame; p = tf.paragraphs[0]; r = p.add_run(); r.text = title r.font.size = Pt(30); r.font.color.rgb = TEXT; r.font.bold = True tb = s.shapes.add_textbox(Inches(0.75), Inches(1.85), Inches(11.9), Inches(4.9)) tf = tb.text_frame; tf.word_wrap = True first = True for b in bullets: lvl = 0 if isinstance(b, tuple): b, lvl = b p = tf.paragraphs[0] if first else tf.add_paragraph(); first = False r = p.add_run(); r.text = ("• " if lvl == 0 else "– ") + b r.font.size = Pt(16 if lvl == 0 else 14); r.font.color.rgb = TEXT if lvl == 0 else MUT p.space_after = Pt(8) return s prs = Presentation(); prs.slide_width = Inches(13.333); prs.slide_height = Inches(7.5) K = "Встреча 143 · 2026-10-08" add_slide(prs, "Разговор Алекса с Леонидом", [ "Выжимка разговора и договорённости · ~2.5 часа", "Jitsi + агент-визуализатор Simbiot (слайды рисуются в реальном времени)", "Кооператив 42 / студия Simbiot", ], kicker=K) add_slide(prs, "Кто есть кто", [ "Леонид — давний знакомый студии, писатель, инвестор в deep-tech (Anti-Aging Hero с физиком Петром Федичевым)", "DGX Spark 128GB (€5000) — дома гоняет CUDA-моделирование графов надёжности", "Алекс — инфраструктура студии: агент-визуализатор, собственный роутер LM, RAG по знаниям кооператива", ("«1-й раз такое в моей практике… польза очевидна» — Леонид о демо", 1), ], kicker=K) add_slide(prs, "Демо инфраструктуры студии", [ "Агент подключается к любому звонку и рисует слайды по ходу разговора (~45 сек на слайд)", "Роутер сам выбирает LM под контекст (визуализация — GLM 5.3 Flash)", "RAG: «он знает всё, что мы делаем» — общая база знаний кооператива", ("Инсайт Леонида: домашняя коробочка → быстрая генерация музыки/картинок/мини-видео", 1), ], kicker=K) add_slide(prs, "Пилот: мультик по рассказу Леонида", [ "Мульт-адаптация рассказов (10–15 мин); Леонид готов финансово поддержать пилот", "Ориентир бюджета — «в пределах 1000» на эксперимент (токены — точно, труд — обсудить)", "Вход от студии: рассказ + свобода интерпретации, без пожеланий-ограничений", "Партнёр уже строит harness генерации мультиков — матч идеальный; видео-часть ведёт Влад", ("Первый шаг — аудиоспектакль (дешевле и предсказуемее), затем видео", 1), ], kicker=K) add_slide(prs, "Творческий метод Леонида", [ "Хакатон ~2018: нейросеть на сольных песнях Леннона/Маккартни классифицировала битловские", "Пишет с ИИ (~80% своё / ~20% ИИ), честно маркирует «made with AI» на after.today", ("«Литературные негры» и мастерская Микеланджело — ИИ-ассистированное творчество не ново, нова честность", 1), ], kicker=K) add_slide(prs, "Экономика локального инференса", [ "Леонид: DGX Spark — нормальная цена за «домашний интеллект»; коробки станут достоянием домов", "Алекс: облачный always-on — ок для большинства; топ-модели для разработки всё равно выигрывают", ("Сошлись на гибриде: локально — быстрая генерация, облако — тяжёлые продуктовые задачи", 1), ("У студии в планах свой inference-сервер (в ~6 раз быстрее)", 1), ], kicker=K) add_slide(prs, "Как строить AI-компанию", [ "Леонид: «Vision — говно, execution — всё». Из короткого промпта не вырастет сложная система", "Алекс: ядро студии — AI-ядро, перестраивающее паттерны (64) при смене контекста — главный долгосрочный актив", "Стратегия: бизнес на нейро-инфраструктуре с начала → перевод на автопилот; незаменим только «CEO-решатель»", ("«Изюминка студии — в AI-ядре» — Леонид", 1), ("Методология deep-tech: продавать ценность сразу, не влюбляясь в R&D", 1), ], kicker=K) add_slide(prs, "Договорённости", [ "1. Пилот анимации по рассказу Леонида: токены покрывает Леонид (до ~1000), ведёт Влад; Alex вернётся с конкретным предложением", "2. Формат разговора продолжается — Леонид открыт к следующим сессиям", "3. Голоса/доли за прошлые инвестиции — Леонид отказался: «инвестирую из философских соображений, не создавайте ожиданий»", "4. Леонид посмотрит 35-минутную презентацию студии и вернётся с фидбэком", ], kicker=K) add_slide(prs, "Что делать студии дальше", [ "Подготовить оффер по мульт-пилоту: объём, этап аудиоспектакля, смета токенов", "Подключить партнёрский harness генерации мультиков — Леонид как первый клиентский кейс", "Зафиксировать кейс «агент-визуализатор на внешнем звонке» — первое живое демо, положительный фидбэк", ], kicker=K) prs.save("out/leonid_meeting143.pptx") # --- Pitch deck: Simbiot / Seedance --- prs2 = Presentation(); prs2.slide_width = Inches(13.333); prs2.slide_height = Inches(7.5) K2 = "Simbiot · питч" add_slide(prs2, "Simbiot — общий харнес организации", [ "Стартап за неделю получает не одного ассистента, а команду ИИ-агентов:", "один отвечает клиентам, второй пишет код, третий следит за деньгами и метриками", "Слой поверх Hermes, Claude Code и других — вместо зоопарка агентов и харнесов", ], kicker=K2) add_slide(prs2, "Проблема", [ "Фаундер собирает зоопарк из агентов и харнесов вручную", "Ушёл разработчик — ушла вся магия: знания и автоматизации не переживают людей", "Каждый новый инструмент — ещё один остров, не связанный с остальными", ], kicker=K2) add_slide(prs2, "Решение", [ "Simbiot координирует флот агентов и фиксирует решения компании", "Удачные приёмы копятся как «гены» — остаются только те, что приносят прибыль", "Компания превращается в самообучающуюся нейро-инфраструктуру", ], kicker=K2) add_slide(prs2, "Тракшен", [ "Уже гоняется на семи собственных продуктах студии", "AI-ядро: 64 паттерна, перестраивающихся при смене контекста", "Агент-визуализатор, RAG по знаниям, собственный LM-роутер — в продакшене", ], kicker=K2) add_slide(prs2, "Видео (Seedance), 3 шота", [ "Shot 1 «зоопарк в хаосе»: тёмная серверная, хаотичные голограммы и глитчи (0–10 сек)", "Shot 2 «orchestration»: хаос сходится в фиолетовую сферу, панели выстраиваются в сетку (10–20 сек)", "Shot 3 «финал»: фаундер у стены дашбордов с растущими revenue-графиками, отъезд в город (20–30 сек)", ("Стиль: dark cinematic, #0a0c12 + violet #7c6cf5, film grain, 4k, 16:9", 1), ], kicker=K2) add_slide(prs2, "Строй компанию — а не зоопарк ботов", [ "Simbiot · Кооператив 42 · simbiot", "Хронометраж питча: ~35 сек (15 сек — первый и последний абзац)", ], kicker=K2) prs2.save("out/simbiot_pitch.pptx") print("OK")