Skip to content

Job Hospitality

job_hospitality — G6 Hospitality job agent.

Cluster: Job Agents | Type: component | MCP Tools: 26

Overview

Domain-specialist job agent for hospitality professionals in hotels, restaurants, and event venues. Manages bookings, handles guest requests, schedules staff rosters, coordinates facility inspections, processes guest feedback, and analyses occupancy and revenue metrics — all within G6's safety-bounded, audit-trailed JobAgentBlock framework.

When to use:

  • Automating booking management and resolving conflicts or overbooking scenarios
  • Handling structured guest requests and routing them to the appropriate department
  • Optimising staff rostering for peak periods using historical occupancy data
  • Analysing guest satisfaction scores and generating service improvement recommendations

Example:

from mvp.job_hospitality import JobHospitalityBlock, JobHospitalityInput

block = JobHospitalityBlock()
result = block.infer(JobHospitalityInput(
    task="Optimise the weekend staff roster for a 120-room hotel targeting 92% coverage during peak check-in hours",
    context={"hotel_id": "SYD-GRAND-01", "weekend": "2026-04-12", "avg_occupancy_pct": 88},
))
# result.ok → True; result.value → JobHospitalityOutput with result, artifacts

Works well with: job_framework, job_tourism, job_services

Launch Caveats

Fast, deterministic mode is the default

job_hospitality is tuned for launch-path MCP onboarding and design-partner pilots. Core booking, guest-service, rostering, inspection, feedback, occupancy, event, revenue, and standards-audit tools run locally and deterministically by default.

The top-level JobHospitalityBlock returns a concise human-readable result for non-technical users. Full structured MCP output is preserved in result.value.artifacts[0], including the raw payload, records, and metadata such as generated artifact IDs.

Unknown or generic prompts such as "hello" or "what can you do?" route to safe info / get_capabilities responses. They do not create bookings or mutate operational records.

Optional enrichment is intentionally opt-in. By default the component skips grounding, Experta, Bayesian, live search, and LLM-backed debate paths to avoid slow startup, unavailable-service failures, network dependency, and surprise API cost.

Enable richer advisory context only when the runtime is prepared for the extra latency and dependencies:

  • G6_JOB_DEEP_INTEGRATIONS=1 enables optional local grounding / Experta / Bayesian enrichment paths.
  • G6_JOB_LIVE_SEARCH=1 allows live web search for market or benchmark context.
  • G6_JOB_LIVE_LLM=1 allows live LLM-backed debate/enrichment and requires a configured healthy backend.

Treat enriched output as advisory support for hospitality operations. It is not a substitute for PMS/channel-manager verification, food-safety sign-off, legal/compliance review, or manager approval for real guest, staffing, pricing, safety, or revenue decisions.

Output Shape

Top-level calls are optimized for end users:

result = block.infer(JobHospitalityInput(
    task="analyze occupancy",
    parameters={
        "rooms_available": 100,
        "rooms_sold": 75,
        "room_revenue": 13500.0,
    },
))

print(result.value.result)
# [hospitality] analyze occupancy completed. revpar: 135; adr: 180; occupancy pct: 75; ...

full_payload = result.value.artifacts[0]["payload"]

Direct MCP calls still return MCPJobHospitalityOutput.result as the raw JSON string produced by the handler, with additional IDs and handler fields preserved in metadata.

Contract Alignment Notes

The live component decorators use domain_expert_review and track known failure modes forbidden_claims_scan, missing_context, no_grounding_provenance, and the hospitality-specific pms_reconciliation_gap.

Cross-surface wrappers must preserve completion_state, warning_card, evidence, request_id, task_id, and run_id. Legal completion_state values are exactly verified, qualified-draft, and blocked-escalated.

PMS-gated booking commits are distinct from advisory analytics. manage_booking requires PMS attestation before mutation. Advisory-sensitive analytics such as occupancy and revenue benchmarking may persist local analytics records while still requiring downstream human review.

Public API

JobHospitalityBlock(JobAgentBlock)

G6 Hospitality job agent - Tier 1 block with MCP delegation.

Field Type Default
name str 'job_hospitality'
sector SectorClassification field(default_factory=lambda: _SECTOR)
toolkit ToolkitSpec \| None field(default_factory=lambda: JOB_TOOLKITS.get('hospitality'))
mcp_module str 'mvp.job_hospitality.hospitality_mcp.server'
agentic_planner object \| None None
capabilities ClassVar[set[type]] {Extensible, HumanLearnable, Collaborative, ProblemSolvable, KnowledgeGrounded, Memorable, AgentCommunicable}

JobHospitalityInput(JobInput)

Input for the Hospitality job agent.

JobHospitalityOutput(JobOutput)

JobHospitalityMCPBlock(AIBlock[MCPJobHospitalityInput, MCPJobHospitalityOutput, dict])

26-op MCP block for the Hospitality job agent.

Field Type Default
name str 'job_hospitality_mcp'
state dict field(default_factory=dict)
db_path str ':memory:'
resource_bounds ResourceBounds field(default_factory=ResourceBounds)
usage ResourceUsage field(default_factory=ResourceUsage)

Methods:

infer(data: MCPJobHospitalityInput) -> Result[MCPJobHospitalityOutput]

MCPJobHospitalityInput(BaseModel)

Input to JobHospitalityMCPBlock - 26-op dispatch.

