Six months at LBVpa Tours on a joint thesis. A local DPPH at 50 µM instead of 100, trolox instead of ascorbic acid. Twenty minutes to edit a YAML and my data flowed through.
February 2026. I step off the train at Tours station after six hours from Paris-Centre, suitcase and laptop in my bag. My first day in the lab is a Monday morning. I had arrived for a six-month joint-supervision stay at the LBVpa, the Laboratory of Plant Biology for Aromatic Products at the University of Tours, under an agreement signed between my thesis director in Rabat and his Tours counterpart, Prof. Lanoue. The cold hit me as I stepped out of the train station. I had underestimated the gap with Casablanca.
The local protocol
At 9:30 AM, after the usual introductions and a vending-machine coffee, the lab's research engineer sat me down at bench 12 and handed me a red binder. It was their protocol book. Page 47, the local DPPH assay. I read it once. Then twice. Then I read it again, this time noting the differences with what I had been doing in Rabat for two years.
The DPPH• stock solution here is prepared at 50 µM in absolute methanol, not 100 µM as we do back home. Incubation is in the dark for 30 minutes at room temperature, not 60. Spectrophotometric reading is at 517 nm on their Tecan Infinite M200 Pro, which matches, but their reference standard is trolox on a six-point curve, where in Rabat I worked with ascorbic acid on eight points.
No disaster. Just a different reference frame. And me, in the middle of it, with a joint thesis that needed to produce results comparable on both sides of the Mediterranean.
The measured panic moment
I took an hour over lunch to map the problem out. All my calibration curves built in Rabat were unusable for direct downstream work. I needed to rebuild trolox calibration curves from scratch on the standards I had brought with me (five Moroccan medicinal plant extracts, in hand-labelled vials, kept at -80°C during the trip in a refrigerated suitcase), and redo all my IC50 values under local conditions to make them comparable.
Six months of stay. Five extracts. Three antioxidant assays per extract (DPPH•, ABTS•+, FRAP). Plus the LC-MS analyses planned for mid-stay. Fitting all of that into the calendar without messing up the parameters felt, at 1 PM that Monday, quite dizzying.
PhytoNote, the YAML layer, twenty minutes
That afternoon, I opened my laptop and went into the PhytoNote configurations folder. When I designed the app two years earlier, I had not anticipated this exact scenario. I had just had the intuition, after watching colleagues in my Rabat lab use PhytoNote with their own enzyme inhibition assays, that validation bounds and assay parameters needed to live outside the code. In a text file. Editable without recompiling.
The decision had not been ideological at the time. It had been lazy, honestly. I did not want to recompile a Flutter APK every time a colleague asked me to tweak an upper absorbance bound by 0.05. So I shoved everything that smelled like a parameter into YAML files, kept the Dart code generic, and moved on. Two years later, sitting at bench 12 in Tours with a foreign protocol in front of me, that lazy decision suddenly looked like the smartest thing I had ever done in this project.
I duplicated my dpph_rabat.yaml file into dpph_tours.yaml. I changed the stock concentration, the incubation time, the reference standard and the expected absorbance bounds at 517 nm. I added a protocol identifier and a comment field so that I could trace where each measurement came from three years later. Twenty minutes later, I had relaunched the app on my bench tablet and run a blank test plate to check the bounds responded correctly.
The rest of the stay went without drama. Each experiment loaded its corresponding YAML protocol. Each measurement was timestamped with the tag protocol: dpph_tours. My data returned to Rabat clean, traceable, labelled with the right reference frame. I could rebuild my IC50 values locally and compare them with the Rabat values using a documented conversion factor, without losing the provenance chain.
I also slipped a third YAML file into the project that month. The ABTS•+ protocol at LBVpa runs slightly differently from ours too, with potassium persulfate at 2.45 mM instead of 2.5 and a 16-hour pre-incubation instead of 12. Five extra lines in a YAML file. No code change. The validation engine picked up the new bounds on the next app launch, and that was it.
The shared YAML, the day I left
Before catching my train to Paris CDG, I left a USB stick on the lab engineer's desk. The dpph_tours.yaml file was on it, with a two-paragraph usage note and the PhytoNote Android APK. I got a message from her two months later. Two PhD students at the LBVpa were using it for their own assays on grapevine polyphenols. They had added a frap_tours.yaml file.
That is when I understood something I had not formulated explicitly before. Protocols do not travel well between labs. Each team has its small adaptations, its preferred standards, its incubation times that have become local law because someone published a paper with them fifteen years ago. That is healthy, it is methodological diversity, and it also produces a debt: you lose direct comparability, you multiply error sources at the exact moment when a student changes site, and you make literature meta-analyses more painful than they should be.
Protocol portability, in phytochemistry as in many other experimental disciplines, is a topic where a lot of patchwork still happens and very little tooling exists. The PhytoNote YAML layer is not a complete answer. It is just a place where each lab can write its rules, version them with git if it feels like it, and share them through a visiting researcher stay or a joint-supervision partner without giving up its methodological identity.
For technical detail on the YAML layer and the assays already supported, the PhytoNote page gives an overview. The methodological paper covers the validation engine and the philosophy behind externalized configuration. The same YAML, re-used in an industrial context on a cosmetics QC line at Arganor Labs, brought their inter-operator variance down from 18 % to 4 % — I tell that lab-to-industry crossover in the Arganor story.