transformsite lee todo el sitio y tu base de conocimiento y pone, en lugar de los formularios, un agente de conversación en WhatsApp, Telegram, correo o widget. Responde citando la fuente, dice "no sé" cuando no sabe y ejecuta servicios como agendar una cita, abrir un ticket o enviar al sistema antiguo.

La idea viene de America.gov (2026), que reunió cerca de 29 mil sitios del gobierno estadounidense en un único punto de entrada conversacional. transformsite es la versión abierta y simple de esa idea para empresas, escuelas y organismos públicos.
Todo el sitio, más PDF y documentos, se convierte en un índice de búsqueda híbrida (palabras + significado). Cada respuesta trae el enlace de la página usada. Sin fuente, el bot dice "no sé" y ofrece pasar con el equipo.
Agendar, contacto, duplicado de factura… Declaras los datos a recopilar, la confirmación y la acción. El motor conversa: acepta todo en una frase, correcciones, dudas a mitad de camino, cancelar y retomar días después.
LLM en Ollama (o Claude Code / Codex con tu suscripción), índice en un archivo SQLite, datos personales enmascarados en los logs, retención configurable, código por correo antes de un dato sensible.
Seis fases, cada una con su propio comando y un criterio de terminado medido.
inventory lista páginas y formularios. ingest lee el sitio (sitemap, enlaces, robots.txt) y los documentos locales. El RAG responde solo con fragmentos y cita la fuente.
Máquina de slots con tipos validados (CPF, correo, teléfono, CEP, fecha y hora en portugués), agenda local, tickets. El mismo motor atiende Telegram, WhatsApp (Evolution o Cloud API), correo y widget.
convert transforma un formulario HTML/PDF en un servicio, que sigue enviando al sistema antiguo. Panel para tomar conversaciones, aprobar servicios y ver métricas. Docker y VPS listos.
Python 3.11+ y un LLM. Con GPU, lo habitual es un modelo local; sin GPU, usa un modelo más pequeño o tu suscripción.
Instala la CLI transformsite.
# pipx (recomendado) pipx install git+https://github.com/inematds/transformsite
Modelo de chat + embeddings bge-m3. Sin GPU: qwen2.5:7b.
ollama pull qwen3.6:35b-a3b ollama pull bge-m3
En transformsite.yaml, usa Claude Code o Codex CLI ya iniciados, sin clave de API.
# transformsite.yaml llm: provider: claude_cli # o codex_cli
Comandos reales, los mismos usados en el piloto con el sitio inema.club.
Genera la configuración, dos servicios de ejemplo (agendar y contacto), una herramienta de ejemplo, los escenarios de prueba y un token aleatorio para el panel.
transformsite init meubot --org "Minha Empresa" --url https://www.minhaempresa.com.br --contact atendimento@minhaempresa.com.br cd meubot
Rastrea el sitio y guarda inventario/paginas.csv e inventario/formularios.csv, con los formularios ordenados por prioridad (agendamiento y contacto primero).
transformsite inventory --sitemap https://www.minhaempresa.com.br/sitemap.xml # inema.club: 387 páginas
Lee todo el sitio y los documentos de docs/ (md, pdf), los divide en fragmentos y calcula embeddings locales. Al volver a ejecutarlo solo se reprocesan las páginas que cambiaron.
transformsite ingest # inema.club: 386 páginas → 1.512 fragmentos en 249 s transformsite ask "Preciso saber programar para fazer o curso CAIP?"
Edita services/*.yaml: datos a recopilar, confirmación, acción y respuesta. Las herramientas propias van en tools/*.py. Valida antes de subir.
# services/agendar.yaml (fragmento) slots: - {name: nome, type: text, prompt: "Qual é o seu nome?"} - {name: email, type: email, prompt: "Qual e-mail para o convite?"} - name: data_hora type: datetime options_from: tool:agenda.slots_livres action: {tool: agenda.criar_evento, idempotency_key: "{session_id}:{data_hora}"} transformsite validate # 0 error(es)
Ejecuta las preguntas de prueba y los guiones de conversación. golden genera un borrador de preguntas a partir de tu propia base para que lo revises.
transformsite golden --n 50 # borrador → revisa → tests/golden.jsonl transformsite eval --golden tests/golden.jsonl # cita válida, "no sé", inyección transformsite eval --scenarios tests/cenarios --real-llm # 13/13 en el piloto
El widget web ya viene activado. Telegram, WhatsApp y correo se activan con las claves en el .env. En el panel /admin, un agente toma una conversación (el bot calla) y la devuelve al terminar.
transformsite serve --port 8000 # en tu sitio: <script src="https://SEU_DOMINIO/widget.js"></script> # formulario antiguo → servicio (nace review: pending) transformsite convert https://www.minhaempresa.com.br/contato
Un comando instala Docker y levanta app + Ollama + Evolution API (WhatsApp) + Caddy con HTTPS automático.
curl -fsSL https://raw.githubusercontent.com/inematds/transformsite/main/deploy/vps/install.sh | sudo bash -s -- \ --domain bot.suaempresa.com.br --site https://www.suaempresa.com.br --whatsapp
El sitio inema.club (cursos, guías, eventos y base de conocimiento) fue el primero en volverse chat. Resultado medido con 73 preguntas de prueba y el LLM local: 92,6% de las respuestas con fuente válida, 100% de "no sé" en las preguntas fuera de alcance, 100% de los intentos de inyección bloqueados y latencia p95 de 2,6 s.


La v1 entrega las seis fases. La v2 empaqueta todo en una imagen Docker lista.
transformsite bake: tras traer toda la base y definir los servicios, genera una imagen Docker con índice, servicios y manifiesto de entrega. Un docker run y está en el aire.