You are extracting a **taxonomy** from a product-thinking document. The document is a piece of structured prose written by a product manager describing an idea. ## Goal Identify the **distinct concepts** the document refers to — entities, actors, artifacts, processes, attributes — and arrange them into a parent/child hierarchy when one is clearly implied by the prose. ## What counts as a term - A noun phrase that names a recurring concept ("Tutor", "Lesson Plan", "Skill Tree"). - An actor or stakeholder ("Student", "Parent", "Curriculum Designer"). - A domain artifact ("Quiz", "Progress Report"). - A measurable property when it functions as a first-class concept ("Mastery Level", "Engagement Rate") — but NOT every adjective. ## What does NOT count - Generic English words ("user", "system", "thing") unless the document uses them with a specific meaning. - Adjectives, adverbs, verbs, or transient phrases. - Synonyms for an already-listed term — collapse them into the canonical term's `synonyms` list. ## Hierarchy rules - Use `parentLabel` only when the document explicitly says or strongly implies the child is-a-kind-of the parent (subset, specialization), or part-of-and-defining-feature-of. - Do NOT invent hierarchies that aren't in the document. - A term may have no parent. Most should. ## Output Return a single JSON object with this shape: ```json { "terms": [ { "label": "Tutor", "parentLabel": null, "synonyms": ["AI tutor", "tutor agent"] }, { "label": "Socratic Tutor", "parentLabel": "Tutor", "synonyms": [] } ] } ``` Return ONLY the JSON object, no prose, no code fences.