{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://xeolite.app/schemas/research-pack.v1.json","title":"Xeolite research pack v1","type":"object","required":["schemaVersion","ruleset","target","crawlerDraft","normalizedRecords","analysisPrompt","status","warnings"],"properties":{"schemaVersion":{"const":"xeolite.research-pack.v1"},"ruleset":{"const":"xeolite-compiler-2026-09-04"},"target":{"type":"object","required":["competitor","url"],"properties":{"competitor":{"type":"string","minLength":2,"maxLength":100},"url":{"type":"string","format":"uri","pattern":"^[hH][tT][tT][pP][sS]?://","maxLength":500}},"additionalProperties":false},"crawlerDraft":{"type":"object","required":["startUrls","maxPages","respectRobotsTxt","note"],"properties":{"startUrls":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^[hH][tT][tT][pP][sS]?://"}},"additionalProperties":false}},"maxPages":{"const":20},"respectRobotsTxt":{"const":true},"note":{"type":"string"}},"additionalProperties":false},"normalizedRecords":{"type":"array","maxItems":50,"items":{"type":"object","maxProperties":16,"propertyNames":{"maxLength":80},"additionalProperties":{"type":["string","number","boolean","null"]}}},"analysisPrompt":{"type":["string","null"]},"status":{"enum":["CONFIG_READY","PROMPT_READY"]},"warnings":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"string"}}},"allOf":[{"if":{"properties":{"status":{"const":"CONFIG_READY"}}},"then":{"properties":{"normalizedRecords":{"maxItems":0},"analysisPrompt":{"type":"null"}}}},{"if":{"properties":{"status":{"const":"PROMPT_READY"}}},"then":{"properties":{"normalizedRecords":{"minItems":1},"analysisPrompt":{"type":"string","minLength":1}}}}],"additionalProperties":false}