{
 "schema_version": "1.0",
 "nodes": [
  {
   "id": "lots",
   "type": "input/json_value",
   "label": "The lots",
   "parameters": { "value": [{"lot": 1, "object": "Shoe", "kind": "shoe", "maker": "Delft", "place": "Delft", "dating": "1697", "material": "tin-glazed earthenware (Delftware)", "height_cm": 11.5, "width_cm": 16, "price_eur": 2400, "notes": "A lady's shoe with a raised heel and a bow; dated on the sole.", "photo": "__PHOTO_SHOE__"}, {"lot": 2, "object": "Vase", "kind": "vase", "maker": "Greenwood Pottery Company, Trenton", "place": "Trenton", "dating": "c. 1884–1893", "material": "porcelain, painted and gilded", "height_cm": 25.5, "width_cm": 15, "price_eur": 1850, "notes": "Aesthetic Movement; birds among branches.", "photo": "__PHOTO_VASE__"}, {"lot": 3, "object": "Teapot", "kind": "teapot", "maker": "John Bartlam, Charleston", "place": "Charleston", "dating": "c. 1765", "material": "soft-paste porcelain, painted in underglaze blue", "height_cm": 12, "width_cm": 19, "price_eur": 9500, "notes": "One of the earliest porcelains made in America.", "photo": "__PHOTO_TEAPOT_BLUE__"}, {"lot": 4, "object": "Teapot", "kind": "teapot", "maker": "George E. Ohr, Biloxi", "place": "Biloxi", "dating": "c. 1897", "material": "earthenware with a mottled glaze", "height_cm": 17.5, "width_cm": 14, "price_eur": 6800, "notes": "The 'mad potter of Biloxi'; twisted handle.", "photo": "__PHOTO_TEAPOT_RED__"}, {"lot": 5, "object": "Armchair", "kind": "chair", "maker": "Herter Brothers, New York", "place": "New York", "dating": "c. 1875", "material": "gilded wood, later silk upholstery", "height_cm": 92, "width_cm": 66, "price_eur": 14500, "notes": "From a New York drawing-room suite; tasselled fringe.", "photo": "__PHOTO_ARMCHAIR__"}, {"lot": 6, "object": "Perfume bottle", "kind": "bottle", "maker": "Murano", "place": "Murano", "dating": "c. 1700", "material": "chalcedony glass with a gilded bronze mount", "height_cm": 9, "width_cm": 8, "price_eur": 3200, "notes": "Marbled glass imitating hardstone.", "photo": "__PHOTO_BOTTLE__"}, {"lot": 7, "object": "Pair of plates", "kind": "plate", "maker": "Delft", "place": "Delft", "dating": "c. 1720", "material": "tin-glazed earthenware (Delftware)", "height_cm": 23, "width_cm": 23, "price_eur": 1600, "notes": "Blue and white, a pair.", "photo": "__PHOTO_TEAPOT_RED__"}],
    "required": true
   }
  },
  {
   "id": "words",
   "type": "input/json_value",
   "label": "The catalogue's words",
   "parameters": { "value": {"it": {"gallery": "LUNARDI ANTICHITÀ · TORINO", "catalog_title": "Selezione d'autunno", "catalog_subtitle": "Maioliche, porcellane, vetri e arredi", "validity": "Prezzi validi fino al 31 dicembre 2026 · regime del margine", "contact": "Via della Rocca 9, Torino · lunardi.example", "cover_photo": "__PHOTO_ARMCHAIR__", "section_title": "Le opere", "note": "Misure: altezza × larghezza · prezzi in euro"}, "en": {"gallery": "LUNARDI ANTICHITÀ · TORINO", "catalog_title": "Autumn selection", "catalog_subtitle": "Delftware, porcelain, glass and furniture", "validity": "Prices valid until 31 December 2026 · margin scheme", "contact": "Via della Rocca 9, Turin · lunardi.example", "cover_photo": "__PHOTO_ARMCHAIR__", "section_title": "The lots", "note": "Sizes: height × width · prices in euros"}, "de": {"gallery": "LUNARDI ANTICHITÀ · TORINO", "catalog_title": "Herbstauswahl", "catalog_subtitle": "Fayencen, Porzellan, Glas und Möbel", "validity": "Preise gültig bis 31. Dezember 2026 · Differenzbesteuerung", "contact": "Via della Rocca 9, Turin · lunardi.example", "cover_photo": "__PHOTO_ARMCHAIR__", "section_title": "Die Objekte", "note": "Maße: Höhe × Breite · Preise in Euro"}},
    "required": true
   }
  },
  {
   "id": "each",
   "type": "enumerate/json",
   "label": "Each lot",
   "parameters": {
    "jsonConfig": {
     "arrayPath": "(root)",
     "properties": [
      {
       "sourcePath": "lot",
       "outputPort": "lot",
       "outputType": "number",
       "selected": true,
       "label": "lot"
      },
      {
       "sourcePath": "object",
       "outputPort": "object",
       "outputType": "text",
       "selected": true,
       "label": "object"
      },
      {
       "sourcePath": "kind",
       "outputPort": "kind",
       "outputType": "text",
       "selected": true,
       "label": "kind"
      },
      {
       "sourcePath": "maker",
       "outputPort": "maker",
       "outputType": "text",
       "selected": true,
       "label": "maker"
      },
      {
       "sourcePath": "place",
       "outputPort": "place",
       "outputType": "text",
       "selected": true,
       "label": "place"
      },
      {
       "sourcePath": "dating",
       "outputPort": "dating",
       "outputType": "text",
       "selected": true,
       "label": "dating"
      },
      {
       "sourcePath": "material",
       "outputPort": "material",
       "outputType": "text",
       "selected": true,
       "label": "material"
      },
      {
       "sourcePath": "height_cm",
       "outputPort": "height",
       "outputType": "number",
       "selected": true,
       "label": "height_cm"
      },
      {
       "sourcePath": "width_cm",
       "outputPort": "width",
       "outputType": "number",
       "selected": true,
       "label": "width_cm"
      },
      {
       "sourcePath": "price_eur",
       "outputPort": "price",
       "outputType": "number",
       "selected": true,
       "label": "price_eur"
      },
      {
       "sourcePath": "notes",
       "outputPort": "notes",
       "outputType": "text",
       "selected": true,
       "label": "notes"
      },
      {
       "sourcePath": "photo",
       "outputPort": "photo",
       "outputType": "image",
       "selected": true,
       "label": "photo"
      }
     ]
    },
    "emptyBehavior": "fail"
   }
  },
  {
   "id": "look",
   "type": "ai/image_analysis",
   "label": "Look at the photo",
   "parameters": {
    "system_prompt": "You catalogue an antiques dealer's stock from a photograph. Describe only what is visible; never guess a date, a maker, a place of origin or a price. Answer with one JSON object with these keys:\n- kind: what the object is, exactly one of: shoe, vase, teapot, chair, bottle, plate, figure, other\n- material: the material as it looks, such as 'tin-glazed earthenware' or 'gilded wood'\n- colours: a list of the main colours, at most four\n- decoration: what is painted, modelled, carved or woven on it, in one sentence\n- condition: wear or damage the photograph clearly shows — chips, cracks, losses, rubbing — in one sentence, or 'no visible damage'. The opening of a shoe, a vase or a teapot is its form, not damage; report nothing you are not sure of",
    "prompt": "Catalogue this object.",
    "response_format": "json_object"
   }
  },
  {
   "id": "look_check",
   "type": "utility/json_schema_validate",
   "label": "The reading is complete",
   "parameters": {
    "schema_source": "inline",
    "mode": "fail",
    "schema_definition": {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "title": "What a photograph of a lot shows",
     "type": "object",
     "required": [
      "kind",
      "material",
      "colours",
      "decoration",
      "condition"
     ],
     "properties": {
      "kind": {
       "enum": [
        "shoe",
        "vase",
        "teapot",
        "chair",
        "bottle",
        "plate",
        "figure",
        "other"
       ]
      },
      "material": {
       "type": "string",
       "minLength": 3,
       "maxLength": 80
      },
      "colours": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "minItems": 1,
       "maxItems": 6
      },
      "decoration": {
       "type": "string",
       "minLength": 5,
       "maxLength": 300
      },
      "condition": {
       "type": "string",
       "minLength": 5,
       "maxLength": 200
      }
     }
    }
   }
  },
  {
   "id": "seen",
   "type": "utility/extract",
   "label": "What the photo shows",
   "parameters": {
    "path": "kind",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "same",
   "type": "utility/predicate",
   "label": "The photo is the lot",
   "parameters": {
    "operation": "equals"
   }
  },
  {
   "id": "photo_text",
   "type": "text/format",
   "label": "The reading as text",
   "parameters": {
    "format": "json"
   }
  },
  {
   "id": "brief",
   "type": "text/template",
   "label": "The lot as a brief",
   "parameters": {
    "template": "Object: [object]\nMaker: [maker]\nMade in: [place]\nMaterial, from the dealer's records: [material]\nDealer's notes: [notes]\nWhat the photograph shows: [photo]",
    "placeholders": [
     {
      "name": "object",
      "inputPort": "object"
     },
     {
      "name": "maker",
      "inputPort": "maker"
     },
     {
      "name": "place",
      "inputPort": "place"
     },
     {
      "name": "material",
      "inputPort": "material"
     },
     {
      "name": "notes",
      "inputPort": "notes"
     },
     {
      "name": "photo",
      "inputPort": "photo"
     }
    ]
   }
  },
  {
   "id": "matching",
   "type": "utility/filter",
   "label": "Only a lot whose photo matches",
   "parameters": {
    "invert": false
   }
  },
  {
   "id": "not_matching",
   "type": "utility/filter",
   "label": "A photo to check",
   "parameters": {
    "invert": true
   }
  },
  {
   "id": "write",
   "type": "ai/text_generation",
   "label": "Write the entry, in three languages",
   "parameters": {
    "response_format": "json_object",
    "system_prompt": "You write the entries of the printed catalogue of Lunardi Antichità, an antiques dealer in Turin, in Italian, English and German. Voice: precise, quiet and knowledgeable, as in a good auction catalogue; no superlatives, no exclamation marks, no sales talk.\nRules:\n- Use only the facts and the description of the photograph you are given. Never invent a provenance, a maker, a date, a place, an exhibition or a condition.\n- Never write numbers, dates, centuries, sizes or prices, neither in figures nor in words: the catalogue prints the dating, the size and the price next to your words. Do not name the maker or the town either: they are printed on the line below the title.\n- Write each language as a native catalogue writer would, not as a translation, with that language's catalogue terms: maiolica and Fayence only for tin-glazed earthenware, terracotta and Irdenware for other earthenware, porcellana and Porzellan for porcelain.\n- Keep strictly within the lengths below: they are the space on the printed card. German runs longer than English: say less in German rather than overflow.\nReturn one JSON object with exactly these keys:\n- title_it, title_en, title_de: the object's name as a catalogue heading, two to six words, at most 44 characters, such as 'Delftware shoe with a bow'\n- text_it, text_en, text_de: 28 to 40 words each, never more: the material, the form and the decoration, then the condition, in one or two sentences. Describe the object, never the photograph: no 'the photo shows'"
   },
   "model": {
    "model": "gpt-5.6-luna",
    "params": {
     "reasoning_effort": "none"
    }
   }
  },
  {
   "id": "write_check",
   "type": "utility/json_schema_validate",
   "label": "The words fit the card",
   "parameters": {
    "schema_source": "inline",
    "mode": "fail",
    "schema_definition": {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "title": "A catalogue entry in three languages",
     "type": "object",
     "additionalProperties": false,
     "required": [
      "title_it",
      "title_en",
      "title_de",
      "text_it",
      "text_en",
      "text_de"
     ],
     "properties": {
      "title_it": {
       "type": "string",
       "minLength": 10,
       "maxLength": 48,
       "pattern": "^[^0-9]*$"
      },
      "title_en": {
       "type": "string",
       "minLength": 10,
       "maxLength": 48,
       "pattern": "^[^0-9]*$"
      },
      "title_de": {
       "type": "string",
       "minLength": 10,
       "maxLength": 48,
       "pattern": "^[^0-9]*$"
      },
      "text_it": {
       "type": "string",
       "minLength": 140,
       "maxLength": 320,
       "pattern": "^[^0-9]*$"
      },
      "text_en": {
       "type": "string",
       "minLength": 140,
       "maxLength": 320,
       "pattern": "^[^0-9]*$"
      },
      "text_de": {
       "type": "string",
       "minLength": 140,
       "maxLength": 320,
       "pattern": "^[^0-9]*$"
      }
     }
    }
   }
  },
  {
   "id": "title_it",
   "type": "utility/extract",
   "label": "Title, it",
   "parameters": {
    "path": "title_it",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "title_en",
   "type": "utility/extract",
   "label": "Title, en",
   "parameters": {
    "path": "title_en",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "title_de",
   "type": "utility/extract",
   "label": "Title, de",
   "parameters": {
    "path": "title_de",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "text_it",
   "type": "utility/extract",
   "label": "Text, it",
   "parameters": {
    "path": "text_it",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "text_en",
   "type": "utility/extract",
   "label": "Text, en",
   "parameters": {
    "path": "text_en",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "text_de",
   "type": "utility/extract",
   "label": "Text, de",
   "parameters": {
    "path": "text_de",
    "expected_type": "text",
    "on_missing": "fail"
   }
  },
  {
   "id": "lot_text",
   "type": "text/format",
   "label": "Lot number as text",
   "parameters": {
    "format": "auto"
   }
  },
  {
   "id": "dating_it",
   "type": "text/replace",
   "label": "Dating, it",
   "parameters": {
    "find": "c. ",
    "replace_with": "circa "
   }
  },
  {
   "id": "maker_it",
   "type": "text/template",
   "label": "Maker line, it",
   "parameters": {
    "template": "[maker] · [dating]",
    "placeholders": [
     {
      "name": "maker",
      "inputPort": "maker"
     },
     {
      "name": "dating",
      "inputPort": "dating"
     }
    ]
   }
  },
  {
   "id": "height_it",
   "type": "text/format",
   "label": "Height, it",
   "parameters": {
    "format": "number",
    "locale": "it-IT"
   }
  },
  {
   "id": "width_it",
   "type": "text/format",
   "label": "Width, it",
   "parameters": {
    "format": "number",
    "locale": "it-IT"
   }
  },
  {
   "id": "size_it",
   "type": "text/template",
   "label": "Size, it",
   "parameters": {
    "template": "[height] × [width] cm",
    "placeholders": [
     {
      "name": "height",
      "inputPort": "height"
     },
     {
      "name": "width",
      "inputPort": "width"
     }
    ]
   }
  },
  {
   "id": "price_it",
   "type": "text/format",
   "label": "Price, it",
   "parameters": {
    "format": "currency",
    "locale": "it-IT",
    "currency": "EUR",
    "currency_display": "symbol",
    "decimals": 0
   }
  },
  {
   "id": "lot_it",
   "type": "text/template",
   "label": "Lot label, it",
   "parameters": {
    "template": "Lotto [lot]",
    "placeholders": [
     {
      "name": "lot",
      "inputPort": "lot"
     }
    ]
   }
  },
  {
   "id": "lots_it",
   "type": "aggregate/json",
   "label": "The lots, it",
   "parameters": {
    "emptyBehavior": "fail",
    "jsonAggregateConfig": {
     "prettyPrint": true,
     "outputName": "lots-it",
     "columns": [
      {
       "name": "lot_label",
       "inputPort": "lot_label",
       "type": "text"
      },
      {
       "name": "photo",
       "inputPort": "photo",
       "type": "image"
      },
      {
       "name": "title",
       "inputPort": "title",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "maker_line",
       "inputPort": "maker_line",
       "type": "text"
      },
      {
       "name": "size",
       "inputPort": "size",
       "type": "text"
      },
      {
       "name": "text",
       "inputPort": "text",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "price",
       "inputPort": "price",
       "type": "text"
      }
     ]
    }
   }
  },
  {
   "id": "words_it",
   "type": "utility/extract",
   "label": "The catalogue's words, it",
   "parameters": {
    "path": "it",
    "expected_type": "json",
    "on_missing": "fail"
   }
  },
  {
   "id": "render_it",
   "type": "design/template_render",
   "label": "Lay out the catalogue, it",
   "parameters": {
    "template_id": "__TEMPLATE_ID__",
    "template_revision": "__TEMPLATE_REVISION__",
    "output": "both",
    "page_selection": "all",
    "missing_policy": "fail_required",
    "overflow_policy": "template",
    "max_repeat": 24
   }
  },
  {
   "id": "maker_en",
   "type": "text/template",
   "label": "Maker line, en",
   "parameters": {
    "template": "[maker] · [dating]",
    "placeholders": [
     {
      "name": "maker",
      "inputPort": "maker"
     },
     {
      "name": "dating",
      "inputPort": "dating"
     }
    ]
   }
  },
  {
   "id": "height_en",
   "type": "text/format",
   "label": "Height, en",
   "parameters": {
    "format": "number",
    "locale": "en-GB"
   }
  },
  {
   "id": "width_en",
   "type": "text/format",
   "label": "Width, en",
   "parameters": {
    "format": "number",
    "locale": "en-GB"
   }
  },
  {
   "id": "size_en",
   "type": "text/template",
   "label": "Size, en",
   "parameters": {
    "template": "[height] × [width] cm",
    "placeholders": [
     {
      "name": "height",
      "inputPort": "height"
     },
     {
      "name": "width",
      "inputPort": "width"
     }
    ]
   }
  },
  {
   "id": "price_en",
   "type": "text/format",
   "label": "Price, en",
   "parameters": {
    "format": "currency",
    "locale": "en-GB",
    "currency": "EUR",
    "currency_display": "symbol",
    "decimals": 0
   }
  },
  {
   "id": "lot_en",
   "type": "text/template",
   "label": "Lot label, en",
   "parameters": {
    "template": "Lot [lot]",
    "placeholders": [
     {
      "name": "lot",
      "inputPort": "lot"
     }
    ]
   }
  },
  {
   "id": "lots_en",
   "type": "aggregate/json",
   "label": "The lots, en",
   "parameters": {
    "emptyBehavior": "fail",
    "jsonAggregateConfig": {
     "prettyPrint": true,
     "outputName": "lots-en",
     "columns": [
      {
       "name": "lot_label",
       "inputPort": "lot_label",
       "type": "text"
      },
      {
       "name": "photo",
       "inputPort": "photo",
       "type": "image"
      },
      {
       "name": "title",
       "inputPort": "title",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "maker_line",
       "inputPort": "maker_line",
       "type": "text"
      },
      {
       "name": "size",
       "inputPort": "size",
       "type": "text"
      },
      {
       "name": "text",
       "inputPort": "text",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "price",
       "inputPort": "price",
       "type": "text"
      }
     ]
    }
   }
  },
  {
   "id": "words_en",
   "type": "utility/extract",
   "label": "The catalogue's words, en",
   "parameters": {
    "path": "en",
    "expected_type": "json",
    "on_missing": "fail"
   }
  },
  {
   "id": "render_en",
   "type": "design/template_render",
   "label": "Lay out the catalogue, en",
   "parameters": {
    "template_id": "__TEMPLATE_ID__",
    "template_revision": "__TEMPLATE_REVISION__",
    "output": "both",
    "page_selection": "all",
    "missing_policy": "fail_required",
    "overflow_policy": "template",
    "max_repeat": 24
   }
  },
  {
   "id": "dating_de",
   "type": "text/replace",
   "label": "Dating, de",
   "parameters": {
    "find": "c. ",
    "replace_with": "um "
   }
  },
  {
   "id": "maker_de",
   "type": "text/template",
   "label": "Maker line, de",
   "parameters": {
    "template": "[maker] · [dating]",
    "placeholders": [
     {
      "name": "maker",
      "inputPort": "maker"
     },
     {
      "name": "dating",
      "inputPort": "dating"
     }
    ]
   }
  },
  {
   "id": "height_de",
   "type": "text/format",
   "label": "Height, de",
   "parameters": {
    "format": "number",
    "locale": "de-DE"
   }
  },
  {
   "id": "width_de",
   "type": "text/format",
   "label": "Width, de",
   "parameters": {
    "format": "number",
    "locale": "de-DE"
   }
  },
  {
   "id": "size_de",
   "type": "text/template",
   "label": "Size, de",
   "parameters": {
    "template": "[height] × [width] cm",
    "placeholders": [
     {
      "name": "height",
      "inputPort": "height"
     },
     {
      "name": "width",
      "inputPort": "width"
     }
    ]
   }
  },
  {
   "id": "price_de",
   "type": "text/format",
   "label": "Price, de",
   "parameters": {
    "format": "currency",
    "locale": "de-DE",
    "currency": "EUR",
    "currency_display": "symbol",
    "decimals": 0
   }
  },
  {
   "id": "lot_de",
   "type": "text/template",
   "label": "Lot label, de",
   "parameters": {
    "template": "Los [lot]",
    "placeholders": [
     {
      "name": "lot",
      "inputPort": "lot"
     }
    ]
   }
  },
  {
   "id": "lots_de",
   "type": "aggregate/json",
   "label": "The lots, de",
   "parameters": {
    "emptyBehavior": "fail",
    "jsonAggregateConfig": {
     "prettyPrint": true,
     "outputName": "lots-de",
     "columns": [
      {
       "name": "lot_label",
       "inputPort": "lot_label",
       "type": "text"
      },
      {
       "name": "photo",
       "inputPort": "photo",
       "type": "image"
      },
      {
       "name": "title",
       "inputPort": "title",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "maker_line",
       "inputPort": "maker_line",
       "type": "text"
      },
      {
       "name": "size",
       "inputPort": "size",
       "type": "text"
      },
      {
       "name": "text",
       "inputPort": "text",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "price",
       "inputPort": "price",
       "type": "text"
      }
     ]
    }
   }
  },
  {
   "id": "words_de",
   "type": "utility/extract",
   "label": "The catalogue's words, de",
   "parameters": {
    "path": "de",
    "expected_type": "json",
    "on_missing": "fail"
   }
  },
  {
   "id": "render_de",
   "type": "design/template_render",
   "label": "Lay out the catalogue, de",
   "parameters": {
    "template_id": "__TEMPLATE_ID__",
    "template_revision": "__TEMPLATE_REVISION__",
    "output": "both",
    "page_selection": "all",
    "missing_policy": "fail_required",
    "overflow_policy": "template",
    "max_repeat": 24
   }
  },
  {
   "id": "website",
   "type": "aggregate/csv",
   "label": "Texts for the website",
   "parameters": {
    "csvAggregateConfig": {
     "delimiter": ",",
     "quoteValues": true,
     "includeHeader": true,
     "encoding": "utf-8",
     "outputName": "website-texts",
     "columns": [
      {
       "name": "lot",
       "inputPort": "lot",
       "type": "number"
      },
      {
       "name": "maker",
       "inputPort": "maker",
       "type": "text"
      },
      {
       "name": "dating",
       "inputPort": "dating",
       "type": "text"
      },
      {
       "name": "price_eur",
       "inputPort": "price",
       "type": "number"
      },
      {
       "name": "title_it",
       "inputPort": "title_it",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "text_it",
       "inputPort": "text_it",
       "type": "text"
      },
      {
       "name": "title_en",
       "inputPort": "title_en",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "text_en",
       "inputPort": "text_en",
       "type": "text"
      },
      {
       "name": "title_de",
       "inputPort": "title_de",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "text_de",
       "inputPort": "text_de",
       "type": "text"
      }
     ]
    }
   }
  },
  {
   "id": "held",
   "type": "aggregate/json",
   "label": "Photos to check",
   "parameters": {
    "emptyBehavior": "empty",
    "jsonAggregateConfig": {
     "prettyPrint": true,
     "outputName": "photos-to-check",
     "columns": [
      {
       "name": "lot",
       "inputPort": "lot",
       "type": "number"
      },
      {
       "name": "object",
       "inputPort": "object",
       "type": "text",
       "whenAbsent": "skip_row"
      },
      {
       "name": "expected",
       "inputPort": "expected",
       "type": "text"
      },
      {
       "name": "photo_shows",
       "inputPort": "photo_shows",
       "type": "text"
      }
     ]
    }
   }
  },
  {
   "id": "o_pdf_it",
   "type": "output/pdf",
   "label": "Catalogue, it",
   "parameters": {
    "output_name": "catalogue_it"
   }
  },
  {
   "id": "o_pdf_en",
   "type": "output/pdf",
   "label": "Catalogue, en",
   "parameters": {
    "output_name": "catalogue_en"
   }
  },
  {
   "id": "o_pdf_de",
   "type": "output/pdf",
   "label": "Catalogue, de",
   "parameters": {
    "output_name": "catalogue_de"
   }
  },
  {
   "id": "o_cover",
   "type": "output/image",
   "label": "Cover, en",
   "parameters": {
    "output_name": "cover_en"
   }
  },
  {
   "id": "o_website",
   "type": "output/csv",
   "label": "Texts for the website",
   "parameters": {
    "output_name": "website_texts"
   }
  },
  {
   "id": "o_held",
   "type": "output/json",
   "label": "Photos to check",
   "parameters": {
    "output_name": "photos_to_check"
   }
  },
  {
   "id": "o_lots_en",
   "type": "output/json",
   "label": "The lots, en",
   "parameters": {
    "output_name": "lots_en"
   }
  },
  {
   "id": "o_layout_de",
   "type": "output/json",
   "label": "Layout report, de",
   "parameters": {
    "output_name": "layout_report_de"
   }
  }
 ],
 "connections": [
  {
   "from_node": "lots",
   "from_output": "json",
   "to_node": "each",
   "to_input": "json"
  },
  {
   "from_node": "each",
   "from_output": "photo",
   "to_node": "look",
   "to_input": "images_0"
  },
  {
   "from_node": "look",
   "from_output": "json",
   "to_node": "look_check",
   "to_input": "document"
  },
  {
   "from_node": "look_check",
   "from_output": "normalized_json",
   "to_node": "seen",
   "to_input": "json"
  },
  {
   "from_node": "seen",
   "from_output": "value",
   "to_node": "same",
   "to_input": "a"
  },
  {
   "from_node": "each",
   "from_output": "kind",
   "to_node": "same",
   "to_input": "b"
  },
  {
   "from_node": "look_check",
   "from_output": "normalized_json",
   "to_node": "photo_text",
   "to_input": "value"
  },
  {
   "from_node": "each",
   "from_output": "object",
   "to_node": "brief",
   "to_input": "object"
  },
  {
   "from_node": "each",
   "from_output": "maker",
   "to_node": "brief",
   "to_input": "maker"
  },
  {
   "from_node": "each",
   "from_output": "place",
   "to_node": "brief",
   "to_input": "place"
  },
  {
   "from_node": "each",
   "from_output": "material",
   "to_node": "brief",
   "to_input": "material"
  },
  {
   "from_node": "each",
   "from_output": "notes",
   "to_node": "brief",
   "to_input": "notes"
  },
  {
   "from_node": "photo_text",
   "from_output": "text",
   "to_node": "brief",
   "to_input": "photo"
  },
  {
   "from_node": "same",
   "from_output": "result",
   "to_node": "matching",
   "to_input": "condition"
  },
  {
   "from_node": "brief",
   "from_output": "result",
   "to_node": "matching",
   "to_input": "value"
  },
  {
   "from_node": "same",
   "from_output": "result",
   "to_node": "not_matching",
   "to_input": "condition"
  },
  {
   "from_node": "each",
   "from_output": "object",
   "to_node": "not_matching",
   "to_input": "value"
  },
  {
   "from_node": "matching",
   "from_output": "value",
   "to_node": "write",
   "to_input": "prompt"
  },
  {
   "from_node": "write",
   "from_output": "json",
   "to_node": "write_check",
   "to_input": "document"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "title_it",
   "to_input": "json"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "title_en",
   "to_input": "json"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "title_de",
   "to_input": "json"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "text_it",
   "to_input": "json"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "text_en",
   "to_input": "json"
  },
  {
   "from_node": "write_check",
   "from_output": "normalized_json",
   "to_node": "text_de",
   "to_input": "json"
  },
  {
   "from_node": "each",
   "from_output": "lot",
   "to_node": "lot_text",
   "to_input": "value"
  },
  {
   "from_node": "each",
   "from_output": "dating",
   "to_node": "dating_it",
   "to_input": "text"
  },
  {
   "from_node": "each",
   "from_output": "maker",
   "to_node": "maker_it",
   "to_input": "maker"
  },
  {
   "from_node": "dating_it",
   "from_output": "result",
   "to_node": "maker_it",
   "to_input": "dating"
  },
  {
   "from_node": "each",
   "from_output": "height",
   "to_node": "height_it",
   "to_input": "value"
  },
  {
   "from_node": "each",
   "from_output": "width",
   "to_node": "width_it",
   "to_input": "value"
  },
  {
   "from_node": "height_it",
   "from_output": "text",
   "to_node": "size_it",
   "to_input": "height"
  },
  {
   "from_node": "width_it",
   "from_output": "text",
   "to_node": "size_it",
   "to_input": "width"
  },
  {
   "from_node": "each",
   "from_output": "price",
   "to_node": "price_it",
   "to_input": "value"
  },
  {
   "from_node": "lot_text",
   "from_output": "text",
   "to_node": "lot_it",
   "to_input": "lot"
  },
  {
   "from_node": "lot_it",
   "from_output": "result",
   "to_node": "lots_it",
   "to_input": "lot_label"
  },
  {
   "from_node": "each",
   "from_output": "photo",
   "to_node": "lots_it",
   "to_input": "photo"
  },
  {
   "from_node": "title_it",
   "from_output": "value",
   "to_node": "lots_it",
   "to_input": "title"
  },
  {
   "from_node": "maker_it",
   "from_output": "result",
   "to_node": "lots_it",
   "to_input": "maker_line"
  },
  {
   "from_node": "size_it",
   "from_output": "result",
   "to_node": "lots_it",
   "to_input": "size"
  },
  {
   "from_node": "text_it",
   "from_output": "value",
   "to_node": "lots_it",
   "to_input": "text"
  },
  {
   "from_node": "price_it",
   "from_output": "text",
   "to_node": "lots_it",
   "to_input": "price"
  },
  {
   "from_node": "words",
   "from_output": "json",
   "to_node": "words_it",
   "to_input": "json"
  },
  {
   "from_node": "words_it",
   "from_output": "value",
   "to_node": "render_it",
   "to_input": "data_0"
  },
  {
   "from_node": "lots_it",
   "from_output": "result",
   "to_node": "render_it",
   "to_input": "lots"
  },
  {
   "from_node": "each",
   "from_output": "maker",
   "to_node": "maker_en",
   "to_input": "maker"
  },
  {
   "from_node": "each",
   "from_output": "dating",
   "to_node": "maker_en",
   "to_input": "dating"
  },
  {
   "from_node": "each",
   "from_output": "height",
   "to_node": "height_en",
   "to_input": "value"
  },
  {
   "from_node": "each",
   "from_output": "width",
   "to_node": "width_en",
   "to_input": "value"
  },
  {
   "from_node": "height_en",
   "from_output": "text",
   "to_node": "size_en",
   "to_input": "height"
  },
  {
   "from_node": "width_en",
   "from_output": "text",
   "to_node": "size_en",
   "to_input": "width"
  },
  {
   "from_node": "each",
   "from_output": "price",
   "to_node": "price_en",
   "to_input": "value"
  },
  {
   "from_node": "lot_text",
   "from_output": "text",
   "to_node": "lot_en",
   "to_input": "lot"
  },
  {
   "from_node": "lot_en",
   "from_output": "result",
   "to_node": "lots_en",
   "to_input": "lot_label"
  },
  {
   "from_node": "each",
   "from_output": "photo",
   "to_node": "lots_en",
   "to_input": "photo"
  },
  {
   "from_node": "title_en",
   "from_output": "value",
   "to_node": "lots_en",
   "to_input": "title"
  },
  {
   "from_node": "maker_en",
   "from_output": "result",
   "to_node": "lots_en",
   "to_input": "maker_line"
  },
  {
   "from_node": "size_en",
   "from_output": "result",
   "to_node": "lots_en",
   "to_input": "size"
  },
  {
   "from_node": "text_en",
   "from_output": "value",
   "to_node": "lots_en",
   "to_input": "text"
  },
  {
   "from_node": "price_en",
   "from_output": "text",
   "to_node": "lots_en",
   "to_input": "price"
  },
  {
   "from_node": "words",
   "from_output": "json",
   "to_node": "words_en",
   "to_input": "json"
  },
  {
   "from_node": "words_en",
   "from_output": "value",
   "to_node": "render_en",
   "to_input": "data_0"
  },
  {
   "from_node": "lots_en",
   "from_output": "result",
   "to_node": "render_en",
   "to_input": "lots"
  },
  {
   "from_node": "each",
   "from_output": "dating",
   "to_node": "dating_de",
   "to_input": "text"
  },
  {
   "from_node": "each",
   "from_output": "maker",
   "to_node": "maker_de",
   "to_input": "maker"
  },
  {
   "from_node": "dating_de",
   "from_output": "result",
   "to_node": "maker_de",
   "to_input": "dating"
  },
  {
   "from_node": "each",
   "from_output": "height",
   "to_node": "height_de",
   "to_input": "value"
  },
  {
   "from_node": "each",
   "from_output": "width",
   "to_node": "width_de",
   "to_input": "value"
  },
  {
   "from_node": "height_de",
   "from_output": "text",
   "to_node": "size_de",
   "to_input": "height"
  },
  {
   "from_node": "width_de",
   "from_output": "text",
   "to_node": "size_de",
   "to_input": "width"
  },
  {
   "from_node": "each",
   "from_output": "price",
   "to_node": "price_de",
   "to_input": "value"
  },
  {
   "from_node": "lot_text",
   "from_output": "text",
   "to_node": "lot_de",
   "to_input": "lot"
  },
  {
   "from_node": "lot_de",
   "from_output": "result",
   "to_node": "lots_de",
   "to_input": "lot_label"
  },
  {
   "from_node": "each",
   "from_output": "photo",
   "to_node": "lots_de",
   "to_input": "photo"
  },
  {
   "from_node": "title_de",
   "from_output": "value",
   "to_node": "lots_de",
   "to_input": "title"
  },
  {
   "from_node": "maker_de",
   "from_output": "result",
   "to_node": "lots_de",
   "to_input": "maker_line"
  },
  {
   "from_node": "size_de",
   "from_output": "result",
   "to_node": "lots_de",
   "to_input": "size"
  },
  {
   "from_node": "text_de",
   "from_output": "value",
   "to_node": "lots_de",
   "to_input": "text"
  },
  {
   "from_node": "price_de",
   "from_output": "text",
   "to_node": "lots_de",
   "to_input": "price"
  },
  {
   "from_node": "words",
   "from_output": "json",
   "to_node": "words_de",
   "to_input": "json"
  },
  {
   "from_node": "words_de",
   "from_output": "value",
   "to_node": "render_de",
   "to_input": "data_0"
  },
  {
   "from_node": "lots_de",
   "from_output": "result",
   "to_node": "render_de",
   "to_input": "lots"
  },
  {
   "from_node": "each",
   "from_output": "lot",
   "to_node": "website",
   "to_input": "lot"
  },
  {
   "from_node": "each",
   "from_output": "maker",
   "to_node": "website",
   "to_input": "maker"
  },
  {
   "from_node": "each",
   "from_output": "dating",
   "to_node": "website",
   "to_input": "dating"
  },
  {
   "from_node": "each",
   "from_output": "price",
   "to_node": "website",
   "to_input": "price"
  },
  {
   "from_node": "title_it",
   "from_output": "value",
   "to_node": "website",
   "to_input": "title_it"
  },
  {
   "from_node": "text_it",
   "from_output": "value",
   "to_node": "website",
   "to_input": "text_it"
  },
  {
   "from_node": "title_en",
   "from_output": "value",
   "to_node": "website",
   "to_input": "title_en"
  },
  {
   "from_node": "text_en",
   "from_output": "value",
   "to_node": "website",
   "to_input": "text_en"
  },
  {
   "from_node": "title_de",
   "from_output": "value",
   "to_node": "website",
   "to_input": "title_de"
  },
  {
   "from_node": "text_de",
   "from_output": "value",
   "to_node": "website",
   "to_input": "text_de"
  },
  {
   "from_node": "each",
   "from_output": "lot",
   "to_node": "held",
   "to_input": "lot"
  },
  {
   "from_node": "not_matching",
   "from_output": "value",
   "to_node": "held",
   "to_input": "object"
  },
  {
   "from_node": "each",
   "from_output": "kind",
   "to_node": "held",
   "to_input": "expected"
  },
  {
   "from_node": "seen",
   "from_output": "value",
   "to_node": "held",
   "to_input": "photo_shows"
  },
  {
   "from_node": "render_it",
   "from_output": "pdf",
   "to_node": "o_pdf_it",
   "to_input": "pdf"
  },
  {
   "from_node": "render_en",
   "from_output": "pdf",
   "to_node": "o_pdf_en",
   "to_input": "pdf"
  },
  {
   "from_node": "render_de",
   "from_output": "pdf",
   "to_node": "o_pdf_de",
   "to_input": "pdf"
  },
  {
   "from_node": "render_en",
   "from_output": "image",
   "to_node": "o_cover",
   "to_input": "image"
  },
  {
   "from_node": "website",
   "from_output": "result",
   "to_node": "o_website",
   "to_input": "csv"
  },
  {
   "from_node": "held",
   "from_output": "result",
   "to_node": "o_held",
   "to_input": "json"
  },
  {
   "from_node": "lots_en",
   "from_output": "result",
   "to_node": "o_lots_en",
   "to_input": "json"
  },
  {
   "from_node": "render_de",
   "from_output": "layout_report",
   "to_node": "o_layout_de",
   "to_input": "json"
  }
 ]
}