Workspace

Handbuch

Staff Manual

Version 2.3 • Last Updated: August 6, 2026

Laundry Manager - Staff Manual

Version: 2.3 Last Updated: August 6, 2026


Table of Contents

  1. Introduction
  2. Getting Started
  3. Login & Authentication
  4. Roles & Permissions
  5. Dashboard
  6. Locations
  7. Items
  8. Stock Management
  9. Central Storage
  10. Order Planning
  11. Reservations
  12. Hostaway Integration
  13. iCal Integration
  14. Plan Board & Deliveries
  15. End-of-day Checklist
  16. Demand & Planning Work List
  17. External Task Handoff
  18. Transactions
  19. Consumption Settings
  20. Rejected Items (Quality Returns)
  21. Common Workflows
  22. Troubleshooting

Introduction

The Laundry Manager is a web application for planning laundry deliveries to rental properties. It helps you:

  • Track stock levels at each location
  • Plan deliveries with suggested quantities
  • Sync reservations automatically from Hostaway and iCal feeds
  • Use reservations to predict consumption
  • Record rejected items (damaged, stained, worn)
  • Generate delivery lists for drivers

The system automatically calculates what each location needs based on current stock, upcoming reservations, and guest counts. Reservations are synchronized from property management platforms (Hostaway) and iCal feeds (Airbnb, Booking.com, etc.).


Getting Started

Accessing the Application

Open the Laundry Manager in your web browser. The application works on desktop and mobile devices. All current Operations and Driver Field interface labels are in English. A future language switch may be considered separately, but the current product does not show German and English copy at the same time.

The main navigation bar at the top includes:

Menu Item Purpose
Dashboard Overview of all locations and alerts
Plan Board Plan driver shifts, stops, and demand inbox work
Field Today Mobile route view for drivers
Pack Station Pack the driver's current wave before each Laundry stop
End-of-day checklist Operations-only default and date-specific driver checklist authoring
Orders Plan Tuesday orders for Thursday delivery
Reservations View synced reservations from Hostaway & iCal
Locations Manage property information
Items Manage the item catalog
Stock View and adjust current inventory
Consumption Configure consumption calculation settings
Transactions View delivery and usage history
Rejected Items Track items to return to supplier
Hostaway Hostaway integration settings (Admin only)

Dark Mode

Click the sun/moon icon in the top-right corner to toggle between light and dark mode.


Login & Authentication

You need to log in before you can use the Laundry Manager. All pages are protected — if you're not logged in, you'll be redirected to the login page automatically.

Login with E-Mail & Password

  1. Open the Laundry Manager in your browser
  2. Enter your E-Mail address and password
  3. Click "Sign in"

If your credentials are correct, you'll be redirected to the Dashboard.

If you don't have a password or prefer a passwordless login:

  1. Enter your E-Mail address in the login form
  2. Click "Email me a magic link"
  3. Check your inbox for an email with a login link
  4. Click the link in the email — you'll be automatically authenticated and redirected

Tip: The Magic Link is a one-time-use link. If it expires, simply request a new one from the login page.

Confirmation Page

After clicking a Magic Link, you'll briefly see a confirmation page:

  • Success: A green checkmark appears and you're redirected to the Dashboard within 2 seconds
  • Error: A red icon with an error message appears — click Back to sign in to try again

Session

Once logged in, your session stays active. You don't need to log in again every time you open the app. If your session expires, you'll be redirected to the login page.


Roles & Permissions

Each user account has a role that determines what they can do in the system. Roles follow a hierarchy — higher roles include all permissions of lower roles.

Role Hierarchy

Role Level Description
Driver Basic View deliveries, locations, items; mark stops as complete; record inventory & rejected items
Cleaner Extended Everything a Driver can do, plus view units, beds, and bathrooms
Operations Management Full access to all features: deliveries, orders, reservations, stock, locations, consumption settings
Admin Full Everything, including user management and system configuration

Detailed Permissions

Feature Driver Cleaner Operations Admin
Dashboard ✅ View ✅ View ✅ View ✅ View
Deliveries ✅ View ✅ View ✅ Full ✅ Full
Mark stops complete
Locations & Attachments ✅ View ✅ View ✅ Full ✅ Full
Items ✅ View ✅ View ✅ Full ✅ Full
Current Stock ✅ View ✅ View ✅ Full ✅ Full
Standard Configuration page ✅ Full ✅ Full
Legacy standard_stock API (read) ✅ View ✅ View ✅ View
Stock Transactions ✅ Full ✅ Full ✅ Full ✅ Full
Rejected Items ✅ Full ✅ Full ✅ Full ✅ Full
Units / Beds / Bathrooms ✅ View ✅ Full ✅ Full
Orders ✅ Full ✅ Full
Consumption Settings ✅ Full ✅ Full
Reservations ✅ Full ✅ Full
Hostaway Integration ✅ Full
iCal Integration ✅ Full
Planning Work List ✅ Full ✅ Full
End-of-day checklist authoring ✅ Full ✅ Full

Standard Configuration During a Cutover

Laundry templates, Procurement baselines, and Supply targets are Standard Configuration and may be changed only by Operations or Admin. When a cutover is announced, stop all edits in these three areas until Operations reopens them after the post-migration smoke test. Do not retry a save in an older tab/app version or use direct SQL as a workaround: legacy Consumable standard_stock writes are intentionally rejected rather than creating an unaudited Procurement baseline. The current Procurement screen records the real signed-in actor for every create, change, and delete.

