Niki Ramlogan
WorkAboutResumeGet in touch
Case study

AI Service Request Intake

When a generative AI chooses its own path, there are no flows to define and map. I built a modular component system the AI assembles on its own, and tested it against real scenarios.

An interactive demo of the final design is available on a larger screen.
Background

Roofstock is a real estate investment platform for buying, managing, and selling rental properties. Its property management arm, Mynd, is a full-service management company handling tenant placement, maintenance, rent collection, and day-to-day operations for thousands of single-family rentals across multiple markets. When something breaks in one of those homes, the resident needs a fast way to report it, and Mynd needs enough detail to dispatch the right fix without a round of follow-up questions.

One Bot Too Many

Residents reach Mynd mainly through ResBot, an AI chatbot introduced not long before this project, which was already bringing case volume down. Mynd wanted to expand what the bot could resolve on its own since it was performing well.

Intake today

ResBot handled routine questions well but couldn’t intake service requests. When a resident had a leaky faucet or a broken air conditioner, ResBot handed them off to a third-party service called Mezo.

Mezo’s intake was a rigid decision tree with a lot of button-clicking. Residents had to complete several steps before they could describe the problem in their own words, and there was no way to report more than one issue at a time. Many picked “I don’t know” just to get through the flow, and the requests came in shaped by whatever they had clicked rather than what was actually wrong.

Resident
ResBot
Mezo (3rd party)
Service Request
Downstream

Every gap in the intake became manual work for someone else.

Missing photos

Requests arrived without photos, so maintenance project coordinators (MPCs) had to go back to the resident and ask.

No troubleshooting record

Many service requests arrived with no record of troubleshooting, which meant another follow-up.

Duplicate submissions

Duplicate service requests were common, since residents couldn’t see whether their issue was already open.

Two intake flows

Resident-submitted requests didn’t follow the internal team’s flow at all, so the data looked different depending on who created it.

The problem

The handoff between the two automated services was disjointed, and Mezo was expensive. We wanted to replace it with an in-house solution.

Contract ends
MezoIn-house
2 months
Constraints

We had two months from kickoff to shipped, and the Mezo contract had to end on the same date. There was no phased rollout to fall back on and no option to launch part of the experience. Whatever we designed had to replace Mezo completely on the day it went live. That ruled out learning as we went, which meant I had to know what a complete service request required before designing how the bot would collect it.

32 Things the AI Might Need to Ask

Finding out what a complete service request required meant asking the people who work them. Through stakeholder interviews with MPCs and the maintenance team, I cataloged 32 distinct pieces of information the AI might need to collect during any given intake conversation.

Location & Classification
Where is the issue?What category does it belong to?What item is affected?What component is affected?
Symptom & Severity
What is happening?Is it an emergency?Impact on the resident?Can they prevent further damage? (mitigation)
Business Rules
Is the resident responsible?Is it cosmetic?Was it recently reported? (duplicate)Move-in/move-out timing?
Eligibility & Compliance
Under warranty or recent work?Regulatory/compliance? (HUD, code, habitability)Special circumstances? (Section 8, accommodations)Recurring pattern?
Resolution Path
What have they already tried?Are they willing/able to troubleshoot?Can troubleshooting resolve it?Requires in-person visit?
Dispatch
What type of technician? (In-house, vendor, specialist)When do they need it resolved?Resident availability?Access requirements/restrictions?
Communication & Presence
Contact preference?Communication level expected?Present during work?Understand next steps?
Documentation & Context
Visual documentation available?Environmental factors to document?Confidence in their description?Additional context?
Context, not a checklist

What surprised me was how much of that list was contextual. A clogged toilet in a unit with two bathrooms is routine. A clogged toilet in a unit with one bathroom, occupied by a family, is urgent. Whether to ask about Section 8 status, HUD standards, or move-out timing depends on metadata the system may or may not have. The information needed shifted based on the conversation.

That created a tension between speed of reporting and depth of information. Residents want to report an issue in a few taps and have it resolved fast. Mynd wants enough detail that an MPC can send the request straight to a vendor without touching it. A stakeholder described the “magic wand” version as enough information that nobody has to follow up with the resident after submission.

Speed of reportingReport fast and get help
Depth of informationComplete, actionable data
Our solution

Explain to residents why providing detail benefits them: “Answer now and we can fix things quicker, with the right parts on the first visit.”

The reframe

