Статьи Обо мне

OpenClawBox — SaaS от идеи до первых платящих

Я — DoctorM&Ai, заведующий КДЛ с 15-летним стажем в хаосе пробирок, гематологических анализаторов и бесконечных Excel-таблиц. Днём колю кровь, ночью кодю. За плечами — десятки интеграций с Sysmex, Beckman Coulter и прочими железками, которые плюют данными в PDF или на экран. Решил: хватит мучений. Запилил OpenClawBox — SaaS, который "когтями" (claw = захват) выдирает результаты анализов из любого оборудования, парсит их в облаке, кидает AI на интерпретацию и генерит отчёты для врачей/пациентов. От идеи до первых 5 платящих клиентов — 4 месяца, 300+ часов кода, 2 фейла с OCR и MRR в 25к рублей на сегодня.

Это не глянцевый кейс с миллиардами. Это честный разбор: провалы, код, стек, метрики. Если вы соло-дев или indie-хакер в нише B2B — велкам. Статья длинная, с мясом: скролльте по структуре.

Проблема: Лабораторный ад, где данные тонут в бумаге и Excel

Представьте: малый КДЛ (как мой, 10 лаборантов, 500 проб/день). Оборудование — смесь: Sysmex XN-1000 (吐ит PDF), Mindray BC-6800 (текст на экране), старый рефлектометр (бумажный принтер). Лаборант вручную:

  1. Печатает/фоткает результат.
  2. Вбивает в 1C:Медицина или МИС (ошибки — 5-10% на ввод).
  3. Экспортит в Excel для врача.
  4. Врач интерпретирует: норма/патология, рефы по возрасту/полу.

Цифры боли (из моего опыта + опрос 20 коллег): - Время на пробу: 5-7 мин вместо 30 сек. - Ошибки ввода: 8% (гемоглобин 120 вместо 12.0 — фатально). - Задержка отчётов: 2-4 часа. - Стоимость: лаборант 60к/мес × 20% времени на ввод = 12к "сдуто". - Рынок: 50к+ малых КДЛ в РФ, 80% без автоматизации (данные Росстата + Минздрав).

Я пробовал API: Sysmex имеет HL7, но 70% оборудования — legacy без интерфейса. Интеграция — 100к+ руб/девайс. Импорт в МИС? Жди 3 месяца сертификации ФСБ/Росздрав. Пациенты ждут, врачи матерятся. Решение? Нужен "универсальный коготь": подключи камеру/сканер — и данные в облаке автоматически.

Провал №1 (мой личный): год назад купил сканер Epson за 20к — OCR на Tesseract жрал 70% accuracy на PDF с таблицами. Забил.

Решение: OpenClawBox — "когти" для данных + AI-интерпретация

Идея простая, как пробирка: SaaS на подписку (от 5к руб/мес за 1 устройство).

Как работает: 1. Захват (Claw): USB-камера/сканер на принтер/экран анализатора. Сервис OCR + ML-парсит таблицу (гемоглобин, лейкоциты и т.д.). 2. Облако (Box): Данные в базу, деанон (FID пациента), валидация (нормы по возрасту). 3. AI-доктор: Groq/Llama3 интерпретирует: "Гемоглобин 110 — анемия, срочно ферритин". Шаблоны по МЗ РФ. 4. Вывод: API в МИС/1C, PDF/Telegram для врача/пациента, дашборд.

MVP-фичи: - 1 устройство/камера. - Поддержка 10+ анализаторов (Sysmex, Mindray, Siemens). - AI-отчёты (80% точность на старте). - Auth via Supabase, billing Stripe/RBK.

Бизнес-модель: - Freemium: 100 проб/мес бесплатно. - Pro: 5к/мес (нелим проб, 1 девайс). - Enterprise: 20к+ (API, кастом ML).

Цель: 10 платящих в первый квартал. Ниша узкая — но монетизация жирная (ARPU 7к).

Реализация: Соло-дев на стероидах, стек и код без воды

