Skip to content

Latest commit

Β 

History

History
94 lines (74 loc) Β· 4.6 KB

File metadata and controls

94 lines (74 loc) Β· 4.6 KB

Build Status

A living inventory: what's actually built, what's built-but-needs-validation, what's stubbed/data-gated, and what's deliberately deferred. Updated as milestones land. For why things are the way they are, see ARCHITECTURE.md, CAPABILITIES.md, and AROMA.md.

Legend

  • βœ… Built & validated β€” trained/run, output sanity-checked
  • 🟑 Built, needs validation β€” code exists, not yet under an end-to-end test suite
  • πŸ”© Stub / data-gated β€” interface exists, returns an honest "not available" until fueled
  • 🧱 Team milestone (Track B) β€” scaffold only, on the roadmap
  • ⏸️ Deferred β€” intentionally parked, with a documented reason

Track A β€” Python core (training/, runs on the R620)

Taste engine βœ…

  • sweet / bitter / umami classifiers (RandomForest on Morgan fingerprints) β€” AUROC 0.95 / 0.95 / 0.99
  • sweetness-intensity regressor (SweetenersDB v2.0) β€” RΒ² 0.82
  • sour: trained indicative head (AUROC 0.90) + acidity SMARTS rule (recall 0.93)
  • salty: cation-aware rule + verified dataset-label override
  • ranked taste_profile + multitaste flag
  • ONNX export with roundtrip self-validation (< 1e-6)

Behaviour / chemistry packs (predict.py) 🟑 (spot-validated 2026-06-27)

  • physchem β€” MW, logP, TPSA, H-bonds, solubility, volatility, pKa (computed, RDKit)
  • stability β€” oxidation / hydrolysis / photo watch-flags (rule)
  • chemesthesis β€” cooling / pungent / astringent (rule)
  • safety β€” disclaimer, structural alerts, GRAS cross-check, TTC hint, EU allergen labeling
  • check_mixture β€” documented dangerous-pair screen
  • analyze_balance β€” OAV dosing balance (qualitative)

All return chemically-sane output on spot checks (vanillin correctly flags its phenol + aldehyde as oxidation-prone; citric acid; glucose). Validation gap: these aren't yet under a regression-test suite β€” that's the work to move them to βœ….

Substitution search βœ… (new β€” issue #22 core)

  • substitute() β€” Tanimoto / Morgan nearest-neighbor over the labeled molecule set, each neighbor returned with its known tastes
  • demonstrated: glucose β†’ ribose / sugars (sim 0.94); vanillin β†’ ethyl ferulate / creosol / anisaldehyde (vanillin-adjacent aromatics)
  • this is the Track-A implementation; Track B mirrors it as a pgvector ANN query over the same fingerprints (M6)

Track-A demo βœ…

  • FastAPI app.py (/api/predict, /api/neighbors) + workbench.html

Data-gated / stubs πŸ”©

  • retention_index (Kovats RI) β€” needs a trained RI QSPR / NIST data
  • analyze_balance quantitative dosing β€” needs odor-threshold tables
  • GRAS cross-check β€” needs the FEMA/FDA GRAS list loaded (gras_reference.parquet)
  • aroma β€” see Deferred below

Track B β€” Product (the team builds)

  • 🧱 api/ (.NET) β€” buildable skeleton + /health; endpoints / rule-port / in-process ONNX serving = M2 (Aaron)
  • 🧱 frontend/ (React workbench) β€” greenfield = M3 (Jamie)
  • 🧱 infra/ (Docker Compose, Postgres + pgvector) = M5 (Ty)
  • 🧱 substitution at scale (pgvector ANN), auth / per-seat = M6

Deferred

  • ⏸️ Aroma model. No commercially-clean public data yields a working model (keller_2016 scored CV-RΒ² ≀ 0 across all 20 descriptors; the rich set, GS-LF, is NonCommercial). The engine (OpenPOM β€” MIT code) is kept and wired; it's unlocked by licensed PMP 2001 or customer data. Full record: AROMA.md.

Product vision β€” staging (near-term β†’ long-horizon)

What we sell, and when:

  1. Now β€” clean public data. Taste + behaviour + safety read on any structure, plus the substitution library (swap an ingredient for a close analogue). This is the public demo and the open-door.

  2. Paid pilot β€” their data. An aroma model trained on the customer's licensed/owned odor data (GC-MS to identify the molecules + their sensory panel's descriptors as labels β€” both are required; GC-MS alone has no smell labels to learn). Plus blend-ratio suggestions tuned on their formulation archive. The pitch line is literal: "aroma comes with your data."

  3. Long-horizon β€” R&D + a regulatory wall. Novel-molecule generation (propose new flavor molecules) and retrosynthesis (synthesis routes). Technically far harder, and gated by food-safety approval β€” a newly-generated molecule isn't GRAS and can't be sold as a flavor without a regulatory path. A research direction, not a near-term feature; documented here so the staging is explicit and doesn't get over-promised in a pitch.