The Mixer is the engine. You add up to 10 fragrance oils, set their absolute fragrance amounts in oz (sliders are oz, step 0.01), pick a wax + load %, name the blend, and save. Three things help you along the way: the Pairings panel below the scratchpad, the live Scent Profile bar, and the AI Namer.
Cold start (no oils yet)
Three paths from an empty bench:
- 1
Pick a starter blend
Six pre-built starter recipes at the top. Click one and the scratchpad fills with it.
- 2
Tell Chandler what you want
Type a vibe (“rainy bookstore”, “fall apple orchard at dusk”) into the compose box. Chandler returns a recipe + a shopping list of any oils you don't own. Click
LOAD INTO MIXER. - 3
Build it manually
Click
+ ADD OIL, search by name or family. Library oils surface first.
Building a blend
- 1
Set each oil's oz
Each oil row has a slider in oz (step 0.01). You're setting the absolute fragrance amount to pour, not a percentage. The TOTAL chip at the bottom reads
TOTAL: X.XX oz / Y.YY ozplus one of:● LOCKED— sum matches the load budget (within 0.005 oz); save enabled.● OVER BY Δ oz— sum exceeds the budget; save disabled.▼ ADD Δ oz— sum under the budget; save disabled.
The load budget (
foBudgetOz) is derived from your active wax × load %:wax_oz × load_pct / 100. - 2
Pick a wax
Required before save. Dropdown shows your saved
user_waxes. Defaults to the wax pinned in Settings. - 3
Name the blend
Type a name OR click
✨ NAME ITfor AI suggestions.TIPClick SAVE without a name and the namer auto-opens. Pick a candidate and the save fires automatically with the chosen name. - 4
Save (four flavors)
SAVE BLEND— primary commit, routes to Recipes after.+ START ANOTHER— saves, clears the scratchpad, stays in Mixer.SAVE AS VARIANT— POSTs a new recipe with (variant) suffix. Doesn't overwrite the parent.↻ REMIX — REGENERATE AMOUNTS— does NOT save. Rerolls the oz amounts on the current oils (random 0.5–1.5× weight per oil, normalized so the sum equalsfoBudgetOz, last oil absorbs rounding) so you can re-explore.
{ oil, ozAtBaseline }; there is no percentage field anywhere — every render-time percent is derived at the boundary.The Pairings engine
Below the scratchpad. Updates as you add or remove oils. Each card shows a color-coded match score (emerald ≥70, green ≥50, amber ≥30), the oil name, why it scored well, and a notes preview with matched notes highlighted. Click + ADD TO BLEND to drop it in.
LIBRARY ONLYcheckbox — limits suggestions to oils you own.- Mode toggle — pair to the last-selected oil vs. the whole composition.
↻— reroll suggestions deterministically.
The Scent Profile bar
Sits between the family tags and the oil rows. Three colored segments — yellow (top), rose (middle), amber (base) — sized by your blend's current ratio. Updates in real time as you slide. Hidden when none of the oils carry note data.
The AI Namer
Click ✨ NAME IT to open. Pick voice + modifier, click ✨ GENERATE, get three candidates. Click any to load. Re-roll for fresh attempts.
Voices (7): Signature, Basic, Note-based, Luxury, Ampersand, Apothecary, Auto.
Modifiers (10): Straight, Snark, Romantic, Playful, Nostalgic, Gothic, Decadent, Rustic, Botanical, Culinary.