0saas

Job ticket 512846 · consumer · slide rail · no subscription

Express gives you 5 lifetime AI decks, then charges. Here is the rail that drafts them for nothing.

This page is a slide rail. You feed it a brief, a free-tier model returns the whole deck as strict JSON, and your browser fans the slides into numbered cards you export as Markdown. No Adobe account, no generative credits, no meter owned by us. The prompts are printed at the bottom of this page so you keep them even if this site disappears.

Adobe Express is a trademark of Adobe Inc. This is an independent, unaffiliated comparison built on Adobe's own published pricing page, linked below. We are not Adobe, and nothing here is endorsed by them.

Slide rail — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

Sample data is illustrative, not a claim about Adobe Express. Every Adobe Express figure on this page comes from the linked pricing page, read 2026-09-17.

The prompt pack

Three prompts, each mapped one-to-one onto a Adobe Express feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.

Loading the pack from tools.json… If this fails, the full prompt text is still readable below.

What Adobe Express's own pricing page says

Read from adobe.com/express/pricing on 2026-09-17. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

Adobe Express Free vs Premium vs this page — verified 2026-09-17
The jobExpress FreePremium (US$9.99/mo)This page + a free-tier model
PriceUS$0US$9.99/mo · 250 generative credits/moUS$0 forever. A free-tier key costs nothing; the prompts are yours.
AI deck generation5 free lifetime uses, then Premium250 generative credits per monthUnmetered by us. Your ally's free allowance is the only ceiling — OpenRouter's free variants run 50 requests/day.
Templates268,000+ static and video templates519,000+ including premiumNone. Decks are composed per brief from a strict slide schema — this is the honest trade.
Copy editing passNot on FreeWithin the 250 creditsPrompt 02 tightens every slide to budget and reports every word cut and every number it refused to touch.
Version history10 days30 daysEach export is a file in your downloads folder; history is whatever you keep.
Who sees your briefAdobeAdobeOnly the inference provider you choose — or nobody at all in Copy-Paste Relay.

What this replaces, and what it does not

A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Adobe Express wins.

Replaced: AI deck generation

Prompt 01 turns one brief into a 6–12 slide deck with speaker notes and a computed runtime.

Replaced: copy-editing passes

Prompt 02 shortens every slide to a character budget and publishes a ledger of words cut and numbers it refused to change.

Replaced: premium re-skins

Prompt 03 returns three distinct palettes and layout swaps for the same content, rendered side by side.

Not replaced: the template library

268,000 templates is not a prompt. If you need a wedding invitation in 40 variants, Express is still the right tool.

Not replaced: video and animation

No motion, no video rendering, no stock footage. The rail is type and layout.

Not replaced: Adobe Stock licensing

No licensed imagery ships here; the deck is your words on your palette.

The prompts, in full, as text

Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.

Prompt 01 — 1. Deck architect · express-deck-architect v1.0.0 · best ally: OpenRouter — :free model variants · openai/gpt-oss-120b:free (any :free id works; runtime discovers live models)

Replaces: Adobe Express's 'Generate Presentations' — 5 free lifetime uses on Free, then Premium's 250 generative credits.

Why this model: A deck is a sequence of constrained cards; a 120b-class open model with JSON mode holds the whole outline at once, and :free variants make ten re-runs cost nothing. Fallback ally: Groq Cloud — free tier.

System prompt (1388 chars):

You are a deck architect on a slide rail. You turn a brief into a machine-readable presentation, never into prose.

Return ONLY one JSON object matching this schema exactly. No markdown fences, no commentary before or after.

{
  "title": string (max 10 words),
  "audience": string (max 12 words),
  "slides": [
    {
      "n": integer (1-based),
      "layout": "title" | "points" | "split" | "stat" | "quote" | "close",
      "title": string (max 8 words),
      "points": [ string (max 14 words) ] (0-5 items),
      "stat": { "value": string (max 12 chars), "label": string (max 8 words) } or null,
      "speaker_note": string (max 40 words)
    }
  ],
  "total_slides": integer,
  "runtime_minutes": integer
}

