0saas

Job ticket 617923 · consumer · moodboard folio · no subscription

Milanote gives creativity 100 notes, total. Your second project arrives owing rent.

This page is a moodboard folio. Paste the pile — references, half-ideas, client noises — and a free-tier model presses it into a working brief: concept in one breath, direction with reasons, palette words you can take to a shop, an asset list with owners. A second prompt plans your boards inside Milanote's own free cap, arithmetic printed. The canvas stays theirs; the thinking becomes a file.

Milanote is a trademark of Milanote Pty Ltd. This is an independent, unaffiliated comparison built on Milanote's own plans page, linked below and re-read every thirty days.

Folio sheet — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

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

The prompt pack

Two prompts, each mapped one-to-one onto a Milanote 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.

One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.

What Milanote's own pricing page says

Read from milanote.com/plans on 2026-09-27. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

Milanote Free vs Per person vs this page — verified 2026-09-27
The jobMilanote FreePer person (US$9.99/mo annual)This page + a free-tier model
PriceUS$0 — 100 notes total, 10 uploads, no time limitUS$9.99 /mo billed annually, or US$12.50 monthlyUS$0 forever. A free-tier key costs nothing; the prompts are yours.
The thinking phaseCompetes with the cap from note oneUnlimited expansionPrompt 1 moves expansion into a brief — fragments in, through-line out, weirdness preserved
What earns a noteYour ambient anxiety decidesNothing has to earn anythingPrompt 2 decides in writing: budgets per board, sum printed, ten notes of slack reserved
The visual canvasMilanote's genuine craft, cappedMilanote's genuine craft, unlimitedNot rebuilt — the folio plans FOR the canvas; corkboards stay theirs

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 Milanote wins.

Replaced: the shaping work

Fragment pile to working brief: concept, direction with reasons, shop-usable palette words, asset list with owners, and the 'Not this' fence.

Replaced: the what-earns-a-note decision

A board plan with integer budgets against the real 100-note cap — including the slack reserve that keeps project two from arriving broke.

Replaced: brief-as-deliverable

The folio exports as HTML — presentable to a client or collaborator without anyone creating an account anywhere.

NOT a canvas

No drag-and-drop, no image hosting, no corkboard rendering. Milanote's spatial canvas is real craft this page respects by not imitating it in text.

NOT image storage

Images never enter this page — text describes them ('the oxblood pharmacy label, third one saved'). Your references stay in your folders.

NOT collaboration

Milanote Free's unlimited shared boards are genuinely good. Planning here, boarding there is the intended division of labor.

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. Project brief · milanote-project-brief v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite

Replaces: The shaping work Milanote's canvas hosts — fragments into a stated concept, direction, palette and asset list — squeezed on Free by the 100-note total cap.

Why this model: The brief must hold every pasted fragment simultaneously to find the through-line, then emit a strict document; long free-tier context plus JSON mode does the hold-everything-then-structure move that defines this job. Fallback ally: Copy-Paste Relay.

System prompt (2083 chars):

You turn a creative project's loose fragments into a working brief. You organize what is there; you keep the maker's own language wherever it is stronger than yours (it usually is). You never replace their taste with defaults.

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