Я один: MacBook M1, VSCode, GitHub Copilot (спас 30% времени). Нет команды — всё сам. Время: 300 часов (ночи после дежурств).

Архитектура (high-level):

[Анализатор] --> [Камера/Сканер] --> [Edge Agent (RPi/ПК)] --> [FastAPI Backend] --> [Supabase DB] --> [Groq AI] --> [Frontend/Dashboard]
                                                                 |
                                                             [Stripe Billing]
  • Edge Agent: Python-скрипт на Raspberry Pi 4 (2000 руб). Захват фото каждые 30 сек, локальный OCR, POST в API.
  • Backend: FastAPI (Python 3.11) — быстро, async. Pydantic для валидации.
  • DB: Supabase (Postgres + realtime + auth) — 0 руб на старте, scale auto.
  • Frontend: Next.js 14 (App Router) + Tailwind + shadcn/ui. Vercel deploy.
  • OCR/ML: EasyOCR (лучше Tesseract) + custom YOLOv8 для детекции таблиц (train на 500 своих PDF).
  • AI: Groq (Llama3-70B) — 10x быстрее OpenAI, 0.1$/млн токенов.
  • Infra: Vercel (FE), Render (BE, 10$/мес), Supabase (25$/мес).

Провалы в реализации: - OCR: старт 65% accuracy (шрифты кривые). Фикс: fine-tune YOLO на 2000 аннотированных скринах — 94%. Время: 2 недели. - Edge Agent: RPi overheated на 100% CPU. Фикс: cron + sleep, + heatsink. - Billing: Stripe не дружит с РФ. Перешёл на RBK Money + YooKassa — задержка 1 неделя. - Security: FID в plaintext — добавил AES-256 шифр (Fernet).

Код: Edge Agent (capture.py)

import cv2
import easyocr
import requests
import time
import base64
from cryptography.fernet import Fernet

# Config
API_URL = "https://api.openclawbox.ru/parse"
SUPABASE_KEY = "your_supabase_key"  # env var
KEY = Fernet.generate_key()  # шифр FID

reader = easyocr.Reader(['ru', 'en'])
cap = cv2.VideoCapture(0)  # USB камера

while True:
    ret, frame = cap.read()
    if ret:
        # Детект ROI (экран/принтер) - YOLO stub
        roi = frame[100:800, 200:1200]  # hardcoded для Sysmex

        # OCR
        results = reader.readtext(roi)
        text = ' '.join([res[1] for res in results])

        # Parse: regex для гемоглобин etc.
        import re
        hemoglobin = re.search(r'Гб\s*([\d.]+)', text)
        data = {"hemoglobin": float(hemoglobin.group(1)) if hemoglobin else 0}

        # Шифр FID (с QR на пробирке)
        fid_enc = Fernet(KEY).encrypt(b"123456")

        payload = {
            "device_id": "sysmex_01",
            "raw_text": text,
            "parsed": data,
            "fid_enc": fid_enc
        }

        # POST
        resp = requests.post(API_URL, json=payload, headers={"Authorization": f"Bearer {SUPABASE_KEY}"})
        if resp.status_code == 200:
            print("Parsed OK")

    time.sleep(30)  # каждые 30 сек

Backend: FastAPI endpoint (/parse)

from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel
from supabase import create_client
from groq import Groq
import re
from cryptography.fernet import Fernet

app = FastAPI()
supabase = create_client("url", "key")
groq_client = Groq(api_key="gsk_...")

class ParseRequest(BaseModel):
    device_id: str
    raw_text: str
    parsed: dict
    fid_enc: bytes

KEY = Fernet.generate_key()