The Standard Configuration page is Operations-only (with Admin through the role hierarchy). Cleaner retains read-only access only to the legacy standard_stock API; that API access does not grant access to this page.

How It Works

  • Your role is assigned by an administrator when your account is created
  • The system automatically checks your permissions on every page and action
  • If you try to access something you don't have permission for, you'll see a "Forbidden" error
  • Deactivated accounts are fully blocked — even with valid login credentials
  • Roles are hierarchical: each role includes all permissions of the roles below it

Account Status

Accounts can be active or deactivated:

  • Active: Normal access based on your role
  • Deactivated: No access at all — login is blocked with a "Forbidden" error

Note: If you can't log in but your credentials are correct, your account may have been deactivated. Contact your administrator.


Dashboard

The Dashboard is your daily starting point. It provides a compact overview of all locations and stock status.

Quick access buttons to the most common tasks:

  • Locations – Manage property information
  • Items – Manage the item catalog
  • Standard Stock – Set target quantities per location
  • Current Stock – View and adjust inventory
  • Transactions – View delivery and usage history
  • Plan Board work list – Review demand, dated backlog, overdue work, and attention

Press ⌘K on Mac or Ctrl+K on Windows/Linux anywhere in the dashboard to open the global search palette.

  • Search spans Units, Locations, Contacts, Knowledge, and Keys
  • Results open the matching page directly and deep-link into structured tabs when possible
  • Contacts, keys, and knowledge entries are auto-highlighted briefly after navigation
  • Operational aliases such as WiFi/WLAN, Emergency/Notfall, Waste/Müll, Parking/Parkplatz, and Key/Schlüssel are understood even when the underlying records use normalized taxonomy values
  • Recent searches are stored locally on the current device for fast repeat lookups

Tip: Use quick search for urgent requests like WiFi, emergency phone numbers, parking instructions, or a key location when you do not want to click through several tabs first.

Quick Stats

  • Total Stock: Total items across all locations
  • Locations Tracked: Number of active locations
  • Items Tracked: Number of different item types
  • Transactions (7d): Activity in the last 7 days

Critical Locations

Locations with items below critical threshold are highlighted at the top. These need urgent attention.

Low Stock Warnings

The dashboard lists specific items that are running low, including:

  • Item name
  • Location name
  • Current quantity vs. threshold (e.g., "0 / 12")
  • Standard stock level

Location Status Badges

Each location shows a colored status badge:

Color Status Meaning
🔴 Red Critical Items below critical threshold - urgent delivery needed
🟡 Yellow Warning Items below warning threshold - schedule delivery soon
🟢 Green Healthy All items at or above standard levels

Recent Activity

Shows the latest stock movements (deliveries, usage, adjustments) with timestamps.


Locations

Locations represent the properties you deliver to (apartments, houses, etc.).

Location List

The Locations page shows all properties as cards with:

  • Location name
  • Address
  • Current stock status (colored badge)
  • Quick action buttons

Location Details

Click on a location to view/edit:

Basic Information

  • Name: Display name for the location
  • Address: Full street address
  • Access Code: Door/gate code for entry
  • Key Location: Where to find keys (e.g., "lockbox by door, code 1234")
  • Access Instructions: Special notes for drivers (e.g., "use side entrance", "ring bell twice")

Tip: Use the Access Instructions field for detailed directions that help drivers find entrances, parking spots, or key boxes.

Location Tabs

Each location detail page is split into dedicated tabs so operational data is easier to maintain:

  • Overview: Core profile data, attachments, access details, delivery-relevant notes
  • Contacts: People connected to the location such as owners, caretakers, emergency contacts, and neighbors
  • Keys: Physical keys, cards, fobs, and where they are stored
  • Knowledge: Reusable operational notes such as waste rules, parking guidance, WiFi information, and emergency instructions
  • Storage Areas: Named storage zones used by unit consumable standards
  • Units / Groups / iCal: Unit-specific inventory, grouping, and calendar sync settings

Contacts

Use the Contacts tab for structured people data instead of storing phone numbers in free-text notes.

  • Role: Choose the best matching role (Owner, Caretaker, Emergency, Maintenance, etc.)
  • Phone: Stored in international format after validation
  • Email: Must be a valid email address
  • Notes: Required when role is Other, and useful for availability or escalation details

If a phone number or email already exists for the same location, the app blocks the duplicate and offers a shortcut to the existing contact.

Keys

Use the Keys tab to document every access item and its storage location.

  • Track label, type, quantity, unit scope, and storage location separately
  • Sensitive storage details such as a lockbox code can be hidden with the reveal/copy secret field
  • Duplicate labels within one location are blocked to keep the inventory clean

Knowledge

Use the Knowledge tab for operational instructions that should stay structured and searchable.

  • Pick a category such as Waste, Parking, WiFi, Rules, Emergency, or Appliances
  • Guest-visible entries show a warning before saving
  • Pinned entries stay at the top of the table for faster access
  • Content must be detailed enough to be useful; very short notes are rejected

Storage Areas

