{
  "nodes": [
    {
      "ID": "guide",
      "name": "Start here",
      "type": "Guide",
      "properties": {},
      "description": "This is a fill-in template for forum threads on Reddit, Discourse or any other forum: the community, each thread and its comments, the members who write them, the flairs and tags, the resources people link to and the answers worth keeping. The nodes around this one are samples, one of each type. Edit them, or replace them with your own.\n\nHow to add your own node:\n1) Right-click the empty canvas where the node should go and choose Create node here. Shortcut: Cmd/Ctrl-click the empty canvas.\n2) In Add new node, enter a unique ID, a Name and a Description, and pick a Type from the list below. The ID cannot be changed later.\n3) Fill in the fields that appear for that type, then confirm. Drag the new node next to the nodes it belongs with.\n4) To link two nodes, Cmd/Ctrl-click the first node, then the second. In Add new link, enter a short name such as \"is about\" in Name1. Add Name2 if it reads differently from the other side, such as \"is covered in\". Set Direction 0 (no arrow), like the sample links, and confirm.\n5) Click Save in the top toolbar after each change and keep the address it shows. A reload loses anything not saved.\n\nTypes in this template:\n- Community: the subreddit, forum category or group where threads are posted.\n- Thread: one thread, with its opening post in the description and its score and comment count.\n- Comment: a reply in a thread, to the opening post or to another comment.\n- Member: a person who posts threads or comments.\n- Flair / Tag: a flair or tag that sorts threads by subject or purpose.\n- Linked resource: a web page, video or document a thread or comment points to.\n- Answer / Takeaway: the accepted answer or the lesson worth keeping from a thread, in your own words.\n\nEvery date (YYYY-MM-DD) and every number needs a value; text and list fields may stay empty. Score is the net vote or like count and is approximate on Reddit; Score, Comments and Members are counted on the As of date. Tick Solved when the thread has an accepted answer and From original poster when the comment comes from the person who started the thread. For a Flair / Tag, Kind is Post flair, User flair or Tag; for an Answer / Takeaway, Kind is Accepted answer, Top answer, Summary or Takeaway. Link a comment to the comment it replies to.\n\nDelete a sample only once one of your own nodes has its type: a type that no node uses is dropped at Save.",
      "size": 3,
      "position": {
        "x": 0,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "community-1",
      "name": "Home Espresso",
      "type": "Community",
      "properties": {
        "URL": "https://forum.example/c/home-espresso",
        "Platform": "Discourse",
        "Members": 18400,
        "As of": "2026-10-20"
      },
      "description": "A forum category for people who make espresso at home, from first-time owners of a small machine to hobbyists who modify their grinders. Most threads ask for help with a shot that tastes wrong, compare equipment or share a recipe, and long-time members are quick to answer with the same few questions about grind, dose and time.",
      "size": 2.4,
      "position": {
        "x": 10,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "thread-1",
      "name": "Why does my espresso taste sour even at 30 seconds?",
      "type": "Thread",
      "properties": {
        "URL": "https://forum.example/t/sour-espresso-at-30-seconds/48211",
        "Created": "2026-09-18",
        "Score": 64,
        "Comments": 23,
        "Solved": true,
        "As of": "2026-10-20"
      },
      "description": "I pull 18 grams in and 36 grams out in about 30 seconds, which every guide says is right, but the shots still taste sharp and sour. The beans are a light roast from a local roaster, roasted ten days ago, and the machine is a single boiler that I switch on twenty minutes before brewing. What else could be wrong if the time is already where it should be?",
      "size": 2,
      "position": {
        "x": 27,
        "y": 0,
        "z": 0
      }
    },
    {
      "ID": "comment-1",
      "name": "Light roasts need a hotter and longer shot",
      "type": "Comment",
      "properties": {
        "URL": "https://forum.example/t/sour-espresso-at-30-seconds/48211/6",
        "Created": "2026-09-18",
        "Score": 41,
        "From original poster": false,
        "As of": "2026-10-20"
      },
      "description": "The time on its own does not tell you much with a light roast. These beans are dense and give up their sweetness slowly, so at a normal temperature and a 1:2 ratio you only get the sour acids that come out first. Raise the brew temperature by two or three degrees and try a longer ratio, around 1:2.5, before you change the grind.",
      "size": 1.5,
      "position": {
        "x": 31.5,
        "y": 7.794,
        "z": 0
      }
    },
    {
      "ID": "member-1",
      "name": "Lucia Ferreira",
      "type": "Member",
      "properties": {
        "URL": "https://forum.example/u/lucia_brews",
        "Handle": "@lucia_brews"
      },
      "description": "Lucia Ferreira is a home barista who bought her first espresso machine last spring and writes detailed threads about what she tries, with her doses, times and tasting notes. She usually reports back on which advice worked, which makes her threads useful to others with the same problem.",
      "size": 1.5,
      "position": {
        "x": 21.215,
        "y": 6.894,
        "z": 0
      }
    },
    {
      "ID": "flair-1",
      "name": "Troubleshooting",
      "type": "Flair / Tag",
      "properties": {
        "Kind": "Tag"
      },
      "description": "The tag for threads that describe a problem and ask for help fixing it, as opposed to equipment advice, recipes or show-and-tell. Members filter by it to find unanswered questions, and a troubleshooting thread is expected to list the beans, dose, yield, time and machine used.",
      "size": 1.5,
      "position": {
        "x": 31.5,
        "y": -7.794,
        "z": 0
      }
    },
    {
      "ID": "resource-1",
      "name": "Espresso extraction chart",
      "type": "Linked resource",
      "properties": {
        "URL": "https://www.example.org/espresso-extraction-chart",
        "Domain": "example.org"
      },
      "description": "A one-page chart that maps how a shot tastes to what to change: sour and thin points towards under-extraction, bitter and dry towards over-extraction, with the usual fixes for each, such as grind, ratio, temperature and time. It is the resource members post most often in reply to taste questions.",
      "size": 1.5,
      "position": {
        "x": 35.75,
        "y": 15.155,
        "z": 0
      }
    },
    {
      "ID": "answer-1",
      "name": "Raise the temperature before grinding finer",
      "type": "Answer / Takeaway",
      "properties": {
        "Kind": "Accepted answer"
      },
      "description": "A sour shot that already runs in the usual time is under-extracted, and with a light roast the first fix is a hotter brew and a longer ratio, not a finer grind. Grinding finer alone slows the shot down and can make it bitter before the sourness goes. The original poster reported that two degrees more and a 1:2.5 ratio removed the sourness the same day.",
      "size": [6, 1.4],
      "position": {
        "x": 36.848,
        "y": 1.736,
        "z": 0
      }
    }
  ],
  "links": [
    {
      "node1": "guide",
      "node2": "community-1",
      "name1": "is explained by",
      "name2": "explains",
      "direction": 0
    },
    {
      "node1": "community-1",
      "node2": "thread-1",
      "name1": "is posted in",
      "name2": "contains",
      "direction": 0
    },
    {
      "node1": "member-1",
      "node2": "thread-1",
      "name1": "is started by",
      "name2": "starts",
      "direction": 0
    },
    {
      "node1": "thread-1",
      "node2": "comment-1",
      "name1": "replies to",
      "name2": "has reply",
      "direction": 0
    },
    {
      "node1": "flair-1",
      "node2": "thread-1",
      "name1": "is tagged",
      "name2": "tags",
      "direction": 0
    },
    {
      "node1": "resource-1",
      "node2": "comment-1",
      "name1": "links to",
      "name2": "is linked from",
      "direction": 0
    },
    {
      "node1": "comment-1",
      "node2": "answer-1",
      "name1": "is drawn from",
      "name2": "gives",
      "direction": 0
    },
    {
      "node1": "thread-1",
      "node2": "answer-1",
      "name1": "answers",
      "name2": "is answered by",
      "direction": 0
    }
  ],
  "visuals": [
    {
      "nodeType": "Guide",
      "shape": "star",
      "borderColor": "#e8684a"
    },
    {
      "nodeType": "Community",
      "shape": "circle",
      "borderColor": "#7262fd"
    },
    {
      "nodeType": "Thread",
      "shape": "hex",
      "borderColor": "#5b8ff9"
    },
    {
      "nodeType": "Comment",
      "shape": "hex[6]",
      "borderColor": "#65789b"
    },
    {
      "nodeType": "Member",
      "shape": "hex[7]",
      "borderColor": "#9661bc"
    },
    {
      "nodeType": "Flair / Tag",
      "shape": "hex[5]",
      "borderColor": "#61ddaa"
    },
    {
      "nodeType": "Linked resource",
      "shape": "hex[8]",
      "borderColor": "#f6903d"
    },
    {
      "nodeType": "Answer / Takeaway",
      "shape": "rectangle",
      "borderColor": "#f6bd16"
    }
  ],
  "dataTypes": {
    "URL": "string",
    "Platform": "typelist",
    "Members": "int",
    "As of": "datetime",
    "Created": "datetime",
    "Score": "int",
    "Comments": "int",
    "Solved": "bool",
    "From original poster": "bool",
    "Handle": "string",
    "Kind": "typelist",
    "Domain": "string"
  },
  "detailView": [
    {
      "nodeType": "*",
      "own": "*",
      "others": []
    }
  ]
}