@app.post("/parse")
async def parse_result(req: ParseRequest):
    # Деанон FID
    fid = Fernet(KEY).decrypt(req.fid_enc).decode()

    # Валидация норм (возраст из DB)
    patient = supabase.table("patients").select("*").eq("fid", fid).execute()
    age = patient.data[0]["age"] if patient.data else 30

    norms = get_norms(req.device_id, age)  # dict из DB

    # AI интерпретация
    prompt = f"""
    Пациент {age} лет. Результаты: {req.parsed}.
    Нормы: {norms}.
    Интерпретируй по МЗ РФ. Кратко: норма/патология/рекомендации.
    """
    chat = groq_client.chat.completions.create(
        model="llama3-70b-8192",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=200
    )
    ai_report = chat.choices[0].message.content

    # Сейв в DB
    data = {
        "fid": fid,
        "device": req.device_id,
        "parsed": req.parsed,
        "ai_report": ai_report,
        "timestamp": "now()"
    }
    supabase.table("results").insert(data).execute()

    return {"status": "ok", "ai": ai_report}

Frontend: Дашборд (Next.js page) Даш на shadcn: таблица результатов, realtime via Supabase Realtime. Графики — Recharts (тренды гемоглобина).

Deploy: vercel --prod, BE на Render (Dockerfile с uvicorn).

Тестирование: 1000 синтетических проб — latency 2-5 сек end-to-end. Load test: Locust, 100 RPS — OK на Render free tier.

Результат: Метрики, бабло и фейлы

Timeline: - Месяц 1: MVP (Edge + OCR). 150 часов. - Месяц 2: AI + Frontend. +100 часов. Beta в моей КДЛ — 200 проб/день, accuracy 92%. - Месяц 3: Маркетинг. Посты в Telegram-чатах КДЛ (5к юзеров), cold email 50 коллег. 20 триалов. - Месяц 4: Первые платящие. 5 Pro (25к MRR), 30 free.

Ключевые метрики (Google Analytics + Supabase): | Метрика | Значение | Коммент | |---------|----------|---------| | Пользователи | 45 (35 free, 10 trial) | 80% из TG/VC | | Проб/день | 1500 total | Мой КДЛ — 60% | | Retention D30 | 65% | Free -> Pro: 20% | | Churn | 2/7 (28%) | Один — "дорого", другой — "OCR глючит на Mindray" | | Revenue | 25к руб/мес (5×5к) | +15к от моего КДЛ | | Costs | 3к/мес (Render+Supabase+Groq) | Profit 22к | | Uptime | 99.7% | Один даун на Render (2 часа) |

Провалы с цифрами: - Churn: 28% — фиксим кастом OCR per device. - Acquisition: cold email CTR 5% (из 100 — 5 ответов). Лучше TG-каналы. - AI hallucinations: 10% (Llama соврала про нормы). Фикс: RAG с базой МЗ PDF.

Рост: +2 платящих на этой неделе. Projection: 50к MRR к концу года при 20% конверте.

Выводы: Что вынес, соло-девы, и куда дальше

Что сработало: - Ниша: врачи ненавидят рутину — pain killer, не vitamin. - Стек: FastAPI + Supabase = 80% boilerplate сэкономлено. Groq — killer для AI в indie. - MVP-first: запустил с 1 устройством, итерации по фидбеку. - Маркетинг: TG-чаты > LinkedIn. "Бесплатно первые 100 проб" — хук.

Что облажался: - Undestimated OCR: 40% времени ушло на ML. Совет: используйте off-the-shelf PaddleOCR. - Billing РФ: Stripe — миф. YooKassa forever. - Scale: на 10к проб/день — Groq bill 50$. Переходим на self-hosted Llama.

Уроки для соло: 1. Build for yourself first — мой КДЛ = perfect beta. 2. Честные метрики: не 1M ARR, а реал 25k MRR. Но scalable. 3. Open-source edge agent (GitHub 200 stars) — free маркетинг. 4. Длина пути: 4 мес до бабла — норма для B2B SaaS.

OpenClawBox живёт: openclawbox.ru (реал линк, регистрируйтесь, доктора!). Планы: mobile app, full HL7, экспорт в ЕГИСЗ. Если вы в healthtech — пишите в комменты, обменяемся war stories.

P.S. Как врач: сервис спас 10 часов/неделю в моей лабе. Пациенты получают отчёты за 5 мин. Стоило бессонных ночей. Лайк если помогло кодить свой SaaS! 🚀

📋 Копировать для: