Move from another app

Migrate your Mela recipes to Savvy

Every recipe you’ve kept in Mela, imported into Savvy without retyping one of them. Here’s the whole route, start to finish, and a straight answer about the few things that don’t make the trip.

How the move works

Three steps, and your own assistant does the hard one.

  1. Export your Mela recipes, then unpack the file

    One right-click in the Mac app exports the lot as a .melarecipes file — a zip wearing a different name. Rename it to .zip and unpack it.
  2. Hand the folder to an AI assistant with the prompt below

    ChatGPT, Claude, Gemini — whichever one you use, and a free account will do. It reads your Mela files and writes them out in the shape Savvy reads.
  3. Paste what comes back into Savvy

    The whole library arrives as one job, not one job per recipe. Two hundred recipes take about as long as one.

Savvy publishes a prompt rather than a Mela importer. It’s the same route every app on Move from another app takes, written out here just for Mela.

Step 1 · How they come out

Export, then unzip.

In the Mela app on a Mac, right-click All in the sidebar and choose to export. Mela hands you a single .melarecipes file. That file is a zip with a different extension: rename it so it ends in .zip, unpack it, and inside you’ll find one file per recipe.

Hand your assistant the unpacked folder, not the .melarecipes file. An assistant given the packed file reads nothing — it has to be opened first, and that’s the one step people miss.

This makes a copy. It reads your recipes out of Mela and changes nothing in it — your Mela library is exactly where it was when you’re done.

Step 2 · How they are converted

You’ll need an AI assistant for this bit.

Any AI assistant will do — ChatGPT, Claude, Gemini, whichever one you already use — because something has to translate between the shape Mela chose and the shape Savvy reads. If you don’t use one, they all have a free version and signing up takes a minute.

Below is the message you send it. That’s all a prompt is: the words you type into the box. This one is written for Mela — it knows Mela keeps ingredients and steps as plain lines, and it says what to do with the times and nutrition Savvy has no home for. Copy it, open your assistant, paste it in, attach the folder you unpacked, and send.

Conversion prompt · Mela
Attached are my recipe files, exported from Mela. Convert
every recipe in them into Savvy's archive format.

Output one JSON array. Each element is one recipe, shaped
exactly like this:

{
  "recipe": {
    "core": {
      "name": "Lemon drizzle cake",
      "description": "A plain loaf with a crunchy top.",
      "source": { "source_type": "json",
                  "description": "Where it came from",
                  "url": "https://…" },
      "yield": { "raw": "Serves 8" },
      "ingredient_groups": [
        { "name": "For the cake",
          "ingredients": [
            { "ingredient_name": "plain flour",
              "quantity": { "value": 225, "unit": "g" },
              "note": "sifted" },
            { "ingredient_name": "salt" }
          ] }
      ],
      "method_groups": [
        { "name": null,
          "steps": [
            { "order": 1, "text": "Heat the oven to 180C." }
          ] }
      ],
      "notes": [ { "heading": "From Mela",
                   "content": "Prep 20 min. Cook 45 min." } ]
    },
    "metadata": { "cuisine": "british",
                  "meal_type": "dessert" }
  },
  "collection": { "name": "From Mela", "position": 1 }
}

Where Mela's fields go:
- title -> core.name
- text -> core.description
- ingredients is one block of text, one ingredient per line.
  Split it. A line ending in a colon is a heading: start a new
  group and use that line as the group "name". Where there are
  no colon headings, use one group with "name": null.
- instructions is one block of text, one step per line. Split
  it into core.method_groups, numbered from 1.
- yield -> core.yield.raw, as written.
- link -> core.source.url.
- categories -> metadata.meal_type if one names a meal
  (breakfast, lunch, dinner, dessert, snack), otherwise leave
  meal_type out. Never invent one.
- notes -> a note with "heading": "Notes".

Savvy has no field for prep time, cook time, total time or
nutrition. Do not drop them. Put whichever of them the recipe
has into one note with "heading": "From Mela", written as
plain sentences like the example above. A recipe with none of
them gets no such note.

Rules:
- "core" and "metadata" must both be present on every recipe,
  and "core" must have "name", "ingredient_groups" and
  "method_groups". Everything else is optional.
- Keep every quantity exactly as written. Do not convert units.
- "value" is a number: 0.5, not "1/2". Where a line gives a
  range, use the lower number and put the range in "note".
- "unit" is the unit as written, or "" where there isn't one.
- Leave "quantity" out entirely for anything unmeasured, like
  salt to taste.
- One element per recipe. Do not merge, shorten or improve
  anything.
- If a field isn't in my export, leave it out. Don't invent it.
- Output only the JSON array. No commentary.

What comes back is one block of JSON, starting with [ and ending with ]. It will look like nothing you recognise, and it isn’t meant to — it’s your recipes written in the shape Savvy reads. You don’t need to save it or name it. The next step is a copy and a paste, so leave it on screen.

Nothing in that prompt asks your assistant to be clever. It asks it to move your recipes without touching them. The shape it spells out is the one Savvy checks every record against, field for field, which is why it’s written out in full rather than described.

Step 3 · How they are imported

Four presses, and it’s in.

  1. Sign in

    A free account is enough. Nothing about moving your library sits behind the paywall.
  2. Press + Add recipe

    It’s in the navigation, on every screen. It opens one box, and that box is where everything enters Savvy — a link, a photo, a whole library.
  3. Paste the whole array into the box

    All of it, from the first bracket to the last, not one recipe at a time. Savvy recognises it as a library rather than reading it as a recipe. A few hundred recipes go in one paste.
  4. Send

    One run. The progress list names every recipe in the file up front, then fills them in one by one, so you can watch your whole Mela library arrive.

They arrive as drafts, which is one filter in your recipe list — so the whole import sits together in one place while you read through it.

What comes across

Your recipes whole, and a straight answer on the rest.

Your recipes arrive whole

Title, description, every ingredient, every step in order, servings, the link it came from, and your own notes. Mela keeps ingredients and steps as plain lines of text, which is exactly what the prompt splits back apart.

Your ingredient headings survive

A Mela ingredient line ending in a colon is a heading, and Savvy groups ingredients the same way. So "For the sponge:" comes across as a group rather than as an ingredient. The prompt knows that convention.

Times and nutrition become a note

Savvy stores no prep, cook or total time, and no nutrition. Rather than lose them, the prompt writes whichever ones a recipe has into a note headed "From Mela". They stop being fields and become something you can read.

Photos do not come across

Mela packs your photos inside the file itself, and Savvy needs an address it can reach. So recipes arrive without their pictures, and you add a cover to the ones you care about. This is the real cost of moving, and it is the only one.

A free account holds fifty recipes, which is the whole of the free plan. A paid archive has no ceiling, and bringing a converted library in is never rationed against the monthly import allowance — it costs Savvy nothing to run, so it isn’t metered.

What to check after

What to do once it’s in.

Mela keeps working

Nothing about this touches your Mela library. It is a copy, made from a file you exported, and the original is exactly where it was. Run the import, read what arrived, and delete nothing until you are satisfied.

Imported recipes land as drafts

Drafts are one filter in your recipe list, so the whole import sits together while you read through it, rather than scattering into an archive you then have to search.

Read a handful of recipes before trusting the rest

The conversion was your assistant’s work, which means its quality is your assistant’s too. Open five, check the quantities against Mela, and you will know within a minute whether the other hundred are right.

The road out is the same road: Savvy exports your whole archive as one file whenever you want it, free on every plan. See how export works.

Where to begin

Start in Mela.

Export the file and unzip it first. That’s the only step nobody can do for you, and it’s the one that takes two minutes.