Traditional UX for a chatbot means mapping conversational flows. If the user says X, go to branch Y. But ResBot wasn’t a decision tree. It was a generative AI that evaluated context and chose its next action dynamically, so mapping every branch would break the moment it deviated from the script. The 32 information points weren’t a linear checklist either. Different conversations would need different subsets, in different orders, depending on what the resident described. I wasn’t designing a flow. I was designing a system of parts that could create any flow.

Design the Pieces, Not the Path

Creating a system of parts meant defining each piece well enough for the AI to use, and ruling out mapped branches.

The approach

The governing design principle was modular component design. Build the individual pieces the AI can use, then let it assemble them dynamically based on the conversation.

The alternative

Map the conversational paths instead. “If the resident mentions water, go to the plumbing branch.” That’s how Mezo worked, and how most chatbot design works. Rigid flows would constrain the contextual judgement that makes a generative AI useful, and recreate the experience we were replacing.

The component library

I created 22 components in three groups: what the AI uses to collect information, what it uses to present information, and special workflows it may need to run. For each one, the spec captured what it’s for, when the AI should use it, what data it takes in and produces, and whether it mapped to an existing ResBot UI element or required a new build.

Input Collection
Free Form Text InputCapture open-ended resident descriptions and responses.
Multiple ChoiceDynamic option selection based on conversation context.
Yes/No (Binary Choice)Simple confirmations and boolean decisions.
Media UploadPhoto/video capture with preview and conversation integration.
Follow UpAI-initiated clarification and conversation recovery.
Availability CaptureMulti-day/time selection for resident to provide availability.
Scheduling InterfaceAvailable time slots with calendar view and booking capability.
Information Display
SR PreviewReal-time summary of collected information related to the service request.
System MessageReal-time feedback for system actions, state changes, and confirmations.
Confirmation SummaryFinal review of entire SR intake and submission confirmation.
Expectation SettingCommunicate timelines, processes, and next steps.
Progress IndicatorShow completion status of the SR intake process without being prescriptive.
Educational CalloutExplain processes, policies, and value of information requests.
Media DisplayShow videos, images, and reference materials.
SR StatusPost submission status tracking and updates.
Request Follow UpResident-initiated requests for updates or additional help.
Workflow
Emergency HandlingImmediate escalation path for urgent issues.
Duplicate Detection & HandlingIdentify and manage existing related service requests.
Deflection HandlingManage non-supported issues such as resident responsible, cosmetic, etc.
Mitigation HandlingImmediate damage prevention instructions for reported issue.
TroubleshootingStep by step DIY fix instructions with completion tracking.
Multi-Issue HandlingManages multiple service requests in one conversation.
Running the workflows

Once the AI understands the issue, four actions can follow, and the order matters.

1Duplicate CheckPrevents wasted efforts on
all subsequent steps
already open, stop here
2DeflectionSaves time if the issue
won’t be handled
not handled, stop here
3MitigationSafety first, prevents the
need for escalation
damage contained, continue
4TroubleshootingMost time-sensitive, only
for confirmed issues
resolved, no work order
The one-way door

A stakeholder raised a concern that too many diagnostic questions could slow things down and block service request creation. The proposal was to create the work order first and ask diagnostic questions as follow-ups. It made sense at first, get the request into the system fast, then enrich it.

Reviewing the full sequence turned up a structural problem. After work order creation, the next step was scheduling, which linked the resident out of the bot. A resident who clicked through to book an appointment had no reason to come back to the conversation. Every diagnostic question after that point would likely go unanswered, and the data Mynd needed most would be the data it lost (what the technician should bring, how severe the issue is, whether the resident had already tried something). Creating first and asking later optimized for the speed of making a record at the cost of the information that makes the record useful.

Required vs. optional

To solve that, we split intake questions in two. Required questions captured the minimum needed to create a work order. Optional questions enriched it but never blocked it, so even if a resident abandoned halfway through the process, we had enough for an informed dispatch decision.

RequiredCore taxonomyEmergency / safety assessmentResident-responsibility checkBasic scheduling needs
Work order can be created
OptionalImpact descriptionWhat they’ve triedMedia uploadAccess instructions
Designing the wait

Engineering flagged that the bot could take 40 to 60 seconds to respond and the loading spinner would time out. They asked me for messaging to show the resident while the AI worked.

