Home Services: Sample End-to-End Test Script
This script exercises the Home Services flow end-to-end. Use this to verify the full experience including problem-first routing, dynamic Q&A, professional selection, and request submission.
SPI Flow: getAvailableServices → getProfessionals → getServiceProjectSchema → Q&A → populateCustomerProfile → previewBookingRequest → messageProfessional
Prerequisites
- Addon deployed (
alexa-ai deploy) - Infrastructure deployed (
npx cdk deploy) - Permissions granted (via QR code scan in Alexa+ app)
- Phone number added to your profile (required for messageProfessional)
- Echo Show device (required for APL visuals, pro cards, profile selection)
Conversation Script — House Cleaning (Browse & Choose)
| # | U/A | Utterance / Response | SPI Operation / Validation |
|---|---|---|---|
| 1 | User | "I need house cleaning" | — |
| 2 | Alexa | "Sure, I'd be happy to help you find a house cleaning service. Tell me more about what you need — how many rooms, any specific requirements? The more details you share, the better I can match you with the right pro." | Problem-First Routing. Verify: Alexa asks about the problem/details FIRST before showing pros |
| 3 | User | "My house needs a deep cleaning, 3 bedrooms" | — |
| 4 | Alexa | "I found some great cleaning services in your area. <Pro 1>, <Pro 2>, and <Pro 3> are available. You can ask me to compare pros by price, ratings, and more, or for a recommendation. Who would you like to go with?" | getAvailableServices → getProfessionals. Verify: Pro cards displayed with names, ratings, provider logo. Cards uniform size, not cropped. Suggestion pills generated below cards |
| 5 | User | "Tell me about <Pro 1>" | — |
| 6 | Alexa | "<Pro 1> is run by <Name>, who's been in business for 3 years. They've got a 5-star rating and start at $110." | Verify: Pro detail info rendered (name, years, rating, price, specialties) |
| 7 | User | "Compare them" / "Compare the first two" | — |
| 8 | Alexa | [Verbal comparison of pros + side-by-side APL card] | Verify: Comparison APL card renders on Echo Show (ratings, price, response time side-by-side) |
| 9 | User | "Let's go with <Pro 1>" | — |
| 10 | Alexa | "Alright, what kind of cleaning do you need? Move out, deep, or standard? And how often — just once, weekly, every two weeks, or monthly?" | getServiceProjectSchema → Dynamic Q&A. Verify: 2 related questions combined per turn (not all at once, not one at a time) |
| 11 | User | "Standard, just once" | — |
| 12 | Alexa | "How many bedrooms and bathrooms do you have?" | Verify: Related questions combined (bedrooms + bathrooms together) |
| 13 | User | "3 bedrooms, 2 bathrooms" | — |
| 14 | Alexa | "Any pets in the house? And when would you like this done?" | Verify: Next pair of questions combined |
| 15 | User | "No pets, within a week" | — |
| 16 | Alexa | "I found two profiles. The first is [3P Profile], and the second is [Alexa Profile]. Which one would you like to use?" | populateCustomerProfile (Account Matching). Verify: Profile cards on Echo Show with name, email, phone. If only 1 profile → auto-selected |
| 17 | User | "Select the first one" | — |
| 18 | Alexa | "Alright, I've got your request ready. <Pro> will clean your 3-bedroom house within a week. Sound good?" | previewBookingRequest. Verify: Summary APL shows pro name, time shown as readable range, contact info visible |
| 19 | User | "Can you edit some details?" | — |
| 20 | Alexa | "Sure, what details would you like to change?" | Verify: Edit details works via voice command |
| 21 | User | "Change it to 4 bedrooms" | — |
| 22 | Alexa | "Updated! <Pro> will clean your 4-bedroom house within a week. Sound good?" | Verify: Summary updates with new value |
| 23 | User | "Yes" | — |
| 24 | Alexa | "Great! Your request has been sent to <Pro>. They'll get back to you soon." | messageProfessional. Verify: Request sent successfully, TTS mentions pro name |
Operations Coverage
| # | SPI Operation | What it validates |
|---|---|---|
| 1 | getAvailableServices | Returns available service categories for the user's area |
| 2 | getProfessionals | Returns ranked professionals matching the service and location |
| 3 | getServiceProjectSchema | Returns dynamic Q&A form fields for the selected service |
| 4 | populateCustomerProfile | Matches and displays user profiles for selection |
| 5 | previewBookingRequest | Generates a summary of the request for user confirmation |
| 6 | messageProfessional | Submits the request to the selected professional |
Physical Device Validations (Echo Show)
| # | Area | What to Check |
|---|---|---|
| 1 | Pro Cards Layout | Cards not cropped, full content visible, uniform size across all pros |
| 2 | Pro Images | Profile photos loading correctly (no broken icons) |
| 3 | Provider Logo | Provider logo renders correctly (not raw text) |
| 4 | Suggestion Pills | Quick-action chips displayed below pro cards ("Select first pro", "Compare", "See more") |
| 5 | Compare APL | Side-by-side comparison card renders when user asks to compare |
| 6 | Question Batching | 2 related questions combined per turn, proper grouping |
| 7 | APL Card Spacing | No visible gaps between Q&A sections — consistent spacing |
| 8 | Profile Cards | Uniform size, showing name, email, phone for each profile |
| 9 | Auto-Selection | If only 1 profile available → auto-selected without prompting |
| 10 | Pro Name on Summary | Selected professional's name shown on summary card |
| 11 | Time Display | Readable time range (e.g., "Morning (9AM - 12PM)") not raw slot values |
| 12 | Contact Info | Contact details visible on confirmation card |
Supported Categories
Home Services supports dynamic categories via your provider's service catalog (getAvailableServices). Categories are not hardcoded — the provider's catalog determines what's available.
Sample utterances for testing across categories:
| # | Category | Sample Utterance |
|---|---|---|
| 1 | House Cleaning | "I need house cleaning" |
| 2 | Handyman | "I need a handyman" |
| 3 | Appliance Repair | "My fridge is making weird noises" |
| 4 | Lawn Mowing | "I need help with lawn mowing" |
| 5 | Electrical Repair | "I need an electrician" |
| 6 | Plumbing | "My kitchen faucet is leaking" |
| 7 | TV Mounting | "Find pros to mount my TV" |
| 8 | Pest Control | "Find a pest control service near me" |
| 9 | Pressure Washing | "Find a pro to pressure wash my driveway" |
| 10 | Gutter Cleaning | "Find someone to clean my gutters" |
Alternate Utterances
| # | Intent | Utterance Options |
|---|---|---|
| 1 | Start HS flow (general) | "I need help with my house" / "I need a home service" / "Can you help me find a pro?" |
| 2 | Start HS flow (specific category) | "I need house cleaning" / "My fridge is making weird noises" / "I need an electrician" / "My kitchen faucet is leaking" |
| 3 | Describe problem | "My house needs a deep cleaning" / "The dishwasher is broken" / "I have ants in my kitchen" / "My lawn is overgrown" |
| 4 | Get pro details | "Tell me about [name]" / "Can you give me more information about the first one?" / "How many reviews does [name] have?" |
| 5 | Compare pros | "Compare them" / "Compare the first two" / "Who has better ratings?" / "Who's cheaper?" / "Recommend one" |
| 6 | Select pro | "Let's go with [name]" / "Send a request to [name]" / "The first one" / "Proceed with [name]" |
| 7 | Answer Q&A | "Standard, just once" / "3 bedrooms, 2 bathrooms" / "No pets" / "Within a week" / "Morning" / "ASAP" |
| 8 | Profile selection | "Select the first one" / "Use my Alexa profile" / "The first profile" |
| 9 | Edit details (voice only) | "Can you edit some details?" / "Change the date" / "Change it to 4 bedrooms" / "Move it to next week" |
| 10 | Confirm request | "Yes" / "Sounds good" / "Send it" / "Confirm" / "That works" |
| 11 | Decline / Cancel | "No" / "Cancel" / "Never mind" / "I changed my mind" / "Let's try a different pro" |
Notes
- Problem-first routing: The Home Services flow asks about the problem FIRST. Alexa does not immediately list pros — it asks for details, then finds matching professionals.
- Batched Q&A: Questions come from the provider's dynamic catalog (getServiceProjectSchema). 2 related questions are combined per turn — NOT all at once.
- Account matching: Both 3P profile and Alexa profile are shown. 3P profile fields are backfilled from Alexa profile when missing.
- Dynamic categories: The provider's catalog can expose many categories beyond a fixed set via getAvailableServices.
- Edit Details: Edit details works via voice command ("Can you edit some details?") but the APL button is not available on screen.
- Missing phone: If the selected profile has no phone number, a clear error should display and prompt to switch profile or add a phone number.
Related topics
Last updated: Jul 10, 2026

