| ean | No | | |
| url | No | | |
| body | No | Free text; roasters usually say low, medium or high | |
| cost | No | | |
| name | Yes | | |
| notes | No | The coffee's own description — the roaster's tasting notes, the dialing approach that worked. Per bag notes go in bag_notes. | |
| state | No | | |
| origin | No | | |
| rating | No | | |
| acidity | No | Free text; roasters usually say low, medium or high | |
| co2e_kg | No | | |
| origins | No | List of bean origin details | |
| qr_code | No | | |
| roaster | No | | |
| storage | No | | |
| variety | No | | |
| archived | No | 1 if archived, 0 otherwise | |
| bean_mix | No | E.g. blend details | |
| buy_date | No | Calendar day in YYYY-MM-DD format — a day, not a timestamp | |
| currency | No | | |
| finished | No | 1 if finished, 0 otherwise | |
| aromatics | No | | |
| bag_notes | No | | |
| favourite | No | 1 if favourite, 0 otherwise | |
| frozen_at | No | Calendar day the bag went into the freezer, YYYY-MM-DD — a day, not a timestamp | |
| sweetness | No | Free text; roasters usually say low, medium or high | |
| roast_date | Yes | Calendar day in YYYY-MM-DD format — a day, not a timestamp | |
| arabica_pct | No | Percent arabica, 100 for a pure arabica; the rest robusta | |
| attachments | No | JSON or comma-separated list of attachments | |
| frozen_note | No | | |
| opened_date | No | Calendar day in YYYY-MM-DD format — a day, not a timestamp | |
| roast_level | Yes | | |
| roast_range | No | | |
| unfrozen_at | No | Calendar day the bag came out, YYYY-MM-DD — a day, not a timestamp | |
| bag_weight_g | No | Bag weight in grams | |
| best_by_date | No | Calendar day in YYYY-MM-DD format — a day, not a timestamp | |
| process_type | Yes | | |
| roast_custom | No | | |
| decaffeinated | No | 1 if decaf, 0 if regular | |
| dial_category | No | Dialing behavior class: classic = medium/traditional espresso roasts (chocolate/nut, balanced); dark = genuinely dark/roasty; the light categories cover Nordic and ultra-light styles. | |
| roasting_type | No | | |
| cupping_points | No | | |
| frozen_storage | No | | |
| rest_window_days_max | No | | |
| rest_window_days_min | No | | |