
Global sending mode set to Drafts-only.
02 / IntegrationsCapability matrix
Every operation in the mandatory technical milestone, with its verified state: supported, tested, limited or unavailable. Each row carries the approved substitute or manual fallback, the operational impact and the cost note, so integration scope can be frozen on evidence rather than assumption.
| Integration area | Capability | Status | Fallback | Operational impact | Cost note |
|---|---|---|---|---|---|
| Beds24 API V2 — channel management | |||||
| Read / write access | Live read and write against Beds24 API V2 on the mapped unit set | TESTEDINFORMATIONAL | No substitute approved; operations wait for the connection | Availability and rate changes cannot reach the channel until access is confirmed | Included |
| Unit mapping | Stable unit identity mapped between Beds24, the CRM and the contract system | TESTEDINFORMATIONAL | Manual reconciliation against the exported unit list | Mapping is the precondition for every other Beds24 operation | Included |
| Booking and block creation | Create a booking or a direct contract block on a mapped unit | TESTEDINFORMATIONAL | Manual entry in Beds24, recorded against the CRM case | Direct-contract commitments depend on the block being written and read back | Included |
| Booking and block amendment | Amend dates, occupancy and amounts on an existing booking or block | TESTEDINFORMATIONAL | Manual amendment in Beds24 with the change logged in the CRM | Extensions, early arrivals and occupancy changes follow the amendment path | Included |
| Open-ended block extension | Extend an open-ended block beyond the current horizon | LIMITEDREVIEW | Staff-triggered extension, recorded in the CRM with the Beds24 reference | Open-ended tenancies stay protected; extension is not unattended | Included |
| Termination updates | Remove only the superseded block after a human approves a termination | LIMITEDREVIEW | Manual removal after written approval, with evidence retained | Never automatic; a signed contract is never silently cancelled | Included |
| Channel connections | Portals and channels connected to the Beds24 listing set | LIMITEDREVIEW | Per-channel confirmation read back in Beds24 before propagation is relied on | Channel propagation is asserted per connection, not assumed for the portfolio | Per connection |
| PriceLabs rates | PriceLabs writes the channel rate for the mapped date ranges | LIMITEDREVIEW | Rate set manually in the channel for the affected dates | PriceLabs and CRM rules must never compete to write the same rate | Subscription |
| Duplicate and timeout handling | Reconcile a repeated or timed-out write against the external record before retrying | TESTEDINFORMATIONAL | Reconciliation against Beds24 before any retry is issued | Underlies the no-duplicate-financial-postings acceptance gate | Included |
| Cleaning-notice ownership | Exactly one sender owns cleaning notices across CRM and Beds24 | UNAVAILABLEBLOCKING | CRM owns the notice; Beds24 must not also send it | Duplicated notices mislead cleaners and are treated as an exception | No change |
| Automatic calendar maintenance | Unattended repair of divergent calendars across CRM, Beds24 and the channels | UNAVAILABLEBLOCKING | Exception raised and staff notified; never recorded as silent completion | Unsupported operations are surfaced, not closed without evidence | No change |
| Unsupported operations | Operations confirmed as outside the Beds24 API V2 capability set | UNAVAILABLEBLOCKING | Recorded as exceptions with the manual step kept in place | Migration effort and manual steps are planned, not assumed away | Manual effort |
| Retry and failure path | Failed operations enter review rather than being retried blindly | TESTEDINFORMATIONAL | Approved changes and failed operations enter the CRM review queue | Failures remain visible with the proposed next step and an owner | Included |
| AbaNinja and bank evidence — accounting | |||||
| Original receipt capture | PDF, JPG and PNG receipts and invoices captured from CRM upload and the intake mailbox | TESTEDINFORMATIONAL | Manual upload into the CRM with the original preserved | Originals are retained and linked to the booking record | Included |
| Document extraction | Extraction of supplier, invoice number, date and amount without contradiction | LIMITEDREVIEW | Staff key the fields from the original document into the review queue | Uncertain or incomplete documents route to review rather than blind booking | Per document |
| Validation | File checksum plus supplier, invoice-number, date and amount checked before use | TESTEDINFORMATIONAL | Manual duplicate check against the supplier record | Duplicates are caught across upload, email and retry paths | Included |
| Posting to AbaNinja | A checked document booked with account, tax code and property or cost allocation | LIMITEDREVIEW | Staff post the entry in AbaNinja and the link is recorded in the CRM | Posting an expense stays separate from authorising any outgoing payment | Included |
| Acknowledged booking status | Final status taken only from an acknowledged AbaNinja operation | UNAVAILABLEBLOCKING | Status stays pending until the acknowledgement is returned | No booking is reported as complete from a local state change alone | No change |
| Stable bank transaction IDs | Transaction identity that survives refresh cycles and re-imports | LIMITEDREVIEW | Transactions matched on amount, date and reference until IDs are confirmed | Allocation and reversal depend on a transaction remaining identifiable | Included |
| Refresh coverage | Scheduled refresh of booked incoming payments from the bank feed | LIMITEDREVIEW | Manual statement import into the reconciliation queue | Reconciliation freshness and coverage limits apply to every feeder | Provider fee |
| Booked-versus-pending distinction | Booked and pending bank transactions kept visibly apart | TESTEDINFORMATIONAL | Pending amounts excluded from confirmed receipt status | Prevents a payment being treated as received before it is booked | Included |
| Allocation | Receipts allocated against the rent obligation for the correct contract and period | TESTEDINFORMATIONAL | Staff allocate the receipt and record the reason | Rent, deposit, cleaning fees and other charges stay separate | Included |
| Reversals | Reversal through the supported process, with correction history preserved | LIMITEDREVIEW | Reversal arranged with the accounting owner; history retained | A posted entry is never deleted to make a reconciliation agree | Included |
| Stale-feed detection | A feed that has stopped updating is detected and surfaced | TESTEDINFORMATIONAL | Staff confirm the feed state before reminders rely on it | Prevents false arrears caused by known stale data | Included |
| OCR licensing | Document extraction must run on a licensed route | UNAVAILABLEBLOCKING | Manual keying remains available if the licence is not confirmed | Extraction is not activated on an unlicensed path | Licence required |
| Outgoing payment execution | Automatic execution of outgoing bank payments | UNAVAILABLEBLOCKING | Payment remains a human, external step; settings cannot silently enable it | Deliberately excluded from the delivered scope | Not applicable |
| WhatsApp and notification reliability — messaging | |||||
| Inbound authentication | Incoming messages authenticated before any handling | TESTEDINFORMATIONAL | Unmatched senders are not treated as guests | Protected information is only reachable after matching | Included |
| Deduplication | Messages deduplicated by message ID | TESTEDINFORMATIONAL | Repeated webhook deliveries discarded rather than re-answered | Prevents duplicate replies and duplicate internal work | Included |
| Media intake | Images and documents received on the channel and attached to the case | LIMITEDREVIEW | Staff request the document by email and attach it in the CRM | Evidence capture depends on the intake path being available | Provider fee |
| Approved proactive templates | Only templates approved for the account may open a conversation | LIMITEDREVIEW | Staff send from the recorded mailbox where a template is not approved | Template approval gates every proactive message | Per message |
| Delivery and failure status | Delivery and failure state recorded per outbound message | TESTEDINFORMATIONAL | Undelivered items remain visible in the queue for staff action | An uncertain send is reconciled before it is ever retried | Included |
| Opt-out handling | An opt-out is honoured and stops further proactive contact | TESTEDINFORMATIONAL | Contact-stop recorded against the identity and respected by follow-ups | Follow-up rules stop at the opt-out before anything is sent | Included |
| Device and user mapping | Internal push routed to the correct device and staff user | LIMITEDREVIEW | Internal alerts fall back to the in-app queue and email | Urgent escalation depends on a mapped recipient rather than a broadcast | Included |
| Acknowledgement | Recipient acknowledgement recorded for urgent internal alerts | LIMITEDREVIEW | Unacknowledged urgent alerts repeat under the agreed rule | Urgency stays attributable to a named owner | Included |
| Urgent repeat rule | An unacknowledged urgent alert repeats; normal tasks and drafts never do | LIMITEDREVIEW | Staff confirm the urgent item manually in the queue | Draft and normal-task volume stays out of the push channel | Included |
| Reply matching | A reply is matched back to the correct thread and identity | TESTEDINFORMATIONAL | Unmatched replies surface as an exception for staff association | Prevents a single enquiry being handled by two parallel workflows | Included |
| Contact via the clickable handover link | WhatsApp conversation opened from a prefilled opaque enquiry reference | LIMITEDREVIEW | Email and portal contact remain available while the handover asset is unconfirmed | Channel use waits on confirmation of permitted use of the handover asset | No change |
SOURCE: Integration proofSHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
Integrations · Proof gates
Pearlstay-authorised integration capabilities must be demonstrated in a sandbox or an isolated test workflow before committing to full implementation. No live guest obligations are created and no real reminders are sent. Integration scope is frozen only after this milestone is satisfied.
8 gates
Provider key mapped to the CRMW unit identity with no orphan or duplicated units.
Integration engineering
Blocking. No target-state cutover while any unit is unmapped or mis-mapped.
Availability readback matching the authoritative contract position at the moment of the check.
Integration engineering
Blocking. No booking decision may rely on this source alone until readback agrees.
Created booking and block records with stable provider identifiers recorded against the unit.
Integration engineering
Blocking. Creation remains a manual step until creation is proven on the test unit.
A dated amendment trace showing the changed dates, the change reason and the resulting state.
Integration engineering
Blocking. Amendments stay under human handling until the trace is complete.
Readback confirming the open-ended block remains extended after the operation.
Integration engineering
Blocking. An unverified extension returns the unit to manual calendar maintenance.
Only the superseded item removed, with the removal recorded in the audit trail.
Integration engineering
Blocking. Removal acts only after the human termination approval and never before it.
A repeated request and a timed-out request reconciled against the external record before any retry.
Integration engineering
Blocking. An unproven retry path keeps the affected operation in review.
A channel change observed end to end with the resulting channel value captured as evidence.
Integration engineering
Blocking. Inventory-channel writes stay paused while propagation is unproven.
2 gates
One named owner for the cleaning notice, with the notice traceable to its source record.
Operations ownership
Blocking. Turnover scheduling keeps a named human owner until ownership is proven.
Each unsupported operation enumerated with its approved substitute or documented manual fallback.
Operations ownership
Blocking. Unsupported automatic calendar maintenance is recorded as an exception, never as silent completion.
6 gates
The original document retained and linked to its AbaNinja record, unaltered.
Accounting operations
Blocking. Documents without a retained original are not booked.
Extracted fields compared against the source document at field level.
Accounting operations
Blocking. Automated document booking stays off while field-level agreement is unproven.
Duplicate detection by file checksum and by supplier, invoice number, date and amount.
Accounting operations
Blocking. A failed or timed-out booking request is reconciled against the external record before retry.
Proposed account, tax code and property or cost allocation carried into the acknowledgeable booking request.
Accounting operations
Blocking. Posting an expense stays separate from authorising any outgoing payment.
Final status taken only from an acknowledged operation returned by the accounting system.
Accounting operations
Blocking. No success state is shown before the external system acknowledges it.
Stable identifiers, refresh coverage, booked-versus-pending distinction, allocation and reversals on the actual account.
Accounting operations
Blocking. A stale feed raises an exception, blocks the affected allocation and notifies staff.
10 gates
Authenticated inbound events on the actual account with the source recorded.
Messaging operations
Blocking. Unauthenticated inbound events are discarded, never answered.
Duplicate webhook events collapsed by message identifier, with the duplicate count recorded.
Messaging operations
Blocking. A duplicated event never produces a second send.
Inbound media preserved and linked to the conversation record.
Messaging operations
Blocking. Media that cannot be preserved routes to review instead of being dropped.
Approved template references in use for template-initiated contact, with documented consent.
Messaging operations
Blocking. Template-initiated contact stays disabled without the approved references.
Delivery and failure states reconciled per send before any retry is offered.
Messaging operations
Blocking. An uncertain send is reconciled; it is never retried on a timer alone.
Opt-out recorded against the contact and honoured on every later send.
Messaging operations
Blocking. An opted-out contact receives no proactive message of any kind.
Internal push mapped to named devices and users on the actual account.
Messaging operations
Blocking. An unmapped recipient falls back to the dashboard task, not to silence.
Acknowledgement captured and recorded against the originating alert.
Messaging operations
Blocking. An unacknowledged urgent alert escalates again.
The repeat applies to the urgent class only, and normal tasks and drafts raise no individual push.
Messaging operations
Blocking. The repeat stays limited to the urgent class while it is unproven.
A reply matched back to its originating conversation record.
Messaging operations
Blocking. An unmatched reply becomes a review item for staff.
Scope freeze
Integration scope is frozen only after this milestone is satisfied.
Exception rule
Unsupported automatic calendar maintenance is treated as an explicit exception with an approved substitute or manual fallback — never as silent completion.
Conflict rule
An unresolved conflict blocks the action and notifies staff. A signed contract is never silently cancelled.
SOURCE: Integration proofSHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
04 / Provider adapters
How each integration is built, which system owns which write, and what stays outside the scope. Every boundary below is a rule, not a preference.
The production CRM adapter is built directly for Beds24, not as a full Lodgify integration that is later rebuilt. A replaceable integration module separates business rules from the provider adapter: operations are expressed provider-neutral and the provider-specific wiring lives in provider-keyed mappings.
Lodgify remains live until a verified cutover. Only the Beds24 production adapter is in scope; no parallel Lodgify production adapter is maintained.
SOURCE: IntegrationsBeds24 adapter boundarySHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
Existing data is exported and reconciled before the switch. Original channel booking IDs and source ownership are preserved through migration, so a booking keeps the identity and origin it arrived with.
PriceLabs mappings and discounts are confirmed, not assumed. One single sender owns guest messages and cleaning notices across CRM and Beds24.
SOURCE: IntegrationsMigration safeguardsSHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
PriceLabs and CRM rules must never compete to write the same channel rate. Two writers on one rate is a direct conflict, so the boundary fixes which system owns that write.
A market-data-based revenue-management engine is not included in this delivery. No new pricing rules are introduced that would write against the PriceLabs rate.
SOURCE: IntegrationsPriceLabs boundarySHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
A qualified electronic signature platform satisfying Swiss ZertES requirements is selected on lowest total cost that meets the Swiss signature, integration, reliability and usability requirements. DeepSign, Swisscom Sign and SwissSign are the initial candidates.
Existing individual signature and countersignature approval rules are preserved — no new signing authority is granted by this integration.
SOURCE: IntegrationsE-signature boundarySHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
AbaNinja remains the accounting system behind the CRM interface. Specialist accounting configuration and closing may remain in AbaNinja; the CRM presents the operational view over it.
Closing, payroll, tax filings and outgoing-payment execution are not added by this integration.
SOURCE: IntegrationsAccounting boundarySHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
Source: Integration proofSHEET v2.10VALIDATED 15 Oct 2026 14:02Europe/Zurich