Use the Storage Areas tab to define named storage zones like cellar shelves, laundry closets, or key cabinets.

  • These areas are then selectable inside unit consumable standards
  • Only one active default consumables storage area is allowed per scope: one location-wide default or one default per unit
  • Maintenance of storage areas no longer happens inside the unit detail form

Unit Consumables

Consumable standards are maintained inside the relevant unit detail page.

  • Each item can exist only once per unit
  • Minimum quantity must be less than or equal to standard quantity
  • Storage areas are selected from the location-wide list managed in the Storage Areas tab

Planning a Supply Visit

When adding a Supply refill to a stop, choose either the full Supply Profile or the exact physical Storage Area + Item positions to check. The planned visit freezes those positions and their target quantities; later profile edits do not silently change a driver's work.

If the profile is corrected before the visit starts, Operations can refresh the planned Supply targets. Once the task or its route has started, create a new planned visit instead. A legacy Supply marker without an explicit scope is not ready for assignment and must be recreated or cancelled deliberately.

Attachments

Locations can have file attachments — photos, PDFs, or documents that help staff and drivers (e.g., key box photos, access maps, cellar entry instructions).

Adding Attachments:

  1. Open a location's edit view
  2. Go to the Attachments section
  3. Click "Upload" to add a file (images or PDFs)
  4. Add a title or description for the attachment
  5. Save

Managing Attachments:

  • Reorder: Drag and drop attachments to change their display order
  • Edit: Update the title or description of an existing attachment
  • Delete: Remove attachments that are no longer needed

Viewing During Deliveries: When a driver opens a delivery stop, any attachments for that location are shown directly in the stop modal. This is useful for:

  • Photos of key boxes or lockboxes
  • PDF maps showing parking or entry points
  • Instructions that are easier to show than describe

Archiving vs. Deleting Records

Locations, units, contacts, keys, knowledge entries, storage areas, beds, bathrooms, and consumable standards now support two different destructive actions:

  • Archive: Use this when the record should disappear from day-to-day lists but may still be needed for history, reservations, or later recovery. Archived records can be restored.
  • Delete permanently: Use this only when the record is wrong and should be removed forever. Permanent deletion is restricted to Admins and is blocked automatically when there are still linked records such as reservations or stock history.

If the delete dialog tells you that deletion is blocked, choose Archive instead. This is the normal path for properties or units that should no longer be used operationally but still have historical data attached.

Tip: Upload a photo of the key box or entrance for each location — this saves drivers a lot of time on their first visit.

Office vs Storage vs Direct Supplier

The system separates three operational roles that can otherwise look similar:

  • Office is the staging hub for urgent laundry and consumables. Use Office Ops to create a Transport / Errand task from the office to a target location (pickup at the office, drop-off at the destination); it then appears on the Plan Board for shift assignment and is completed by the driver in the Field App. (The former special-dispatch flow has been removed.)
  • Storage is the central stock source for normal delivery planning. Use Central Storage and the Storage page for stock-on-hand and order-to-storage work. Office transports should not be used as a replacement for normal storage replenishment.
  • Direct Supplier locations receive laundry outside the central-storage delivery flow. Their location and Supply Profile pages show a direct-supplier banner so staff know that laundry quantities are order-tracking only, while consumable storage still follows the normal supply-profile process.

Supply vor Ort abschließen

Für jede angezeigte Supply-Position den tatsächlich gezählten Bestand vor dem Top-up eintragen. Die vorgeschlagene Liefermenge füllt nur bis zum eingefrorenen Soll auf; sie darf geändert werden, aber nicht überfüllen. Auch wenn nichts geliefert wird, die Position absenden. Liegt der Bestand danach unter Soll, ist ein kurzer Grund Pflicht. Der Shortfall erscheint für Operations in der Attention-/Replan-Ansicht; er erzeugt keinen automatischen Folgetask. Operations entscheidet dort manuell über eine mögliche Folgearbeit. Reports und Cases werden dabei ausschließlich durch den vorgesehenen Ablauf gebucht; es gibt keine direkte Data-API-Schreiboberfläche.

Bei einer Offline-Meldung den Eintrag nicht durch eine zweite Meldung ersetzen. Nach dem Sync ist eine bereits erfolgreich gebuchte Meldung über ihren Schlüssel dedupliziert. Ein als inkompatibel markierter alter Queue-Eintrag muss nach einem aktuellen Snapshot neu erfasst oder von Operations repariert werden.

On a location's Supply Profile tab, use Log count on a consumable row when Ops has checked, restocked, adjusted, or found missing supplies. These logs are append-only. They update the "Last counted" and "Gap" columns without changing stock quantities directly.

Units

For multi-unit properties (e.g., apartment buildings), each unit can be configured separately:

  • Unit Name: Apartment number or identifier
  • Bedrooms: Number and configuration of beds
  • Bathrooms: Number and configuration of bathrooms
  • Active Status: Toggle to temporarily disable units
Quick Facts and legacy Urgent Info

Every Operations unit detail page starts with Quick facts above the tabs. The same panel is also on the Location detail page. When more than one active Unit exists, select one for unit-specific Facts, including WiFi; Waste and Parking keep their Location-owned sources. This is the primary WP-L1 workflow for Key, Backup key, WiFi, Waste and Parking: each card shows its state, scope, source and freshness before its one canonical edit target. Missing, inherited, conflict, stale and redacted states are explicit; conflicting keys never select a winner silently.