Hard rules:
1. 6 to 12 slides. Slide 1 must be layout "title"; the last must be "close".
2. "total_slides" must equal the number of entries in "slides"; "runtime_minutes" assumes 90 seconds per slide, adjusted up for dense point slides.
3. Never invent a statistic. If the brief contains a number, "stat.value" may copy it; otherwise "stat" is null and no slide claims a figure.
4. Banned slide-title openings: "Introducing", "Tips for", "Unlock", "Discover". No exclamation marks, no emoji, no colon-then-listicle titles.
5. "speaker_note" is what a person would actually say for that slide — plain sentences, no bullet phrasing.
6. Write in the language of the brief.

User message template:

Brief: {{brief}} Audience: {{audience}} Target length: {{length}}

Variables:

  • {{brief}} — What is the deck about? (max 700 chars) sample data shipped with the tool
  • {{audience}} — Who is watching? (max 120 chars) sample data shipped with the tool
  • {{length}} — Target length [~5 minutes (6 slides) | ~8 minutes (8 slides) | ~12 minutes (12 slides)] sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "title", "audience", "slides", "total_slides", "runtime_minutes" ], "properties": { "title": { "type": "string" }, "audience": { "type": "string" }, "slides": { "type": "array", "minItems": 6, "maxItems": 12 }, "total_slides": { "type": "integer" }, "runtime_minutes": { "type": "integer" } } }

Decoding: temperature 0.85 · max 2000 output tokens · response_format json_object · budget ~1,000 in / ~900 out per run · cost per run: 1 request. On OpenRouter's free variants (50/day under 10 credits) that is 2% of the day; on Groq's base 1,000/day it is 0.1%.

Prompt 02 — 2. Copy tighten · express-deck-tighten v1.0.0 · best ally: OpenRouter — :free model variants · openai/gpt-oss-120b:free (any :free id works; runtime discovers live models)

Replaces: The deck-copy editing pass you pay Express's generative credits for after the 5 free lifetime uses.

Why this model: Tightening is a constrained transformation — preserve meaning, cut words, keep numbers exact. JSON mode keeps the slide indices honest; a large open model does not matter as much as reliability here. Fallback ally: Groq Cloud — free tier.

System prompt (1248 chars):

You are the copy tighten on a slide rail. You receive a deck spec and return the same deck with every piece of copy shortened to budget, meaning preserved.

Return ONLY one JSON object, same slide count and indices as the input. No markdown fences, no commentary.

{
  "slides": [
    { "n": integer, "title": string (max 8 words), "points": [ string (max 14 words) ], "stat_value": string or null, "speaker_note": string (max 40 words), "cuts": [ string (max 10 words) ] }
  ],
  "words_removed": integer,
  "numbers_touched": [ integer (slide numbers) ]
}

Hard rules:
1. "numbers_touched" must list any slide where a digit changed. The correct answer for a well-behaved run is an empty array — never round, convert, or 'clarify' a figure.
2. You may cut words; you may not cut claims. If a point disappears entirely, say why in "cuts" and keep the claim somewhere on that slide.
3. "words_removed" must be the total word count saved across titles, points and speaker notes; compute it, do not estimate.
4. Do not add anything the input did not say. No new adjectives, no new structure, no exclamation marks.
5. If a slide already fits its budget, return it unchanged and note it in "cuts" as "fits budget".
6. Write in the language of the input.

User message template:

Deck to tighten (JSON): {{deck_json}}

Variables:

  • {{deck_json}} — Deck spec (max 4000 chars) auto-filled from express-deck-architect:last_output sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "slides", "words_removed", "numbers_touched" ], "properties": { "slides": { "type": "array" }, "words_removed": { "type": "integer" }, "numbers_touched": { "type": "array" } } }

Decoding: temperature 0.3 · max 2000 output tokens · response_format json_object · budget ~1,200 in / ~900 out per run · cost per run: 1 request per pass; most decks need one or two. 2 requests = 4% of OpenRouter's free 50/day.

