If a small business might move from a packaged chatbot to a custom setup later, the most useful thing a developer can do during the free trial is test the export. It takes an hour, and it decides whether "start packaged, move later" is a safe plan or a trap.
It is a practical way of choosing custom AI or a SaaS chatbot by data export.
What to export during the trial
Create a few test conversations that look like real ones: a question, a handoff to a human, a tag added by staff, a note, an attachment. Then export everything the admin panel allows: conversations, contacts, tags and custom fields.
A quick checker
import csv, json, sys
from pathlib import Path
REQUIRED_CONV = {"contact_id", "channel", "timestamp", "direction", "text"}
REQUIRED_CONTACT = {"contact_id", "phone"}
def columns(path):
p = Path(path)
if p.suffix == ".json":
rows = json.loads(p.read_text())
return set(rows[0].keys()), rows
with p.open(newline="") as f:
rows = list(csv.DictReader(f))
return set(rows[0].keys()), rows
conv_cols, convs = columns(sys.argv[1])
cont_cols, contacts = columns(sys.argv[2])
print("conversation columns missing:", REQUIRED_CONV - conv_cols or "none")
print("contact columns missing:", REQUIRED_CONTACT - cont_cols or "none")
print("has tags:", any("tag" in c.lower() for c in cont_cols))
print("has notes:", any("note" in c.lower() for c in conv_cols | cont_cols))
ids = {r["contact_id"] for r in contacts if r.get("contact_id")}
orphans = [r for r in convs if r.get("contact_id") not in ids]
print("conversations without a matching contact:", len(orphans))
Run it as python check_export.py conversations.csv contacts.csv.
What you are looking for
- A stable contact ID you can join on. Without it, conversations and contacts cannot be matched, and the history is much less useful.
- Direction and timestamps, so you can rebuild threads in order.
- Staff notes and tags. These usually hold the business knowledge, such as "VIP", "custom order", "complained last time".
- Handoff markers. Can you tell which messages the bot sent and which a human sent?
- Attachments, or at least stable links to them.
Why it matters
If the export is clean, choosing a packaged platform is low risk: start packaged, learn what customers ask, move later with your history intact. If it is not clean, factor that in now. Either pick a different tool, or schedule a monthly export from day one so you are never more than a month behind.
Put the result in a short note for the owner: "export works", or "export is missing X, here is the workaround". It is a small task that saves a painful migration later.
Disclosure: I run NxFlowAI, an AI automation agency. Portability is one of the checks in our first audit, which takes 72 hours for one workflow.
Top comments (0)