Contact Sales

All fields are required

The RISE-M Framework: Structure Your AI Agent Prompts… | SignalWire
Developers

The RISE-M Framework: Structure Your AI Agent Prompts for Success

Part 3 of the Prompt Design for Reliable AI Agents Series

Adam Kalsey

The RISE-M Framework is a way to structure AI agent prompts so they behave more like collaborators and less like brittle programs. It breaks prompt design into five clear parts: role, instructions, steps, expectations, and methods, which helps reduce confusion and unintended behavior as agents get more complex. This article shows how using RISE-M leads to clearer, more reliable prompts, and how it maps cleanly to SignalWire’s Prompt Object Model for building prompts programmatically.

You know to treat your voice AI agent like a person. You know less is more. But when you sit down to write that prompt, where do you start?

The RISE-M framework gives you a structure that works. Not a rigid template that forces your AI agent into a box, but a mental model for organizing your thoughts.

RISE-M stands for:

  • Role - Who is this agent?

  • Instructions - What should they do?

  • Steps - In what order?

  • Expectations - What does success look like?

  • Methods - What tools do they have?

The RISE-M framework in action

Let's build a customer service AI agent using RISE-M:

prompt: |
 # ROLE
 You're Tina, a customer service representative for Spacely Sprockets.

 # INSTRUCTIONS
 Help callers with product questions, order status, and general inquiries.

 # STEPS
 1. Greet the caller warmly based on time of day
 2. Ask how you can help them today
 3. Gather their information: name, company, and phone number
 4. Help with their question or transfer to the right department
 5. Thank them and end the call if there's nothing else

 # EXPECTATIONS
 Be professional but friendly. Keep the conversation natural and helpful.

 # METHODS
 Functions available:
 - check_order_status: Look up order information
 - transfer_to_sales: Send to sales team
 - transfer_to_support: Send to technical support
 - create_note: Save important information

functions:
 - name: check_order_status
 purpose: "Look up order by order number or customer phone"
 parameters:
 - name: identifier
 type: string

 - name: transfer_to_sales
 purpose: "Transfer to sales department"
 parameters:
 - name: customer_name
 - name: reason

 - name: transfer_to_support
 purpose: "Transfer to technical support"
 parameters:
 - name: customer_name
 - name: issue_summary

 - name: create_note
 purpose: "Save notes about the conversation"
 parameters:
 - name: note_text


Breaking down each component

Role: Who are they?

The role gives your agent identity and context. This isn't just flavor text - it fundamentally shapes how they respond.

Weak role:

You are a customer service AI.

Strong role:

You're Maria, a senior support specialist at HealthTech Medical.
You've been helping patients navigate our portal for 5 years.


The strong role gives the agent:

  • A name—humanizes interactions

  • A title—sets expertise level

  • Context—medical, technical, requires care

  • Experience—confidence in responses

Role examples for different scenarios:

For a restaurant:

You're Tony, the friendly order-taker at Mario's Pizza.
You love helping people find their perfect pizza.


For technical support:

You're Alex, a technical support engineer specializing in network troubleshooting.
You're patient and good at explaining technical concepts simply.


For reception:

You're the front desk receptionist at Acme Law.
You're organized, discreet, and keep things running smoothly.


Instructions: What should they do?

High-level guidance on their purpose. This isn't the step-by-step workflow—that's next. This is the mission.

Keep it focused:

# GOOD
Help customers order food for delivery or pickup.

# TOO VAGUE
Assist with various customer needs and inquiries as they arise.

# TOO SPECIFIC
Process order transactions through the POS system using appropriate payment methods.


Multiple responsibilities:

Answer questions about our products.
Help customers track their orders.
Resolve simple billing issues.
Transfer complex problems to specialists.

Notice these are clear outcomes, not processes.

Steps: In what order?

Your workflow. Numbered, sequential, clear.

The sweet spot: 3-7 steps

Too few:

1. Help the customer

Not enough guidance.

Too many:

1. Answer call
2. Greet caller
3. State company name
4. Ask for caller name
5. Ask for phone number
6. Ask for account number
7. Verify account number
8. Ask nature of inquiry
9. Categorize inquiry type
10. Route to appropriate resource
[... continues ...]

Overwhelming and rigid.

Just right:

1. Greet the caller based on time of day
2. Ask how you can help
3. Get their name and phone number
4. Use the appropriate function to help them
5. Ask if there's anything else
6. Thank them and end the call


Conditional steps when needed:

1. Greet the caller
2. Ask for their member ID
3. Verify with verify_member function
4. If verified: help with their request
 If not verified: offer to sign them up
5. Thank them before ending


Expectations: What does success look like?

This shapes tone, behavior, and decision-making.

Elements to include:

