Short-Stay Self Check-in Agent
Give Airbnb and short-let guests instant access to key codes, house rules, Wi-Fi details, and checkout reminders — no external APIs required.
What you'll build
An agent that guides short-stay guests through self check-in: key safe codes, door entry instructions, house rules, Wi-Fi credentials, appliance guides, and a checkout reminder. Everything is served from a knowledge base — no external APIs are required, making this the fastest recipe to deploy.
Prerequisites
- BimpeAI account with an API key (
sk_…) - Read Anatomy of a workflow agent first — this recipe skips steps covered there
- WhatsApp Business number connected in the Console dashboard (see Step 4)
Steps
1. Find the workflow
import { BimpeAI } from "@bimpeai/sdk";
const bimpe = new BimpeAI({ apiKey: process.env.BIMPEAI_API_KEY! });
const page = await bimpe.workflows.list({ scope: "public", search: "check-in" });
const workflow = page.data[0];
console.log(workflow.id, workflow.name);import os
from bimpeai import BimpeAI
client = BimpeAI(api_key=os.environ["BIMPEAI_API_KEY"])
page = client.workflows.list(scope="public", search="check-in")
workflow = page.data[0]
print(workflow.id, workflow.name)2. Create the agent
const agent = await bimpe.agents.create(
{
name: "Self check-in assistant",
system_prompt:
"You help short-stay guests check in and out smoothly. " +
"Provide key safe codes, door entry instructions, Wi-Fi credentials, " +
"appliance guides, and house rules on request. " +
"Send a checkout reminder when the guest asks about departure. " +
"Never share security codes with anyone who has not confirmed their booking reference.",
agent_workflow_id: workflow.id,
},
{ idempotencyKey: "create-self-checkin-agent-v1" },
);
console.log(agent.id);agent = client.agents.create(
name="Self check-in assistant",
system_prompt=(
"You help short-stay guests check in and out smoothly. "
"Provide key safe codes, door entry instructions, Wi-Fi credentials, "
"appliance guides, and house rules on request. "
"Send a checkout reminder when the guest asks about departure. "
"Never share security codes with anyone who has not confirmed their booking reference."
),
agent_workflow_id=workflow.id,
idempotency_key="create-self-checkin-agent-v1",
)
print(agent.id)3. Add the property knowledge base
One knowledge base covers everything the guest needs for their stay. Update it whenever you change codes or rules — no agent reconfiguration required.
// All property details in a single knowledge base
await bimpe.agents.knowledgeBases.create(agent.id, {
type: "text",
name: "Property details",
content:
"ADDRESS: 14 Maple Street, Flat 3, London E1 6RF\n\n" +
"ARRIVAL:\n" +
" Key safe is on the right of the front door, code: 4821.\n" +
" Flat 3 is on the second floor, turn left at the top of the stairs.\n" +
" Park in the bay marked '14' on Maple Street — free after 18:30 weekdays, all day weekends.\n\n" +
"WI-FI:\n" +
" Network: MapleFlat3\n" +
" Password: sunny2026!\n\n" +
"APPLIANCES:\n" +
" Boiler: press the red button on the right side to boost hot water (30-min boost).\n" +
" Washing machine: powder in the drawer on the left, programme 2 for a standard wash.\n" +
" Hob: turn the dial to the flame icon, then press and hold for 3 seconds to ignite.\n\n" +
"HOUSE RULES:\n" +
" No smoking anywhere in the property.\n" +
" No parties or gatherings over 4 people.\n" +
" Quiet hours: 22:00–08:00.\n" +
" Bins: recycling (blue) and general waste (black) collected on Wednesday morning.\n\n" +
"CHECKOUT:\n" +
" Checkout by 11:00. Strip the beds and leave towels in the bathroom.\n" +
" Return the key to the key safe and set the code back to 0000.\n" +
" Leave the heating on the frost setting (turn the dial to the snowflake icon).",
});# All property details in a single knowledge base
client.agents.knowledge_bases.create(agent.id, {
"type": "text",
"name": "Property details",
"content": (
"ADDRESS: 14 Maple Street, Flat 3, London E1 6RF\n\n"
"ARRIVAL:\n"
" Key safe is on the right of the front door, code: 4821.\n"
" Flat 3 is on the second floor, turn left at the top of the stairs.\n"
" Park in the bay marked '14' on Maple Street — free after 18:30 weekdays, all day weekends.\n\n"
"WI-FI:\n"
" Network: MapleFlat3\n"
" Password: sunny2026!\n\n"
"APPLIANCES:\n"
" Boiler: press the red button on the right side to boost hot water (30-min boost).\n"
" Washing machine: powder in the drawer on the left, programme 2 for a standard wash.\n"
" Hob: turn the dial to the flame icon, then press and hold for 3 seconds to ignite.\n\n"
"HOUSE RULES:\n"
" No smoking anywhere in the property.\n"
" No parties or gatherings over 4 people.\n"
" Quiet hours: 22:00–08:00.\n"
" Bins: recycling (blue) and general waste (black) collected on Wednesday morning.\n\n"
"CHECKOUT:\n"
" Checkout by 11:00. Strip the beds and leave towels in the bathroom.\n"
" Return the key to the key safe and set the code back to 0000.\n"
" Leave the heating on the frost setting (turn the dial to the snowflake icon)."
),
})4. Connect the WhatsApp channel (dashboard)
WhatsApp is configured in the dashboard
The API cannot create channel connections. Connect your WhatsApp Business number in the Console dashboard. The SDK lets you list active channels but cannot modify the connections.
- Open Console dashboard → Agents → select your agent.
- Under Channels, connect your WhatsApp Business number.
- Share the WhatsApp link with guests in your booking confirmation email so they can message the agent on arrival.
5. Go live
Verify the channel is connected before your first guest arrives:
const channels = await bimpe.agents.channels.list(agent.id);
console.log("Channels:", channels.map((c) => c.type));channels = client.agents.channels.list(agent.id)
print("Channels:", [c.type for c in channels])Full example
import { BimpeAI } from "@bimpeai/sdk";
const bimpe = new BimpeAI({ apiKey: process.env.BIMPEAI_API_KEY! });
// 1. Find workflow
const page = await bimpe.workflows.list({ scope: "public", search: "check-in" });
const workflow = page.data[0];
// 2. Create agent
const agent = await bimpe.agents.create(
{
name: "Self check-in assistant",
system_prompt:
"You help short-stay guests check in and out. Provide key codes, Wi-Fi, appliance guides, " +
"house rules, and checkout instructions. Only share codes after the guest confirms their booking reference.",
agent_workflow_id: workflow.id,
},
{ idempotencyKey: "create-self-checkin-agent-v1" },
);
// 3. Add property knowledge base
await bimpe.agents.knowledgeBases.create(agent.id, {
type: "text",
name: "Property details",
content:
"Key safe code: 4821 (reset to 0000 on departure).\n" +
"Wi-Fi: MapleFlat3 / sunny2026!\n" +
"Checkout: 11:00. Strip beds, leave towels in bathroom.",
});
// 4. Verify channel (configured via dashboard)
const channels = await bimpe.agents.channels.list(agent.id);
console.log("Agent ID:", agent.id);
console.log("Channels:", channels.map((c) => c.type));
// 5. Stream incoming guest messages
const controller = new AbortController();
for await (const event of bimpe.conversations.messages.stream(
agent.id,
"<conversation_id>",
{ signal: controller.signal },
)) {
console.log(event.role, event.message);
}import os
from bimpeai import BimpeAI
client = BimpeAI(api_key=os.environ["BIMPEAI_API_KEY"])
# 1. Find workflow
page = client.workflows.list(scope="public", search="check-in")
workflow = page.data[0]
# 2. Create agent
agent = client.agents.create(
name="Self check-in assistant",
system_prompt=(
"You help short-stay guests check in and out. Provide key codes, Wi-Fi, appliance guides, "
"house rules, and checkout instructions. Only share codes after the guest confirms their booking reference."
),
agent_workflow_id=workflow.id,
idempotency_key="create-self-checkin-agent-v1",
)
# 3. Add property knowledge base
client.agents.knowledge_bases.create(agent.id, {
"type": "text",
"name": "Property details",
"content": (
"Key safe code: 4821 (reset to 0000 on departure).\n"
"Wi-Fi: MapleFlat3 / sunny2026!\n"
"Checkout: 11:00. Strip beds, leave towels in bathroom."
),
})
# 4. Verify channel (configured via dashboard)
channels = client.agents.channels.list(agent.id)
print("Agent ID:", agent.id)
print("Channels:", [c.type for c in channels])
# 5. Stream incoming guest messages
for event in client.conversations.messages.stream(agent.id, "<conversation_id>"):
print(event.role, event.message)Deploy
Store your API key in BIMPEAI_API_KEY. When you change the key safe code between stays, update the knowledge base using knowledgeBases.update — there is nothing else to redeploy. Use a stable idempotencyKey so reruns do not create duplicate agents.
Variations
- Manage multiple properties by creating one agent per property, each with its own knowledge base containing that property's specific codes and rules.
- Add a local area section to the knowledge base with supermarket locations, takeaway recommendations, and the nearest bus stop.
- Send a checkout reminder the morning of departure using
conversations.messages.sendfrom a scheduled script, triggered by the booking end date.
Salon & Spa Booking Agent
Let clients browse services, match with a stylist, and book appointments across WhatsApp, Instagram, and web chat — with Google Calendar handling availability.
Subscription Management Agent
Handle plan upgrades, downgrades, cancellations, billing queries, and payment method updates via web chat or inbound voice — backed by Stripe.