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=1enables optional local grounding / Experta / Bayesian enrichment paths.G6_JOB_LIVE_SEARCH=1allows live web search for market or benchmark context.G6_JOB_LIVE_LLM=1allows 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 |