On the Location page, the canonical Waste and Parking editor sits in the anchored Quick facts section. Edit its text and linked Waste/Parking images or PDFs there; do not create a separate Unit source for those Location facts.

Quick facts uses the standard read projection first. It does not expose WiFi passwords or static access codes. Operations and Admin receive a separate role-gated detail projection only after the page has mounted; it is private, no-store, is not SSR-hydrated, and must not be copied into Search, logs, cache or offline payloads. Driver and Cleaner do not use this global Operations workflow.

The previous Urgent info panel is a collapsed, on-demand legacy fallback during WP-L1 validation, not the default path. It loads only when Show legacy urgent info is selected. Do not use it to work around a missing, redacted or conflicting Quick Fact: follow the Quick Facts card to its canonical source instead.

Bed Configuration

For each bedroom:

  • Bed type (Single, Double, Queen, King)
  • Sheet size
  • Pillows per side
  • Room name (optional)
Bathroom Configuration

For each bathroom:

  • Has bathtub (yes/no)
  • Has shower (yes/no)
  • Small towel count
  • Bathroom name (optional)

Adding a New Location

  1. Click "New Location"
  2. Enter the location name and address
  3. Add access information (codes, keys, instructions)
  4. Save the location
  5. Add units if it's a multi-unit property
  6. Configure beds and bathrooms for each unit

Items

Items are the products you deliver (sheets, towels, etc.).

Item List

Shows all items with:

  • Item name
  • Category
  • Current total stock across all locations

Item Categories

Items are organized by category for easier management:

  • Bed Linen: Sheets, pillowcases, duvet covers
  • Towels: Bath towels, hand towels, face cloths
  • Kitchen: Tea towels, oven mitts
  • Bathroom: Bath mats, shower curtains
  • Other: Miscellaneous items

Adding a New Item

  1. Click "New Item"
  2. Enter the item name
  3. Select a category
  4. Add any notes (e.g., size, color, material)
  5. Save

Stock Management

Standard Configuration

Open Standard configuration and select a location. The three sections have different responsibilities:

  • Laundry delivery template: the complete default delivery proposal. Search or browse by category, choose Configure, enter quantities with the displayed unit, and use Save all changes once. An explicit 0 is a configured zero; Not configured means that no template row exists.
  • Supply target on site: edits all explicit Unit targets for the selected location. Search by item, Unit, category, or Storage Area; add an explicit Unit/item row, edit its target, assign its Storage Area, deactivate obsolete rows, then choose Save all Supply changes once. The optional Minimum is under Advanced monitoring threshold because it is an Operations warning, not the on-site target. These targets do not determine purchasing or Laundry deliveries. The counted Supply profile remains available from the adjacent link. Storage choices are limited to shared areas and areas assigned to the selected Unit. Use configured default resolver appears only when the Unit default or the location's shared default currently resolves. An active row cannot be saved without one of those valid targets.
  • Procurement baseline: the independent purchasing quantity for Cleaning Supplies. It is not calculated from the Supply target.

For Laundry, the default delivery quantity is the primary field. Warning and Critical are the two active alarm levels and live under Advanced monitoring thresholds; they do not change the default delivery quantity. Laundry positions can optionally name an active Linen or Mixed Storage Area. Whole location remains the default and multiple Storage Areas never split a quantity automatically. When a Storage target is used, its derived Unit and Storage label are shown with the Laundry task, pack manifest and driver work; routing and stock accounting remain Location-wide. There is no separate Minimum field. The Resulting Laundry delivery card shows the positive active lines that a new delivery will propose.

To retire a row without losing its history, choose Deactivate and save. Choose Delete only when the location should return to Not configured. Laundry, Supply and Procurement deletes all ask for confirmation and reject a stale profile snapshot instead of deleting a row that changed after it was shown. Before moving a Unit to another location, remove its existing Supply-target rows from the Unit detail. The move is blocked while any such row remains so that no target can keep pointing to Storage in the old location.

To copy setup between properties:

  1. Open the source location's Laundry delivery template.
  2. Choose Copy complete profile and select one target.
  3. Build the preview and review every create, update, reactivation, and deactivation.
  4. Confirm the reviewed copy. Changing either source or target discards the preview immediately. If either profile changed in the meantime, reload the preview instead of overwriting the newer data.

The copy includes configured inactive source rows and their saved quantities and thresholds. A later reactivation at the target therefore restores the source configuration, not an older target value.

Every missing-template warning in Laundry planning and Request Promotion links directly to the affected location's Laundry section.

Current Stock

Choose or search the active location at the top of the Stock page. The quantity editor appears first, so Operations can set an exact count and save without first opening an overview card. Location overview cards and recent history remain below the editor for follow-up review.

The Stock page shows inventory levels at each location:

  • Location: Property name
  • Item: Product type
  • Quantity: Current count
  • Status: Critical (🔴), Warning (🟡), or Healthy (🟢)

Adjusting Stock

To correct inventory after a manual count:

  1. Find the location and item
  2. Click "Adjust"
  3. Enter the new quantity
  4. Select a reason:
    • Inventory Count: Regular stocktake
    • Found Extra: Discovered additional items
    • Missing: Items unaccounted for
    • Damaged: Items removed due to damage
    • Other: Custom reason
  5. Add notes if needed
  6. Save