Field Type Default
op Literal['manage_booking', 'handle_guest_request', 'schedule_staff', 'inspect_facility', 'process_feedback', 'analyze_occupancy', 'evaluate_service', 'assess_satisfaction', 'benchmark_revenue', 'audit_standards', 'create_proposal', 'review_deliverable', 'delegate_task', 'report_status', 'request_feedback', 'store_artifact', 'retrieve_artifact', 'list_artifacts', 'search_artifacts', 'archive', 'plan_sprint', 'track_progress', 'reflect_on_outcome', 'list_patterns', 'get_capabilities', 'info'] required
task str ''
context dict[str, Any] Field(default_factory=dict)
parameters dict[str, Any] Field(default_factory=dict)
artifact_id str ''
query str ''

MCPJobHospitalityOutput(BaseModel)

Output from JobHospitalityMCPBlock.

Field Type Default
op str required
result str ''
artifacts list[dict[str, Any]] Field(default_factory=list)
records list[dict[str, Any]] Field(default_factory=list)
message str ''
count int 0
found bool False
metadata dict[str, Any] Field(default_factory=dict)
degraded bool False
degradation_reason str \| None None
completion_state Literal['verified', 'qualified-draft', 'blocked-escalated'] 'qualified-draft'
warning_card dict[str, Any] Field(default_factory=dict)
evidence dict[str, Any] Field(default_factory=dict)

HospitalityStore(JobStore)

SQLite store for the Hospitality job agent.

Constructor:

Parameter Type Default
db_path str ':memory:'

Methods:

save_reservation(guest_id: str = '', room_id: str = '', check_in: str = '', check_out: str = '', rate: float = 0, status: str = 'confirmed', channel: str = 'direct', guests: int = 1, special_requests: str = '') -> str

get_reservations(status: str = '') -> list[dict]

get_reservation(reservation_id: str) -> dict | None

save_guest(name: str = '', email: str = '', phone: str = '', loyalty_tier: str = 'standard', total_stays: int = 0, total_spend: float = 0, preferences: dict | None = None, notes: str = '') -> str

get_guests(loyalty_tier: str = '') -> list[dict]

save_revenue_record(date: str = '', department: str = 'rooms', revenue: float = 0, cost: float = 0, rooms_sold: int = 0, rooms_available: int = 0, occupancy_pct: float = 0, adr: float = 0, revpar: float = 0, notes: str = '') -> str

get_revenue_records(department: str = '') -> list[dict]

save_service_record(type_: str = '', description: str = '', guest_id: str = '', room_id: str = '', status: str = 'pending', priority: int = 3, assigned_to: str = '', rating: float = 0, notes: str = '') -> str

get_service_records(status: str = '') -> list[dict]

save_event(name: str = '', event_type: str = '', attendees: int = 0, room_sqft: float = 0, revenue: float = 0, cost: float = 0, profit: float = 0, event_date: str = '', status: str = 'planned', data: dict | None = None) -> str

get_events(status: str = '') -> list[dict]

save_staff_schedule(staff_id: str = '', staff_name: str = '', role: str = '', shift_date: str = '', shift_start: str = '', shift_end: str = '', hours: float = 0, overtime_hours: float = 0, status: str = 'scheduled') -> str

get_staff_schedules(role: str = '') -> list[dict]

save_compliance_audit(audit_type: str = '', compliant: bool = False, score: float = 0, total_checks: int = 0, failures: list[str] | None = None, data: dict | None = None) -> str

get_compliance_audits(audit_type: str = '') -> list[dict]

save_fb_record(category: str = '', revenue: float = 0, cogs: float = 0, labor_cost: float = 0, food_cost_pct: float = 0, pour_cost_pct: float = 0, data: dict | None = None, record_date: str = '') -> str

get_fb_records(category: str = '') -> list[dict]

save_sustainability_record(period: str = '', energy_kwh: float = 0, water_gallons: float = 0, waste_tons: float = 0, recycled_tons: float = 0, carbon_kg: float = 0, occupied_room_nights: int = 0, data: dict | None = None) -> str

get_sustainability_records(period: str = '') -> list[dict]

Functions

assemble_review_text(output: Any) -> str

Collect the reviewable free text from a JobHospitalityOutput (duck-typed).

assess_hospitality_output(output: Any, qa_block: Any | None = None, generate: Any | None = None) -> GroundedRunResult

Run grounded four-valued QA over a hospitality output.

MCP Tools

Operation Source
manage_booking hospitality_mcp
handle_guest_request hospitality_mcp
schedule_staff hospitality_mcp
inspect_facility hospitality_mcp
process_feedback hospitality_mcp
analyze_occupancy hospitality_mcp
evaluate_service hospitality_mcp
assess_satisfaction hospitality_mcp
benchmark_revenue hospitality_mcp
audit_standards hospitality_mcp
create_proposal hospitality_mcp
review_deliverable hospitality_mcp
delegate_task hospitality_mcp
report_status hospitality_mcp
request_feedback hospitality_mcp
store_artifact hospitality_mcp
retrieve_artifact hospitality_mcp
list_artifacts hospitality_mcp
search_artifacts hospitality_mcp
archive hospitality_mcp
plan_sprint hospitality_mcp
track_progress hospitality_mcp
reflect_on_outcome hospitality_mcp
list_patterns hospitality_mcp
get_capabilities hospitality_mcp
info hospitality_mcp