keyline

AI has no taste.
You do.

keyline doesn't make images. Drop the references you love and it writes their visual direction: one brief you give to ChatGPT, Midjourney or any image model, so the results look like your references.

Forever. Not monthly, not per board, not per export. See the proof.

Runs in your browser. No sign-up.Proven on GPT Image 2, FLUX.2 max and Nano Banana.

Directionread from these 7 references

Single dark object centred on a flat grey field, lit softly from above so gilded highlights and oxblood depths do the whole job.

  • CompositionA single object sits centred in the frame with generous, even margins on every side.
  • PaletteA neutral grey field carries the object; gilt highlights and an oxblood undertone pull out of the shadow side.
  • Material & finishDark, hand-patinated bronze with a matte gilt finish catching the rim light.
  • LightA single high, front-left light rakes across the form, casting a soft shadow to the right.
  • Form & geometryA symmetrical mass with softly rounded edges, no hard corners anywhere on the object.
  • LineageReads as a museum catalogue plate: object isolated, evenly lit, documentary in intent.

hover or tap a line: it lights the references it was read from

A real board, composed by keyline's engine as it ships today (2026-10-10) and measured by its own code: seed 1, 3:2, Paper. Beside it, a real reading of the same seven references, 2026-09-09, as recorded. Every layer keeps the images it was read from; hover or tap a line and they are outlined, as in the app.

