COMMUNICATION & SUPPORT
The Communication & Support module is Leaseora's connected service-management layer. It allows a real estate company to communicate with prospects, clients, staff and vendors; convert questions into trackable inquiries or tickets; apply service targets; notify the correct people; measure satisfaction; collect feedback and reviews; and manage formal disputes without losing the property, lease, maintenance or user context.
|
LEASEORA COMMUNICATION & SUPPORT End-to-End User and Technical Operations Guide Chats • Property Inquiries • Support Tickets • Canned Responses • SLA • Surveys • Notifications • Feedback • Reviews • Disputes • AI Assistance |
For real estate companies, corporate landlords, property managers, support teams, leasing teams, facility teams, legal teams, vendors and customer-success operations
Version 1.0 | July 2026
|
Purpose of this guide This guide explains how a real estate company operates Leaseora's Communication & Support module across real-time chat, property inquiries, maintenance conversations, support tickets, assignments, service-level agreements, canned responses, satisfaction surveys, notifications, platform feedback, AI feedback, reviews and formal disputes. It separates everyday operating procedures from technical references for the supplied models, controllers, services, events, notifications, mail classes and AI tools. |
Document Control
|
Item |
Details |
|
Document title |
Leaseora Communication & Support Module - User and Technical Operations Guide |
|
Version |
1.0 |
|
Date |
July 2026 |
|
Owner |
Leaseora |
|
Primary audience |
Real estate companies, corporate landlords, property managers, support agents, leasing/CRM staff, maintenance teams, legal/compliance staff, customer-success teams and authorised administrators. |
|
Client audience |
Clients, tenants, corporate occupiers, prospects and applicants using web or mobile communication and support functions. |
|
Technical audience |
Product, engineering, QA, security, integration and platform-operations teams. |
|
Basis |
The supplied end-to-end Communication & Support scenario, controller actions, models, services, events, notifications, mail classes and AI tools. |
|
Support |
support@leaseora.com | leaseora.com |
How to Use This Guide
|
Reader |
Recommended sections |
|
Company director / operations lead |
Purpose, roles, module journey, governance, dashboards, service review, worked examples and go-live checks. |
|
Support manager |
Ticket setup, assignment, SLA, escalation, canned responses, surveys, analytics, staffing and quality controls. |
|
Property / facility manager |
Chats, maintenance threads, inquiries, notifications, reviews and disputes. |
|
Support agent / customer success |
Chat handling, ticket replies, internal notes, canned responses, first-response tracking, status updates and surveys. |
|
Leasing / CRM team |
Property inquiries, direct chat, AI chat, notification follow-up and review management. |
|
Legal / compliance |
Disputes, evidence, internal notes, auditability, review moderation and sensitive communications. |
|
Technical / QA team |
Models, controllers, scopes, events, mail classes, API flows, AI services and user-acceptance testing. |
|
Terminology rule This guide uses Client in user-facing procedures. Backend class, route, model and field names may use Tenant; those technical names are preserved exactly where relevant. |
1 Purpose, Scope and Terminology
The Communication & Support module is Leaseora's connected service-management layer. It allows a real estate company to communicate with prospects, clients, staff and vendors; convert questions into trackable inquiries or tickets; apply service targets; notify the correct people; measure satisfaction; collect feedback and reviews; and manage formal disputes without losing the property, lease, maintenance or user context.
|
Item |
Description |
|
Primary scope |
Direct and group chat, maintenance chat, listing inquiries, support tickets, categories, tags, departments, assignment, escalation, SLA, canned responses, surveys, notifications, feedback, reviews and disputes. |
|
Context links |
Chats and support records can be connected to a Property, Lease, MaintenanceRequest, PropertyListing, landlord, client, vendor or department. |
|
Channels |
Web, mobile, API, chat, in-app notification, email, SMS and push where configured. |
|
AI scope |
Contextual chat, file analysis, ticket-reply drafting, escalation support, recommendations, summaries and AI-quality feedback. |
|
Management scope |
Unread workload, ticket volume, status, response and resolution time, SLA compliance, escalation, satisfaction, NPS, reviews and dispute performance. |
|
Technical scope |
Supplied models, controllers, services, events, notifications, mail classes, scopes and WebSocket/Pusher flows. |
Key terminology
|
Term |
Operational meaning |
|
Chat room |
A participant-based conversation record for direct, group, maintenance or inquiry communication. |
|
Property inquiry |
A ChatRoom of type inquiry, linked polymorphically to a PropertyListing. |
|
Support ticket |
A formal issue record with category, priority, status, assignment, SLA, escalation, messages, attachments and resolution data. |
|
Internal note |
A staff-only ticket note that is not visible to the ticket submitter. |
|
Canned response |
A reusable reply template inserted into a ticket or support response. |
|
SLA |
A service-level target for first response, resolution and escalation by priority. |
|
SLA breach |
A record showing that a response or resolution target was exceeded. |
|
Satisfaction survey |
Post-resolution client ratings and feedback, including recommendation intent. |
|
Notification |
A targeted message with type, priority, channel, deep link and delivery/read state. |
|
Feedback |
General platform or AI-specific quality input. |
|
Review |
A rating and comment from one party about another party or a vendor. |
|
Dispute |
A formal evidence-based escalation connected to a lease and resolution lifecycle. |
|
Module boundary Chats and inquiries are conversational. Support tickets create a formal service record. Disputes are formal escalations for unresolved or material issues. Staff should choose the workflow that matches the seriousness, evidence and accountability required. |
2 Roles and Responsibilities
|
Role |
Main responsibilities |
Key controls |
|
Corporate Landlord / Real Estate Company |
Owns communication policy, service standards, staff access, escalation decisions, survey review and dispute outcomes. |
Approves sensitive messages, policy exceptions, public responses and formal resolutions. |
|
Support Manager |
Configures categories, departments, SLA policies, assignment, escalation, canned responses, reporting and quality review. |
Balances workloads and reviews breaches, unresolved tickets and low ratings. |
|
Support Agent / Customer Success |
Responds to chats and tickets, records internal notes, uses templates, updates status and schedules follow-up. |
Separates client-visible replies from internal notes and records complete actions. |
|
Leasing / CRM Team |
Handles listing inquiries, prospect questions, viewings and application follow-up. |
Keeps property context accurate and resolves or reopens inquiry rooms appropriately. |
|
Property / Facility Manager |
Participates in property and maintenance conversations, coordinates vendors and gives operational updates. |
Uses only assigned properties and avoids unsupported completion promises. |
|
Maintenance Vendor |
Participates only in assigned maintenance chats and may respond to vendor reviews. |
Cannot access unrelated client, lease or support information. |
|
Legal / Compliance |
Reviews disputes, sensitive complaints, privacy issues, evidence, escalation and final wording. |
Preserves evidence and avoids deleting records required for audit or legal retention. |
|
Client / Tenant / Prospect |
Starts inquiries, sends messages, submits tickets and evidence, completes surveys, provides feedback and reviews, and raises disputes. |
Must use accurate information and respectful communication. |
|
Leaseora AI |
Answers contextual questions, analyses files and drafts support responses or recommendations. |
AI output requires human review and does not make binding legal, payment or dispute decisions. |
|
Leaseora SuperAdmin |
Configures platform categories, tags, departments, global SLA, notifications, analytics and oversight. |
Does not replace landlord ownership of client service decisions. |
3 Complete Module Journey
Figure 1. Communication & Support end-to-end service journey
|
Phase |
Business outcome |
Principal records |
|
1. Chat and AI assistance |
Users communicate in context and receive real-time or AI-assisted responses. |
ChatRoom, ChatMessage, AIChatbot, AIChatLog. |
|
2. Property inquiries |
Prospect questions become organised listing-specific conversations. |
ChatRoom type inquiry, ChatMessage. |
|
3. Support tickets |
Issues become formal, assignable, measurable service records. |
SupportTicket, SupportTicketMessage / SupportReply. |
|
4. SLA and escalation |
Response and resolution targets are enforced and breaches recorded. |
SLA, SupportTicketSlaPolicy, SupportTicketSlaBreach. |
|
5. Satisfaction and notifications |
Clients receive updates and provide structured post-resolution quality input. |
Notification, NotificationPreference, SatisfactionSurvey. |
|
6. Feedback and reviews |
The company captures platform, AI, landlord, client and vendor quality signals. |
Feedback, AIFeedback, Review, VendorReview. |
|
7. Dispute resolution |
Material unresolved issues follow a formal evidence and resolution workflow. |
Dispute, DisputeManagement. |
|
8. Analytics and improvement |
Management reviews volume, SLA, satisfaction, reviews and dispute outcomes. |
Controller analytics, reports and service metrics. |
4 Communication Architecture and Record Selection
Leaseora uses different records for different levels of communication. Selecting the correct record at the start prevents important service work from being hidden inside an informal message thread.
|
Need |
Use |
Why |
|
Quick one-to-one or group conversation |
ChatRoom / ChatMessage |
Real-time, participant-based and linked to property, lease or maintenance context. |
|
Prospect asks about a listing |
Inquiry ChatRoom |
Keeps the conversation linked to the PropertyListing and visible in the landlord inquiry inbox. |
|
Issue requires ownership, status and deadline |
SupportTicket |
Adds category, priority, department, assignee, SLA, escalation and resolution evidence. |
|
Repeated question |
CannedResponse |
Provides approved, consistent wording and tracks use. |
|
Post-resolution quality measurement |
SatisfactionSurvey |
Captures structured ratings and NPS-style recommendation intent. |
|
General product or service suggestion |
Feedback |
Tracks bug, feature request, complaint, praise or general input. |
|
Performance opinion after tenancy/job |
Review / VendorReview |
Creates a rating and comment attached to the relevant party or vendor. |
|
Formal unresolved issue |
Dispute |
Provides evidence, monetary amount, expected date, status history, notes and resolution. |
|
Escalate the record, not just the tone A difficult chat does not automatically become a formal dispute. When accountability, specialist ownership, SLA or evidence is required, create or transfer the issue into the appropriate ticket or dispute workflow and link the existing conversation. |
5 Implementation Prerequisites and Service Governance
Business information and decisions to prepare
☐ Approved support categories, tags and department structure.
☐ Named support managers, agents, supervisors, property managers and escalation contacts.
☐ Business hours, public holidays and time zone for SLA calculation.
☐ Priority definitions for low, medium, high, urgent and critical issues.
☐ First-response, resolution and escalation targets for each priority.
☐ Approved client communication tone, privacy rules and prohibited content.
☐ Canned response library for payments, maintenance, leases, applications and common technical issues.
☐ Rules for internal notes, attachments, evidence and sensitive personal data.
☐ Notification channels, quiet hours and recipient preferences.
☐ Survey questions, rating ownership and low-score recovery process.
☐ Review moderation and vendor-response policy.
☐ Dispute intake, evidence, mediation, approval and resolution policy.
☐ AI usage policy: what AI may draft, what requires human approval and what AI must not decide.
☐ Retention, export, audit and deletion rules for support and dispute records.
Recommended implementation sequence
1. Create ticket categories, tags and support departments.
2. Assign staff and confirm property or portfolio access.
3. Define priority criteria and create SLA policies.
4. Create approved canned responses and escalation templates.
5. Configure notification channels and quiet hours.
6. Test direct, group, inquiry and maintenance chat.
7. Submit and process test tickets through every status.
8. Test assignment, department transfer, escalation and SLA breach handling.
9. Test AI reply drafting, editing and human approval.
10. Resolve a test ticket and complete the public survey flow.
11. Test feedback, review, vendor response and formal dispute workflows.
12. Validate web, mobile, API, real-time events, exports, scopes and permissions before go-live.
|
Use individual accounts Every staff member should use an individual account. Shared accounts make it difficult to prove who replied, added an internal note, reassigned a ticket, changed status, resolved a dispute or sent a custom notification. |
6 Phase 1 - Chat System and Real-Time Conversations
Steps 1 to 7 explain how landlords, clients, staff, vendors and the AI assistant communicate through the web and mobile chat systems.
Figure 2. Unified ChatRoom architecture
|
STEP |
Access the Chat Dashboard Primary user: Landlord / Staff / Authorised User |
Navigate to Chats (/chats). Shared\ChatController@index or the landlord shared instance loads ChatRoom records where the authenticated user is a participant. scopeForUser($userId) enforces participation and scopeActive removes archived rooms from the default view.
|
Dashboard element |
What it shows |
Operational use |
|
Room list |
Direct, group, maintenance and inquiry rooms. |
Open the correct conversation without mixing contexts. |
|
Context |
Property, lease, maintenance request or inquiry link. |
Confirm which asset or service issue the messages concern. |
|
Participants |
Users recorded in participant_ids. |
Verify the intended client, staff or vendor can access the room. |
|
Unread count |
getUnreadCountForUser($userId). |
Prioritise messages that have not been read. |
|
Last message |
last_message_id and last_message_at. |
Sort and identify recent activity. |
|
Status |
Open, resolved or archived as supplied. |
Separate active work from completed conversations. |
|
Room type |
direct, group, maintenance or inquiry. |
Apply the correct handling procedure. |
|
Participation controls visibility hasParticipant(), addParticipant() and removeParticipant() control room membership. Staff should never add a user merely for convenience when the user does not have a legitimate need to see the conversation. |
|
STEP |
Create a New Chat Room Primary user: Landlord / Client / Authorised Staff |
Open the create-chat form through Shared\ChatController@create. Select eligible participants, choose the room type and add the relevant property or lease context. participantsByProperty($request) can narrow the eligible list to people connected to a specific property.
|
Field / decision |
Guidance |
|
Room name |
Use a clear purpose, property or group name for group rooms. |
|
Type |
Use direct for one-to-one, group for several users, maintenance for service work and inquiry for listing questions. |
|
Participants |
Include only people who need the conversation. Confirm the correct account before saving. |
|
Property / lease link |
Link the room where the conversation concerns a specific tenancy or asset. |
|
Maintenance request |
Use the dedicated maintenance chat flow rather than creating an unrelated room. |
|
First message |
State the issue or purpose clearly. The NewChatMessage event is fired when a message is sent. |
☐ Correct participant accounts selected.
☐ Context record confirmed.
☐ No sensitive information included unnecessarily.
☐ Purpose and expected next action stated.
|
STEP |
Send, Receive, Search and Read Messages Primary user: All Chat Participants |
Open a room through @show($chatRoom). Messages are loaded in pages and older records can be retrieved with @loadMoreMessages. @sendMessage creates the ChatMessage, updates the room's last-message fields and fires real-time and notification events.
|
Action |
System behaviour |
Control |
|
Send message |
ChatMessage created with chat_room_id, sender_id, message, type and attachments. |
Review recipient, context and wording before sending. |
|
Real-time delivery |
ChatRoomMessage implements ShouldBroadcast and broadcasts through WebSocket/Pusher. |
A WebSocket failure should not create a duplicate message. |
|
New-message alert |
NewChatMessage triggers notification dispatch. |
Respect notification preferences and quiet hours. |
|
Typing indicator |
@typing broadcasts a temporary typing signal. |
It is not a formal reply or service record. |
|
Mark read |
@markAsRead calls markAllAsReadForUser. |
Use after opening and reviewing the messages. |
|
Search |
@searchMessages performs room-specific full-text search. |
Search only rooms the user may access. |
|
Attachment download |
@downloadAttachment streams the message file. |
Inspect file type and access permission before download. |
|
Messages are part of the service record Do not promise a refund, waive a charge, admit liability or confirm a legal outcome in chat unless the sender has authority and the decision is also recorded in the appropriate payment, ticket, lease or dispute workflow. |
|
STEP |
Manage Group Chat Participants Primary user: Room Creator / Authorised Manager |
Use @potentialParticipants to view eligible users not currently in the room. @addParticipants adds new users; @removeParticipant removes a selected member; @leaveRoom allows the current user to leave.
|
Operation |
Before action |
After action |
|
Add participant |
Confirm legitimate need, role and context. |
Tell the room when relevant and verify access. |
|
Remove participant |
Confirm assignment ended or access is no longer required. |
Ensure future messages are inaccessible to the removed user. |
|
Leave room |
Confirm another responsible person remains if work is active. |
Reassign any open responsibility outside the room. |
|
Archive room |
Confirm work is complete and records are retained. |
Room moves out of the active list but remains available under archived scope. |
|
STEP |
Use the Maintenance Request Chat Primary user: Landlord / Client / Assigned Vendor |
Open the maintenance thread with @showMaintenanceChat($maintenanceRequestId). Leaseora creates or loads the ChatRoom linked to maintenance_request_id. The landlord, client and assigned vendor can coordinate in one thread through @sendMaintenanceMessage.
|
Recommended message stage |
Content to record |
|
Initial acknowledgment |
Issue received, current priority and next update time. |
|
Access coordination |
Approved visit date, time, contact and access constraints. |
|
Vendor update |
Diagnosis, parts or specialist requirement and revised timing. |
|
Client update |
Safety advice, temporary workaround and expected next step. |
|
Completion |
Work completed, remaining issue, photos or invoice reference. |
|
Closure |
Client confirmation or reason the request remains open. |
|
Do not replace the maintenance record The chat supports coordination. The MaintenanceRequest remains the authoritative record for assignment, status, cost, approval, evidence and completion. |
|
STEP |
Use Mobile and API Chat Primary user: Mobile Client / Mobile Landlord / Integration |
API\Chat\ChatController provides direct user chat and group operations. @show($request, $userId) loads or creates the direct room; @store sends a message; @downloadAttachment streams a file; @addParticipants and @leaveChat manage group access.
|
API action |
Expected result |
|
show(userId) |
Existing direct room returned or a new eligible direct room created. |
|
store(userId) |
Message saved once, room last-message fields updated and events fired. |
|
downloadAttachment(messageId) |
Attachment returned only after participant authorisation. |
|
addParticipants(chatRoomId) |
Eligible users added without duplicating existing participants. |
|
leaveChat(chatRoomId) |
Current user removed according to room rules. |
|
STEP |
Use the Leaseora AI Chat Assistant Primary user: Landlord / Client / Staff |
LeaseoraAI\ChatController and LeaseoraAIService provide a contextual assistant for leases, properties, maintenance, payments and general real estate questions. Mobile clients use API\Mobile\Tenant\AIChatController with OpenAIService.
|
Action |
Purpose |
Human control |
|
query |
Send a contextual question and receive an AI response. |
Verify facts against the active record before acting. |
|
history / search |
Review or search previous AI conversations. |
Do not treat an old answer as current without checking records. |
|
feedback / addReaction |
Rate or react to a response. |
Use text feedback for material errors. |
|
exportChat |
Export the conversation as PDF/text. |
Apply privacy and retention controls. |
|
saveCustomInstructions |
Set user-specific AI behaviour instructions. |
Instructions must not override policy, access or legal controls. |
|
uploadFile / analyzeFile |
Analyse a lease, invoice, contract or other file inside chat. |
Confirm file authority and review extracted information. |
|
recommendations |
Produce contextual property, maintenance or payment suggestions. |
Recommendations are advisory. |
|
deleteSession |
Remove a selected mobile AI session. |
Follow retention and account policy. |
AI chat interactions use AIChatbot and AIChatLog records. AIChatHistoryUpdated and AIChatMessageSent events track conversation activity. AiLeasingChatSummary can email a session summary to the user.
|
AI is an assistant, not an authorised agent AI may draft, explain and recommend. It must not independently promise payment outcomes, approve maintenance cost, change lease terms, close a dispute, disclose restricted data or send a binding support response without authorised human review. |
7 Phase 2 - Property Inquiries and Landlord Inbox
|
STEP |
Start a Property Inquiry Primary user: Client / Prospect |
A client or prospect starts an inquiry from a property listing through API\Mobile\Tenant\PropertyInquiryController@startInquiry. Leaseora creates a ChatRoom of type inquiry, sets inquirable_type = PropertyListing and inquirable_id = listing.id, adds the client and listing landlord, stores the first ChatMessage and fires NewInquiryMessage.
|
Client action |
System result |
|
Open listing and select inquiry |
Correct PropertyListing context loaded. |
|
Enter first question |
First ChatMessage created in the inquiry room. |
|
Submit inquiry |
Client and landlord added as participants. |
|
View My Inquiries |
@myInquiries returns the client's active inquiry rooms. |
|
Open messages |
@getMessages($roomId) returns the authorised room history. |
|
Send follow-up |
@sendMessage adds a message and triggers real-time/notification flow. |
|
One listing, one correct context The inquiry should be linked to the exact listing the prospect opened. Staff should not answer with pricing, availability or terms from a different unit or property. |
|
STEP |
Manage the Landlord Inquiry Inbox Primary user: Leasing / CRM / Landlord |
Navigate to Support -> Inquiries (/support/inquiries). LandlordInquiryInboxController@index lists inquiry rooms with scopeByType('inquiry') and scopeForUser($landlordId). Use filters for unread only, property, status and date range.
|
Action |
Procedure |
Outcome |
|
Open inquiry |
Use @show($roomId); review listing, prospect profile and all messages. |
Correct context and response history visible. |
|
Reply |
Use @reply; answer accurately and state the next action. |
ChatMessage created and ChatRoomMessage broadcast. |
|
Resolve |
Use @resolve when the question is complete or converted to another workflow. |
ChatRoom.status becomes resolved. |
|
Reopen |
Use @reopen when new activity requires further action. |
Status returns to open. |
|
Monitor unread |
Use @unreadCount for the inbox badge. |
Leasing team can prioritise unanswered messages. |
Recommended inquiry response standard
☐ Acknowledge the specific property and unit.
☐ Answer only from approved listing and company information.
☐ Clarify availability, price currency and viewing/application process.
☐ Avoid requesting unnecessary sensitive information in chat.
☐ Give a clear next step and expected response time.
☐ Resolve or convert the inquiry when work is complete.
Mobile landlords use API\Mobile\Landlord\InquiryController@index, @getMessages, @reply and @resolve. The same participant, status and property controls should apply across web and mobile.
8 Phase 3 - Support Ticket Setup and Full Lifecycle
Steps 10 to 16 explain how the company configures categories and departments, accepts tickets, responds, assigns, escalates, measures SLA and reports performance.
Figure 3. Support ticket lifecycle, SLA and escalation
|
STEP |
Configure Ticket Categories and Tags Primary user: SuperAdmin / Support Manager |
SuperAdmin\Core\TicketCategoryController manages the category and tag catalogue used during ticket intake and reporting.
|
Action |
Purpose |
Control |
|
index |
List categories with filters. |
Review inactive and duplicate categories. |
|
create / store |
Create name, description, colour, is_active and created_by. |
Use a clear business definition. |
|
edit / update |
Change category details. |
Consider reporting continuity before renaming. |
|
destroy |
Delete a category. |
Do not remove a category still required by historical tickets without a migration rule. |
|
toggleStatus |
Enable or disable intake use. |
Inactive should not appear for new tickets. |
|
updateOrder |
Drag-and-drop category ordering. |
Put high-use choices first. |
|
tags / storeTag / updateTag / destroyTag / toggleTagStatus |
Manage TicketTag records. |
Use tags for searchable classification rather than duplicating categories. |
Suggested category design
|
Category |
Typical examples |
Likely department |
|
Technical |
Login, app error, upload, integration or notification failure. |
Technical Support |
|
Billing / Payment |
Invoice, wallet, rent payment, fee, receipt or refund question. |
Billing / Finance |
|
Property / Maintenance |
Repair, inspection, access, utilities or vendor issue. |
Property / Facility |
|
Lease / Legal |
Clause, amendment, renewal, termination or notice. |
Lease / Legal |
|
Application / Screening |
Application status, supporting document or screening question. |
Leasing / Compliance |
|
General |
How-to, profile, company or uncategorised question. |
General Support |
|
STEP |
Configure Support Departments and Staff Primary user: SuperAdmin / Support Manager |
SupportDepartment records group staff into Technical, Billing, Property, Legal, General or another configured function. Department membership is also used by StaffManagementController@assignToDepartment and ticket-routing actions.
|
Department control |
What to define |
|
Name and purpose |
Clear boundary for the issues the department owns. |
|
Assigned staff |
Authorised users with the required skills and availability. |
|
Supervisor / escalation owner |
Person responsible for breaches and complex cases. |
|
Business hours |
Hours used where SLA policies count business time only. |
|
Specialist skills |
Required skills used for specialist ticket routing. |
|
Backup coverage |
Who receives work during absence or overload. |
|
Routing is a responsibility decision A department transfer should not be used to hide an overdue ticket. Record the reason, preserve the assignment history and confirm the receiving team accepts ownership. |
|
STEP |
Submit a Support Ticket Primary user: Client / Landlord / Guest / API User |
Use Shared\SupportTicketController@create and @store or API\Support\SupportTicketController@store. The ticket becomes the formal service record for an issue requiring ownership, tracking or resolution evidence.
|
Ticket field |
Purpose |
Good practice |
|
subject |
Short summary of the issue. |
Include the affected service or asset, not personal data. |
|
description |
Full problem, impact and requested outcome. |
State what happened, when and what was already tried. |
|
category / category_id |
Classification for routing and reporting. |
Choose the closest active category. |
|
status |
open, in_progress, pending, resolved or closed. |
New tickets should start in the configured intake state. |
|
priority |
low, medium, high, urgent or critical. |
Apply documented impact and urgency definitions. |
|
department_id |
Responsible support department. |
Route based on skill and ownership. |
|
property_id |
Affected property where relevant. |
Select the exact property. |
|
channel |
web, email, mobile, api or chat. |
Preserve the intake source. |
|
ticket_type |
tenant_to_landlord, landlord_to_leaseora or general. |
Use the correct recipient relationship. |
|
recipient_id / landlord_id |
Directed user and landlord context. |
Prevent cross-company access. |
|
attachments / evidence |
Screenshots, receipts or documents. |
Remove unnecessary sensitive data and use authorised formats. |
|
scheduled_follow_up |
Next follow-up time and notes. |
Use for work that cannot be completed immediately. |
Advanced ticket fields used by the system
|
Area |
Fields and operational meaning |
|
Assignment |
assigned_to, assigned_at, assigned_by, assignment_count, assignment_history. |
|
Escalation |
is_escalated, escalated_to, escalated_at, escalation_reason, escalation_level. |
|
SLA timing |
first_response_at, response_time_hours, resolved_at, resolution_time_hours. |
|
Effort |
complexity_level, estimated_effort_hours, actual_effort_hours. |
|
Specialist routing |
requires_specialist, required_skills. |
|
Satisfaction |
customer_rating, customer_feedback, feedback_submitted_at. |
|
AI assistance |
ai_response, ai_response_at. |
|
Guest/contact |
submitter_email, submitter_name. |
SupportTicketUpdated is fired on status changes and supports notification dispatch.
|
STEP |
View, Reply and Add Internal Notes Primary user: Support Agent / Landlord / Client |
Open @show($id) to review the full ticket, messages, status, assignee, SLA position and attachments. Use @reply to create a SupportTicketMessage or SupportReply. SupportReplySent notifies the recipient and SupportTicketUpdated records the ticket change.
|
Reply type |
Visible to |
Use |
|
Client-visible reply |
Ticket submitter and authorised participants. |
Questions, explanations, decisions and next steps. |
|
Internal note |
Staff / landlord only. |
Diagnosis, handover, policy reference, risk, approval request or internal action. |
|
AI draft |
Agent until reviewed. |
Suggested wording based on the subject and history. |
|
Canned response |
Agent editor before sending. |
Approved reusable text customised to the case. |
Reply procedure
1. Read the complete history and attached evidence.
2. Confirm the correct property, lease, payment or user context.
3. Decide whether a client-visible reply or private internal note is required.
4. Use a canned response or AI draft only as a starting point.
5. Edit names, dates, amounts, links and commitments.
6. State the action owner and next update time.
7. Send once and verify the message appears in the ticket.
8. Update status consistently with the actual work state.
|
Internal notes must remain internal Never place confidential staff commentary, security findings, legal strategy or unverified allegations in a client-visible reply. Verify the interface clearly indicates Internal Note before saving. |
AI response generation
SuperAdmin\Core\SupportTicketController@generateAIResponse uses OpenAIService to analyse the ticket subject and history and stores a suggested reply in SupportTicket.ai_response. SupportAiReplyNotification alerts the agent that a draft is available; AISupportSummaryMail can record an AI-assisted support interaction summary.
☐ Check factual accuracy.
☐ Remove unsupported promises.
☐ Confirm tone and recipient.
☐ Check privacy and confidential content.
☐ Verify links, amounts and deadlines.
☐ Record human approval before sending.
|
STEP |
Manage Ticket Status and Bulk Operations Primary user: Support Agent / Manager |
|
Status |
Operational meaning |
Typical next action |
|
open |
New or reopened issue awaiting active ownership. |
Assign and acknowledge. |
|
in_progress |
Work is actively being performed. |
Investigate, communicate and record action. |
|
pending |
Waiting for client or external input. |
State exactly what is needed and follow-up date. |
|
resolved |
A resolution has been provided and recorded. |
Invite confirmation/survey and monitor reopen. |
|
closed |
The service record is complete under company policy. |
Retain and include in reporting. |
Use @updateStatus for individual changes. @bulkUpdateStatus, @bulkAssign and @bulkDelete support authorised portfolio operations. @exportReport produces CSV/Excel reporting data.
|
Bulk actions multiply errors Filter carefully, preview selected records and avoid bulk deletion of tickets with messages, evidence, SLA breaches, ratings, legal relevance or unresolved financial impact. |
|
STEP |
Assign, Transfer and Escalate Tickets Primary user: Support Manager / Supervisor / SuperAdmin |
|
Operation |
Controller / model method |
Result |
|
Transfer department |
@transferDepartment -> SupportTicket::transferToDepartment |
Department changes, reason retained and reassignment can occur. |
|
Assign staff |
@assignToStaff / @assignTicket -> SupportTicket::assignToStaff |
assigned_to, assigned_by, assigned_at and assignment_count updated. |
|
Find available staff |
@getAvailableStaff / @getDepartmentStaff |
Eligible department staff returned. |
|
Escalate |
@escalateTicket -> SupportTicket::escalate |
Escalation owner, time, reason and level stored. |
|
Escalate to platform |
SupportTicket::escalateToSuperAdmin |
Ticket moves to Leaseora platform oversight. |
|
Check need |
SupportTicket::needsEscalation |
Age, SLA breach or complexity can signal escalation. |
|
Mark first response |
@markFirstResponse |
first_response_at set and response_time_hours calculated. |
|
Mark resolved |
@markResolved |
resolved_at set and resolution_time_hours calculated. |
Escalation decision checklist
☐ SLA response or resolution target is at risk or breached.
☐ Issue is critical, high-value or safety-related.
☐ Specialist or legal expertise is required.
☐ Repeated reassignment has not produced progress.
☐ Client impact is increasing.
☐ Fraud, security, privacy or regulatory concern exists.
☐ Agent lacks authority for the requested outcome.
☐ Reason, level and destination are recorded.
|
STEP |
Review Ticket Analytics, Reports and Scheduled Follow-Up Primary user: Support Manager / Director / SuperAdmin |
SuperAdmin\Core\SupportTicketController@analytics and @reports provide volume, status, average response and resolution time, resolution rate, escalation rate, category breakdown, agent performance and SLA compliance. @exportReport produces CSV/Excel output.
|
Metric |
Management question |
|
Ticket volume |
Is service demand rising, seasonal or concentrated by property/category? |
|
Status distribution |
How much work is open, active, pending, resolved or closed? |
|
First-response time |
Are clients receiving timely acknowledgment? |
|
Resolution time |
How long does full issue resolution take? |
|
SLA compliance |
Which priorities, teams or agents breach targets? |
|
Escalation rate |
Are issues routed correctly and resolved at the right level? |
|
Assignment count |
Are tickets bouncing between people or departments? |
|
Effort variance |
How do estimated and actual hours compare? |
|
Customer rating |
Which service areas produce low satisfaction? |
@comments($uuid) displays internal comments. @replyToContactMessage handles contact-form tickets of type general. SuperAdmin\Core\SupportTicketScheduleController manages scheduled follow-up records through full CRUD actions.
9 Phase 4 - Canned Responses and Reply Consistency
|
STEP |
Create and Use Canned Responses Primary user: Support Manager / Agent / SuperAdmin |
CannedResponseController provides a shared library of pre-written replies for common support questions. Landlord and SuperAdmin controllers support the same CRUD pattern.
|
Field |
Purpose |
Control |
|
title |
Recognisable response name. |
Use the question or outcome, such as Rent Payment Instructions. |
|
content |
Full reusable reply text. |
Use placeholders and avoid hard-coded personal or transaction data. |
|
category |
Payments, Maintenance, Lease, Application or another group. |
Match ticket categories where practical. |
|
tags |
JSON searchable keywords. |
Use terms agents will search. |
|
created_by |
Owner of the template. |
Retain accountability for updates. |
|
is_public |
Visible to all authorised staff or private to creator. |
Use public only after approval. |
|
usage_count |
Number of insertions through @use. |
Identify high-use templates for review. |
Template creation procedure
1. Identify a repeated question with an approved answer.
2. Draft a complete but editable response.
3. Use placeholders for client, property, amount, date and link.
4. Add category and search tags.
5. Review legal, payment and privacy statements.
6. Set public visibility only after approval.
7. Test insertion into a ticket reply.
8. Review usage and performance regularly.
Using a canned response in a ticket
1. Search by keyword or category.
2. Select the response; @use($uuid) increments usage_count and returns content.
3. Insert it into the reply editor.
4. Replace every placeholder.
5. Remove irrelevant sections.
6. Confirm current policy, figures and deadlines.
7. Send only after human review.
|
Template is not case resolution A canned response increases consistency; it does not prove the agent investigated the individual ticket. Always read the history and tailor the reply. |
10 Phase 5 - SLA Management and Breach Control
|
STEP |
Create General SLA Policies Primary user: Support Manager / Landlord / SuperAdmin |
Navigate to SLA Management (/sla-management). Landlord\Shared\SlaManagementController manages priority-based policies; SuperAdmin\Core\SLAController manages platform-wide SLA records.
|
SLA field |
Meaning |
Example control |
|
name |
Policy label. |
Critical - 1 Hour Response. |
|
description |
Scope and intent. |
Defines affected service and operating assumptions. |
|
priority |
Ticket priority covered. |
low, medium, high, urgent or critical. |
|
first_response_time |
Maximum hours to first response. |
Must match staffing and business hours. |
|
resolution_time |
Maximum hours to resolution. |
Use realistic service target. |
|
business_hours_only |
Whether the clock excludes non-business hours. |
Confirm business calendar and time zone. |
|
escalation_time |
Hours before escalation. |
Should occur before final breach where possible. |
|
escalation_user_id |
Person who receives escalation. |
Use an active supervisor with authority. |
|
is_active |
Whether policy is currently applied. |
Deactivate outdated policies rather than silently altering history. |
|
created_by |
Policy owner. |
Retain accountability. |
Use @index, @create, @store, @show, @edit, @update, @destroy and @toggleStatus to manage policies. The policy detail can display compliance statistics.
|
STEP |
Apply Ticket-Specific SLA and Investigate Breaches Primary user: Support Manager / Supervisor |
SupportTicketSlaPolicy provides response_time_hours, resolution_time_hours, business_hours_only, escalation_enabled and escalation_time_hours for ticket-specific enforcement. SupportTicketSlaBreach records response or resolution breaches.
|
Breach field |
Meaning |
|
ticket_id |
Support ticket that missed the target. |
|
policy_id |
SLA policy applied. |
|
breach_type |
Response or resolution. |
|
breached_at |
Timestamp the target was exceeded. |
|
hours_overdue |
Measured time beyond the target. |
SLA monitoring procedure
1. Confirm the ticket has the correct priority and applicable SLA.
2. Check assignment and first-response timestamp.
3. Review business-hours setting and calendar.
4. Identify the reason for delay.
5. Escalate before or immediately after breach.
6. Communicate a revised expectation to the client.
7. Record corrective action and owner.
8. Review repeated patterns in analytics.
SupportTicket::sla() links the policy and getPerformanceMetrics() returns actual response/resolution performance against targets. CrmSlaBreach and MonitorSlaBreachesJob may also monitor support-related SLA from the CRM context.
|
Do not manipulate timestamps to improve compliance SLA metrics are service evidence. Incorrectly changing first_response_at, resolved_at or priority damages reporting and trust. Correct configuration errors under an audited process. |
11 Phase 6 - Satisfaction Surveys and Service Recovery
|
STEP |
Configure and Review Satisfaction Surveys Primary user: Support Manager / Landlord |
Landlord\Shared\SatisfactionSurveyController manages survey records and analytics. A survey is linked to the resolved support ticket and the responding user.
|
Survey field |
What it measures |
|
rating |
Overall 1-5 star rating. |
|
feedback |
Open-text description of the experience. |
|
response_time_satisfaction |
Satisfaction with speed of initial response. |
|
resolution_satisfaction |
Satisfaction with the solution. |
|
agent_knowledge_satisfaction |
Perceived expertise. |
|
agent_courtesy_satisfaction |
Courtesy and communication manner. |
|
overall_satisfaction |
Computed overall score. |
|
would_recommend |
NPS-style recommendation indicator. |
|
completed_at |
Completion timestamp. |
Use @index to list responses, @create/@store to configure or create, @show to inspect a response and @destroy only under an approved retention rule. @analytics provides trends and breakdowns; @export produces CSV/Excel data.
Survey analytics
|
View |
Management use |
|
Average by dimension |
Separate speed, resolution, expertise and courtesy issues. |
|
Trend over time |
Measure whether changes improve service. |
|
NPS |
Track recommendation intent using would_recommend. |
|
Agent / department |
Identify coaching and resource needs. |
|
Property / category |
Find recurring asset or process issues. |
|
Low-score queue |
Trigger service recovery before dissatisfaction becomes a dispute or public review. |
|
STEP |
Complete the Public Survey Form Primary user: Client / Ticket Submitter |
After a ticket is resolved, SatisfactionSurveyInvitation emails a unique public link. SuperAdmin\Core\SatisfactionSurveyController@publicForm($uuid) displays the no-login form, @submitPublicForm stores the ratings and feedback, and @thankYou displays confirmation.
1. Open the unique survey link.
2. Confirm the ticket subject or context shown.
3. Rate each available dimension.
4. Enter factual feedback without unnecessary personal data.
5. Select recommendation intent where shown.
6. Submit once.
7. Review the thank-you confirmation.
On submission, SatisfactionSurvey.completed_at is set. SupportTicket::addCustomerFeedback($rating, $feedback) updates customer_rating, customer_feedback and feedback_submitted_at on the ticket.
|
A survey is not a ticket reopen by itself Low satisfaction should trigger internal review and service recovery. Where the client reports an unresolved issue, reopen the ticket or create the appropriate dispute rather than treating the rating alone as the service record. |
12 Phase 7 - Notifications and Multi-Channel Delivery
Figure 4. Multi-channel notification delivery
|
STEP |
View and Send Landlord Notifications Primary user: Landlord / Authorised Staff |
Navigate to Notifications (/notifications). Landlord\Shared\NotificationController@index lists notifications filtered to the authenticated landlord. @send opens the compose form and @store creates and dispatches a custom notification to selected recipients.
|
Compose field |
Guidance |
|
Recipients |
Select only intended clients or users. |
|
Title |
Use a clear, action-oriented headline. |
|
Message |
State what happened, what the recipient must do and by when. |
|
Type |
info, success, warning, error, action or reminder. |
|
Priority |
Use high priority only for genuinely urgent matters. |
|
Deep link |
Link directly to the relevant ticket, lease, payment, maintenance or document page. |
|
Channel |
in_app, email, sms or push according to preferences and service availability. |
|
STEP |
Understand Notification Records and Delivery Primary user: Landlord / Client / Support Team |
|
Notification field |
Purpose |
|
user_id |
Recipient. |
|
sender_id |
User or system that sent the notification. |
|
title / message |
Displayed content. |
|
type |
Information, success, warning, error, action or reminder. |
|
status |
sent, delivered or read. |
|
priority |
Delivery and attention priority. |
|
deep_link |
Target URL when opened. |
|
channel |
in_app, email, sms or push. |
|
sent_at / read_at |
Delivery and read timestamps. |
NotificationCreated is fired whenever a Notification record is created and broadcasts the record in real time to the user's notification centre. NotificationPreference stores per-user event/channel choices. NotificationSetting stores platform-wide templates and event configuration.
SuperAdmin and mobile notification functions
|
Controller / action |
Purpose |
|
SuperAdmin\Core\NotificationController@index |
Platform-wide overview. |
|
@create / @store |
Broadcast to all users, selected roles or individuals. |
|
@markAsRead / @markAsUnread |
Change the read state. |
|
@logs |
Review delivery logs, recipient and status. |
|
@landlordIndex |
View landlord-context notifications. |
|
API\Mobile\Tenant\NotificationController@index |
List mobile unread and recent notifications. |
|
@markRead |
Set read_at for a mobile notification. |
|
API\NotificationController |
REST list, mark-read and push-token functions. |
|
STEP |
Configure Client Notification Preferences Primary user: Client / Tenant |
Users\Tenant\Share\NotificationController and NotificationsController allow clients to view notifications, mark records read and configure email, SMS and push preferences by event. Quiet hours are applied from settings where supported.
|
Preference decision |
Client control |
|
Event types |
Choose which lease, payment, maintenance, support or general events are enabled. |
|
Channels |
Enable or disable email, SMS and push per event. |
|
Frequency |
Use available immediate or digest preferences. |
|
Quiet hours |
Reduce non-urgent delivery during selected hours. |
|
Read state |
Mark individual or all records as read. |
Other supplied notification records/classes include LeaseNotification, LeadNotification, GeneralNotification, GeneralPushNotification, GenericNotification and LandlordNotification. TenantScoreFeedback can capture feedback on selected client-facing notification experiences.
|
Delivery does not equal comprehension A sent or delivered status does not prove the recipient understood or acted. Use acknowledgment, ticket reply, chat or formal notice workflow where confirmation is required. |
13 Phase 8 - Platform Feedback and AI Quality Feedback
|
STEP |
Submit General Feedback Primary user: Client / Landlord / Staff |
General platform feedback may be submitted through SuperAdmin\Core\FeedbackController@landlordStore, LeaseoraAI\FeedbackController@store or other shared feedback interfaces.
|
Feedback field |
Use |
|
user_id |
Identifies the submitting user. |
|
subject |
Short summary. |
|
message |
Detailed feedback. |
|
rating |
1-5 star rating. |
|
type |
bug, feature_request, general, complaint or praise. |
|
status |
new, under_review, responded, resolved or closed. |
|
admin_response |
Platform response. |
|
responded_at |
Response timestamp. |
Good feedback submission
☐ Describe the page or module.
☐ State the action attempted.
☐ Provide expected and actual result.
☐ Include date/time and device where relevant.
☐ Attach a safe screenshot if available.
☐ Avoid passwords, payment credentials and unnecessary personal data.
☐ Choose the correct feedback type.
|
STEP |
Manage Feedback and Respond Primary user: SuperAdmin / Landlord |
SuperAdmin\Core\FeedbackController@index provides filters by type, status and date range, plus average rating and volume trends. @show displays detail; @edit/@update change status and admin_response; @destroy removes a record under policy.
|
Landlord action |
Purpose |
|
landlordIndex |
View feedback about the landlord's properties or service. |
|
landlordCreate / landlordStore |
Submit feedback to the Leaseora platform. |
|
Review complaint |
Decide whether to create/reopen a ticket or dispute. |
|
Review praise |
Share recognition without exposing client data. |
|
Review feature request |
Record business value and frequency for product review. |
|
STEP |
Manage AI Feedback and Quality Logs Primary user: User / SuperAdmin / AI Operations |
Users\Shared\AIFeedbackController@store and LeaseoraAI\FeedbackController@store capture thumbs-up/down and optional text for an AI response. AIFeedback stores interaction-level ratings; AiFeedbackLog records platform-wide feedback events.
|
SuperAdmin controller |
Purpose |
|
AIFeedbackController |
List and manage AI feedback records. |
|
AiFeedbackLogController |
Review all AI feedback logs and patterns. |
|
AIChatLogController |
Review AI chat interactions for quality and safety analysis. |
|
AI feedback must be specific When an AI response is wrong, include the incorrect statement, correct source record and expected answer. Do not use AI feedback logs to expose unrelated personal or confidential information. |
14 Phase 9 - Landlord, Client and Vendor Reviews
|
STEP |
Create and Manage a Lease Review Primary user: Landlord / Client |
Landlord\Shared\ReviewController and API\Review\ReviewController allow authorised parties to create reviews associated with a lease. ReviewCreated notifies the reviewed party.
|
Review field |
Purpose |
Control |
|
lease_id |
Lease context. |
Confirm the correct tenancy. |
|
reviewer_id |
User writing the review. |
Must be the authenticated authorised party. |
|
reviewee_id |
Landlord or client being reviewed. |
Confirm the intended recipient. |
|
rating |
1-5 star score. |
Apply company guidance consistently. |
|
comment |
Review text. |
Use factual, relevant and respectful language. |
Web actions include @index, @create, @store, @show, @edit, @update and @destroy. Mobile API actions include @index, @store and @show. Edit or delete should follow the live policy for draft/published records.
Review-writing principles
☐ Base the review on direct experience.
☐ Refer to observable conduct and service outcomes.
☐ Avoid discriminatory, threatening or defamatory language.
☐ Do not publish private financial, health, identity or contact information.
☐ Separate a review from an unresolved formal dispute.
☐ Use the dispute workflow for evidence and resolution.
|
STEP |
Moderate Reviews Platform-Wide Primary user: SuperAdmin |
SuperAdmin\Core\ReviewController@index provides the platform overview. @tenantIndex and @landlordIndex separate perspectives. @show, @edit, @update and @destroy support moderation and removal where justified by platform policy.
|
Moderation question |
Review |
|
Authenticity |
Is the review linked to the correct lease and parties? |
|
Relevance |
Does it describe the tenancy or service relationship? |
|
Privacy |
Does it expose restricted personal information? |
|
Abuse |
Does it contain threats, harassment or discriminatory content? |
|
Manipulation |
Is there evidence of duplicate, coerced or fraudulent rating activity? |
|
Dispute overlap |
Should the issue also be handled through a formal dispute? |
|
STEP |
Manage Vendor Reviews and Public Responses Primary user: Landlord / Maintenance Vendor |
Vendor\VendorReviewsController@index lists reviews relevant to the maintenance vendor. @respond allows the vendor to post a public response to a landlord's rating. VendorReview data contributes to MaintenanceVendor.average_rating.
Vendor response procedure
1. Read the full review and job record.
2. Confirm the reviewer and maintenance request.
3. Acknowledge the experience without disclosing private details.
4. Correct factual errors calmly with evidence where permitted.
5. State any remedial action or invitation to continue privately.
6. Submit one professional public response.
|
A public response is not an internal argument Keep vendor responses factual and short. Use the ticket, maintenance chat or dispute workflow for detailed evidence and resolution. |
15 Phase 10 - Formal Dispute Management
Figure 5. Formal dispute resolution flow
|
STEP |
Raise a Formal Dispute Primary user: Landlord / Client / Authorised Admin |
A dispute is used when a material issue cannot be resolved through ordinary communication or support. SuperAdmin\Core\DisputeController@landlordCreate and @landlordStore provide the landlord-facing creation path.
|
Dispute field |
Purpose |
Good practice |
|
lease_id |
Connects the dispute to the tenancy. |
Select the exact lease. |
|
raised_by |
User initiating the dispute. |
Use authenticated identity. |
|
issue |
Short issue summary. |
State the disputed matter clearly. |
|
type |
rent, maintenance, deposit, lease_terms, damage, privacy or other. |
Choose the closest type. |
|
priority |
low, medium, high or critical. |
Apply impact and urgency criteria. |
|
category |
Additional classification. |
Use company dispute taxonomy. |
|
amount |
Monetary value where relevant. |
Use the contractual currency and evidence. |
|
evidence_path |
Uploaded evidence. |
Use authorised, relevant and complete files. |
|
expected_resolution_date |
Target outcome date. |
Set realistic date and monitor it. |
|
description / notes |
Full facts and supporting context. |
Separate facts from allegations. |
|
resolution |
Final outcome when resolved. |
State decision, actions, amounts and dates. |
|
status |
open, under_review, mediation, resolved, escalated or closed. |
Update only when the actual stage changes. |
DisputeManagement is supplied as an alternative extended workflow model for additional dispute-management fields.
|
Preserve evidence Do not edit, replace or delete original files after submission without an auditable version process. Record where evidence came from, who supplied it and how it relates to the issue. |
|
STEP |
Review, Add Notes and Progress the Dispute Primary user: Landlord / Legal / Mediation Team |
Use @landlordIndex to list disputes raised by or against the landlord. CurrencyService can display monetary amounts in the landlord's preferred currency. @landlordShow displays the full history, evidence, notes and status.
|
Action |
Procedure |
|
Review intake |
Confirm lease, parties, type, amount, evidence and requested outcome. |
|
Update status |
Use @landlordUpdateStatus to move open -> under_review -> mediation -> resolved/escalated -> closed according to actual stage. |
|
Add notes/evidence |
Use @landlordAddNotes to append factual notes or additional evidence. |
|
Communicate |
Use DisputeUpdated notifications and approved messages to keep both parties informed. |
|
Resolve |
Populate the resolution with actions, owner, dates, financial treatment and follow-up. |
|
Close |
Confirm outcome communication, completion and retention. |
Dispute review checklist
☐ Authority and jurisdiction checked.
☐ Lease and relevant clause reviewed.
☐ Payment, maintenance, inspection, chat and ticket history collected.
☐ Evidence authenticity and relevance reviewed.
☐ Both parties given appropriate opportunity to respond.
☐ Currency and amount reconciled.
☐ Conflicts of interest identified.
☐ Mediation or escalation decision documented.
☐ Resolution approved by the correct authority.
|
STEP |
SuperAdmin Resolution, Events and Dispute Analytics Primary user: SuperAdmin / Director / Legal |
SuperAdmin\Core\DisputeController@index provides platform-wide oversight. @create/@store can create a record manually; @show, @edit and @update manage the full record; @destroy is restricted by retention and legal policy.
|
Event / service |
Trigger / purpose |
|
DisputeRaised |
Fired when a new dispute is created; notifies the other party. |
|
DisputeUpdated |
Fired when the status changes; notifies both parties. |
|
ConflictResolvedNotification |
Email to both parties when the dispute is officially resolved. |
|
DisputeService@getDisputeStats |
Returns totals, win rate and resolution time for analytics. |
|
getActiveDisputes |
Lists active disputes with filters and pagination. |
|
getDisputeDetails |
Returns a landlord-authorised detail view. |
|
createDispute |
Creates a new dispute through service logic. |
|
resolveDispute |
Records resolution and updates financial analytics. |
|
Resolution must be precise A resolution should identify what was decided, by whom, based on what evidence, any amount or remedy, completion date, notification sent and whether the matter can be reopened or appealed under policy. |
16 Status Lifecycles and Record Relationships
|
Record |
Key statuses supplied |
Operational meaning |
|
ChatRoom |
open, resolved, archived |
Conversation activity and completion state. |
|
SupportTicket |
open, in_progress, pending, resolved, closed |
Formal service work lifecycle. |
|
Feedback |
new, under_review, responded, resolved, closed |
Platform feedback handling. |
|
Dispute |
open, under_review, mediation, resolved, escalated, closed |
Formal issue progression. |
|
Notification |
sent, delivered, read |
Delivery and consumption state. |
|
SLA policy |
active / inactive |
Whether a policy is used for current work. |
|
Survey |
completed_at empty or set |
Invitation outstanding or response completed. |
Principal relationships
|
Record |
Connects to |
|
ChatRoom |
Participants, ChatMessage, Property, Lease, MaintenanceRequest or polymorphic inquiry target. |
|
SupportTicket |
Creator, recipient, landlord, property, category, department, assignee, messages, SLA, breach, rating and feedback. |
|
CannedResponse |
Creator, visibility, category, tags and usage count. |
|
SatisfactionSurvey |
SupportTicket and responding user. |
|
Notification |
Recipient, sender, event context and deep link. |
|
Review |
Lease, reviewer and reviewee. |
|
Dispute |
Lease, raising user, evidence, notes and resolution. |
Status control note: This guide preserves the statuses explicitly supplied. Product and technical teams should confirm any additional live states, transition rules, reopen windows, auto-close periods and deletion restrictions before formal training.
17 Event, Notification and Mail Matrix
|
Event / mail |
Recipient or consumer |
Trigger / purpose |
|
ChatRoomMessage |
Room participants |
Real-time broadcast when a chat or inquiry message is sent. |
|
NewChatMessage |
Room participants / notification system |
New chat message notification trigger. |
|
NewInquiryMessage |
Listing landlord |
New property inquiry message. |
|
SupportReplySent |
Ticket submitter or participant |
New support reply added. |
|
SupportTicketUpdated |
Relevant parties |
Ticket status or lifecycle update. |
|
ReviewCreated |
Reviewee |
New review created about the user. |
|
DisputeRaised |
Other party |
New dispute created. |
|
DisputeUpdated |
Both parties |
Dispute status changed. |
|
AIChatHistoryUpdated |
AI chat clients / listeners |
AI conversation history updated. |
|
AIChatMessageSent |
AI chat clients / listeners |
AI message exchanged. |
|
NotificationCreated |
Target user |
Real-time in-app notification broadcast. |
|
SatisfactionSurveyInvitation |
Ticket submitter |
Resolved-ticket survey invitation with public link. |
|
SupportAiReplyNotification |
Support agent |
AI-generated ticket draft is ready for review. |
|
AISupportSummaryMail |
Agent / landlord |
Summary of AI-assisted support interaction. |
|
ConflictResolvedNotification |
Landlord and client |
Official dispute resolution email. |
|
AiLeasingChatSummary |
AI chat user |
AI chat-session summary. |
|
GenericNotificationMail |
Any user |
Generic email wrapper for platform notifications. |
|
Event delivery should be idempotent A retry or reconnect should not create duplicate chat messages, ticket replies, survey invitations, review notifications or dispute emails. Technical teams should verify event and mail retry behaviour against the live implementation. |
18 Data Isolation, Privacy and Communication Security
The supplied architecture includes NotificationScope and SupportTicketScope for global query isolation. ChatRoom participation, ticket landlord/recipient fields, property assignments and controller authorisation must work together so users see only their own company and authorised records.
|
Control area |
Required practice |
|
Chat membership |
Only participants can open messages or attachments. |
|
Property access |
Staff see chats, inquiries and tickets only for assigned or authorised properties. |
|
Ticket isolation |
SupportTicketScope and controller policies prevent cross-landlord access. |
|
Notification isolation |
NotificationScope filters records to the correct user/context. |
|
Internal notes |
Never returned to the client-facing API or view. |
|
Attachments |
Validate type, size, storage path and access before download. |
|
Guest surveys |
Use unguessable unique uuid tokens and one-response controls. |
|
Dispute evidence |
Restrict to authorised operational, legal and platform roles. |
|
Exports |
Apply filters and protect files containing personal or confidential data. |
|
Real-time channels |
Authorise WebSocket/Pusher channel subscriptions. |
|
AI processing |
Send only authorised context and files; review retention and privacy. |
|
Audit evidence |
Retain actor, timestamp and change history where supplied. |
Sensitive information that should not be placed casually in messages
· Passwords, one-time codes or full payment credentials.
· Government identification numbers unless a secure approved workflow requires them.
· Private health, family or employment data unrelated to the issue.
· Unverified fraud or misconduct allegations.
· Legal strategy or privileged advice in client-visible messages.
· Other tenants' or properties' information.
· Private API keys, webhook secrets or infrastructure credentials.
19 AI-Powered Communication and Support Features
|
AI feature |
Controller / service |
Purpose |
Human responsibility |
|
Contextual AI chat |
LeaseoraAI\ChatController@query / LeaseoraAIService |
Answer lease, payment, maintenance and property questions. |
Verify against current records. |
|
Mobile AI chat |
API\Mobile\Tenant\AIChatController@send / OpenAIService |
Instant mobile responses and session history. |
Escalate material or uncertain answers. |
|
AI recommendations |
AIChatController@recommendations |
Personalised property, payment or maintenance suggestions. |
Treat as advisory. |
|
File analysis |
@uploadFile / @analyzeFile |
Analyse a document during conversation. |
Confirm file authority and extracted facts. |
|
Ticket reply draft |
SupportTicketController@generateAIResponse |
Draft a support response from ticket history. |
Edit and approve before sending. |
|
Escalation support |
SupportTicket::needsEscalation |
Identify age, breach or complexity signals. |
Manager decides and records escalation. |
|
Chat export / summary |
@exportChat / AiLeasingChatSummary / AISupportSummaryMail |
Create a conversation or support summary. |
Review privacy and accuracy. |
|
Custom instructions |
@saveCustomInstructions |
Personalise assistant behaviour. |
Cannot override access or policy. |
|
AI feedback |
AIFeedbackController / AiFeedbackLogController |
Capture quality ratings and improvement signals. |
Provide specific corrective evidence. |
|
Human decision points AI must not independently assign liability, approve a refund, alter lease obligations, determine a dispute, publish a review response, disclose restricted records or close a support ticket without the configured human workflow. |
20 Staff Permissions and Segregation of Duties
|
Role |
Typical access |
Restricted action |
|
Inquiry Officer |
Listing inquiry rooms, prospect replies and unread counts. |
Cannot view unrelated support or disputes. |
|
Support Agent |
Assigned tickets, messages, canned responses and permitted notifications. |
Cannot change SLA policy or finalise sensitive disputes. |
|
Support Manager |
Departments, assignments, escalations, SLA, reports and templates. |
Should not moderate own disputed conduct without independent review. |
|
Property Manager |
Assigned property chats, maintenance threads and related tickets. |
Cannot access other portfolios. |
|
Finance Officer |
Payment-related tickets and authorised financial evidence. |
Cannot change lease/legal outcomes. |
|
Legal / Compliance |
Sensitive tickets, disputes, evidence and review moderation. |
Cannot alter operational facts without audit. |
|
Marketing / CRM |
Property inquiries and approved client notifications. |
Cannot access internal notes or dispute evidence. |
|
Director / Approver |
High-value outcomes, policy exceptions and final escalation. |
Must review evidence and audit trail. |
|
SuperAdmin |
Platform-wide configuration and oversight. |
Must use privileged access only for authorised platform work. |
Minimum access practices
· Use individual accounts and least privilege.
· Restrict internal notes and dispute evidence.
· Review department and property assignments regularly.
· Remove access immediately when staff or vendors leave.
· Require approval for bulk deletion, public notifications and formal dispute resolution.
· Protect exported reports and survey data.
· Test client and mobile APIs for cross-user access.
21 Dashboards, Reports and Management Review
|
Dashboard / report |
Management questions answered |
|
Chat dashboard |
Which conversations are active, unread, unresolved or archived? |
|
Inquiry inbox |
Which properties receive questions and how quickly are prospects answered? |
|
Ticket dashboard |
How much support work is open, assigned, pending or overdue? |
|
SLA dashboard |
Which priorities, departments and agents meet targets? |
|
Escalation queue |
Which issues require supervisor, specialist or platform action? |
|
Canned response usage |
Which approved replies are used most and need updating? |
|
Survey analytics |
What do clients think about response time, resolution, knowledge and courtesy? |
|
Notification logs |
What was sent, through which channel and whether it was read? |
|
Feedback dashboard |
What bugs, requests, complaints and praise are recurring? |
|
Review overview |
How are landlords, clients and vendors rated? |
|
Dispute dashboard |
How many disputes are active, their amounts and resolution time? |
|
AI feedback logs |
Which AI responses receive poor feedback and why? |
Recommended review cadence
|
Frequency |
Review |
|
Continuous / hourly |
Critical and urgent tickets, safety issues, security/privacy concerns and real-time chat workload. |
|
Daily |
Unread inquiries, unassigned tickets, pending client responses, SLA-at-risk cases and escalations. |
|
Weekly |
Ticket backlog, assignment count, canned response use, low survey scores, feedback and unresolved disputes. |
|
Monthly |
Volume, response/resolution time, SLA compliance, agent/department performance, notification delivery and review trends. |
|
Quarterly |
Category design, staffing, SLA targets, AI quality, privacy, access, review moderation and dispute outcomes. |
|
After major incident |
Full communication timeline, decisions, notifications, evidence, root cause and corrective actions. |
22 Worked Example - Property Inquiry to Application Handover
Scenario: A prospect asks whether Unit B-12 at HarbourGate Court is available, whether pets are allowed and how to apply.
|
Stage |
What happens |
|
1. Inquiry start |
The prospect opens the listing and PropertyInquiryController@startInquiry creates an inquiry ChatRoom. |
|
2. Notification |
NewInquiryMessage notifies the landlord leasing team. |
|
3. Review |
The officer opens LandlordInquiryInboxController@show and verifies the listing and current availability. |
|
4. Reply |
The officer answers the approved pet policy and application steps. ChatRoomMessage broadcasts the reply. |
|
5. Follow-up |
The prospect asks about viewing time; the officer records the next action. |
|
6. Conversion |
The prospect starts the application through the correct listing workflow. |
|
7. Resolve inquiry |
The officer marks the inquiry resolved because the question has converted to application handling. |
|
8. Traceability |
The room retains the listing context, participants, messages and timestamps. |
Control outcome
· The answer came from the correct listing.
· No unnecessary identity or financial information was requested in chat.
· The prospect received a clear next action.
· The inquiry was resolved without deleting the conversation.
23 Worked Example - Maintenance Chat and Formal Support Ticket
Scenario: A client reports a water leak. The maintenance thread coordinates immediate action, while a support ticket tracks service accountability because access and vendor attendance are delayed.
|
Stage |
What happens |
|
1. Maintenance record |
The client creates the maintenance request in the maintenance module. |
|
2. Dedicated chat |
showMaintenanceChat loads the room for landlord, client and assigned vendor. |
|
3. Safety update |
The landlord gives approved immediate safety guidance and next update time. |
|
4. Vendor coordination |
The vendor posts attendance timing and diagnosis. |
|
5. Delay identified |
Access coordination fails and the issue requires formal ownership. |
|
6. Ticket created |
A high-priority Property/Maintenance SupportTicket is opened and linked to the property. |
|
7. Assignment and SLA |
The ticket is assigned to the facility department and first-response clock recorded. |
|
8. Internal note |
Staff record building access and approval details privately. |
|
9. Resolution |
Repair is completed, evidence added, ticket resolved and client notified. |
|
10. Survey |
SatisfactionSurveyInvitation is sent; low response-time score triggers service review. |
24 Worked Example - Urgent Billing Ticket, Escalation and Survey
Scenario: A client reports that a rent payment was debited but the lease still shows unpaid.
|
Stage |
Operational action |
|
Intake |
Urgent Billing ticket created with transaction reference and safe evidence. |
|
Assignment |
Assigned to Billing; markFirstResponse records acknowledgment. |
|
Investigation |
Agent reviews payment records and adds an internal reconciliation note. |
|
AI draft |
generateAIResponse prepares a draft acknowledgment; agent corrects wording and sends. |
|
Escalation |
The SLA is at risk and needsEscalation signals supervisor review. |
|
Resolution |
Payment record is corrected through the payment workflow; ticket resolution explains the outcome. |
|
Survey |
Client completes the public survey and rates resolution highly but speed low. |
|
Improvement |
Support manager reviews response time and updates routing/canned response. |
25 Worked Example - Deposit Dispute Resolution
Scenario: A former client disputes a deposit deduction after lease termination.
|
Stage |
Operational action |
|
1. Dispute intake |
Dispute created against the correct lease with type deposit, monetary amount and evidence. |
|
2. Notification |
DisputeRaised notifies the other party. |
|
3. Under review |
Legal/operations review lease terms, inspection photos, invoices, ticket and chat history. |
|
4. Notes |
Each party's evidence and statements are appended through the authorised note path. |
|
5. Mediation |
Parties discuss the disputed items and possible partial adjustment. |
|
6. Resolution |
Approved resolution states deduction, refund, payment date and closing actions. |
|
7. Notification |
DisputeUpdated notifies status; ConflictResolvedNotification confirms the outcome. |
|
8. Close and analytics |
Dispute closes after completion and DisputeService updates resolution metrics. |
26 Real Estate Company Onboarding Checklist
Structure and people
☐ Support manager and escalation owners named.
☐ Departments and assigned staff created.
☐ Property and portfolio access reviewed.
☐ Business hours, holidays and time zone approved.
☐ Priority definitions documented.
Configuration
☐ Categories and tags configured.
☐ SLA and ticket-specific SLA policies activated.
☐ Canned response library approved.
☐ Notification preferences and templates reviewed.
☐ Survey questions and low-score process agreed.
☐ Review moderation and vendor-response policy approved.
☐ Dispute workflow and legal escalation defined.
☐ AI custom instructions and review rules approved.
Technical and security readiness
☐ WebSocket/Pusher messaging tested.
☐ Mobile and API chat/ticket endpoints tested.
☐ Notification email/SMS/push delivery tested.
☐ Internal notes hidden from client views.
☐ SupportTicketScope and NotificationScope isolation tested.
☐ Attachments and download permissions tested.
☐ Survey public tokens tested.
☐ Exports and retention controls tested.
27 User Acceptance Testing and Go-Live Validation
|
Test area |
Test case |
Expected result |
|
Direct chat |
Create and send between two eligible users. |
One room, one message, real-time delivery and unread count. |
|
Group chat |
Add/remove participants and leave. |
Only current participants retain access. |
|
Maintenance chat |
Open linked thread and message vendor/client. |
Correct MaintenanceRequest context retained. |
|
Inquiry |
Start from listing, reply, resolve and reopen. |
Correct listing context and unread badge. |
|
Attachment |
Upload and download authorised file. |
Only participants can access. |
|
AI chat |
Query, history, file analysis, feedback and export. |
Contextual output stored; controls work. |
|
Ticket intake |
Submit web/mobile/API ticket. |
Correct creator, landlord, category, priority and channel. |
|
Reply/internal note |
Send each type. |
Client sees reply but never internal note. |
|
AI ticket response |
Generate draft and edit. |
Draft not sent automatically. |
|
Assignment |
Assign and transfer departments. |
History and count updated. |
|
Escalation |
Escalate to supervisor/SuperAdmin. |
Reason, level and owner stored. |
|
SLA |
Mark first response and resolve. |
Actual hours calculated against correct policy. |
|
Breach |
Simulate approved breach test. |
SupportTicketSlaBreach created once. |
|
Canned response |
Insert response. |
Content returned and usage_count incremented. |
|
Survey |
Resolve ticket and submit public form. |
Ticket rating/feedback and survey completion stored. |
|
Notification |
Send all configured channels. |
Correct recipient, deep link and statuses. |
|
Feedback |
Submit and respond. |
Status and admin response stored. |
|
Review |
Create and notify reviewee. |
Correct lease and parties linked. |
|
Vendor response |
Respond to vendor review. |
Public response displayed and rating metrics preserved. |
|
Dispute |
Create, update, mediate, resolve and close. |
Events, notes, evidence and resolution history preserved. |
|
Scopes |
Attempt cross-user/company access. |
Unauthorised records are not returned. |
|
Exports |
Export tickets, surveys and analytics. |
Filters and data match dashboards. |
|
Go-live gate Do not move client communication and support operations into production until participant access, internal-note isolation, real-time delivery, ticket ownership, SLA, escalation, surveys, notifications, reviews, disputes, exports and data isolation have passed user acceptance testing. |
28 Common Issues and Troubleshooting
|
Issue |
Likely cause |
Recommended action |
|
Chat room missing |
User is not a participant, room archived or wrong context. |
Confirm participant_ids, scopeForUser and active/archived filter. |
|
Duplicate direct chats |
Room lookup or retry created more than one room. |
Identify canonical room and verify idempotent create logic. |
|
Message not live |
WebSocket/Pusher connection or channel authorisation issue. |
Confirm message saved, then inspect broadcast connection without resending blindly. |
|
Unread count wrong |
Read state not updated or wrong user ID. |
Run markAsRead and inspect per-user read records. |
|
Attachment denied |
User is not authorised or storage path missing. |
Confirm participant/ticket access and file existence. |
|
Inquiry not in inbox |
Wrong room type, landlord participant or listing owner. |
Check type inquiry, inquirable link and scopeForUser. |
|
Ticket routed incorrectly |
Category/department mapping or intake selection wrong. |
Transfer with reason and update routing rules. |
|
Client sees internal note |
View/API isolation defect. |
Remove exposure immediately, preserve incident evidence and escalate security/privacy review. |
|
AI draft is inaccurate |
Incomplete context or unsupported generation. |
Do not send; correct manually and submit AI feedback. |
|
SLA time wrong |
Priority, policy, business hours or timestamp issue. |
Review applied policy and calendar; correct under audit. |
|
Repeated reassignment |
Unclear ownership or missing skills. |
Assign supervisor, specialist or transfer once with complete handover. |
|
Survey link fails |
Invalid uuid, expired/used token or route issue. |
Verify survey record and public form configuration. |
|
Notification not received |
Preference, quiet hours, channel provider or contact data. |
Check Notification record, logs and recipient settings. |
|
Review linked to wrong party |
Incorrect reviewer/reviewee/lease selection. |
Restrict display and correct through approved moderation. |
|
Dispute amount differs |
Currency conversion or wrong source amount. |
Reconcile contractual currency and source evidence. |
|
Export differs from dashboard |
Filters, date range, status or refresh timing. |
Match query parameters and data snapshot. |
|
Support information to include Provide the company, user role, property/lease/ticket/chat/dispute reference, affected route, date/time, action attempted, expected result, actual result, delivery channel, device/browser and a screenshot with passwords, tokens and unnecessary personal data removed. |
29 Frequently Asked Questions
When should we use chat instead of a support ticket?
Use chat for ordinary conversation and coordination. Use a ticket when ownership, priority, SLA, escalation, formal resolution or reporting is required.
Can a chat be linked to a maintenance request?
Yes. The dedicated maintenance chat links the ChatRoom to maintenance_request_id and can include landlord, client and assigned vendor.
Can prospects send listing inquiries?
Yes. The inquiry flow creates a ChatRoom linked polymorphically to the PropertyListing.
Does a resolved inquiry disappear?
It moves to resolved status and can be reopened. The conversation history remains part of the record.
Can support staff write private notes?
Yes. addInternalNote creates a staff/landlord-only note that must not be visible to the client.
Can AI send a ticket reply automatically?
The supplied flow stores an AI-generated draft for agent review. Authorised staff should edit and send it.
What is the difference between pending and resolved?
Pending means waiting for client or external action; resolved means a solution has been recorded.
How is first response measured?
markFirstResponse sets first_response_at and calculates response_time_hours.
What happens when SLA is breached?
A SupportTicketSlaBreach record can capture the ticket, policy, breach type, time and hours overdue; escalation should follow policy.
Can agents use pre-written replies?
Yes. Canned responses are searched and inserted with @use, which increments usage_count.
Does the client need to log in for a satisfaction survey?
The supplied public survey form uses a unique uuid link and does not require login.
What notification channels are supported?
The Notification model supports in_app, email, sms and push.
Can users choose notification channels?
NotificationPreference provides per-event channel toggles, subject to platform configuration.
What is AI feedback?
It is a thumbs-up/down and optional text rating tied to an AI interaction and stored in AIFeedback/AiFeedbackLog.
Can reviews be edited?
The supplied controllers include edit/update actions. The live policy should define whether only drafts or also published reviews may be edited.
Can vendors respond to reviews?
Yes. VendorReviewsController@respond allows a public vendor response.
When should a dispute be raised?
When a material issue remains unresolved and needs a formal evidence, review, mediation, escalation and resolution record.
Does CurrencyService change the contractual dispute amount?
It supports preferred-currency display. The dispute should retain and reconcile the original contractual amount and currency.
Can tickets be bulk deleted?
A bulkDelete action is supplied, but companies should restrict it and preserve records required for service, legal or audit purposes.
Are all chat and notification events real-time?
The supplied architecture identifies ChatRoomMessage, NotificationCreated, AIChatHistoryUpdated and AIChatMessageSent as real-time broadcast events, subject to configured WebSocket/Pusher services.
30 Quick Reference - 33 Operational Steps
1. Access the Chat dashboard.
2. Create a direct or group ChatRoom.
3. Send, search and mark messages read.
4. Manage group participants.
5. Use the maintenance request chat.
6. Use mobile/API chat.
7. Use and supervise the AI chat assistant.
8. Start a property inquiry.
9. Manage the landlord inquiry inbox.
10. Configure ticket categories and tags.
11. Configure support departments.
12. Submit a support ticket.
13. Reply and add internal notes.
14. Manage ticket status and bulk operations.
15. Assign, transfer and escalate.
16. Review ticket reports and schedules.
17. Create and use canned responses.
18. Create SLA policies.
19. Monitor ticket SLA and breaches.
20. Configure and review satisfaction surveys.
21. Complete the public survey.
22. View and send notifications.
23. Monitor notification delivery.
24. Configure client notification preferences.
25. Submit platform feedback.
26. Manage feedback and responses.
27. Submit and review AI feedback.
28. Create a lease review.
29. Moderate reviews.
30. Manage vendor reviews and responses.
31. Raise a formal dispute.
32. Review and progress disputes.
33. Resolve, notify and analyse disputes.
31 Technical Reference - Core Models and Records
|
Model / record |
Purpose |
|
ChatRoom |
Conversation identity, participants, type, context links, unread and last-message state. |
|
ChatMessage |
Individual sender, content, type, attachment and read data. |
|
SupportTicket |
Full ticket lifecycle including routing, status, priority, assignment, escalation, SLA, effort, AI and customer feedback. |
|
SupportTicketMessage / SupportReply |
Ticket conversation records. |
|
SupportCategory |
Supplied support category lookup model. |
|
SupportDepartment |
Support team department and assigned staff context. |
|
TicketCategory / TicketTag |
Configurable intake categories, colours, order and searchable tags. |
|
SLA |
General priority-based service policy. |
|
SupportTicketSlaPolicy |
Ticket-specific response, resolution and escalation targets. |
|
SupportTicketSlaBreach |
Recorded response/resolution breach. |
|
CannedResponse |
Pre-written reply template and usage count. |
|
SatisfactionSurvey |
Post-resolution ratings, feedback, overall score and recommendation intent. |
|
Notification |
Recipient, sender, content, type, priority, channel, deep link and delivery state. |
|
NotificationPreference |
Per-user event/channel choices. |
|
NotificationSetting |
Platform event templates and notification settings. |
|
LeaseNotification / LeadNotification |
Lease- and CRM-specific notification records. |
|
Feedback |
General platform feedback and admin response. |
|
AIFeedback / AiFeedbackLog |
AI interaction rating and quality-event log. |
|
AIChatbot / AIChatLog |
AI assistant configuration and conversation history. |
|
Review |
Lease-linked reviewer, reviewee, rating and comment. |
|
VendorReview |
Maintenance vendor rating and public response context. |
|
Dispute / DisputeManagement |
Formal lease-linked issue, evidence, amount, status, notes and resolution. |
32 Technical Reference - Chat and Inquiry Controllers
|
Controller / action |
Responsibility |
|
Shared\ChatController@index |
List authorised active ChatRoom records. |
|
create / store |
Create direct/group room with participants and context. |
|
show / loadMoreMessages |
Display paginated conversation and older messages. |
|
sendMessage |
Create ChatMessage, update last-message fields and fire events. |
|
typing / markAsRead |
Broadcast typing and clear unread state. |
|
searchMessages / downloadAttachment |
Search within room and securely stream attachments. |
|
addParticipants / potentialParticipants / removeParticipant / leaveRoom |
Group membership management. |
|
showMaintenanceChat / sendMaintenanceMessage |
MaintenanceRequest-linked conversation. |
|
participantsByProperty |
Return eligible users for a property. |
|
API\Chat\ChatController |
Mobile/direct chat, attachments, participants and leave flow. |
|
PropertyInquiryController |
Start listing inquiry, list own inquiries and exchange messages. |
|
LandlordInquiryInboxController |
Landlord inquiry filters, show, reply, resolve, reopen and unread count. |
|
API\Mobile\Landlord\InquiryController |
Mobile landlord inquiry list, messages, reply and resolve. |
|
LeaseoraAI\ChatController |
AI query, typing, history, feedback, search, export, custom instructions, file upload and reactions. |
|
API\Mobile\Tenant\AIChatController |
Mobile AI sessions, send, history, recommendations, file analysis and deletion. |
33 Technical Reference - Support Ticket Controllers and Methods
|
Functional area |
Controller actions / methods |
|
Ticket intake |
Shared\SupportTicketController@create, @store; API\Support\SupportTicketController@store. |
|
Ticket detail and reply |
@show, @reply, @typing, @addInternalNote. |
|
Status and bulk |
@updateStatus, @bulkUpdateStatus, @bulkAssign, @bulkDelete, @exportReport. |
|
Department / assignment |
@transferDepartment, @assignToStaff, @assignTicket, @getAvailableStaff, @getDepartmentStaff. |
|
Escalation |
@escalateTicket; SupportTicket::escalate, ::escalateToSuperAdmin, ::needsEscalation. |
|
SLA timestamps |
@markFirstResponse, @markResolved, getPerformanceMetrics. |
|
AI response |
SuperAdmin SupportTicketController@generateAIResponse. |
|
Analytics / reports |
@analytics, @reports, @comments, @exportReport. |
|
Contact reply |
@replyToContactMessage. |
|
Follow-up scheduling |
SupportTicketScheduleController full CRUD. |
|
Model transfer |
SupportTicket::transferToDepartment($departmentId, $userId, $reason). |
|
Model assignment |
SupportTicket::assignToStaff($userId, $assignedByUserId). |
|
Customer feedback |
SupportTicket::addCustomerFeedback($rating, $feedback). |
34 Technical Reference - SLA, Survey, Notification and Feedback Controllers
|
Area |
Controllers / actions |
|
Categories and tags |
TicketCategoryController@index, create/store, edit/update, destroy, toggleStatus, updateOrder, tags, store/update/destroy/toggle tag. |
|
Canned responses |
Landlord and SuperAdmin CannedResponseController full CRUD plus @use. |
|
General SLA |
SlaManagementController and SuperAdmin SLAController full CRUD plus @toggleStatus. |
|
Ticket SLA |
SupportTicketSlaPolicy, SupportTicketSlaBreach and SupportTicket::sla/getPerformanceMetrics. |
|
Landlord surveys |
SatisfactionSurveyController@index, create/store, show, destroy, analytics, export. |
|
Public surveys |
SuperAdmin SatisfactionSurveyController@publicForm, @submitPublicForm, @thankYou. |
|
Landlord notifications |
NotificationController@index, @send, @store. |
|
SuperAdmin notifications |
index, create/store, markAsRead/unread, logs, landlordIndex. |
|
Mobile notifications |
API Mobile Tenant NotificationController@index, @markRead; API NotificationController. |
|
Tenant notifications |
Users Tenant Share NotificationController / NotificationsController. |
|
General feedback |
SuperAdmin FeedbackController index, CRUD, landlordIndex/create/store. |
|
AI feedback |
LeaseoraAI FeedbackController, Users Shared AIFeedbackController, SuperAdmin AIFeedbackController, AiFeedbackLogController, AIChatLogController. |
35 Technical Reference - Reviews, Disputes, Events and Mail Classes
|
Area |
Controllers / services |
|
Landlord reviews |
Landlord Shared ReviewController index, create/store, show, edit/update, destroy. |
|
API reviews |
API Review ReviewController@index, @store, @show. |
|
SuperAdmin reviews |
SuperAdmin ReviewController index, tenantIndex, landlordIndex and CRUD. |
|
Vendor reviews |
VendorReviewsController@index, @respond. |
|
Landlord disputes |
DisputeController@landlordIndex, landlordCreate/store, landlordShow, landlordUpdateStatus, landlordAddNotes. |
|
SuperAdmin disputes |
DisputeController index and CRUD. |
|
Dispute analytics |
DisputeService getDisputeStats, getActiveDisputes, getDisputeDetails, createDispute, resolveDispute. |
|
Real-time events |
ChatRoomMessage, NotificationCreated, AIChatHistoryUpdated, AIChatMessageSent. |
|
Lifecycle events |
NewChatMessage, NewInquiryMessage, SupportReplySent, SupportTicketUpdated, ReviewCreated, DisputeRaised, DisputeUpdated. |
|
Mail classes |
SatisfactionSurveyInvitation, SupportAiReplyNotification, AISupportSummaryMail, ConflictResolvedNotification, AiLeasingChatSummary, GenericNotificationMail. |
36 Technical Reference - ChatRoom and SupportTicket Fields
ChatRoom field reference
|
Field |
Purpose |
|
name, description, type |
Room identity and direct/group/maintenance/inquiry classification. |
|
created_by |
Room creator. |
|
property_id, lease_id, maintenance_request_id |
Direct context links. |
|
participant_ids |
JSON list of participant user IDs. |
|
last_message_id, last_message_at |
Most recent message tracking. |
|
is_archived, is_group |
Room-state toggles. |
|
inquiry_type, inquirable_id, inquirable_type |
Polymorphic inquiry context. |
|
status |
open, resolved or archived. |
|
landlord_agency_id, landlord_type |
Landlord context. |
SupportTicket field groups
|
Field group |
Fields |
|
Core |
subject, description, category, category_id, status, priority, department_id, property_id. |
|
Actors / channel |
created_by, assigned_to, channel, ticket_type, recipient_id, landlord_id, submitter_email, submitter_name. |
|
Follow-up |
scheduled_follow_up, follow_up_notes. |
|
Assignment |
assigned_at, assigned_by, assignment_count, assignment_history. |
|
Escalation |
is_escalated, escalated_to, escalated_at, escalation_reason, escalation_level. |
|
SLA |
first_response_at, response_time_hours, resolved_at, resolution_time_hours. |
|
Effort / specialist |
complexity_level, estimated_effort_hours, actual_effort_hours, requires_specialist, required_skills. |
|
Satisfaction |
customer_rating, customer_feedback, feedback_submitted_at. |
|
AI |
ai_response, ai_response_at. |
37 Technical Reference - AI Features and Service
|
Feature |
Controller / service |
Stored / emitted data |
|
AI chat assistant |
LeaseoraAI ChatController + LeaseoraAIService |
AIChatbot, AIChatLog, history, reactions and custom instructions. |
|
Mobile AI chat |
Mobile Tenant AIChatController + OpenAIService |
Sessions, responses, history, recommendations and file analysis. |
|
Ticket draft response |
SuperAdmin SupportTicketController@generateAIResponse |
SupportTicket.ai_response and ai_response_at. |
|
AI escalation check |
SupportTicket::needsEscalation |
Escalation recommendation based on age, SLA or complexity. |
|
AI support summary |
AISupportSummaryMail |
Session summary sent to agent/landlord. |
|
AI chat summary |
AiLeasingChatSummary |
AI chat-session summary email. |
|
AI feedback |
AIFeedback / AiFeedbackLog |
Thumbs rating, text feedback and quality logs. |
|
AI events |
AIChatHistoryUpdated, AIChatMessageSent |
Real-time AI conversation updates. |
38 Implementation Details Requiring Production Confirmation
The supplied scenario defines the intended controllers, models, fields and workflows but does not fully state every production rule. The product, engineering, legal, privacy and operations teams should confirm the following before release or formal training:
|
Area |
Details to confirm |
|
Chat read model |
Exact ChatMessage read-status records and unread-count calculation. |
|
Direct room uniqueness |
How one direct room per user pair is enforced and retried idempotently. |
|
Attachment limits |
Allowed formats, maximum size, malware scanning and storage retention. |
|
Broadcast channels |
Exact WebSocket/Pusher channel names, authorisation and retry behaviour. |
|
Ticket transitions |
Whether all status transitions are allowed and who may reopen/close. |
|
Bulk deletion |
Retention restrictions, soft delete and legal hold behaviour. |
|
SLA clock |
Business calendar, holidays, pause rules and time-zone calculation. |
|
Auto escalation |
Exact needsEscalation thresholds and whether action is automatic or advisory. |
|
Survey token |
Expiry, one-time submission, duplicate prevention and privacy notice. |
|
NPS calculation |
Exact promoter/detractor mapping for would_recommend. |
|
Notification provider |
Configured email, SMS and push services and delivery-status semantics. |
|
Review publication |
Draft/published states, edit window, response and moderation policy. |
|
Dispute authority |
Who can resolve, reopen, escalate, delete and approve financial remedies. |
|
Currency storage |
Original dispute currency field and preferred-currency display rules. |
|
AI context |
Which records are sent to each AI service and retention/privacy controls. |
|
Scopes / policies |
Exact SupportTicketScope, NotificationScope, participant and role authorisation. |
|
Audit trail |
Which message, status, assignment, notification and dispute changes are retained. |
|
Confirm against the live build This guide preserves the supplied names and intended flows. Where the production interface, API or code uses additional fields, statuses, validation rules, permissions or delivery providers, update the guide before user training and go-live. |
Appendix A - Recommended Ticket Intake Checklist
☐ Correct ticket type and recipient.
☐ Clear subject and factual description.
☐ Correct category, priority and department.
☐ Property and lease context where relevant.
☐ Safe evidence attached.
☐ Impact and requested outcome stated.
☐ Contact and follow-up time confirmed.
☐ No duplicate open ticket exists.
Appendix B - Recommended Priority Definitions
|
Priority |
Suggested operational interpretation |
|
Low |
General question or minor issue with little immediate impact. |
|
Medium |
Normal service issue affecting one user or ordinary operation. |
|
High |
Significant service disruption, financial impact or repeated failure requiring prompt ownership. |
|
Urgent |
Severe time-sensitive impact, safety concern or critical business interruption. |
|
Critical |
Immediate major safety, security, privacy, legal or platform-wide risk requiring executive/escalation response. |
|
Use company-approved definitions The exact priority criteria and response targets must be approved by the real estate company and aligned with the live SLA configuration. |
Appendix C - Support Reply Quality Checklist
☐ Correct recipient and ticket context.
☐ Acknowledges the actual question or issue.
☐ Facts verified from Leaseora records.
☐ No confidential internal note included.
☐ Plain, respectful language.
☐ Action owner named.
☐ Next step and expected time stated.
☐ Amounts, dates, links and attachments checked.
☐ AI/template content reviewed.
☐ Status updated consistently.
Appendix D - Escalation Handover Template
|
Handover field |
Content |
|
Ticket / dispute reference |
Unique identifier and deep link. |
|
Client and context |
Authorised user, property, lease or service. |
|
Issue and impact |
What is happening and who is affected. |
|
Actions completed |
Investigation, replies and attempted resolution. |
|
Evidence |
Relevant attachments, logs, records and dates. |
|
SLA position |
Target, actual time and breach risk. |
|
Reason for escalation |
Authority, complexity, safety, financial, legal, privacy or technical need. |
|
Requested decision |
Specific action needed from the receiving person. |
|
Next communication |
Who will update the client and when. |
Appendix E - Dispute Resolution Record Checklist
☐ Correct lease and parties.
☐ Issue, type, priority and amount.
☐ Original evidence preserved.
☐ Relevant chat, ticket, payment, maintenance and inspection history.
☐ Both parties' statements.
☐ Applicable lease terms and policy.
☐ Mediation/escalation steps.
☐ Decision authority.
☐ Detailed resolution and financial treatment.
☐ Completion date and notifications.
☐ Closure/reopen rule.
Appendix F - One-Page Operating Reference
|
When this happens |
Use this Leaseora workflow |
|
Quick question or coordination |
ChatRoom. |
|
Question about a listing |
Property inquiry. |
|
Issue needs owner/status/deadline |
SupportTicket. |
|
Repeated common question |
CannedResponse inserted into a reviewed reply. |
|
Response or resolution target |
SLA / SupportTicketSlaPolicy. |
|
Target missed |
SupportTicketSlaBreach and escalation. |
|
Ticket resolved |
SatisfactionSurveyInvitation. |
|
Custom alert |
Notification. |
|
Product/service suggestion |
Feedback. |
|
AI answer quality issue |
AIFeedback. |
|
Opinion after tenancy/job |
Review / VendorReview. |
|
Formal unresolved material issue |
Dispute. |
|
LEASEORA COMMUNICATION & SUPPORT One connected service system for conversations, inquiries, tickets, SLA, satisfaction, notifications, feedback, reviews and dispute resolution. |
Support and onboarding
For corporate onboarding, staff training or operational support, contact Leaseora at support@leaseora.com.
leaseora.com
Was this article helpful?
Your feedback helps us improve our documentation.