Import / export
Files first, databases later.
TT-o v0.1.1 deliberately integrates by file exchange: what leaves this app is shaped so that AJNV4, the MP6 toolchain and Ajinoverse Studio can pick it up later without TT-o touching their databases. Every export carries the project's dataset provenance.
Import a TT-o project
Expected format: tto.project.v0.1 (v0.1 files without a provenance declaration import with a warning). The bundled illustrative sample lives at /samples/naawah_colombia_cocoa_2026.tto.json.
Export & preview — Colombia Cocoa Millésime 2026
Portable recipe graph (recipe_meta / nodes / edges, UPPERCASE roles) shaped for POST /api/v2/graph/tastetuner/save — one process path per lot so the millésime comparison keeps its meaning; TT-o data under payload.tto. Live AJNV4 import test pending.
Next ecosystem stepIndustrial recipe, formulation and sensory-intelligence environment (AJNV4.3 family). File handoff — direct project opening not yet tested. Explore Ajinoverse 4.3 →
{
"recipe_meta": {
"id": "naawah_colombia_cocoa_2026",
"name": "Colombia Cocoa Millésime 2026",
"tags": [
"tt-o",
"cocoa",
"millesime",
"ingredient-intelligence"
],
"dataset_status": "illustrative_demo",
"provenance": "Illustrative demonstration dataset — not Naawah field or tasting data. Values are representative cocoa-process examples used to demonstrate TT-o and must be replaced by verified partner data during a pilot.",
"tto_compatibility_note": "Generated by TT-o v0.1.1. Portable recipe graph per AJXNV4 docs/recipe-format.md — injectable into POST /api/v2/graph/tastetuner/save with a minted version_id. One process path per lot preserves the comparative (millésime) experiment; all TT-o extensions (origin, lot, sensory, evidence, provenance) live under payload.tto and do not modify base graph vocabulary. Live import against a running AJNV4 instance is pending."
},
"nodes": [
{
"id": "lot_a",
"type": "ingredient",
"payload": {
"label": "Cocoa beans — Mitaca 2026",
"tto": {
"schema": "tto/ingredient-origin@0.1",
"datasetStatus": "illustrative_demo",
"origin": {
"ingredientName": "Cocoa beans",
"category": "raw",
"varietyName": "Trinitario — ICS-95 dominant (mixed clones)",
"functionalClass": "fine-flavour cocoa",
"supplierName": "Finca demo partner (placeholder), Santander",
"producerNotes": "Family farm, agroforestry shade system; centralized fermentation at the association.",
"originCountry": "CO",
"originRegion": "Santander",
"originLocality": "San Vicente de Chucurí (placeholder)",
"latitude": 6.88,
"longitude": -73.41,
"climateNotes": "Two rainy seasons drive two harvests: principal (Oct–Jan) and mitaca (Apr–Jun).",
"farmNotes": "Pods selected ripe; opening within 24 h of harvest; pulp visually graded before box loading.",
"certifications": [
"organic (declared)",
"direct trade (declared)"
],
"sustainabilityNotes": "Provenance and ethics claims are supplier-declared; audit evidence not yet on file."
},
"lot": {
"id": "lot_a",
"lotCode": "CO-SANT-2026-MIT-01",
"label": "Mitaca 2026",
"harvestYear": 2026,
"harvestSeason": "mitaca",
"harvestDate": "2026-05-18",
"cropCycleNotes": "Mid-crop after the April rains; smaller pods, aromatic pulp.",
"color": "a",
"qualityStatus": "approved",
"qualityMeasurements": [
{
"key": "cut_test_well_fermented_pct",
"label": "Cut test — well fermented",
"value": 78,
"unit": "%",
"method": "Guillotine cut test, 50 beans",
"evidenceKind": "measured",
"measuredAt": "2026-05-27"
},
{
"key": "moisture_pct",
"label": "Moisture after drying",
"value": 7.1,
"unit": "%",
"method": "Moisture meter",
"evidenceKind": "measured",
"measuredAt": "2026-06-02"
},
{
"key": "nib_ph",
"label": "Nib pH",
"value": 5.4,
"unit": "pH",
"method": "Benchtop pH meter",
"evidenceKind": "measured",
"measuredAt": "2026-06-02"
},
{
"key": "bean_count_per_100g",
"label": "Bean count",
"value": 92,
"unit": "beans/100 g",
"method": "ISO 2451",
"evidenceKind": "measured",
"measuredAt": "2026-06-02"
},
{
"key": "fermentation_tmax_c",
"label": "Fermentation Tmax",
"value": 47.5,
"unit": "°C",
"method": "Probe in box centre",
"evidenceKind": "measured",
"measuredAt": "2026-05-24"
}
]
}
}
}
},
{
"id": "lot_b",
"type": "ingredient",
"payload": {
"label": "Cocoa beans — Principal 2025",
"tto": {
"schema": "tto/ingredient-origin@0.1",
"datasetStatus": "illustrative_demo",
"origin": {
"ingredientName": "Cocoa beans",
"category": "raw",
"varietyName": "Trinitario — ICS-95 dominant (mixed clones)",
"functionalClass": "fine-flavour cocoa",
"supplierName": "Finca demo partner (placeholder), Santander",
"producerNotes": "Family farm, agroforestry shade system; centralized fermentation at the association.",
"originCountry": "CO",
"originRegion": "Santander",
"originLocality": "San Vicente de Chucurí (placeholder)",
"latitude": 6.88,
"longitude": -73.41,
"climateNotes": "Two rainy seasons drive two harvests: principal (Oct–Jan) and mitaca (Apr–Jun).",
"farmNotes": "Pods selected ripe; opening within 24 h of harvest; pulp visually graded before box loading.",
"certifications": [
"organic (declared)",
"direct trade (declared)"
],
"sustainabilityNotes": "Provenance and ethics claims are supplier-declared; audit evidence not yet on file."
},
"lot": {
"id": "lot_b",
"lotCode": "CO-SANT-2025-PRI-03",
"label": "Principal 2025",
"harvestYear": 2025,
"harvestSeason": "principal",
"harvestDate": "2025-11-12",
"cropCycleNotes": "Main crop; larger pods, denser beans, riper pulp sugar.",
"color": "b",
"qualityStatus": "released",
"qualityMeasurements": [
{
"key": "cut_test_well_fermented_pct",
"label": "Cut test — well fermented",
"value": 84,
"unit": "%",
"method": "Guillotine cut test, 50 beans",
"evidenceKind": "measured",
"measuredAt": "2025-11-21"
},
{
"key": "moisture_pct",
"label": "Moisture after drying",
"value": 6.9,
"unit": "%",
"method": "Moisture meter",
"evidenceKind": "measured",
"measuredAt": "2025-11-28"
},
{
"key": "nib_ph",
"label": "Nib pH",
"value": 5.6,
"unit": "pH",
"method": "Benchtop pH meter",
"evidenceKind": "measured",
"measuredAt": "2025-11-28"
},
{
"key": "bean_count_per_100g",
"label": "Bean count",
"value": null,
"unit": "beans/100 g",
"method": "ISO 2451",
"evidenceKind": "missing"
},
{
"key": "fermentation_tmax_c",
"label": "Fermentation Tmax",
"value": 46,
"unit": "°C",
"method": "Probe in box centre",
"evidenceKind": "measured",
"measuredAt": "2025-11-18"
}
]
}
}
}
},
{
"id": "stage_pod__lot_a",
"type": "process",
"duration_s": 14400,
"payload": {
"label": "Pod opening & pulp grading — Mitaca 2026",
"processEvents": [
{
"id": "stage_pod__lot_a_e0",
"type": "START",
"timeOffset": 0,
"label": "Start"
},
{
"id": "stage_pod__lot_a_e1",
"type": "END",
"timeOffset": 14400,
"label": "End"
}
],
"tto": {
"schema": "tto/process-stage@0.1",
"stageId": "stage_pod",
"lotId": "lot_a",
"kind": "pod_opening",
"evidenceKind": "observed",
"confidence": 80,
"humidityPct": null,
"processNotes": "Ripe pods opened within 24 h of harvest; pulp visually graded; damaged beans removed.",
"operatorNotes": null,
"perLot": {
"notes": "Mitaca pulp notably aromatic, lighter colour."
},
"sensorySnapshots": [
{
"lotId": "lot_a",
"takenAt": "2026-05-18",
"panel": "Field team",
"attributes": [
{
"key": "acidity",
"intensity": 6,
"evidenceKind": "observed",
"confidence": 50,
"targetDirection": "unknown",
"notes": "Bright, citric pulp.",
"inference": null
},
{
"key": "red_fruit",
"intensity": 4,
"evidenceKind": "observed",
"confidence": 40,
"targetDirection": "unknown",
"notes": "Fresh pulp aroma.",
"inference": null
},
{
"key": "blueberry",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "bitterness",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "astringency",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "mouthfeel",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aftertaste",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aromatic_complexity",
"intensity": 3,
"evidenceKind": "observed",
"confidence": 35,
"targetDirection": "unknown",
"notes": null,
"inference": null
}
]
}
]
}
}
},
{
"id": "stage_ferm_start__lot_a",
"type": "process",
"duration_s": 86400,
"payload": {
"label": "Fermentation — start (Day 1) — Mitaca 2026",
"processEvents": [
{
"id": "stage_ferm_start__lot_a_e0",
"type": "START",
"timeOffset": 0,
"label": "Start"
},
{
"id": "stage_ferm_start__lot_a_e1",
"type": "END",
"timeOffset": 86400,
"label": "End"
}
],
"tto": {
"schema": "tto/process-stage@0.1",
"stageId": "stage_ferm_start",
"lotId": "lot_a",
"kind": "fermentation",
"evidenceKind": "observed",
"confidence": 75,
"humidityPct": null,
"processNotes": "Wooden boxes, banana-leaf cover. Anaerobic phase; yeasts on pulp sugars.",
"operatorNotes": null,
"perLot": {
"device": "wooden box (400 kg)",
"notes": "Box loaded evening of harvest day."
},
"sensorySnapshots": [
{
"lotId": "lot_a",
"takenAt": "2026-05-19",
"panel": "Fermentation lead",
"attributes": [
{
"key": "acidity",
"intensity": 3,
"evidenceKind": "observed",
"confidence": 45,
"targetDirection": "unknown",
"notes": "Alcoholic phase; acidity not yet developed.",
"inference": null
},
{
"key": "red_fruit",
"intensity": 3,
"evidenceKind": "observed",
"confidence": 40,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "blueberry",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "bitterness",
"intensity": 5,
"evidenceKind": "observed",
"confidence": 40,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "astringency",
"intensity": 6,
"evidenceKind": "observed",
"confidence": 45,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "mouthfeel",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aftertaste",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aromatic_complexity",
"intensity": 3,
"evidenceKind": "observed",
"confidence": 35,
"targetDirection": "unknown",
"notes": null,
"inference": null
}
]
}
]
},
"temperature": 32
}
},
{
"id": "stage_ferm_turn__lot_a",
"type": "process",
"duration_s": 172800,
"payload": {
"label": "Fermentation — first turn (Day 3) — Mitaca 2026",
"processEvents": [
{
"id": "stage_ferm_turn__lot_a_e0",
"type": "START",
"timeOffset": 0,
"label": "Start"
},
{
"id": "stage_ferm_turn__lot_a_e1",
"type": "END",
"timeOffset": 172800,
"label": "End"
}
],
"tto": {
"schema": "tto/process-stage@0.1",
"stageId": "stage_ferm_turn",
"lotId": "lot_a",
"kind": "fermentation",
"evidenceKind": "observed",
"confidence": 75,
"humidityPct": null,
"processNotes": "Mass turned to aerate; acetic phase begins; temperature climbing toward Tmax.",
"operatorNotes": null,
"perLot": {
"notes": "Turned Day 3 and Day 5."
},
"sensorySnapshots": [
{
"lotId": "lot_a",
"takenAt": "2026-05-21",
"panel": "Fermentation lead",
"attributes": [
{
"key": "acidity",
"intensity": 6,
"evidenceKind": "observed",
"confidence": 55,
"targetDirection": "unknown",
"notes": "Acetic phase rising with mass temperature.",
"inference": null
},
{
"key": "red_fruit",
"intensity": 4,
"evidenceKind": "observed",
"confidence": 45,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "blueberry",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "bitterness",
"intensity": 6,
"evidenceKind": "observed",
"confidence": 45,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "astringency",
"intensity": 7,
"evidenceKind": "observed",
"confidence": 50,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "mouthfeel",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aftertaste",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aromatic_complexity",
"intensity": 4,
"evidenceKind": "observed",
"confidence": 40,
"targetDirection": "unknown",
"notes": null,
"inference": null
}
]
}
]
},
"temperature": 45
}
},
{
"id": "stage_ferm_end__lot_a",
"type": "process",
"duration_s": 259200,
"payload": {
"label": "Fermentation — end & cut test (Day 6) — Mitaca 2026",
"processEvents": [
{
"id": "stage_ferm_end__lot_a_e0",
"type": "START",
"timeOffset": 0,
"label": "Start"
},
{
"id": "stage_ferm_end__lot_a_e1",
"type": "END",
"timeOffset": 259200,
"label": "End"
}
],
"tto": {
"schema": "tto/process-stage@0.1",
"stageId": "stage_ferm_end",
"lotId": "lot_a",
"kind": "fermentation",
"evidenceKind": "measured",
"confidence": 90,
"humidityPct": null,
"processNotes": "Stop decision on cut test + aroma; target ≥ 70 % well-fermented beans.",
"operatorNotes": null,
"perLot": {
"temperatureC": 47.5,
"notes": "Stopped at 6 days; 78 % well fermented."
},
"sensorySnapshots": [
{
"lotId": "lot_a",
"takenAt": "2026-05-24",
"panel": "Fermentation lead",
"attributes": [
{
"key": "acidity",
"intensity": 7,
"evidenceKind": "observed",
"confidence": 60,
"targetDirection": "reduce",
"notes": "Acetic peak; expected to vent during drying.",
"inference": null
},
{
"key": "red_fruit",
"intensity": 5,
"evidenceKind": "observed",
"confidence": 55,
"targetDirection": "push",
"notes": null,
"inference": null
},
{
"key": "blueberry",
"intensity": 2,
"evidenceKind": "ai_inferred",
"confidence": 30,
"targetDirection": "unknown",
"notes": "Suggested by clone profile; unverified.",
"inference": {
"method": "clone-profile heuristic (illustrative)",
"model": "none — human-entered demo suggestion",
"basis": [
"Trinitario/ICS-95 published flavour tendency",
"berry notes reported for comparable Santander lots"
],
"generatedAt": "2026-05-24",
"notes": "Secondary, low-confidence suggestion; must be confirmed or rejected by tasting."
}
},
{
"key": "bitterness",
"intensity": 6,
"evidenceKind": "observed",
"confidence": 55,
"targetDirection": "reduce",
"notes": null,
"inference": null
},
{
"key": "astringency",
"intensity": 7,
"evidenceKind": "observed",
"confidence": 60,
"targetDirection": "reduce",
"notes": "Normal at ferment end.",
"inference": null
},
{
"key": "mouthfeel",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aftertaste",
"intensity": null,
"evidenceKind": "missing",
"confidence": 0,
"targetDirection": "unknown",
"notes": null,
"inference": null
},
{
"key": "aromatic_complexity",
"intensity": 5,
"evidenceKind": "observed",
"confidence": 50,
"targetDirection": "push",
"notes": null,
"inference": null
}
]
}
]
},
"temperature": 47.5
}
},
{
"id": "stage_dry__lot_a",
"type": "process",
"duration_s": 518400,
"payload": {
"label": "Sun drying to ≈ 7 % moisture — Mitaca 2026",
"processEvents": [
{
"id": "stage_dry__lot_a_e0",
"type": "START",
"timeOffset": 0,
… (truncated preview — download for the full file)Human validation — next ecosystem step, not an export
TT-o characterizes the cocoa and its process; MP6 records how the resulting chocolate is perceived by a panel; TasteTunerPublic asks people what they actually perceive and prefer. A harvest A/B or roast A/B comparison becomes a structured audience evaluation — this is a workflow handoff, not an automatic transfer.
Validate with tasters — TasteTunerPublic →