# Room Palette > Drop a photo of a room and Room Palette measures its colour scheme in the browser - the palette as up to eight swatches with their share of the picture, the 60-30-10 split by colour family, warm against cool, light against dark, the colour cast of the light and where each colour sits by thirds - and draws it back on the picture. Then an interior colour consultant model gives every swatch a role, names the scheme, pins callouts onto the photo and proposes colours shown as ghosted swatches, every claim checked against the measurements. The photo never leaves the browser; only numbers about its colours are sent. Live at https://room-palette.skillsafe.ai/ · API tutorial at https://room-palette.skillsafe.ai/api.html · Tokens at https://room-palette.skillsafe.ai/tokens.html ## What it does One work object: one picture of one room, on a canvas. The free measurement (no account, no model): - the picture is drawn at up to 1,600 px and area-averaged with an integer block down to an analysis grid of at most 200 samples on the long side - k-means clustering in CIELAB (D65) from deterministic seeds (no randomness: the same photo always reads the same), clusters closer than CIEDE2000 7 merged, clusters under 1% of the picture folded into their nearest neighbour; at most 8 swatches, numbered S1... by share - per swatch: hex (mean sRGB of its samples), share, CIELAB L*, chroma, hue angle, LRV (light reflectance value = WCAG relative luminance x 100), temperature (chroma under 10 is neutral, with a warm or cool lean from b*; hue under 105 or over 345 degrees warm, otherwise cool), a plain name, its share in each third of the picture, and an anchor point inside its strongest third - colour families (swatches within CIEDE2000 12) for the 60-30-10 estimate; warm/cool/neutral and light (L* 70+) / mid / dark (under 35) balance by coverage; the colour cast as the mean a*/b* of the near-neutral samples - hue geometry of the chromatic swatches: the hue arc they span and pairs 150+ degrees apart - WCAG contrast ratio and CIEDE2000 difference for every two swatches - per third of the picture: dominant swatch, mean lightness, lightness spread, chroma; the busiest third Canvas views: the photo, the palette mosaic (every sample painted its swatch), a value map, a temperature map, a thirds overlay, isolating one swatch, and an eyedropper that reads any pixel with its nearest swatch. Free exports: palette SVG, GIMP palette (.gpl), measured facts as Markdown and JSON. The reading (metered, signed-in, runs on gpt-terra): one lane, `task: "read"`. The model receives only the measured facts and the person's notes (room type, name, goal, what is staying, and the last reading of the same room when there is one). It returns a verdict (working / tune / rework), the scheme, a role for every swatch (dominant, secondary, accent, base, trim, incidental) with a designer's name and where it probably is, proportion and light readings, 3-6 callouts anchored to a swatch or a third, up to 5 proposed changes (add, reduce, replace, repeat - with a hex for new colours and a third to place them in), questions and a summary. ## Checked against the measurements The page holds the reading to the facts and lists every disagreement: a swatch with no role or an unknown swatch id; the measured 60-30-10 split implied by the roles (dominant under 30%, an "accent" over 20%); a scheme name the hue geometry does not allow (analogous needs chromatic hues within about 100 degrees, complementary a pair 150+ degrees apart, neutral-with-accent a mostly neutral picture); a colour name that calls a warm swatch cool or names a hue more than 60 degrees away; any hex code or percentage in the prose that the page did not measure or the reading did not propose; callouts pinned to nothing; proposed colours within CIEDE2000 5 of a colour already in the room or of the swatch they replace; a "repeat" into a third that already holds a quarter of that colour; a rework verdict with no changes. Every proposed colour is measured: nearest swatch, CIEDE2000, LRV and contrast with the dominant swatch. ## Output On the canvas: numbered callout pins (strength, issue, idea) and ghosted proposed swatches at their thirds; under it, the palette strip with roles and names and the proposed additions dashed. Exports: annotated picture (SVG with the photo, pins, ghosts, palette and the callout text), palette SVG, GIMP palette, Markdown report, JSON. History is saved to the person's SkillSafe account (a declared collection) and mirrored in the browser; records keep the measurements, a run-length-encoded swatch map and the reading - never the photo. ## Sources Derived from the agent skill @erichowens/interior-design-expert (https://skillsafe.ai/skill/@erichowens/interior-design-expert/, github.com/erichowens/some_claude_skills; also mirrored as @curiositech/interior-design-expert). Not affiliated with its author. The four bundled example rooms are illustrations drawn for this app, not photographs. Colour formulas: CIELAB and CIEDE2000 (Sharma, Wu and Dalal, 2005), WCAG 2.x relative luminance and contrast ratio.