M Dougherty

Field Notes

A personal scent database for logging materials, observations and formulas, built for how I work at the bench.

Year
2026, ongoing
Role
Design, development, data
Built with
HTML, JavaScript, JSON
Holds
651 materials, 371 accords, 199 reference chemicals, 89 observations, 116 formulas
The Field Notes app: a sidebar of sections on the left, and the Observations list with one entry open, showing its origin, processing, sensory impressions and compounds.
Observations, with one entry open.

The problem

Perfumery notes scatter. Impressions live on smelling strips and in notebooks, formulas live in spreadsheets, dilutions live on bottle labels, and the reasons behind a change live nowhere. When I came back to a formula a week later I could see what I had weighed but not why, and I could not easily see what a single material had done across everything I had made with it.

I wanted one place where a smell, the material that carries it, the formula it ends up in and my judgement of that formula all point at each other.

To fill it, I digitized years of scattered notes, from smelling-strip impressions and notebook observations to the messy spreadsheets I used to work from. It now holds all of them.

MayJunJulAugSepOctmaterials, 64 to 651formulas, 0 to 116
Size of the database at each dated backup, 28 April to 21 October 2026. Each line is scaled to its own maximum. The dip in October is a cleanup that merged 16 duplicate materials.

Thirteen versions in four days

Why it looks like this

The interface borrows from the paper systems my notes used to live in, such as index cards, ledgers, file folders and forms. Each material is a card, each formula a ledger, each version a filed copy.

I use it for hours at the bench, so the screen holds information and little else. Color marks each material's olfactive family and nothing more.

Then and now

26 April First version

  • 64 materials in one list, tagged by family
  • A simple search bar
  • Accords and reference chemicals as simple lists
  • A hosted database and a single HTML page
  • Import and export as JSON

21 October Now

  • 651 materials, 371 accords with 5,235 lines, 199 reference chemicals, 89 observations, 116 formulas
  • A Workbench where formulas are written in parts, with grams, percent and IFRA 51st Amendment limits for fine fragrance, ambient or functional use recalculating as I type
  • Versions, a Compare view that marks every increase, cut and dilution change, and a Weigh view for several formulas on one scale
  • A comment beside every line's rationale, open even on archived versions
  • GC/MS reports and certificates of analysis attached to natural materials
  • Serials, projects and a path from working to weighed to production
  • Inventory, dilutions, an order list, suppliers and a reference library
  • One file on my own computer, protected so two windows can never save over each other

Found through friction

Nothing here was planned in April. Each feature exists because something went wrong while I was working.

  1. MayAn export limit kept accord lines stuck at exactly 1,000 for six weeks. Paginated fetches. Every line now comes through.
  2. JuneThe hosted database paused after a week without use. Everything moved into the browser, then in September into one plain file on my computer that I own and back up.
  3. OctoberThe same material at two dilutions was treated as one. Dilution sits beside the material, and a different dilution counts as a different material.
  4. OctoberPrinted formulas lost the reasons behind each line. A print window with the option to include rationales.
  5. OctoberDuplicate entries had crept in. A cleanup merged 16 materials, the dip in the chart above.
  6. OctoberMaterial cards had nowhere for loose observations. A notes field on every card.

Two windows, lost notes

Weighing two formulas at once, I had two windows open, and they saved over each other. The app now checks the file before every save and shows a red NOT SAVED banner instead of losing work, and the Weigh view puts several formulas on one screen so a second window is never needed.

Somewhere to say too high

After evaluating, my notes had nowhere to go. A comment column now sits beside the rationale, so too high or reads as pea pod lives next to the line it is about, long rationales wrap instead of hiding, and archived versions stay open for comments because evaluation can happen days after weighing.

Plainer words

The command bar was rewritten without redundancy. Copy, Duplicate as new version, Evaluate versions and Mark as weighed became Weigh, New version, Compare, Archive and Print.

Before: Copy, Duplicate as new version, Evaluate versions, Mark as weighedAfter: Weigh, New version, Compare, Archive, Printbeforeafter
The command bar, before and after.

Instead of reweighing from memory, I start each version from the written comments on the last one, and I can trace a material’s behavior across every formula it has been in.