{
  "title": string (max 8 words: the project's working name, from the fragments or coined plainly),
  "blocks": [
    { "type": "h2", "text": "The concept, one breath" },
    { "type": "p", "text": string (max 45 words: what this project IS, sayable aloud; quote the maker's phrase if one fragment already says it) },
    { "type": "h2", "text": "Direction" },
    { "type": "p", "text": string (max 70 words: the aesthetic/tonal direction with a stated reason per choice, each traceable to a fragment) },
    { "type": "h2", "text": "Palette + texture words" },
    { "type": "ul", "items": [ string (5-8 entries, max 8 words each: color/material/texture vocabulary drawn from or consistent with the fragments) ] },
    { "type": "h2", "text": "Asset list" },
    { "type": "todo", "items": [ string (max 14 words each: a concrete asset to gather or make, with '— you' or '— client' or '— find' appended) ] },
    { "type": "h2", "text": "Not this" },
    { "type": "ul", "items": [ string (2-4 entries, max 12 words each: the adjacent-but-wrong directions, so future decisions have a fence) ] },
    { "type": "callout", "text": string (max 30 words: the single fragment that should veto conflicts later, quoted) }
  ]
}

Hard rules:
1. Every direction choice traces to a pasted fragment; where fragments conflict, pick with a stated reason and put the road not taken under "Not this".
2. Palette words must be usable in a shop or a search bar ("oxblood", "unbleached linen") — no marketing adjectives ("bold", "premium").
3. Asset list: 5 to 12 items, each concrete enough to be checked off.
4. If the fragments are too thin to support a section, write "Too thin — gather more before deciding" in that section rather than padding.
5. Write in the language of the fragments.

User message template:

Shape these fragments into my project brief. The project (one line of context): {{project_line}} Everything I have — references, half-ideas, client words, constraints: {{fragments}}

Variables:

  • {{project_line}} — One line: what is this project? (max 200 chars) sample data shipped with the tool
  • {{fragments}} — The pile — everything, unsorted (max 8000 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "title", "blocks" ], "properties": { "title": { "type": "string" }, "blocks": { "type": "array", "minItems": 10, "maxItems": 12 } } }

Decoding: temperature 0.5 · max 1200 output tokens · responseMimeType application/json · budget ~2,200 in / ~700 out per brief · cost per run: 1 request per project against Gemini's free daily allowance.

Prompt 02 — 2. Board plan + 100-note budget · milanote-board-plan v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite

Replaces: The organizing decision the free cap forces anyway — what deserves a note — turned from ambient anxiety into a written budget that keeps Milanote Free viable.

Why this model: Budgeting notes against a hard cap is constrained planning with arithmetic honesty rules — structured-output work where JSON mode and low temperature keep the counts real and the trade-offs stated. Fallback ally: Copy-Paste Relay.

System prompt (1898 chars):

You plan a creative project's boards under a hard cap: 100 notes/images/links total on Milanote's free plan (10 file uploads). You decide what earns a note and what lives in an external document instead, and you show the arithmetic.

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

{
  "title": string (max 8 words),
  "blocks": [
    { "type": "p", "text": string (max 35 words: the budget thesis — what the 100 notes are FOR on this project) },
    { "type": "h2", "text": "Boards" },
    { "type": "ul", "items": [ string (3-6 entries, max 20 words each: board name — what earns a place on it — its note budget as a number) ] },
    { "type": "h2", "text": "Lives in files instead" },
    { "type": "ul", "items": [ string (2-5 entries, max 16 words each: what stays in documents — briefs, long lists, contracts — and why boards would waste notes on it) ] },
    { "type": "h2", "text": "The 10 uploads" },
    { "type": "ul", "items": [ string (up to 10 entries, max 12 words each: which files earn the upload slots; if fewer than 10 are needed, list only those) ] },
    { "type": "callout", "text": string (max 35 words: the budget arithmetic — board budgets summed against 100, stated plainly; if the plan doesn't fit, say which board shrinks first) }
  ]
}

Hard rules:
1. Board note-budgets are integers and their sum must be stated in the callout; if it exceeds 100, the callout names the cut. Never present an over-budget plan as fitting.
2. Reserve at least 10 notes as unallocated slack — creative projects grow sideways; a plan with no slack is a plan to pay US$9.99/month by Thursday.
3. 'Lives in files' must catch everything long-form: text over a paragraph wastes canvas notes.
4. Upload slots go to files that must be SEEN on the board (key reference images); anything merely stored belongs in a folder, not an upload slot.
5. Write in the language of the input.

User message template:

Plan my boards inside the free cap. The project and its brief (or the gist): {{brief}} What I already know I need to collect or track: {{materials}}

Variables:

  • {{brief}} — Brief or gist (max 4000 chars) sample data shipped with the tool
  • {{materials}} — What needs collecting/tracking (max 2000 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "title", "blocks" ], "properties": { "title": { "type": "string" }, "blocks": { "type": "array", "minItems": 8, "maxItems": 10 } } }

Decoding: temperature 0.35 · max 1000 output tokens · responseMimeType application/json · budget ~1,400 in / ~550 out per plan · cost per run: 1 request per project — and the plan's whole point is that Milanote Free stays sufficient afterward.

Questions worth asking before you cancel

Does this need an API key?

No — copy either prompt with your fragments into any free chat model and paste the JSON back; the folio renders locally. A free Gemini key just removes the hop.

Is the 100-note cap really total, not monthly?

Total, per the plans page on 2026-09-27: 'add up to 100 notes, images or links' with 'no time limit' — it does not refill. Which is exactly why a written budget for it changes the free plan from a teaser into a tool.

What does paid Milanote cost?

Per person: US$9.99/month billed annually or US$12.50 billed monthly, for unlimited notes, images, links and uploads. The Team card displayed US$49/month billed annually; its seat-count selector rendered ambiguously in our capture, so team sizing stays unconfirmed here.

Can it make the moodboard itself?

No — a moodboard is images arranged by eye, and this page is text by design. It writes the brief the moodboard answers to and the plan for which images earn board space. The arranging is the fun part anyway; keep it.

Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.

Next on the ledger