My first attempt used task-specific messages like “understanding your issue,” but we couldn’t predict which step was slow, so the message could often be wrong. My second attempt offered a handoff to a human, but I learned that capability didn’t exist. That’s when I stepped back and reconsidered the ask. We were treating this as a messaging problem, but the messaging was covering for a performance problem.

Frequent updates draw more attention to a delay, so I went with fewer messages and longer silent gaps. I also avoided apology framing. Apologizing at 30 seconds implies something has gone wrong, when a longer wait sometimes means the bot is working through a detailed description more thoroughly. The final copy set an expectation instead of apologizing, and tied the wait to the resident’s own input. I documented the whole thing as interim, so nobody would mistake polished delay copy for a fixed performance problem.

Leaving and returning

A long intake gives a resident more chances to step away, and some of what they’d already answered was expensive to collect again. I designed a tiered resume system based on how long they were gone:

HotWarmCold
Under 30 minutesHot

Auto-continue exactly where they left off.

30 minutes to 24 hoursWarm

Resume with confirmation, preserve expensive to recapture data.

24+ hoursCold

Smart summary with options to continue, report a new issue, or check status.

Scenario testing

With no flow diagram, I needed a validation method that proved the components worked together without prescribing how they’d be combined. I worked with the team to define six scenarios covering the situations we expected most often, plus a few to test the harder paths. For each one, I mapped which components could appear, in what order, and what data would flow between them.

Emergency Water Leak“My bathroom is flooding!”
Emergency HandlingAI detects urgency
Multiple ChoiceAI asks for location and item
Media UploadResident adds a photo
Scheduling InterfaceAI shows an immediate time window
Confirmation SummaryResident reviews and submits
Troubleshooting First“My dryer isn’t turning on.”
TroubleshootingAI recognizes this is potentially fixable
Free Form Text InputResident tries it, still needs help
Multiple ChoiceAI asks for location
Media UploadResident adds a photo, optional
Scheduling InterfaceAI shows technician time windows
Confirmation SummaryResident reviews and submits
Unsupported Cosmetic Issue“There’s a scratch on my hardwood floor.”
Deflection HandlingAI tags the issue as cosmetic
Educational CalloutAI explains why it is unsupported
System MessageAI offers a redirect to the support center
Multiple Requests in One Message“My fridge is leaking and my oven won’t heat.”
Multi-Issue HandlingAI parses multiple issues
Free Form Text InputAI runs intake for each issue in turn
Multiple ChoiceAI asks for location and item, per issue
Media UploadResident adds a photo, per issue
Scheduling InterfaceAI shows time windows, per issue
Vague Input to Clarification“Something’s wrong with the sink.”
Follow UpAI needs more information
Multiple ChoiceAI asks the resident for clarification
Follow UpAI asks again if still unclear
Already Reported“I already told you about this leak.”
Duplicate Detection & HandlingAI matches an open request
SR StatusAI shows the existing request and its appointment
Multiple ChoiceResident confirms same issue or something new
Confirmation SummaryAI adds a note, no second request created
In the interface

Nine components carried most of the intake conversation. Each one had to make sense the moment it appeared, since the resident had no way of knowing what the AI would ask next.

9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

There’s water under the kitchen sink again
Mynd

This matches an open request for the same sink. Is it the same issue, or something new?

Request #48219 Open
Leak under kitchen sink
Water pooling under the kitchen sink. Resident advised to place a bowl under the plumbing and limit use until the visit.
Scheduled service
Rivas Plumbing
August 28, 2026 (9am – 12pm)
Track this request
Send a message...
Duplicate Check
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

No hot water since last night

No hot water is something we act on right away. I have started looking for a plumber who can come today.

First, a safety note. Your water heater runs on gas. If you smell anything like rotten eggs or sulfur, leave the house and call 911.

Mynd

Tell me a little more about what is happening. Which of these sounds closest?

Send a message...
Multiple Choice
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Send a message...
Add photos or videos
Up to 30MB each: jpg, png, mov, mp4
Media Upload
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Mynd

Thank you for the photo. Before I get you scheduled, two things will keep this from getting worse.

1. Do not run another cycle, as that will send more water through the dishwasher. 
2. Keep the door closed so the standing water stays in the tub.
Send a message...
Media Display
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Mynd

Thank you for the photo. Before I get you scheduled, two things will keep this from getting worse.

1. Do not run another cycle, as that will send more water through the dishwasher. 
2. Keep the door closed so the standing water stays in the tub.
Send a message...
standing water in the tub
Photo 1 of 1 Sent 8:22 AM
Media Preview
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Mynd

