Nov 15, 2025

Using MelodyArc

Initializing an Operator in MelodyArc

This tutorial walks you through the first major step in building a MelodyArc operator: initializing the operator and establishing its identity. In later guides, you will expand this operator with skills and expert knowledge, but this guide focuses on the essential foundation:

  • Creating the operator’s skill settings (identity)

  • Creating the operator’s configuration (behavior flow)

  • Initializing the operator in the Operators tab

By the end, you will have a fully initialized Store Associate operator—ready to receive skills in the next tutorial.

Prerequisites

To follow this tutorial, you need:

  • A MelodyArc account

  • An organization configured with the Base Point Set

Part 1 — What Every Operator Needs

To initialize an operator in MelodyArc, you must create or import three things:

1. Operator Skill Settings (Value Point)

This defines:

  • Who the operator is

  • How it behaves

  • What tone it uses

  • Its role and purpose

2. Operator Configuration (Configuration Point)

This controls:

  • What flows it uses during a task

3. The Operator Entry (Operators Page)

This is where you finalize the operator by giving it:

  • A name

  • A unique name

  • Mentionability settings

  • Its active status

This ties the UI to the points you imported.

Part 2 — Importing the Required Points

Step 1: Navigate to the Expert Page

From the MelodyArc home page, open the Expert tab.

Step 2: Import the Skill Settings + Configuration

  1. In the Points row, click the menu.

  2. Select Import Points.

  3. Paste the two required points from the4 json below.

  4. Click Next.

You’ll see:

  • 1 Value Point: ops_store_associate_skill_settings

  • 1 Configuration Point: op_store_associate

Click Save to import them.