Bulk Stock Update

For larger inventory updates:

  1. Go to the Stock page
  2. Click "Bulk Update"
  3. Select the location
  4. Enter quantities for multiple items at once
  5. Save all changes

Central Storage

All laundry arrives at Central Storage first, and then gets delivered to apartment locations.

What is Central Storage?

Central Storage is the “main inventory location” (e.g. office/storage). It is used to:

  • Track how much laundry you have available overall
  • Plan Tuesday orders for Thursday delivery
  • Serve as the source for daily delivery routes

Key Rules

  • There can be only one Central Storage location.
  • Central Storage is shown first on the Stock page.
  • When a delivery stop is marked complete, items are automatically deducted from Central Storage.
  • Storage stock can go negative if you deliver more than you have recorded (this helps track shortages accurately).

Setting Central Storage

  1. Go to Locations
  2. Create or edit the storage location (e.g. "Office/Storage")
  3. Mark it as Storage location

Order Planning

Use Orders to plan either a weekly Laundry order or an ad-hoc Supply order. The two order types cannot mix their item domains.

Weekly Workflow

  • Laundry only: the create form defaults to a Tuesday order for Thursday delivery in the same week. Both dates remain editable, and direct-supplier Laundry destinations remain available where configured.
  • Supplies: create an ad-hoc order with the actual order and expected delivery dates. A Supply order must target Central Storage or an Office location; it cannot use a direct-supplier apartment destination.
  • A location used as an explicit order destination must stay active and keep its compatible destination role. Change or remove the order destination before archiving, demoting, or permanently deleting that location.

Creating a New Order

  1. Go to Orders
  2. Click New Order
  3. Select Laundry or Supplies and confirm:
    • Order date and expected delivery (Laundry starts with the Tuesday/Thursday default; Supply dates are ad-hoc)
    • the destination (Supply requires Central Storage or Office)
  4. Review the suggested quantities
  5. Adjust quantities if needed
  6. Set status to Submitted

Adding Items to an Order

While an order is Draft or Submitted:

  1. Click on an item button in the "Add Items" section
  2. The item appears immediately in the list with a "New" badge
  3. Enter the quantity you want to order
  4. Click "Save Items" to confirm your changes
  5. Use the X button to remove an item before saving

Save every item change before clicking Confirm ordered. Once an order is marked Ordered, its item list and ordered quantities are locked so that the final receipt can preserve the original ordered-versus-received difference.

Tip: Click "Apply Suggestions" to automatically add all suggested items with their recommended quantities.

Order Suggestions

Laundry order suggestions are calculated based on:

  • Current stock in Central Storage
  • Aggregated needs across all locations
  • Standard stock targets and thresholds

Marking Delivered

When the supplier delivery arrives:

  1. Open the order
  2. Click Record final receipt
  3. Enter the actual received quantity for every order line, including 0 for an item that did not arrive
  4. Review the destination and submit the final receipt once

Submitting the receipt marks the order Delivered and posts every positive received quantity to the selected Supply destination or to Central Storage for Laundry. Do not add the same delivery manually on the Stock page. Partial or repeat receipts are not supported; if the order will not be received, cancel it before recording a receipt.


Reservations

Reservations are guest stays at locations, synchronized automatically from Hostaway and iCal feeds. They drive consumption calculations and demand planning.

Reservations List

The Reservations page shows all synced reservations with:

  • Guest name
  • Location
  • Check-in and check-out dates
  • Number of guests
  • Source badge (Hostaway, iCal, or Manual)
  • Status (confirmed, cancelled, inquiry, etc.)

Source Badges

Each reservation shows where it came from:

Badge Source Description
Hostaway Hostaway API Synced from Hostaway property management
iCal iCal feed Synced from Airbnb, Booking.com, VRBO, or other iCal feeds
Manual Manual entry Manually created in the system

Filtering Reservations

Filter by:

  • Date range (from / to)
  • Location
  • Status (confirmed, cancelled, inquiry, etc.)
  • Source (Hostaway, iCal, Manual)

Guest Count for iCal Reservations

iCal feeds do not include guest counts. For iCal reservations:

  • A "Guests missing" warning is shown
  • Click the guest count field to enter the number manually
  • This is important for accurate consumption calculations

Tip: Check iCal reservations regularly and add guest counts as soon as new reservations come in. Without guest counts, the system cannot calculate correct laundry quantities.


Hostaway Integration

Admin only: The Hostaway integration page is only visible and accessible to Admin users.

Hostaway is the property management system that manages listings across platforms (Airbnb, Booking.com, etc.). The integration syncs reservations automatically.

Connection Status

Go to Integrations → Hostaway to see:

  • Connection status: Whether the Hostaway API is connected
  • Listings count: Number of properties in Hostaway
  • Last sync: When reservations were last synchronized
  • Sync status: Running, completed, or failed

Location Mapping

Before reservations can sync correctly, Hostaway listings must be mapped to locations in the system. The mapping page shows three categories:

Category Badge Meaning
Mapped 🟢 Confirmed Listing is linked to a location — reservations sync automatically
Suggested 🟡 Pending System found a likely match based on name/address — review and accept or reject
Unmapped ⚪ Unmapped No match found — import as new location or manually map