Seven CC0 references: four from the Met Open Access, three via Openverse
  • 01 · circular saw blade, untitled · rawpixel · CC0 (Openverse) · source
  • 02 · Textile Design Alternating Vertical Rows · rawpixel · CC0 (Openverse) · source
  • 03 · The Weeping Burgher (Andrieu d'Andres) · The Met · CC0 (Met Open Access) · source
  • 04 · Jennie Walters 1860 · Flickr · CC0 (Openverse) · source
  • 05 · Drop-front secretary (Secrétaire en armoire) · The Met · CC0 (Met Open Access) · source
  • 06 · Alabaster bowl · The Met · CC0 (Met Open Access) · source
  • 07 · Mirror clock · The Met · CC0 (Met Open Access) · source

Proof

One direction. A doorway. A chair. A bottle.

GPT Image 2 output for the subject a doorway: an ornate stone doorway with black lacquer doors, gilt garlands, oxblood velvet panels and a periwinkle cartouche, on a grey studio sweep

“a doorway” · GPT Image 2

OpenAI. Made 2026-08-25 from an earlier reading of the same seven references: the same compiled direction for all three, only the subject word changed.

FLUX.2 output for the subject a lounge chair: a black lacquer and gilt armchair in crushed oxblood velvet with one stone arm and a periwinkle drape, on the same grey sweep

“a lounge chair” · FLUX.2 max

Black Forest Labs. That direction asked for a “single cool periwinkle note”; watch it surface here too.

Nano Banana output for the subject a perfume bottle: a silver and gilt flask with an oxblood velvet panel, beading, an alabaster stopper and a periwinkle cabochon, on the same grey sweep

“a perfume bottle” · Nano Banana

Google. The same compiled direction again. All three outputs are unedited.

The direction transferred. The subject didn’t matter.

Measure

keyline reads what you can't describe. Real numbers from the pixels, then eight readings from the images.

The gilt & oxblood board in keyline, 3:2 on the Paper ground: seven references composed by the engine, and along the bottom one line of ledger: a hairline with a square in the heaviest measured colour, eight colour chips with their shares 21%, 14%, 13%, 10%, 5%, 5%, 5%, 4%, and the title gilt & oxblood, 8 measured, backgrounds discounted, 3:2

Eight colours, weighted

Measured from your pixels, backgrounds discounted: hex and percentage, not vibes. A contrast score with it.

The Palette layer opened in keyline's Direction settings: its switch on, its strength slider at normal, small pictures of the three references it was read from, the note 8 colours measured, dominant 21%, and its words: A neutral grey field carries the object; gilt highlights and an oxblood undertone pull out of the shadow side.

Eight reading layers

Composition, palette, material, light and four more. Switch one off and it is not asked for; mark one strong and it leads the layers in the prompt.

The Palette layer hovered in keyline: in the Sources list the three references it was read from are ringed in orange, and the same three pictures are outlined in orange on the board

Traced to its sources

Every layer keeps the images it was read from. Hover one and they light up, in Sources and on the board.

Write

One direction, compiled. Not a description you rewrite per tool.

The compiled prompt zone, unlocked: ChatGPT, Claude and Midjourney keys, the prompt beginning a lounge chair. Single dark object centred on a flat grey field, lit softly from above so gilded highlights and oxblood depths do the whole job, then Composition, and the keys copy for ChatGPT, copy brief and more

One prompt, any subject

The prompt carries a [SUBJECT] slot. Swap the noun, keep the taste. It stays on screen for the whole session.

Inspect, Compare, the Claude column, 12 lines: the lead-in keyline adds for Claude is shaded, Use this as the standing visual direction for everything you produce in this task, then the direction as Claude receives it, beginning a lounge chair

Dialects per model

Prose for chat models, one line with flags for Midjourney. Compiled, not rewritten. Copy any of the three with the unlock.

The prompt zone just after the subject was typed: the header says 1 line changed, and the first line of the prompt, now beginning a lounge chair, is tinted with a dark bar at its left

Change it and watch

Type a subject, move a layer's strength, add an avoid: the prompt marks the line it rewrote. Live, with no AI call.

Yours

Set up for what you make.

Six fields

Digital product, Brand & graphic, Interior, Architecture, Industrial design, Photography & art direction. Pick yours once: new boards start set up for it.

What a field changes

The layers a board starts with, its ratio, its prompt tab, one added line and one download. The field’s name never reaches the reading. Its strong layers are read first and in the most detail; nothing else about the reading changes.

Your own instructions

A language, a tone, how much detail. They sit under the field’s line in ChatGPT and Claude prompts, marked as added by keyline. Midjourney takes neither.

The same reading, set up for two fields.

Both on the Claude tab, over one recorded reading. Each board starts with its field’s strong and light layers and adds its field’s line.

Interior
Use this as the standing visual direction for everything you produce in this task:
[SUBJECT]. Single dark object centred on a flat grey field, lit softly from above so gilded highlights and oxblood depths do the whole job.
Palette (essential): A neutral grey field carries the object; gilt highlights and an oxblood undertone pull out of the shadow side.
Material & finish (essential): Dark, hand-patinated bronze with a matte gilt finish catching the rim light.
Light (essential): A single high, front-left light rakes across the form, casting a soft shadow to the right.
Composition: A single object sits centred in the frame with generous, even margins on every side.
Form & geometry: A symmetrical mass with softly rounded edges, no hard corners anywhere on the object.
Lineage: Reads as a museum catalogue plate: object isolated, evenly lit, documentary in intent.
Palette emphasis: lead with the dominant #bab6af (21% of the board); the rest of the palette supports it.
For interior work: name finishes and fabrics, light temperature and direction, scale against furniture.

A new Interior board starts with Material & finish, Palette and Light strong, Typography light (absent from this reading). Its line is added.

Digital product
Use this as the standing visual direction for everything you produce in this task:
[SUBJECT]. Single dark object centred on a flat grey field, lit softly from above so gilded highlights and oxblood depths do the whole job.
Composition (essential): A single object sits centred in the frame with generous, even margins on every side.
Palette (essential): A neutral grey field carries the object; gilt highlights and an oxblood undertone pull out of the shadow side.
Light: A single high, front-left light rakes across the form, casting a soft shadow to the right.
Form & geometry: A symmetrical mass with softly rounded edges, no hard corners anywhere on the object.
Material & finish (a hint only): Dark, hand-patinated bronze with a matte gilt finish catching the rim light.
Lineage (a hint only): Reads as a museum catalogue plate: object isolated, evenly lit, documentary in intent.
Palette emphasis: lead with the dominant #bab6af (21% of the board); the rest of the palette supports it.
For digital product work: express as a UI style, spacing scale, type hierarchy, component states.
Your instructions: Reply in Portuguese. Keep it short.

A new Digital product board starts with Composition, Typography and Palette strong (this reading has no Typography layer); Material & finish and Lineage light. Its line is added, and so is the example instruction.

Lines marked blue are added by keyline from What you make, not read from your board.

Compiled by keyline’s own code from the reading above (2026-09-09, as recorded) with each field’s starting strengths, 2026-10-18, unedited. The subject slot is left open. The instruction is an example typed for this page, on the Digital product column only.

The palette, as a file.

Each field has one download of the measured palette. Part of the $29 unlock.

The Palette schedule page for the gilt & oxblood board: its title, the line Palette schedule, Measured from 7 references, backgrounds discounted, and a table of eight rows with number, swatch, hex and share: 01 #bab6af 21%, 02 #524f4d 14%, 03 #828180 13%, 04 #532529 10%, 05 #53422a 5%, 06 #7d6f57 5%, 07 #715849 5%, 08 #292722 4%.

Palette schedule

keyline-gilt-oxblood-palette-schedule.pdfInterior. An A4 page, the hex values selectable as text.

keyline-gilt-oxblood-colour-variables.css
/* keyline · gilt & oxblood
   Measured from 7 references, backgrounds discounted. */
:root {
  --color-1: #bab6af; /* 21% */
  --color-2: #524f4d; /* 14% */
  --color-3: #828180; /* 13% */
  --color-4: #532529; /* 10% */
  --color-5: #53422a; /* 5% */
  --color-6: #7d6f57; /* 5% */
  --color-7: #715849; /* 5% */
  --color-8: #292722; /* 4% */
}

Colour variables

Digital product. One CSS custom property per measured colour, its share beside it.

keyline-gilt-oxblood-palette-list.md
# gilt & oxblood

Palette list. Measured from 7 references, backgrounds discounted.

| No. | Hex | Share |
| --- | --- | --- |
| 01 | `#bab6af` | 21% |
| 02 | `#524f4d` | 14% |
| 03 | `#828180` | 13% |
| 04 | `#532529` | 10% |
| 05 | `#53422a` | 5% |
| 06 | `#7d6f57` | 5% |
| 07 | `#715849` | 5% |
| 08 | `#292722` | 4% |

Palette list

Architecture. A plain Markdown table: number, hex, share.

The three files hold the gilt & oxblood board’s eight measured colours, hex and share, and nothing else: no reading text. Brand & graphic and Industrial design get a Colour sheet .pdf, Photography & art direction a Palette sheet .pdf, the same table under another name. Generated 2026-10-18 by keyline’s own download code; the page is the image the app places in the .pdf.

Everything in it.

No modules, no add-ons. Free to try on unlimited boards; $29 once owns the rest.

Measured palette. Eight colours with real weights, read from your pixels, backgrounds discounted.

free

Eight reading layers, each with a switch and a strength.

free

One prompt with a [SUBJECT] slot. Swap the noun, keep the taste.

free

Per-model dialects. Copies for ChatGPT, Claude and Midjourney.

with $29

What you make. Six fields; new boards start set up for yours.

free

Three grounds. Paper, Aluminium, Graphite.

free

Deterministic layouts. Same seed, same composition.

free

Contrast score. A measured reading of the board's tonal spread.

free

Local by default. Boards live in your browser. Images leave only when you press Generate, for the reading.

free

Clean exports. No watermark. Print resolution and the ledger are on every export, free ones included.

with $29

Field downloads. The measured palette as a schedule, CSS variables or a list.

with $29

Restore by email. Your unlock follows your purchase email to a new machine.

with $29

Twenty references per board, with roles: reference, palette, type, texture, avoid.

free

Keyboard-first. Arrows cycle layouts, G generates, ? lists all of it.

free

Inspect. The prompt line by line, and three models side by side.

with $29

That's all of it.

keyline is small on purpose. One person builds it, and every card here is live today.

Free: boards, readings, tuning, the first lines of the prompt, watermarked export. $29 once: the full prompt, copies per model, clean exports, Inspect, your field’s palette download, restore. Yours forever. Unlock now.

Questions.

What exactly does $29 buy?

Everything, forever: the compiled prompt with per-model copies, the Markdown brief, Inspect, the palette download for your field, and watermark-free print-resolution exports, on this board and every board you ever make. One payment. It is not a subscription and not a per-export fee.

Do you store my images?

No. Boards live in your browser's own storage. Your references leave your machine only in one case: the images are sent to the AI for the reading each time you press Generate.

Couldn't I just upload my images to ChatGPT?

A vision model will describe your pictures. keyline measures what they have in common: real hexes and weights from the pixels, eight traceable layers, and a compiled prompt with a [SUBJECT] slot that stays reusable. The three-model proof above is the difference in practice.

Does my field change the reading?

The field’s name never reaches the reading. Its strong layers are read first and in the most detail; nothing else about the reading changes. The rest happens on your side of it: the layers a new board starts with, its ratio, the prompt tab, one added line in ChatGPT and Claude prompts, and a download of the measured palette. Choosing a field is free; the download is part of the $29.

What if I clear my browser or switch machines?

Your unlock is restored by the email you purchased with, from Settings › License in the app. Boards themselves are local; export the brief for anything you can't lose.

Are the boards and outputs on this page real?

Yes. The board is composed by the same engine and measured by the same code as yours, over seven CC0 references: four from the Met Open Access collection, three via Openverse. The reading beside it (2026-09-09) is shown as recorded; the three model outputs (2026-08-25, from an earlier reading of the same references) are unedited.

Your references already know what you like.

Forever. Not monthly, not per board, not per export.