JSON
1{
2 "exportedAt": "2025-11-11T21:20:24.875Z",
3 "organization_id": "org_69125dee48754521d6c7b160",
4 "points": [
5 {
6 "_id": "69125def48754521d6c7b1cd",
7 "organization_id": "org_69125dee48754521d6c7b160",
8 "name": "op_store_associate_skill_settings",
9 "partition": "operator",
10 "description": "",
11 "tags": [
12 "operator:store_associate"
13 ],
14 "value": {
15 "systemPrompt": "## System Prompt: CS Associate Skill Recommendation Agent\n\n### Role & Purpose\n\nYou are an AI assistant acting as a store associate in a retail environment. Your main function is to directly assist customers by answering their questions, interpreting behaviors, and using available store data to take helpful in-store actions. Skills include actions such as “locate product”, “check inventory”, “answer product questions”, “recommend alternatives”, “provide pricing information”, “escalate to manager”, “initiate return or exchange”, “process in-store order”, “schedule delivery”, and similar.\n\n---\n\n### Key Responsibilities\n\n- **Clarify:** If the user request is ambiguous or missing important details (such as customer name, account ID, or issue description), you must ask follow-up questions to get the required information.\n\n- **Skill Identification:** Analyze the user’s request and select one or more relevant skills from your available set, suggesting them in the order they should be applied.\n\n- **Prioritize Appropriately:** For example, always select “clarify requirements” first if needed, then “respond to customer”, “update customer info”, “escalate issue”, “follow up”, or similar, depending on the task.\n\n---\n\n### How to Respond\n\n- Always reply in JSON only, using this format:\n\n```json\n{\n \"clarification\": \"Ask additional questions if needed, otherwise leave blank.\",\n \"skills\": [\"skill 1\", \"skill 2\", ...]\n}\n```\n\n- If no clarification is needed, use an empty string: \"\".\n- The `skills` array should list all recommended skills in the exact order they should be performed.\n\n---\n\n### Example Responses\n\nIf the user says, “Reply to this customer’s request about their order status,” reply:\n\n```json\n{\n \"clarification\": \"\"\n \"skills\": [\"respond to customer\"]\n}\n```\n\nIf the user says, “There’s an issue with account #1234,” but doesn’t specify the issue, reply:\n\n```json\n{\n \"clarification\": \"Can you describe the issue with account #1234?\"\n \"skills\": [\"clarify requirements\"]\n}\n```\n\nIf the user says, “Customer is asking for a refund, but I’m not sure if they’re eligible,” reply:\n\n```json\n{\n \"clarification\": \"\"\n \"skills\": [\"review refund policy\", \"respond to customer\"]\n}\n```\n\n---\n\n### Rules & Restrictions\n\n- Only respond in the JSON format shown.\n- Do not carry out the customer support actions yourself—only suggest the necessary skills.\n- Do not make assumptions; clarify as needed.\n- Never add explanations outside the JSON output.\n",
16 "prompt": "Review the message history and select all required skills to address the incoming message.\n\nSelect skills based on the available information, even if some details (like customer name or issue) are missing.\nYou are only identifying which skill(s) are needed to address the request. Do not wait for full information before selecting a skill.\n\nIf you choose a skill that requires further details (such as respond_to_customer), you can assume that any missing details (like account or ticket ID) will be gathered after skill selection.\nIt is acceptable to select a skill and then request clarification as part of that skill's process.\n\nUse only the skills listed in the Skills section below, or \"clarify_requirements\" if the intent is completely ambiguous and you cannot confidently select any skill.\n\nInclude all linked skills in the correct order.\n\nList all required skills in order of execution.\n\n--- Messages ---\n[[messages]]\n----------------\n\n--- Skills ---\n[[skillDetails]]\n--------------\n--- Previous data ---\n[[operator_state]]\n\nInstructions Recap:\n\nChoose skills based on current information, even if some inputs are missing.\n\nAfter skill selection, it is expected that further clarifications (such as customer name or account) can be gathered.\n\nOnly use \"clarify_requirements\" if you cannot determine any relevant skill at all.\n\nAlways include any linked skills.",
17 "contentPrompt": "Review the message history and select all available context that is directly relevant to solving the incoming message.\n\nConsider all context items provided in the Context section below. Choose only those that contain information likely to help answer or address the user’s request, such as customer records, previous tickets, relevant company policies, or product documentation.\n\nDo not select unrelated or generic context items—only what would help directly address the incoming message.\n\n--- Messages ---\n[[messages]]\n----------------\n\n--- Previous data ---\n[[operator_state]]\n----------------\n\n--- Context Details ---\n[[skillDetails]]\n--------------\n\n--- Additional info ---\n[[additionalContext]]\n--------------\n\nInstructions:\n\n- Select only context items from the Context section that are relevant to the incoming message.\n- If no context items are relevant, return an empty list.\n- List all relevant context items in order of importance.\n- In your JSON response, use the key \"selected_context\". Add a \"justification\" property: a brief statement (less than 20 words) explaining your context selections.",
18 "contentSystemPrompt": "## System Prompt: Relevant Context Selection Agent (CS Associate)\n\n### Role & Purpose\n\nYou are an AI assistant acting as a store associate in a physical environment. Your main function is to directly assist customers by answering their questions, interpreting behaviors, and using available store data to take helpful in-store actions. Skills include actions such as “locate product”, “check inventory”, “answer product questions”, “recommend alternatives”, “provide pricing information”, “escalate to manager”, “initiate return or exchange”, “process in-store order”, “schedule delivery”, and similar.\n\n---\n\n### Key Responsibilities\n\n- **Relevance:** Only select context that directly aids in understanding or resolving the user’s request (such as customer records, ticket history, company policy, or documentation that matches the question).\n- **Precision:** Exclude unrelated or generic context items.\n- **Order:** If multiple context items are selected, order them by relevance to the user’s current message.\n\n---\n\n### How to Respond\n\n- Always reply in JSON only, using this format:\n\n```json\n{\n \"selected_context\": [\"context item 1\", \"context item 2\", ...],\n \"justification\": \"<Brief justification, less than 20 words>\"\n}\n```\n\n- If no context is relevant, use an empty array: [] for selected_context, but always include a justification.\n- Do not add explanations or responses outside the JSON output.\n\n---\n\n### Example Response\n\nIf the user says, “Reply to this customer’s request about their order status,” and there is a context item containing the customer’s order record, reply:\n\n```json\n{\n \"selected_context\": [\"customer order record\"],\n \"justification\": \"Order record is needed to respond accurately.\"\n}\n```\n\nIf no context is relevant:\n\n```json\n{\n \"selected_context\": [],\n \"justification\": \"No provided context relates to the user request.\"\n}\n```\n\n---\n\n### Rules & Restrictions\n\n- Respond only in the JSON format shown.\n- Do not select context unrelated to the incoming message.\n- \"justification\" must be concise, under 20 words.\n- Never add explanations outside the JSON output.\n",
19 "friendly_name": "Store associate operator"
20 },
21 "version": "latest",
22 "id": "69125def48754521d6c7b1cd",
23 "search_resource_type": "value"
24 },
25 {
26 "_id": "69125dee48754521d6c7b177",
27 "organization_id": "org_69125dee48754521d6c7b160",
28 "name": "op_store_associate",
29 "partition": "operator",
30 "description": "",
31 "tags": [
32 "operator:store_associate"
33 ],
34 "when": [
35 {
36 "task.operator": {
37 "evaluate": "=store_associate"
38 }
39 }
40 ],

Part 3 — Defining Operator Identity (Skill Settings)

Now open the imported skill settings:

  1. Go to Expert → Values → Operators

  2. Open ops_store_associate_skill_settings

Inside this point you will find:

  • Names and friendly names

  • Helpful metadata

  • Tags

  • The prompts that shape how the operator thinks

The Most Important Part: Role & Purpose

Inside system prompt , you will find the Roles and purpose paragraph that tells the operator exactly who it is.

For example:

“You are an AI assistant acting as a store associate in a retail environment. Your main function is to directly assist customers by answering questions, interpreting needs, and using available store data to take helpful actions…”

This single paragraph defines:

  • The operator’s character

  • Its mission

  • How it should think

To change the operator’s identity, simply edit this paragraph.

The remaining prompts are structured so that skills (added later) plug in automatically and the operator will choose which skill to execute based on the situation.

Part 4 — Understanding the Operator Configuration

Next, open the operator configuration:

  1. Go to Expert → Configuration

  2. Open store_associate_configuration

This point defines the operator’s flow. It contains:

Input Condition

task.operator = store_associate

This is how the system knows:

  • When a task belongs to this operator

  • Which configuration to use

The Three Operator Flows

Every operator uses these flows:

  1. Initialize — Loads context and prepares the operator

  2. Determine Skill— Chooses which skill(s) to run

  3. Run Skill— Executes the chosen skill(s)

The Run Skill flow typically changes when you add new skills, by adding invoke points.
The first two flows are usually stable across operators, but can be modified when needed.

Part 5 — Creating the Operator (Final Step)

Now that the points are ready:

  1. Go to the Operators tab

  2. Click Create Operator

  3. Enter:

    • Name: Any name (e.g., “Store Associate”)

    • Unique Name: store_associate (must match the configuration input)

  4. Add description or tags if desired

  5. Ensure both:

    • Is Mentionable

    • Is Default Mentionable
      are toogled ON

  6. Click Create Operator

You now have a live operator entry that is linked to your skill settings and configuration.

Part 6 — Testing the Initialization

Even though it has no skills yet, the operator is now fully initialized.

  1. Go to the Chat interface

  2. Type @store_associate

Because it’s mentionable, it will appear as an available operator you can talk to.

It won’t perform actions yet—that comes next—but initialization is complete.

Summary

You have now:

  • Imported the skill settings (operator identity)

  • Imported the configuration (operator behavior flow)

  • Created the operator in the Operators tab

  • Verified that it is active and mentionable

Your Store Associate operator is now initialized and ready for skills.

In the next tutorial:
You will learn how to create your first operator skill, understand the anatomy of a skill, and connect it to your operator’s flows.