transformsite reads your entire site and knowledge base and puts a conversational agent on WhatsApp, Telegram, email or a widget in place of forms. It answers citing the source, says "I don't know" when it doesn't, and runs services such as scheduling, opening a ticket or sending data to the legacy system.

The idea comes from America.gov (2026), which brought about 29 thousand US government sites into a single conversational entry point. transformsite is the open, simple version of that idea for companies, schools and public agencies.
The whole site, plus PDFs and documents, becomes a hybrid search index (words + meaning). Each answer carries the link of the page used. Without a source, the bot says "I don't know" and offers to hand over to the team.
Scheduling, contact us, duplicate copy… You declare the data to collect, the confirmation and the action. The engine handles the conversation: it accepts everything in one sentence, corrections, a question midway, cancelling and resuming days later.
LLM on Ollama (or Claude Code / Codex via your subscription), index in a single SQLite file, personal data masked in logs, configurable retention, email code before sensitive data.
Six phases, each with its own command and a measured definition of done.
inventory lists pages and forms. ingest reads the site (sitemap, links, robots.txt) and local documents. The RAG answers only from retrieved chunks and cites the source.
Slot machine with validated types (CPF, email, phone, postal code, date and time in Portuguese), local calendar, tickets. The same engine serves Telegram, WhatsApp (Evolution or Cloud API), email and widget.
convert turns an HTML/PDF form into a service that keeps sending data to the old system. Dashboard to take over conversations, approve services and see metrics. Docker and VPS ready.
Python 3.11+ and an LLM. With a GPU, the default is a local model; without a GPU, use a smaller model or your subscription.
Installs the transformsite CLI.
# pipx (recommended) pipx install git+https://github.com/inematds/transformsite
Chat model + bge-m3 embeddings. Without a GPU: qwen2.5:7b.
ollama pull qwen3.6:35b-a3b ollama pull bge-m3
In transformsite.yaml, use Claude Code or the Codex CLI already logged in, no API key.
# transformsite.yaml llm: provider: claude_cli # or codex_cli
Real commands, the same ones used in the pilot with the inema.club site.
Generates the configuration, two example services (scheduling and contact us), an example tool, the test scenarios and a random token for the dashboard.
transformsite init meubot --org "Minha Empresa" --url https://www.minhaempresa.com.br --contact atendimento@minhaempresa.com.br cd meubot
Crawls the site and writes inventario/paginas.csv and inventario/formularios.csv, with forms sorted by priority (scheduling and contact first).
transformsite inventory --sitemap https://www.minhaempresa.com.br/sitemap.xml # inema.club: 387 pages
Reads the entire site and the documents in docs/ (md, pdf), splits them into chunks and computes local embeddings. Re-running only reprocesses pages that changed.
transformsite ingest # inema.club: 386 pages → 1,512 chunks in 249 s transformsite ask "Preciso saber programar para fazer o curso CAIP?"
Edit services/*.yaml: data to collect, confirmation, action and reply. Custom tools go in tools/*.py. Validate before going live.
# services/agendar.yaml (excerpt) 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(s)
Run the test questions and the conversation scripts. golden generates a draft of questions from your own knowledge base for you to review.
transformsite golden --n 50 # draft → review → tests/golden.jsonl transformsite eval --golden tests/golden.jsonl # valid citation, "I don't know", injection transformsite eval --scenarios tests/cenarios --real-llm # 13/13 in the pilot
The web widget comes enabled. Telegram, WhatsApp and email turn on with the keys in .env. In the /admin dashboard, an agent takes over a conversation (the bot goes silent) and hands it back when done.
transformsite serve --port 8000 # on your site: <script src="https://SEU_DOMINIO/widget.js"></script> # old form → service (born review: pending) transformsite convert https://www.minhaempresa.com.br/contato
One command installs Docker and brings up app + Ollama + Evolution API (WhatsApp) + Caddy with automatic HTTPS.
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
The inema.club site (courses, guides, events and knowledge base) was the first to become chat. Result measured with 73 test questions and the local LLM: 92.6% of answers with a valid source, 100% "I don't know" on out-of-scope questions, 100% of injection attempts blocked and p95 latency of 2.6 s.


v1 delivers the six phases. v2 packages everything into a ready-made Docker image.
transformsite bake: after pulling the whole knowledge base and defining the services, it builds a Docker image with index, services and a delivery manifest. One docker run and it is live.