{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "ST1JSON Schema",
    "type": "object",
    "properties": {
        "category": {
            "type": "object",
            "required": ["name", "description", "keywords", "subcategories"],
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the main meme category (e.g. 'Work Life')"
                },
                "description": {
                    "type": "string",
                    "description": "A short overview of the category's theme or tone"
                },
                "keywords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "General tags to help filter or search within the category"
                },
                "subcategories": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": ["name", "description", "meme_angles", "keywords", "sample_captions"],
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "Subcategory title (e.g. 'Corporate')"
                            },
                            "description": {
                                "type": "string",
                                "description": "Explains the vibe, setting, or memeable themes of the subcategory"
                            },
                            "meme_angles": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "description": "Typical perspectives or scenes for memes in this subcategory"
                            },
                            "keywords": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "description": "Search tags or filters specific to the subcategory"
                            },
                            "sample_captions": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "description": "Sample captions (POV, one-liners, etc.) for seeding meme generation"
                            }
                        }
                    }
                }
            }
        }
    },
    "required": ["category"]
}
