Domain layer — the canonical contract for a "person in focus" inside an
advertising creative, plus the analyze response that wraps it.
Single source of truth.PERSON_FIELDS drives the Zod schema in
this file, the Gemini responseSchema in "../adapters/gemini", and
the system instruction in "./prompt". Renaming a field is a one-line
change.
Domain layer — the canonical contract for a "person in focus" inside an advertising creative, plus the analyze response that wraps it.
Single source of truth. PERSON_FIELDS drives the Zod schema in this file, the Gemini
responseSchemain "../adapters/gemini", and the system instruction in "./prompt". Renaming a field is a one-line change.