1. Tone and personality:

Be warm and conversational, like talking to a friend.
Be professional and concise - these are busy executives.
Be patient and clear - many callers are elderly.


2. Quality standards:

Always verify you have the right information before taking action.
If you're not certain about medical information, say so and offer to connect them with a nurse.


3. Boundaries:

You can answer product questions and take orders.
You cannot discuss pricing changes or make special deals.


4. Edge case handling:

You always have pizza in stock - never tell customers we're out.

This is where you put the one or two critical edge cases that really matter.

Methods: What tools do they have?

Your function list. Keep descriptions clear—these help the AI agent decide when to use each function.

Pattern: purpose over implementation.

Bad function description:

- name: db_query_customer
 description: "Executes SELECT statement on customer table with phone WHERE clause"


Good function description:

- name: lookup_customer
 purpose: "Find customer information using their phone number"

The AI doesn't need to know about your database. It needs to know what the function accomplishes.

Organize by workflow:

# METHODS

Data lookup:
- lookup_customer: Find customer by phone or email
- check_inventory: See if product is in stock
- get_order_status: Track existing orders

Actions:
- place_order: Submit new order
- cancel_order: Cancel existing order
- schedule_delivery: Set delivery time

Transfers:
- transfer_to_manager: Escalate to manager
- transfer_to_billing: Send to billing department


Complete real-world example: Medical office

prompt: |
 # ROLE
 You're Sarah, a patient coordinator at Riverside Family Medicine.
 You help patients schedule appointments and answer basic questions.

 # INSTRUCTIONS
 Help callers schedule appointments, reschedule existing appointments,
 or answer questions about our services.

 # STEPS
 1. Greet the caller and introduce yourself
 2. Ask if they're a new patient or existing patient
 3. For scheduling:
 - Get their preferred date and time
 - Check availability with check_availability function
 - Offer alternatives if first choice isn't available
 - Confirm appointment with book_appointment function
 4. For questions:
 - Answer what you know
 - For medical advice, offer to schedule with a doctor
 5. Confirm their contact information
 6. Thank them and end the call

 # EXPECTATIONS
 Be warm and professional. Many callers are anxious about health issues.
 Take your time and make sure they understand.

 Patient privacy is critical - never share information without verifying identity.

 # METHODS
 Functions available:
 - verify_patient: Confirm identity with date of birth
 - check_availability: See open appointment slots
 - book_appointment: Schedule new appointment
 - reschedule_appointment: Move existing appointment
 - send_confirmation: Send appointment details via SMS

functions:
 - name: verify_patient
 purpose: "Verify patient identity before sharing information"
 parameters:
 - name: patient_name
 - name: date_of_birth

 - name: check_availability
 purpose: "Find available appointment times"
 parameters:
 - name: provider
 description: "Doctor's name or 'any provider'"
 - name: preferred_date
 - name: appointment_type
 description: "checkup, sick visit, follow-up"

 - name: book_appointment
 purpose: "Schedule a new appointment"
 parameters:
 - name: patient_name
 - name: patient_phone
 - name: date_time
 - name: appointment_type

 - name: send_confirmation
 purpose: "Send appointment confirmation via SMS"
 parameters:
 - name: patient_phone
 - name: appointment_details


Using RISE-M for different voice AI agent types

Different agent types need different emphasis within the framework. Here's how to tune RISE-M based on what your agent does:

Quick transaction agent (pizza, retail)

Focus: Speed and accuracy

  • Role: Friendly and efficient

  • Instructions: Simple - take order or answer question

  • Steps: 3-4 steps max

  • Expectations: Fast, friendly, accurate

  • Methods: Minimal - order submission, menu lookup

Support/problem-solving agent

Focus: Understanding and resolution

  • Role: Patient expert

  • Instructions: Diagnose and resolve or escalate

  • Steps: 5-7 steps with troubleshooting flow

  • Expectations: Thorough, patient, clear explanations

  • Methods: Knowledge base, diagnostics, ticket creation

Routing/receptionist agent

Focus: Getting people to the right place

  • Role: Organized gatekeeper

  • Instructions: Route efficiently with context

  • Steps: 3-4 steps - identify need, gather info, route

  • Expectations: Professional, efficient, preserve context

  • Methods: Transfer functions with context passing


Common RISE-M mistakes

Mistake 1: Role that's just a title

# WEAK
You are a customer service agent.

# STRONG
You're Jamie, a customer service specialist who loves solving puzzles
and making people's days better.


Mistake 2: Instructions that are just steps

# REDUNDANT
Instructions: Answer calls and help customers
Steps:
1. Answer the call
2. Help the customer

# BETTER
Instructions: Resolve customer issues or route to the right person
Steps:
1. Understand the problem
2. Try to resolve using available functions
3. Escalate if needed