Importing a Listing

For single-unit properties (one apartment = one Hostaway listing):

  1. Find the unmapped listing
  2. Click "Import"
  3. The system creates a new location with a default unit
  4. The listing is automatically mapped

For multi-unit properties (multiple apartments at one address):

  1. First, create the location manually in Locations
  2. Add the individual units (e.g., "Apartment 1", "Apartment 2")
  3. Return to the Hostaway mapping page
  4. Click "Select Location" on each listing
  5. Choose the location and the specific unit to map to

Import All

Click "Import All" to import all unmapped listings at once. Each listing becomes a new location with a default "Main Unit". Use this for bulk setup when most properties are single-unit.

Unlinking

To remove a mapping:

  1. Find the mapped listing
  2. Click "Unlink"
  3. The listing becomes unmapped again

Note: Unlinking does not delete the location or its reservations — it only breaks the sync connection.

Reservation Sync

Once listings are mapped, reservations sync automatically:

  • Hourly sync: All reservations are refreshed every hour
  • Webhook sync: New/updated reservations are pushed in real-time by Hostaway

The sync stores essential reservation data:

  • Check-in/out dates and times
  • Guest name and count
  • Door codes and access links
  • Channel information (Airbnb, Booking.com, Direct, etc.)
  • Booking status and confirmation codes

iCal Integration

Admin only: iCal configuration is only accessible to Admin users.

For properties not managed through Hostaway (e.g., listed only on Airbnb or Booking.com), reservations can be synced via iCal feeds. Each platform provides an iCal export URL.

Setting Up iCal for a Location

  1. Go to Locations and open the location
  2. Click the iCal tab
  3. Enter the iCal feed URL from your booking platform:
    • Airbnb: Go to Calendar → Export Calendar → copy the link
    • Booking.com: Go to Property → Calendar → Export → copy the iCal link
    • VRBO: Go to Calendar → Import/Export → copy the iCal URL
  4. Toggle "Sync enabled" on
  5. Click "Save"
  6. Optionally click "Sync Now" to immediately fetch reservations

How iCal Sync Works

  • Automatic polling: All active iCal feeds are fetched every 30 minutes
  • Deduplication: Each reservation has a unique ID (UID) — no duplicates are created
  • Status mapping: CONFIRMED → confirmed, CANCELLED → cancelled

iCal Limitations

iCal is a simple calendar format. Compared to Hostaway, it has limitations:

Feature Hostaway iCal
Guest name ✅ Full name ⚠️ Often just first name or "Reserved"
Guest count ✅ Included ❌ Not available — must be entered manually
Phone/email ✅ When available ❌ Not included
Door codes ✅ Included ❌ Not included
Channel info ✅ Airbnb/Booking/Direct ❌ Not included
Real-time sync ✅ Via webhooks ❌ Polling only (every 30 min)

Important: Always add guest counts manually for iCal reservations. Without them, consumption calculations will be inaccurate.


Plan Board & Deliveries

Laundry deliveries are planned on the Plan Board — the daily operations cockpit. (The old standalone "Deliveries" route builder has been removed.)

The Plan Board

Go to Plan Board to see a single day:

  • Prev / Today / Next / Week to switch days
  • Shift cards: one card per driver shift, with its stops in route order
  • Work list: Demand Inbox, planned backlog, overdue work and the link to exclusive Replan cases

Shifts: each driver has at most one shift per calendar day. The role (Laundry / Handyman / Both) describes the kind of work — mixed days use Both. Use Add Shift to create one.

  1. On a shift card, click Plan laundry delivery
  2. Choose the location
  3. The location's standard template is prefilled with full standard quantities — adjust quantities, add or remove items, or start from an empty list if the location has no template yet
  4. Optionally set Bags — a handling hint for the driver ("split across N bags"); it never changes item quantities
  5. Confirm. The system creates the task with its item list and attaches it to the shift: an existing open stop for that location is reused, otherwise a new stop is added

The item list stays editable until packing starts — open the stop's Work Package to adjust it.

Demand Inbox

  • Requests first receive a plan day, then use Resolve request to create the explicit Task. Only that Task can be assigned to a shift. Unscheduled Tasks may still use Plan… or drag-and-drop.
  • Stock suggestions (locations below their thresholds) always open a confirmation dialog first: it shows the full standard template, you can edit items and bags, and nothing is created until you confirm; dismissed suggestions remain unplanned
  • Resolving a request promotes it to a task; the request stays open until that task is actually completed

Stop Composer (Work Package)

Open Work Package on any stop to:

  • view and edit the laundry item list (until packed)
  • add Maintenance, Other, or Transport / Errand tasks to the stop
  • toggle proof photo requirements
  • add a Supply refill: choose the full Supply profile or specific physical Storage Area + Item positions. The board freezes the resulting target snapshot; it never accepts a manually entered target quantity.
  • refresh an unstarted Supply snapshot from the same Work Package after a profile correction. Once the task or assigned route has started, create a new scoped marker instead.

A Supply marker without an active immutable snapshot blocks route start and must be detached/recreated by Operations. Each active snapshot line is then counted and completed exactly once: record the counted-before quantity, the actual top-up and, below target, a shortfall reason. The server computes the after-count from the immutable line; Operations never enters a target during completion.

Creating Tasks from the Tasks Page

