Bowmark AIdocs

Teneo Hospitality Group

Teneo Hospitality Group's own member-hotel directory — search 350+ independent and small-branded meeting hotels by destination, collection and…

Teneo Hospitality Group's own member-hotel directory — search 350+ independent and small-branded meeting hotels by destination, collection and meeting-space/room-block size with real specs, then read one hotel's full meeting-space stat block and the RFP hand-off to actually request a proposal.

Domain: teneohg.com

Also known as: Teneo Hospitality Group, Teneo, TeneoHG, teneohg.com

Call it directly

bowmark.providers.teneohg.searchMemberHotels(args?: { state?: string; country?: string; collection?: string; minMeetingSpaceSqFt?: number; minSleepingRooms?: number; query?: string; limit?: number; maxPagesToScan?: number }): Promise<TeneohgSearchResult>
bowmark.providers.teneohg.getMemberHotel(slug: string): Promise<TeneohgHotelDetail>

Functions

FunctionWhat it does
searchMemberHotelsSearches Teneo's own member-hotel directory (350+ hotels) by US state (2-letter code, e.g. "AZ"), country, collection tag substring (e.g. "luxury", "resorts"), minimum total meeting-space…
getMemberHotelReads one member hotel's own profile page: every stat its meeting-space and sleeping-room widgets carry (total/largest/second-largest meeting room space, outdoor space, meeting-room count,…

Types

// Teneo's OWN shapes — not a capability contract.

interface TeneohgHotelSummary {
  slug: string;
  name: string;
  city: string | null;
  region: string | null;              // US state code, e.g. "AZ", or a country name
  profileUrl: string;
  totalMeetingSpaceSqFt: number | null;
  largestMeetingSpaceSqFt: number | null;
  sleepingRooms: number | null;
  collections: string[];              // e.g. ["Luxury", "Resorts"]
}

interface TeneohgSearchResult { hotels: TeneohgHotelSummary[]; totalMatched: number; totalScanned: number; pagesScanned: number }

type TeneohgHotelStats = Record<string, string>;  // e.g. { "Meeting Room Space": "156,000 Sq. Ft.", "Number of Sleeping Rooms": "517" }

interface TeneohgRfpHandoff { url: string; hotelsOfInterestValue: string }

interface TeneohgHotelDetail {
  slug: string;
  name: string;
  city: string | null;
  region: string | null;
  profileUrl: string;
  stats: TeneohgHotelStats;
  rfpHandoff: TeneohgRfpHandoff;      // the public RFP form + what to type into its "Hotels of Interest" field
}

Examples

// The query ANGLE found ChatGPT unable to actually run: search + shortlist real hotels.
const { hotels, totalMatched } = await bowmark.providers.teneohg.searchMemberHotels({
  state: "AZ",
  minSleepingRooms: 150,
});
return { totalMatched, top: hotels.slice(0, 5).map((h) => ({ name: h.name, city: h.city, rooms: h.sleepingRooms })) };
// Pull the real meeting-space specs and the RFP hand-off for one shortlisted hotel —
// where ChatGPT alone only narrates the RFP form's existence and never files anything.
const detail = await bowmark.providers.teneohg.getMemberHotel("fairmont-scottsdale-princess");
return { stats: detail.stats, submitAt: detail.rfpHandoff.url, hotelsOfInterest: detail.rfpHandoff.hotelsOfInterestValue };