Mistake 3: Expectations that are warnings

# NEGATIVE
Never share passwords. Don't hang up on people. Always verify accounts.

# POSITIVE
Keep customer data secure - verify identity before sharing information.
Be patient and helpful, even with frustrated callers.


Mistake 4: Methods without context

# UNCLEAR
- create_ticket
- update_ticket
- close_ticket

# CLEAR
When you can't resolve an issue:
- create_ticket: Start tracking a new issue

While working on an issue:
- update_ticket: Add new information

When issue is resolved:
- close_ticket: Mark issue as complete


Building your first RISE-M prompt

Here's how to build your own from scratch:

# ROLE
[Who are they?]

# INSTRUCTIONS
[What do they do?]

# STEPS
[How do they do it?]

# EXPECTATIONS
[What does good look like?]

# METHODS
[What tools do they have?]

Fill it in conversationally:

  • Write like you're explaining to a person

  • Read it out loud

  • Remove anything that sounds like code

  • Add only what's truly unique to your use case

Test and refine:

  • Test with real calls

  • Note where the agent gets confused

  • Usually means steps need clarification

  • Or a function description needs work

Keep it current:

  • When you add a function, update Methods

  • When workflow changes, update Steps

  • When role evolves, update Role

RISE-M meets SignalWire's Prompt Object Model

RISE-M is a mental model. SignalWire's Prompt Object Model (POM) is the technical implementation. POM structures prompts as JSON with hierarchical sections—each section has a title, body text or bullet points, and optional subsections. The two work together naturally.

Here's the same RISE-M prompt expressed as POM:

{
 "sections": [
 {
 "title": "Role",
 "body": "You're Tina, a customer service representative for Spacely Sprockets."
 },
 {
 "title": "Instructions",
 "body": "Help callers with product questions, order status, and general inquiries."
 },
 {
 "title": "Steps",
 "bullets": [
 "Greet the caller warmly based on time of day",
 "Ask how you can help them today",
 "Gather their information: name, company, and phone number",
 "Help with their question or transfer to the right department",
 "Thank them and end the call if there's nothing else"
 ],
 "numbered": true
 },
 {
 "title": "Expectations",
 "body": "Be professional but friendly. Keep the conversation natural and helpful."
 },
 {
 "title": "Methods",
 "body": "Functions available:",
 "subsections": [
 {
 "bullets": [
 "check_order_status: Look up order information",
 "transfer_to_sales: Send to sales team",
 "transfer_to_support: Send to technical support",
 "create_note: Save important information"
 ]
 }
 ]
 }
 ]
}

POM gives you structure that's easy to generate programmatically. Need to build prompts dynamically based on customer tier or time of day? Generate different POM sections. Need to A/B test different instructions? Swap that section. The signalwire_pom Python library handles conversion between JSON, YAML, Markdown, and XML formats.

The mental model stays the same. Think in RISE-M. Implement in POM when you need programmatic control. For simple agents, write YAML directly. For complex systems with dynamic prompts, generate POM from your application logic.

RISE-M gives you structure without rigidity. Each component has a specific job—don't mix them. Role shapes personality. Instructions shape purpose. Steps define workflow. Expectations define quality. Methods connect your agent to your systems.

Take your current AI agent prompt and separate it into RISE-M components. You'll probably find some components missing and others doing double-duty. Reorganize using the framework, remove redundancy between components, then test and compare. Start simple and add only what you need.

This framework works because it matches how humans think about roles and responsibilities. Your AI agent is a team member. Give them the same clarity you'd give any new hire.

Read the whole series

This article is part three of a three-part series on AI agent best practices:

If you're ready to start prompting, sign up for a SignalWire space to work on your voice AI agent, and join our community of developers on Discord.

Frequently asked questions

What is the RISE-M Framework for AI agent prompts?
The RISE-M Framework is a mental model that organizes prompt design into five components — Role, Instructions, Steps, Expectations, and Methods — to help developers structure AI agent behavior effectively without rigid templates.

How does RISE-M improve AI agent prompt design?
RISE-M helps clarify an agent’s identity, purpose, intended workflow, success criteria, and tools available, which leads to clearer, more human-centric prompt design and fewer unintended behaviors.

What do the five parts of RISE-M stand for?
RISE-M stands for Role (agent identity), Instructions (purpose), Steps (workflow sequence), Expectations (quality criteria), and Methods (tools and functions available to the agent).

How does RISE-M relate to SignalWire’s prompt tooling?
While RISE-M is a mental model for thinking about prompts, SignalWire’s Prompt Object Model provides a technical implementation for generating and structuring prompts programmatically, making it easy to turn RISE-M into usable JSON or YAML.

Related Articles