Tasks → Create task shows type-specific fields:

  • Laundry delivery requires at least one laundry item — use Apply standard stock to prefill the location's template, then edit freely
  • Transport / Errand is available in this dialog: choose a location pickup and either a location or named custom dropoff. The Office view and Stop Composer remain additional entry points.
  • Validation problems are shown at the specific field, not as a generic error

Pack Station & Driver Field App

  • The Pack Station lists all stops with laundry to pack. Mark packed freezes the exact item manifest and deducts Central Storage; Unpack reverses it. After packing, the item list is locked.
  • The driver may start the route before every Laundry load is packed and return to the Pack Station between waves when vehicle capacity is limited. Only the Laundry stop being completed must already be packed with a positive confirmed bag count and its frozen manifest.
  • Packing is performed by the driver and confirms possession of the load. There is no separate driver-handover confirmation.
  • Drivers work their route in the Field App: stops in order, laundry manifest, frozen Supply targets, proof photos, and stop completion. Completing a stop updates stock at the destination automatically. For Supplies the driver records counted-before and actual delivery per frozen target line; an explicit zero delivery remains a report and needs a shortfall reason below target. The app keeps working with a spotty connection and syncs queued completions when back online; rejected legacy bodies must be repaired against the refreshed snapshot or explicitly discarded.

End-of-day Checklist

Operations and Admin can open End-of-day checklist from Daily Operations to maintain the checklist shown to drivers. Add recurring defaults for every day or select a Berlin calendar date for a one-off item. Each item can be edited with a title, optional driver instructions, and explicit optional- or required-photo settings; use the up/down buttons to set its order on mobile as well as desktop.

Archiving removes an item from future live checklists without deleting historical completion records. The checklist remains informational: an incomplete item or missing photo never blocks route or shift completion.


Demand & Planning Work List

The Plan Board work list is the daily demand lane. It combines Demand Inbox items, dated backlog, overdue work, and open attention for the selected planning day.

Daily Planning

  1. Open Plan Board and select the planning day.
  2. Review the work-list lanes. Requests must first be resolved into Tasks; Tasks can then be planned to a shift.
  3. Confirm laundry demand from the Demand Inbox against the full standard template before it creates work.

Procurement

For weekly purchasing, use the Orders page, backed by /api/orders/suggest. It aggregates the existing procurement demand for Central Storage; it is not a driver-route planning surface.


External Task Handoff

Operations and Admin can hand off an eligible Task to a contractor. Use this only for Deep clean, Inspection, Maintenance, or Other Tasks.

Start the handoff from either path:

  1. In the Task detail drawer, open External handoff under Assignment, enter Contractor name (required) and Contact (optional), then choose Assign externally.
  2. In Manual Replan, choose Assign externally to open the form, enter Contractor name and Contact (optional), then choose Confirm external handoff.

The handoff clears the internal assignment and detaches active, uncompleted route links; completed route history remains intact. While it is active, the Task shows the contractor snapshot; internal assignment and route controls are unavailable. Contractor contacts remain visible to Operations/Admin only.

To finish the work, use Complete externally. To withdraw it for internal follow-up, use Return to internal pool; this closes the contractor handoff and returns the Task to the unassigned Task pool.


Transactions

Transactions record all stock movements.

Transaction Types

Type Description
Delivery Items delivered to a location (increases stock)
Usage Items consumed/removed (decreases stock)
Adjustment Manual inventory correction (increase or decrease)

Viewing Transactions

The Transactions page shows:

  • Date and time
  • Location
  • Item
  • Quantity (+/-)
  • Type
  • Notes

Filtering Transactions

Filter by:

  • Location
  • Item
  • Transaction type
  • Date range

Consumption Settings

Configure how the system calculates item needs.

Consumption Modes

Each location can use one of three modes:

Mode How It Works
Reservation-Based Calculates based on actual guest count from reservations
Fixed Guests Uses a fixed guest count (e.g., always prepare for 4 guests)
Max Guests Uses maximum capacity of the unit

Setting Consumption Mode

  1. Go to Consumption
  2. Find the location
  3. Select the preferred mode
  4. If using "Fixed Guests", enter the number
  5. Save

Item Consumption Rules

Configure how many items are needed:

  • Per Guest: Items multiplied by guest count (e.g., 1 towel per guest)
  • Per Bed: Sheets are linked on each bed (see Bed Sheet Linking) and counted 1× per bed
  • Per Bathroom: Items based on bathroom count (e.g., 1 bath mat per bathroom)
  • Fixed: Same quantity regardless of guests (e.g., 1 doormat)

Unit Settings (v2)

Each unit has additional settings that affect consumption:

Setting Description Default
Pillows per Guest Number of pillows prepared per guest (affects pillowcase count) 2

Bed Sheet Linking (v2)

When creating or editing a bed, you can link it to a specific sheet item:

  1. Go to the Unit configuration
  2. Add or edit a bed
  3. Select the Sheet Item from the dropdown (shows only sheet/linen items)
  4. Save

This enables accurate per-bed sheet consumption: exactly 1 of the linked sheet per bed.

Estimated Bags

The system now estimates laundry bags needed based on duvet covers:

  • Formula: ceil(duvet_covers ÷ 4)
  • This is shown as an estimate in consumption previews

