Ground any feeling in real evidence (language corpora, cross-cultural lexicon, the film and art canon, affective science) so a language model writes emotional creative that beats its own clichés.
Ask an LLM to "make it feel cozy" and you get a blanket, a fireplace, and a pumpkin-spice candle. Ask for "freedom" and you get an open road and arms wide on a cliff. That isn't a prompt problem. It's structural: models store emotion at the label, not the texture, so they reach for the statistical median (the cliché) and blur a feeling into its neighbors (cozy drifts into calm, safe, nostalgia).
feeling-engine fixes that. It builds a structured, evidence-grounded profile of a feeling, then generates from the profile instead of from the model's priors, differentiating the target feeling from its look-alikes and blocking the clichés by name.
Blind A/B test: the same brief, one writer given the profile and one cold, scored by independent LLM judges who didn't know which was which. The grounded version won every time.
| Feeling | Test product | Grounded vs cold baseline |
|---|---|---|
| Coziness | a tea brand | 35 to 28 |
| Freedom | a budgeting app | ~36 to 21 (3 judges, unanimous) |
| Awe | a stargazing app | 36 to 26 (against a strong baseline) |
And the kind of correction it makes, the things a model gets wrong on its own:
- Coziness's real anchor is a hot mug and curling up, not the fireplace. Across 1,500 real comments, tea (247 mentions) and "curl up" (190) dominate; the fireplace is a stock default the corpus doesn't support.
- Freedom is high-agency, not the open road. The lexicon places "freedom" at high dominance; the move is to show the threshold being crossed, not the open-road destination (which is the #2 ad cliché).
- "Sanctuary" scores +0.73 valence while "solitude" scores −0.58. The same physical aloneness, opposite emotional sign. Sanctuary sits one millimeter from loneliness, and only agency (chosen, not imposed) separates them.
One brief, run two ways: "15-second tea ad. Make it feel cozy."
The cold model reaches for the median: a blanket, a roaring fire, pumpkin spice, soft piano. In an actual blind test the baseline drifted even further off, into stillness, "you don't have to be anywhere," and a cut to black. The judge's verdict: not cozy, just calm. That drift into calm is the single most common way this feeling gets missed.
With the coziness profile, the engine pulls only the levers the data supports, and blocks the rest by name:
- It refuses the fire. The corpus says the real anchors are a hot mug (tea appears 247 times) and "curl up" (190). The fireplace is a stock default the evidence doesn't back.
- Contrast engine: cold, wet weather outside the glass (Icelandic gluggaveður, "window weather"), because the harsher the outside, the stronger the cozy.
- Hero shot: two cold-reddened hands around a warm mug; a body folding into a window seat; rain beading on the glass; small caves of lamplight, never overhead.
- Blocked: no safety/protection framing (that is a different feeling), no sepia nostalgia (stay present tense), no meditation void.
Same brief. The blind judge scored the grounded version 35 to 28, and 9 to 6 on coziness-fidelity specifically. The frames it reaches for aren't stock; they're Todd Hido's lit windows shot from a dark, wet street.
schema/: the 13-dimension Feeling Profile, each dimension bound to a real framework (appraisal theory, Russell's circumplex / PAD, Cowen-Keltner's 27 emotions, Frijda's action tendencies, Nummenmaa's bodily maps, Kövecses's emotion metaphors), plus the generation and differentiation protocols.pipeline/: dependency-free Python (standard library only). Pull NRC VAD/EmoLex values for a word-cluster, pull real first-person verbatims from a free public Reddit archive, distill them, and the recipe to build a profile for any new feeling.library/: five built profiles, coziness, freedom, communion, sanctuary, awe (spanning sensory / agency / social / solitary / transcendent).validation/: the blind A/B records behind the table above.research/: the verified source catalog (which datasets, corpora, and frameworks, with access methods).
As a Claude skill. Drop the folder into ~/.claude/skills/ and it triggers on any "make X feel <emotion>" task.
Standalone, any model, by hand. Open library/<feeling>/profile.md, read schema/generation-protocol.md, generate from the profile, then self-check the output against §2 (differentiation) and §12 (clichés to kill).
Build a new feeling. Follow pipeline/build_profile.md:
python3 pipeline/pull_lexicons.py --feeling <x> --words "word1,word2,..."
python3 pipeline/pull_verbatims.py --feeling <x> --subs sub1,sub2 --queries "phrase one||phrase two"
python3 pipeline/analyze_verbatims.py --feeling <x>Then assemble the 13 sections to the schema, run the adversarial differentiation pass, and validate it beats a cold baseline before you trust it.
- Core vs skin. A feeling's core (its coordinates, appraisal, body) is stable; its skin (objects, aesthetics, language) is indexed to era and generation. The wool-blanket cozy is one cohort's skin (people now roughly 70+), not the feeling itself. Match the skin to the audience's formative era.
- Aspire to masters, blacklist the median. Visual grounding is drawn from the film, painting, and art-photography canon (Vermeer, Hammershøi, Todd Hido, Sugimoto, Deakins-grade cinematography), never stock photography, which is the visual median this engine exists to escape. Stock appears only to identify the cliché to avoid.
- Validation so far is by independent LLM judges, not humans or in-market: a strong, falsifiable signal, not the final word.
- The NRC lexicons are non-commercial / no-redistribution licensed, so they are not shipped; the pipeline re-downloads them on demand. The verbatim corpora (real Reddit comments) are not shipped either, for privacy. Regenerate them with the puller.
- The era/cohort layer (§14) is fully grounded for coziness and stubbed for the other four feelings.
MIT. See LICENSE. The profiles and method are original work. The NRC Emotion / VAD Lexicons are © their authors (non-commercial; re-downloaded at build time, not redistributed here). Verbatims are sourced via the free Arctic Shift Reddit archive at build time.
