Skip to main content
By default, CatchAll generates response schemas dynamically—field names can change between jobs, even with identical inputs. This guide shows how to build integrations that handle this variability and how to define custom enrichments to ensure consistent field names.

Guaranteed vs variable fields

Every response includes record_id, record_title, and citations. The enrichment object always contains enrichment_confidence, added by the system regardless of the enrichments generated or defined by you. All other field names in enrichment are variable with automatic generation, or consistent when you define custom enrichments.

Why schemas vary

Submit the same query twice, get different field names:
Why this happens:
  • LLMs generate extractors dynamically for each job
  • Different keywords, validators, and extractors are created
  • Field names are chosen semantically to match content
This is expected behavior, not a bug.

Get enrichment suggestions

Use the initialize endpoint to see suggested enrichments for your query:
Suggested enrichments:
These suggestions help you understand possible enrichments before submitting. You can use them as-is, modify them, add more, or ignore them and let the system generate fresh enrichments when you submit the job. For more information about enrichment types, see Create job > enrichments > type.

Define custom enrichments

Submit enrichments in your request for consistent field names:
Every job returns the same field names:
Fields of type company (like subject_company in the example above) return a structured object with confidence scores for entity identification and domain resolution. To learn more, see the Company enrichment data model.

Working with dynamic schemas

If you don’t define custom enrichments, field names vary between jobs. Handle this with pattern matching:

See also