Rejected Items (Quality Returns)

Track items received from the laundry supplier that don't meet quality standards. These items should be returned to the supplier.

Important: Rejected items are NOT items we need to buy/replace. They are items the laundry company delivered to us that are unfit for use. Recording them helps:

  • Track what to return to the supplier
  • Explain why stock levels are lower than expected
  • Document quality issues with the laundry service

Recording Rejected Items

When you receive laundry that doesn't meet standards:

  1. Go to Rejected Items
  2. Click "Record Rejected Items"
  3. Select the location (usually the storage/office where delivery arrived)
  4. For each item:
    • Select the item type
    • Enter quantity
    • Select reason:
      • Damaged: Torn, broken, holes
      • Stained: Permanent stains that weren't removed
      • Worn: Excessive wear and tear
    • Optionally add a photo as evidence
    • Add notes if needed
  5. Save

Process Later Flag

For items needing review before final decision:

  1. Check "Process Later" when recording
  2. Items appear in a separate list for review
  3. Come back later to make final decision (accept or return)

Returning Items to Supplier

After recording rejected items:

  1. Set aside the physical items for return
  2. Use the Export CSV feature to generate a return list
  3. Include the list with items when supplier picks up or you drop off
  4. Mark items as "Processed" once returned

CSV Export

Export rejected items data for reporting:

  1. Go to Rejected Items
  2. Click "Export CSV"
  3. Select filters (date range, location, item type)
  4. Download the file

Common Workflows

Morning Routine

  1. Check Dashboard for critical locations (red badges)
  2. Review the Plan Board work list for delivery priorities
  3. Plan shifts and laundry deliveries on the Plan Board
  4. Drivers see their route in the Field App automatically

After Delivery Returns

  1. Driver marks stops as complete
  2. Record any rejected items (red bag)
  3. Verify stock levels if discrepancies

Weekly Inventory Check

  1. Visit each location (or coordinate with cleaners)
  2. Count actual stock
  3. Go to Stock → Adjust for any corrections
  4. Note reasons for discrepancies

End of Month

  1. Export Transactions for the month
  2. Review Rejected Items report
  3. Export rejected items list for supplier reconciliation
  4. Verify returns have been credited by supplier

Troubleshooting

Stock Numbers Don't Match Reality

  1. Go to the location's Stock page
  2. Click "Adjust" on the incorrect item
  3. Enter the correct count
  4. Select reason "Inventory Count"
  5. Add notes about the discrepancy

Reservation Not Showing

  1. Verify the reservation dates are correct
  2. Check if the correct unit is selected
  3. Make sure the location is active

Demand or Order Suggestions Seem Wrong

  1. Verify current stock levels are accurate
  2. Check consumption mode settings for the location
  3. Review upcoming reservations and guest counts
  4. Adjust standard stock levels if needed; then review the affected Demand lane or Orders suggestion again

System Running Slow

  1. Try refreshing the page
  2. Clear browser cache
  3. Check internet connection
  4. Contact IT support if issues persist

Quick Reference

Keyboard Shortcuts

Shortcut Action
Ctrl/Cmd + K Quick search
Escape Close modal/dialog
/ buttons Reorder stops in delivery builder

Status Colors

Color Meaning
🔴 Red Critical - Immediate action needed
🟡 Yellow Warning - Plan action soon
🟢 Green OK - No action needed
🔵 Blue Information
⚪ Gray Inactive/Disabled

Contact

For technical issues or feature requests, contact your system administrator.

DSGVO Audit Anonymization

If a confirmed deletion/anonymization request affects audit content, use the dashboard workspace script in dry-run mode first:

  1. pnpm --filter @ops/dashboard anonymize-audit -- --table=<table> --record-id=<id>
  2. Or match by internal user record: pnpm --filter @ops/dashboard anonymize-audit -- --user-id=<id>
  3. Re-run with --apply only after verifying the reported matches.

The script preserves timestamps, diff keys and actor metadata, but replaces before_json and after_json with an anonymized marker.

Request resolution and transport

  1. In Requests, choose a Request type and use Resolve and plan. Confirm the editable Laundry item rows before creating a Laundry delivery; a missing standard-stock template leaves the item editor usable for a manual repair. After confirmation the resulting Task type and title are shown and the plan board opens for the request day (or today when no day was set). For Other, enter a concrete description; blank descriptions cannot be promoted.
  2. A Transport / Errand request (stored as special_dispatch) becomes a Transport / Errand task only after both pickup and dropoff locations are chosen. In the manual Transport / Errand editor, pickup stays a location and dropoff may instead be a named custom destination. The route preview always shows pickup before dropoff. Supply refill remains unavailable for manual request intake and promotion until its explicit scope is captured.
  3. A Laundry task marked Needs resolution has no item rows and must be repaired in its task drawer before it can be assigned to a driver shift.
  4. A promoted request shows a direct Task link and every assigned Stop/plan day as links; Transport has separate pickup and dropoff links once planned.
  5. Use a custom destination only for Other or as the dropoff of a manually created Transport / Errand. Assigning it from Demand Inbox creates or reuses a custom driver stop carrying its name and address. The read-only docs/runbooks/audit-laundry-ops-slice5.sql was executed once as PR evidence for Slice 5; it is not a recurring reporting or operator procedure.

End of Staff Manual