Global sending mode set to Drafts-only.
A WhatsApp AI for guests and prospects, and one CRM for rentals, accounting, rent collection and Beds24 channel management. Every rule is versioned, every check is recorded, and nothing is sent until its conditions are revalidated.
02 / System overview
Gates 01-06
An inbound WhatsApp message is authenticated, deduplicated and classified, then checked against availability, price, payment status, permissions and approvals before any reply is sent. It exits into exactly one of two coded outcomes.
Source: Contract systemSheet v2.10Validated 15 Oct 2026 14:02 Europe/Zurich
04 / Sending modes
One global sending mode governs every outbound message on the platform. Each process then runs in its own mode underneath it. The global mode always wins: if sending is paused, no process sends, whatever its own mode says.
Three cells · one active · platform-wide
Outbound guest and prospect messages are prepared as drafts for staff review. Nothing leaves the platform until a staff member approves and sends it.
Sending blocked · staff approval required
Messages are sent automatically only after every hard check passes and the configured confidence threshold is met for that process.
Sending permitted where all checks pass
External sending stops immediately and stays stopped until the mode is deliberately changed. Queued actions are held, not discarded.
Emergency stop · sending suspended
Drafts-only is the global override. It outranks a process set to automatic, and it blocks the release of access details, offers and payment confirmations until a staff member sends them.
Automatic / review / disabled · set per process
Applies to the named process only. The reply is generated, all hard checks are re-run immediately before sending, and the message is released without staff involvement.
The process prepares the reply and files it for staff review. A staff member edits, approves or rejects it; only an approved draft is sent.
The process produces no outbound message at all. Its internal tasks still run and still appear in the CRM queues, but nothing is drafted for sending.
Internal accounting tasks and arrears alerts operate independently of the global sending mode. Rent obligations, allocation checks and arrears cases continue to be created and surfaced in the CRM while sending is drafts-only or paused.
Business authority is separate from sending permission. Being responsible for a decision does not authorise the system to send it; approval is bound to the exact action details and is invalidated when those details materially change.
A confidence score never grants authority. A high confidence score does not bypass availability, price, payment, permission or approval conditions, and it is not a substitute for deterministic validation.
SOURCE: Contract system · SHEET v2.10 · VALIDATED 15 Oct 2026 14:02 Europe/Zurich
05 / Workflow gates and acceptance
Four hard gates — identity, payment, contract and time — are enforced by deterministic services. Release criteria, staged deployment, rollback and the model-and-rule update process are stated below as rules with their verification evidence.
Identity, payment, contract and time gates must pass before any access code enters model context or is sent.
Gate orderIdentity → Payment → Contract → Time
Enforced byDeterministic services
Release requires zero observed critical violations in the agreed acceptance suite.
ScopeThis is a release gate, not a guarantee of zero future errors. Fix and rerun failures before activating the affected process.
Acceptance suiteAgreed critical-violation suite
ThresholdZero observed critical violations
Stages 1-6 proceed in order; each stage completes before the next begins.
Stage countSix, executed in order
Stage 1Integration proof
Stage 6Monitor and expand
A failure returns the affected process to staff review; a global stop halts issuing across every process.
On failureProcess returns to review automatically
OverrideGlobal stop control
A change to any versioned artefact passes a representative regression suite before it reaches production.
RegressionRun the representative regression suite before changes reach production; compare results and retain a rollback version. A model upgrade or a second model is not a substitute for deterministic validation.
Versioned artefacts5 tracked items
Before releaseRepresentative regression suite
SOURCE: Contract systemSHEET v2.10VALIDATED 15 Oct 2026 14:02 Europe/Zurich
06 / Access PathsVersion 2.1015 October 2026Pages 22-36
Six accepted personas reach Pearlstay through defined entry points. Staff authenticate before any record is reachable; guests and prospects enter through WhatsApp, where the message is authenticated and deduplicated before any answer is prepared. Each row carries its coded gutter as well as its text label.
01
Views the public landing page, then proceeds to authenticate as a staff account before any receipt, booking or rent record is reachable.
02
Views the public entry information before reaching cleaner and tradesperson tools. No existing cleaner or tradesperson account yet, so an account is created first.
03
Messages the Pearlstay WhatsApp number instead of using an account. The AI authenticates the sender and deduplicates the message before answering.
04
Views the public landing page before authenticating, then proceeds to authenticate. A new staff member registers before first access.
05
Views the public entry page carrying the system diagram and version metadata, then chooses to sign in to the CRM.
06
Lands on the public WhatsApp entry point and initiates WhatsApp or channel contact for an accommodation search.
SOURCE: Contract system · SHEET v2.10 · VALIDATED 15 Oct 2026 14:02 Europe/Zurich
No comments yet. Be the first!