Thank you for the photo. Before I get you scheduled, two things will keep this from getting worse.

1. Do not run another cycle, as that will send more water through the dishwasher. 
2. Keep the door closed so the standing water stays in the tub.
Got it
Mynd

Let me work on getting a technician out to you. Select time windows on two different days and I will book the earliest opening that's available.

Send a message...
Select availability
Pick times on at least two different days.
All day 8am – 5pm
Morning 8am – 12pm
Afternoon 12pm – 5pm
Evening 5pm – 8pm
Availability Capture
9:41
Chat
Today, 8:17 AM
Last active 51 hours ago
Mynd

Welcome back, Lucy. You started a request on Tuesday and we had not set a time yet.

Continue where I left off
Mynd

Two windows have opened on Friday since Tuesday, so you can pick a time directly instead of sending me your availability.

Send a message...
Book appointment
Select a date and time that works for you.
9am – 10am (1 hour)
11am – 12pm (1 hour)
1pm – 2pm (1 hour)
3pm – 4pm (1 hour)
4pm – 5pm (1 hour)
Book Appointment
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Mynd

Thank you for the photo. Before I get you scheduled, two things will keep this from getting worse.

1. Do not run another cycle, as that will send more water through the dishwasher. 
2. Keep the door closed so the standing water stays in the tub.
Got it
Mynd

Let me work on getting a technician out to you. Select time windows on two different days and I will book the earliest opening that's available.

August 27, 2026 (8am – 12pm) August 28, 2026 (12pm – 5pm)
Mynd

I have everything I need. Please review before I create the request.

Request #48812
Dishwasher will not drain,
tub has standing water
1418 Ridgemont Dr
Round Rock, TX 78664
Kitchen
Dishwasher
Your availability
August 27, 2026 (8am – 12pm)
August 28, 2026 (12pm – 5pm)
Attachments
Send a message...
Request Review
9:41
Chat
Today, 8:17 AM
Mynd

Hi Lucy, how can I help you today?

My dishwasher isn’t draining

Thank you for letting me know. Standing water in the dishwasher is something we can help with.

Mynd

Is water leaking onto the floor or into the cabinet right now?

No, there is no water leaking
Mynd

Can you take a photo of the standing water and the model sticker inside the door? This helps us make sure the technician arrives with the right part.

Mynd

Thank you for the photo. Before I get you scheduled, two things will keep this from getting worse.

1. Do not run another cycle, as that will send more water through the dishwasher. 
2. Keep the door closed so the standing water stays in the tub.
Got it
Mynd

Let me work on getting a technician out to you. Select time windows on two different days and I will book the earliest opening that's available.

August 27, 2026 (8am – 12pm) August 28, 2026 (12pm – 5pm)
Mynd

I have everything I need. Please review before I create the request.

Request #48812
Dishwasher will not drain,
tub has standing water
1418 Ridgemont Dr
Round Rock, TX 78664
Kitchen
Dishwasher
Your availability
August 27, 2026 (8am – 12pm)
August 28, 2026 (12pm – 5pm)
Attachments
Create the request
Mynd

Your request is created.

Request #48812 Confirming
Dishwasher will not drain,
tub has standing water
A technician will confirm one of your time windows within 4 hours. We will then text you with an expected arrival time.
Track this request
Send a message...
Confirmation Summary

What Modular Intake Made Possible

The project had to do three things, fix the disjointed handoff, make the data consistent, and close the mismatch between a decision-tree design and a generative AI.

Mezo contract eliminated

The design replaced Mezo completely, which gave us control over the intake experience and its data. There was no partial version to fall back on, so the new intake stood on its own from day one.

Handoff problem solved

Residents now report issues inside the bot they were already talking to. There is no handoff to a second interface, and no context lost between the two systems.

Data consistency across intake paths

Resident-submitted and internal requests run through one system, so the data no longer depends on who created it. The maintenance team gets the same request either way.

Resident
ResBot
Service Request
What I’d change

Looking back, I’d speak up on the order we built things in.

I prioritized components by engineering effort, dependencies, and what the system couldn’t function without. The team built scheduling, media upload, and availability capture first, based on perceived impact. Core workflow components like duplicate detection and emergency handling shipped later, and the full library was never finished.

All case studies
Niki Ramlogan · Senior Product Designer
LinkedInResume