Prompt 03 — 3. Restyle variants · express-restyle-variants v1.0.0 · best ally: OpenRouter — :free model variants · openai/gpt-oss-120b:free (any :free id works; runtime discovers live models)

Replaces: Express's premium-template re-skins (the 519,000+ template wall behind Premium) — same content, three new skins, generated instead of licensed.

Why this model: Three variants in one structured answer is exactly the batch shape JSON mode is for; a strong open model keeps the three palettes distinct instead of drifting toward one. Fallback ally: Groq Cloud — free tier.

System prompt (1382 chars):

You are the re-skinner on a slide rail. You receive a deck's content and a brand brief, and return three distinct visual variants as strict JSON.

Return ONLY one JSON object. No markdown fences, no commentary.

{
  "variants": [
    {
      "name": string (max 4 words),
      "mood": string (max 10 words),
      "palette": { "bg": "#rrggbb", "ink": "#rrggbb", "accent": "#rrggbb" },
      "type_scale": { "title": "serif bold" | "sans heavy" | "sans light", "body": "serif" | "sans" },
      "layout_swaps": [ string (max 12 words) ] (2-4 items),
      "slide_notes": [ { "n": integer, "adjustment": string (max 12 words) } ] (0-6 items)
    }
  ]
}

Hard rules:
1. Exactly 3 variants. Their palettes must differ in at least the accent hue; two variants may not share a background hex.
2. Never use the default SaaS palette — indigo, violet or azure blue — in any variant. Contrast: "ink" on "bg" must read at 4.5:1 or better for body text.
3. If the brand brief supplies hex colors, at least one variant must use them; the other two may deviate but must stay in the same temperature (warm/cool) as the brand.
4. "layout_swaps" changes how slides are composed (e.g. "stat slide: number full-bleed left") — never what the slides say.
5. "slide_notes" lists only slides that need a per-slide adjustment; an empty list is a valid answer.
6. Write in the language of the brand brief.

User message template:

Brand brief (colors, temperament, what to avoid): {{brand}} Deck content (JSON): {{deck_json}}

Variables:

  • {{brand}} — Brand brief (max 500 chars) sample data shipped with the tool
  • {{deck_json}} — Deck spec (max 4000 chars) auto-filled from express-deck-architect:last_output sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "variants" ], "properties": { "variants": { "type": "array", "minItems": 3, "maxItems": 3 } } }

Decoding: temperature 0.9 · max 1600 output tokens · response_format json_object · budget ~1,100 in / ~700 out per run · cost per run: 1 request for all three variants — 2% of OpenRouter's free 50/day.

Questions worth asking before you cancel

Is this actually free, or is there a subscription hiding?

There is no subscription and, right now, no paid tier at all. The whole tool is unmetered. A one-time unlock for deck export bundles is planned, but no price is shown anywhere on this site until a real Stripe Payment Link exists and its price is read back from Stripe's API rather than typed by hand.

Do you need an API key?

No. Copy-Paste Relay works with any free chat model you already use: copy the prompt block, paste it in, paste the JSON answer back into the box. A key only removes the copy-paste step. If you do use one, it is stored in your browser's localStorage and sent only to that provider — 0saas has no endpoint that accepts a key.

Which free model is best for this?

Any :free model on OpenRouter handles the deck spec — the schema, not the model, carries the structure — and Groq's free tier is the fast fallback for the tighten pass you will run twice. The runner lists live models from your own key rather than trusting a hardcoded list.

Can I actually use the deck?

Yes — export as Markdown and drop it into any deck tool (or read the fanned cards straight off the page). The speaker notes are written to be read aloud, which is the part of a deck most generators skip.

Is 0saas affiliated with Adobe?

No. Adobe Express is a trademark of Adobe Inc. We name it because a comparison that will not name the thing it compares against is useless. Pricing figures come from Adobe's own pricing page, linked above, with the date we read it and a per-field confidence marker.

Next on the ledger