app.bettersight.io/backend/industries/adventure_travel/schema.py

45 lines
2.3 KiB
Python

# JSON extraction schema for the adventure travel vertical, expressed
# as data rather than embedded in the prompt template string. This
# mirrors the JSON shape at the end of prompt.build_prompt()'s output
# and exists as the attachment point for CLAUDE.md §28's Version 2
# custom extraction fields (build_json_schema() appends tenant custom
# fields to whichever of these two dicts applies) — that build_json_schema()
# function itself is out of scope until Discover/Intelligence tier work
# begins; this file only establishes the base schema it would extend.
STANDARD_SCHEMA = {
'company': 'text — competitor name',
'link': 'text — page URL',
'tripName': 'text — exact trip name from the page',
'tripCode': 'text — trip code if shown, otherwise null',
'serviceLevel': 'text — accommodation service level',
'groupSize': 'integer — max group size',
'duration': 'integer — number of days',
'meals': 'integer — total included meals',
'startLocation': 'text — departure city',
'endLocation': 'text — end city',
'departures': 'integer — approximate departures per year, or null',
'seasonality': 'text — price bands by season',
'startDays': 'text — departure days of week',
'targetAudience': 'text — target traveller',
'hotels': 'text — hotel types or properties',
'activities': 'text — key included activities',
'relevancy': 'integer — relevancy score 1-5',
'majorityPrice': 'price — standard adult USD price or null',
'priceLow': 'price — lowest standard USD price or null',
'priceHigh': 'price — highest standard USD price or null',
'comments': 'text — analysis: differences, strengths, weaknesses, pricing position',
'dateUsed': 'text — specific departure date used for majority price',
'audPrice': 'price — standard AUD price or null',
'cadPrice': 'price — standard CAD price or null',
'eurPrice': 'price — standard EUR price or null',
'gbpPrice': 'price — standard GBP price or null',
}
NGS_SCHEMA = {
**STANDARD_SCHEMA,
'exclusiveAccess': 'text — exclusive access or special unique inclusions',
'groupLeader': 'text — group leader and/or local expert description',
'sustainability': 'text — sustainability inclusions or null',
}