Let your customers migrate their own data

Drop Vern into your onboarding flow and the agent does the migration inside your product — reading whatever they can export, asking them when it’s unsure, and writing validated records. Your team approves the result instead of doing the work.

  • ISO 27001 certified
  • GDPR compliant
  • US & AU data residency
  • Audit-ready logs
app.yourproduct.com/onboarding/import-your-data

Importing from PropertyIQ

Reading what you uploaded…

    Reading your uploaded files. Extracting tables from your file. Profiling your source data. Checking the target templates. Searching the web about this source. Saving what we learned about this source. Drafting the import. Testing the recipe on your data. Reviewing the preview output. Importing your data. Checking which fields came across

    A real migration, replayed — every step your customer sees, and nothing they don’t.

    Onboarding teams from startups to listed companies run on Vern

    • MYBOS
    • Urbanise
    • MovePro
    • PetBooqz
    • Rex Software
    • MYBOS
    • Urbanise
    • MovePro
    • PetBooqz
    • Rex Software

    The problem

    Your customers can't finish their own migration

    Getting the export is easy. Getting it correct is where onboarding timelines go to die — and why your team is still in the loop.

    An importer stops at the upload

    Mapping columns is the easy half. Joining three files, applying your rules, decoding a legacy export — that lands back on your team.

    Every ambiguous field becomes an email

    Your customer knows what settled means in their old system. They just have no way to tell the importer, so they ask you and wait days.

    Every new source is a ticket

    Transformation logic lives in your codebase, so a new export format needs a deploy — and the backlog gates every onboarding behind it.

    How it works

    You set it up once. Your customers run it. You approve what lands.

    Not a mapping wizard with an AI button — an agent that does the migration end to end. Each screen below is labelled with whose it is. The customer-facing ones sit inside your product, not ours.

    Your team, once

    Step 1: You decide the shape, and the guardrails

    Define the templates their data has to land in, connect the sources they migrate off, and set what the agent is allowed to keep and change. Done once, not per customer.

    • Templates are your data model, not ours
    • Template lock: the agent maps into it, never changes it
    • Memory: decide what carries to the next migration
    Set up onceYour team
    • Templates

      6 defined

      The shape their data has to arrive in.

    • Sources

      PropertyIQ + 3

      Connected once. Every customer on them reuses it.

    Guardrails

    • Memory

      On

      What this migration learns carries to the next one.

    • Template lock

      On

      The agent can't change your data model — it maps into it.

    Your customer, every migration

    Step 2: Your customer brings the source

    They connect their old system or upload whatever they can export, in your onboarding flow. Connect a source once and every customer on it reuses the same connection.

    • 502 sources in the catalogue
    • Credentials go to a vault
    • No connector? The agent writes one
    Where is your data now?Your customer
    • 100msCommunication
    • 7shiftsHR & Payroll
    • ActiveCampaignMarketing
    • Acuity SchedulingProductivity
    • Adobe Commerce (Magento)E-commerce
    • AgileCRMCRM
    • AhaProject Management
    Or upload an export
    Not sure? We'll help you find it

    Your customer, every migration

    Step 3: The agent writes the transformation

    Not a column mapping — a real transformation it authors per import: joins across their files, your business rules, their legacy formats. It tests it on a sample and shows the rows it would produce.

    • States what did not come across, and why
    • Asks your customer rather than guessing
    • Every plan is a reusable recipe
    Review your importYour customer

    Split SURNAME, Given into first and last name. Trim the zero-padding off lot references so they match lots.csv. Levies come across as decimals, not the source’s cent integers.

    Unmapped or unavailable data

    Nothing — everything mapped cleanly. Every plan ends with this section, and it only says “nothing” when it’s true.

    Describe a change…

    Your team, before it lands

    Step 4: Nothing is written until it is approved

    Changes are requested in plain English and answered with a row-level diff. The approval card is the gate — keep it with your team, or hand it to the customer.

    • Cell-level validation with reasons
    • Full version history
    • Trace any value back to its source cell
    Proposed editYour team

    Standardise phone numbers and fix the two company-name variants

    3 columns across 40,196 rows

    • Phone1,182 rows
      (02) 9 555 0114+61 2 9555 0114
    • Company96 rows
      Brightside Strata Pty. LtdBrightside Strata Pty Ltd
    • Settled on38,918 rows
      31/07/242024-07-31

    Your team, before it lands

    Step 5: Land it in your product

    Export a CSV, or let a writer agent map records onto your endpoints and confirm they landed — so the migration finishes where onboarding continues.

    • Flat or relationship-nested payloads
    • Writers verify by reading records back
    • Reuse the writer per destination
    ExportYour team

    Flat by table, or nested by relationship

    Nested mode reads the link rules on your templates and embeds each child inside its parent, so you receive whole records instead of tables to re-join.

    {
      "lot": "12B",
      "owner": {
        "name": "Tomás Ferreira",
        "email": "t.ferreira@brightside.example"
      },
      "invoices": [
        { "number": "INV-20412", "amount": 780.00, "status": "Paid" }
      ]
    }

    It compounds

    Migration #50 takes a fraction of the time migration #1 did

    Vern writes down what it learns — per source system and per customer — and reads it before every run. You decide what compounds: turn memory off for a test or a one-off and that migration teaches it nothing.

    Per source system

    PropertyIQ writes settled for invoices closed before 2022 — map to Paid.

    What Vern knows about this source

    • Field formats, enums, ID and date patterns — taught once.
    • Every customer on this source starts from what you already know.
    Per customer

    Brightside’s lot 13 doesn’t exist. Blank levies mean nil, not unknown.

    Teach Vern about this customer

    • Decisions you made together, recorded — never asked twice.
    • Vern writes here too, building memory as it learns.

    Migration API

    This runs inside your onboarding flow, not ours

    Everything the app does, over an API — including the parts that need a human answer. Create the migration, stream the agent's thread into your own UI, let your customer answer its questions and approve the result. They never see Vern.

    app.vern.so/api/v1
    API=https://app.vern.so/api/v1
    KEY="x-api-key: $VERN_API_KEY"
    JSON="Content-Type: application/json"
    
    # 1 — create the migration
    ID=$(curl -sX POST $API/migrations \
      -H "$KEY" -H "$JSON" \
      -d '{"name":"Brightside","source":"PropertyIQ"}' \
      | jq -r .migration.id)
    
    # 2 — the agent drafts a plan, stopping at a preview
    curl -X POST $API/migrations/$ID/runs \
      -H "$KEY" -H "$JSON" -d '{"kind":"generate"}'
    
    # 3 — see exactly what it would produce
    curl $API/migrations/$ID/preview -H "$KEY"
    
    # 4 — approve, and write the rows
    curl -X POST $API/migrations/$ID/runs \
      -H "$KEY" -H "$JSON" -d '{"kind":"execute"}'

    Trust

    Built for the security review, not just the demo

    You are handing us your customers' data. Everything below is a product feature you can inspect, not a promise in a slide.

    0M+

    Records supported per migration

    0M

    Records imported since inception

    0%

    Customer clarifications actioned

    ISO 27001 certified & GDPR compliant

    An ISO 27001-certified security program with enterprise-grade encryption and access controls, and data handling that is GDPR compliant.

    Every decision is on the record

    Every clarification, mapping choice and fix is logged with a before and after — attributed, back to the original upload.

    Data residency you choose

    Tenants are pinned to the United States or Australia. Nothing crosses regions.

    Retention you set

    Workbooks auto-delete on your schedule — 7 to 365 days, or never — with a preview of what each setting removes.

    Pricing

    Pricing that scales with migration volume

    Usage is metered in credits — how many a migration consumes depends on the volume of data and the extraction method. No per-user fees.

    Pay as you go
    For teams launching self-serve onboarding with monthly migration credits.
    $0.02 per credit
    5K credits included
    Migration API
    Reusable templates
    500+ API extractors
    Up to 5 seats
    Most Popular
    Scale
    For growing platforms that need higher credit limits and faster throughput.
    $749/month
    50K credits included
    Everything in PAYG
    Priority processing
    Audit logs
    Migration support
    Enterprise
    For enterprise platforms with committed usage, residency, and security needs.
    Custom pricing
    Dedicated FDE support
    Volume discounts
    Custom data residency
    Security reviews
    Bespoke integrations

    Partnerships

    Custom

    For companies that don’t treat migrations as core business and hand them to us end to end.

    • Fully managed migrations
    • White-label delivery
    • A dedicated migration team
    • Per-project pricing
    • Priority turnaround SLAs
    Partner with us

    Need more? Add pay-as-you-go volume at any time, or talk to us about a committed onboarding program.

    FAQs

    The questions that come up on every call

    Ready to migrate your next customer?

    Watch Vern turn a real export into validated, approved records in your product.