Import sources

Draw.io, PDF, Word, images, and JSON — how extraction turns artifacts into assistants.

Convoship imports run through a single extraction pipeline: deterministic baseline parse → optional LLM enrich → validation → repair loop (up to N iterations) → optional frontier escalation when configured. The result is always a ConversationFlow JSON shape shared by the builder, runtime, and embed SDK.

Where to import

SurfaceRouteUse case
New assistant wizard/app/assistants/newCreate a brand-new assistant from one or more sources.
Move → Import / Export/app/assistants/{id}/import-exportRe-import into an existing assistant; export draft or published JSON/Draw.io.
APIPOST /v1/imports/...Programmatic imports from CI or migration scripts.

New assistant wizard (3 steps)

  1. Source — drag-drop files, paste Draw.io XML, toggle AI Enrich, or choose Start blank.
  2. Review — extraction preview per file (intent count, node count, warnings, model used). Wizard polls until the worker finishes.
  3. Name & create — assistant name, description, default locale (en-US, etc.), optional channel chips (Web, WhatsApp, Voice, Webhook — informational today). POST creates the assistant and redirects to import review when applicable.

Supported source types

TypeExtensions / inputPipeline notes
Draw.io.drawio, .xml, pasted XMLDeterministic XML parse first; LLM enriches labels, slots, and service calls.
PDF.pdfText extract + optional vision (page renders) when VISION_FOR_PDF_ENABLED.
Word.docxDocument text extraction then same enrich/repair loop.
Plain text.txt, .mdDirect text baseline.
Image.png, .jpg, .webpVision model (OpenAI-compatible VLM) when configured.
Flow JSON.jsonSkips extraction — validates and loads existing ConversationFlow.

AI enrich

When AI Enrich is on (default in production), every import must succeed at LLM extraction — deterministic-only fallback is rejected when EXTRACTION_REQUIRE_LLM=true. The UI shows model name, token cost, repair iterations, and models_tried when escalation ran (e.g. Groq Llama → Claude Sonnet).

Import review gate

After a wizard import, you land on /app/assistants/{id}/imports/{importId}/review. Compare baseline vs enriched flow, resolve validation issues, and Approve before publishing when import_require_review_before_publish is enabled. Publish returns import_review_required with a link to review if approval is pending.

Import / Export tab (existing assistant)

  • Import card — same multi-format upload as the wizard; shows stepper (parse → enrich → validate → repair).
  • Export — download draft or published flow as .json; export draft as .drawio for round-trip editing.
  • Preview Draw.io — render current draft as Draw.io XML without leaving the app.
  • Recent imports table — filename, model, latency, cost, status.

Scoped node repair

From the flow builder, select a node and run repair (POST /v1/agents/{id}/flow/repair-node). The extraction client re-runs LLM repair scoped to that node's validation issues without requiring the original Draw.io file. Returns updated draft, model, cost, and remaining issues.