# ML Intake Chatbot - Valid Input Values Reference

**Version:** 1.0
**Date:** 2026-01-18
**Purpose:** Comprehensive guide to all valid input values for testing and user guidance

---

## Overview

This document provides a complete reference of all valid input values for the ML Intake chatbot system. Use this for:
- **Testing**: Validate system behavior with known good values
- **User Guidance**: Show users what values are acceptable
- **Development**: Ensure validation logic is consistent

---

## 1. Site IDs

### Valid Values

The system supports **8 predefined sites**:

| Site ID | Location | Country | Region |
|---------|----------|---------|--------|
| **6749** | JUAREZ | MX | Americas |
| **6750** | JACKSONVILLE | US | Americas |
| **6751** | LIMERICK | IE | EMEA |
| **6752** | GURABO | PR | Americas |
| **6753** | LEEDS | GB | EMEA |
| **6754** | ATHENS | US | Americas |
| **6755** | CORK | IE | EMEA |
| **6756** | SCHAFFHAUSEN | CH | EMEA |

### Format Rules

- **Exactly 4 digits** (no more, no less)
- **Numeric only** (no letters or special characters)
- **No spaces** or separators

### Examples

```
✅ Valid Examples:
- "6749"
- "6750"
- "6751"
- "6752"
- "6753"
- "6754"
- "6755"
- "6756"

❌ Invalid Examples:
- "123"        (too short - only 3 digits)
- "12345"      (too long - 5 digits)
- "abc4"       (contains letters)
- "12 34"      (contains space)
- "12.34"      (contains decimal point)
- "ABCD"       (all letters)
```

### Validation Pattern

```regex
^\\d{4}$
```

---

## 2. Capability Centers

### Valid Values

The system supports **4 capability centers**:

#### 1. Agile Demand
- **Key:** `agile_demand`
- **Name:** "Agile Demand"
- **Requires Nexus ID:** Yes
- **Description:** End-to-end simple industrialized services, non-project/small scope

#### 2. Approved Project Demand
- **Key:** `approved_project`
- **Name:** "Approved Project Demand"
- **Requires Nexus ID:** Yes
- **Description:** Part of larger portfolio project with valid Nexus ID

#### 3. Request for Estimate
- **Key:** `estimate_demand`
- **Name:** "Request for Estimate"
- **Requires Nexus ID:** No
- **Description:** Request for BP estimate for following year (65%)

#### 4. TS Internal Demand
- **Key:** `ts_internal`
- **Name:** "TS Internal Demand"
- **Requires Nexus ID:** No
- **Description:** TS-driven work requiring site involvement (e.g., Network TLM)

### Examples

```
✅ Valid Examples:
- "Agile Demand"
- "agile_demand"
- "Approved Project Demand"
- "approved_project"
- "Request for Estimate"
- "estimate_demand"
- "TS Internal Demand"
- "ts_internal"

❌ Invalid Examples:
- "agile"              (incomplete)
- "project"            (ambiguous)
- "demand"             (too generic)
- "unknown"            (not a valid option)
```

---

## 3. Request Types

### Valid Values

The system supports **5 request types**:

| Type | Key | Description |
|------|-----|-------------|
| **Intake** | `intake` | New IT service request (never existed before) |
| **Incident** | `incident` | Unplanned interruption to existing IT service |
| **Network** | `network` | Network/Firewall configuration request |
| **Access** | `access` | Application or system access request |
| **Status** | `status` | Status inquiry for existing request |

### Examples

```
✅ Valid Examples:
- "I need a new IT service"     → intake
- "System is down"               → incident
- "Need firewall access"         → network
- "Need access to application"   → access
- "What's the status of RITM123" → status

❌ Invalid Examples:
- "help"         (too vague)
- "question"     (not specific)
- "support"      (ambiguous)
```

---

## 4. Network Priorities

### Valid Values

The system supports **4 priority levels**:

| Priority | Description |
|----------|-------------|
| **P1** | Urgent/Emergency - Business critical, security concern |
| **P2** | High Priority - Project work requiring focus |
| **P3** | Standard - Normal requests (default) |
| **P4** | Deferred - Back burner requests |

### Examples

```
✅ Valid Examples:
- "P1"
- "P2"
- "P3"
- "P4"
- "urgent"      → P1
- "emergency"   → P1
- "standard"    → P3
- "normal"      → P3

❌ Invalid Examples:
- "P5"          (not defined)
- "high"        (ambiguous - could be P1 or P2)
- "low"         (could be P3 or P4)
```

---

## 5. Intent Patterns

### Valid Intents

The system recognizes **5 primary intents**:

#### 1. Create Request
**Keywords:** new request, submit, create, need help with, i want to, can you help me, looking to, implement

**Examples:**
```
✅ Valid Examples:
- "I want to create a new request"
- "Can you help me submit a request?"
- "I need help with implementing a new service"
- "Looking to create a new IT service"
```

#### 2. Report Incident
**Keywords:** not working, broken, down, error, issue, problem, stopped, failed, crash, bug

**Examples:**
```
✅ Valid Examples:
- "The system is not working"
- "Application is down"
- "I'm getting an error message"
- "The service stopped working"
```

#### 3. Check Status
**Keywords:** status, update, where is, progress, track, ritm, abfz, ticket, check on

**Examples:**
```
✅ Valid Examples:
- "What's the status of my request?"
- "Can I get an update on RITM12345?"
- "Track my ticket ABFZ67890"
- "Check progress on my request"
```

#### 4. Get Access
**Keywords:** access, permission, login, account, ts engage, credentials, unable to access

**Examples:**
```
✅ Valid Examples:
- "I need access to the application"
- "Can I get permission for the system?"
- "Request login credentials"
- "Unable to access TS Engage"
```

#### 5. Get Help
**Keywords:** how do i, what is, explain, guide, help, documentation, process, procedure

**Examples:**
```
✅ Valid Examples:
- "How do I submit a request?"
- "What is the process for getting access?"
- "Can you explain the intake procedure?"
- "I need help with the documentation"
```

---

## 6. Component Types (Network Requests)

### Valid Values

The system supports **10 component types** for network requests:

1. Network
2. Firewall
3. RF
4. Workstations
5. Servers
6. VLAN
7. Switch
8. LAN/WAN
9. Connectivity
10. Infrastructure

### Examples

```
✅ Valid Examples:
- "Network configuration change"
- "Firewall rule update"
- "VLAN setup"
- "Server connectivity"
- "Switch replacement"
```

---

## 7. Input Length Validation

### Rules

- **Maximum Length:** 500 characters
- **Minimum Length:** None (empty input allowed, but not useful)
- **Enforcement:** Pre-processing validation

### Examples

```
✅ Valid Examples:
- "Hi" (2 characters)
- "I need help with authentication" (34 characters)
- "A" * 500 (exactly 500 characters)

❌ Invalid Examples:
- "A" * 501 (501 characters - over limit)
- "A" * 1000 (1000 characters - way over limit)
```

---

## 8. Special Character Sanitization

### Dangerous Characters (Removed)

The system removes these **11 dangerous characters**:

1. `<` - Left angle bracket
2. `>` - Right angle bracket
3. `{` - Left curly brace
4. `}` - Right curly brace
5. `|` - Pipe character
6. `\\` - Backslash
7. `^` - Caret
8. `~` - Tilde
9. `[` - Left square bracket
10. `]` - Right square bracket
11. `` ` `` - Backtick

### Safe Characters (Preserved)

These characters are **safe and preserved**:

- `!` - Exclamation mark
- `?` - Question mark
- `@` - At symbol
- `$` - Dollar sign
- `.` - Period/dot
- `,` - Comma
- `-` - Hyphen
- `_` - Underscore
- `:` - Colon
- `;` - Semicolon
- `'` - Single quote
- `"` - Double quote
- `(` - Left parenthesis
- `)` - Right parenthesis
- `#` - Hash
- `%` - Percent
- `&` - Ampersand
- `*` - Asterisk
- `+` - Plus
- `=` - Equals
- `/` - Forward slash
- Space and all alphanumeric characters

### Examples

```
✅ Valid Examples (Safe):
- "What is the price? $100.50"
- "Email: user@example.com"
- "Please help! How can I proceed?"
- "Item #123 (priority)"

⚠️ Modified Examples (Sanitized):
- "Hello <script>alert('xss')</script>"
  → "Hello scriptalert('xss')/script"

- "Path with | pipe character"
  → "Path with  pipe character"

- "Code with [array] syntax"
  → "Code with array syntax"
```

---

## 9. Nexus ID

### Rules

- **Required for:** Agile Demand, Approved Project Demand
- **Optional for:** Request for Estimate, TS Internal Demand
- **Format:** Alphanumeric (no strict pattern validation currently)

### Examples

```
✅ Valid Examples:
- "NEX12345"
- "NEXUS-6789"
- "A1B2C3"

⚠️ Note: No strict format validation currently implemented
```

---

## 10. Business Problem

### Rules

- **Minimum Length:** 20 characters (flexible extraction)
- **Indicators:** Keywords like need, want, require, problem, issue, help, etc.
- **Format:** Free text

### Examples

```
✅ Valid Examples:
- "I need to implement authentication for our new application"
- "We want to automate the data processing workflow"
- "There is an issue with the current reporting system"

❌ Invalid Examples:
- "help" (too short)
- "fix it" (too vague)
```

---

## 11. Business Value

### Rules

- **Format:** Free text
- **No minimum length** (currently)
- **Expected:** Description of expected value/benefit

### Examples

```
✅ Valid Examples:
- "Will save 10 hours per week of manual work"
- "Improves security by implementing MFA"
- "Enables faster decision-making with real-time data"

⚠️ Note: More detailed value description improves processing
```

---

## Testing Scenarios

### Complete Test Cases

#### Scenario 1: Valid Agile Demand Request

```
User: "I need help implementing authentication for site 6749"

Expected flow:
1. Intent: create_request
2. Site ID: 6749 (valid)
3. System asks for capability center
4. User: "Agile Demand"
5. System asks for Nexus ID (required)
6. User: "NEX12345"
7. System asks for business problem
8. User: "Need to secure our application with modern auth"
9. System asks for business value
10. User: "Improve security and user experience"
11. System creates ticket
```

#### Scenario 2: Valid Incident Report

```
User: "The application at site 6750 is down"

Expected flow:
1. Intent: report_incident
2. Site ID: 6750 (valid)
3. System classifies as incident
4. System asks for affected system
5. User: "Production web server"
6. System asks for error details
7. User: "500 Internal Server Error"
8. System creates incident ticket
```

#### Scenario 3: Valid Status Check

```
User: "What's the status of RITM12345"

Expected flow:
1. Intent: check_status
2. System extracts RITM number
3. System queries status
4. System returns status information
```

#### Scenario 4: Invalid Site ID

```
User: "I need help with site 123"

Expected flow:
1. Intent: create_request
2. Site ID: 123 (invalid - only 3 digits)
3. System shows error: "Invalid site ID format"
4. System suggests: "Site ID must be exactly 4 digits. Try: 6749, 6750, 6751, 6752"
5. User corrects to "6749"
6. Flow continues normally
```

#### Scenario 5: Input Too Long

```
User: "A" * 501 (501 characters)

Expected flow:
1. Length validation fails
2. System shows error: "Input too long. Please limit your message to 500 characters."
3. User shortens message
4. Flow continues normally
```

---

## Summary Table

| Validation Type | Valid Values | Format | Example |
|-----------------|--------------|--------|---------|
| **Site ID** | 6749-6756 | 4 digits | "6749" |
| **Capability Center** | 4 types | String | "Agile Demand" |
| **Request Type** | 5 types | String | "intake" |
| **Network Priority** | P1-P4 | String | "P3" |
| **Intent** | 5 types | Keywords | "create_request" |
| **Component Type** | 10 types | String | "Network" |
| **Input Length** | 0-500 chars | - | Any text ≤ 500 |
| **Special Chars** | 11 removed | - | No `<>{}|\\^~[]` ` |
| **Nexus ID** | Alphanumeric | String | "NEX12345" |
| **Business Problem** | ≥20 chars | Free text | "Need to..." |
| **Business Value** | Free text | Free text | "Will save..." |

---

## User Guidance Recommendations

### For Site ID

**Show this when asking:**
```
What site is this request for?

Available sites:
• 6749 - JUAREZ, MX
• 6750 - JACKSONVILLE, US
• 6751 - LIMERICK, IE
• 6752 - GURABO, PR
• 6753 - LEEDS, GB
• 6754 - ATHENS, US
• 6755 - CORK, IE
• 6756 - SCHAFFHAUSEN, CH

Please enter the 4-digit site ID (e.g., "6749")
```

**On invalid input:**
```
⚠️ Invalid site ID format. Site ID must be exactly 4 digits.

Did you mean one of these?
• 6749 - JUAREZ, MX
• 6750 - JACKSONVILLE, US
• 6751 - LIMERICK, IE
• 6752 - GURABO, PR

Please try again.
```

### For Capability Center

**Show this when asking:**
```
Which Capability Center?

1. **Agile Demand** - Simple scope (requires Nexus ID)
2. **Approved Project Demand** - Portfolio project (requires Nexus ID)
3. **Request for Estimate** - BP estimate
4. **TS Internal Demand** - TS-driven work

Please select one of the options above.
```

**On invalid input:**
```
⚠️ I didn't recognize that capability center.

Please choose from:
• Agile Demand
• Approved Project Demand
• Request for Estimate
• TS Internal Demand

Try typing the exact name or selecting a button above.
```

### For Input Length

**Real-time feedback while typing:**
```
Characters: 245/500 ✅
```

**When approaching limit:**
```
Characters: 475/500 ⚠️ (25 characters remaining)
```

**When limit exceeded:**
```
Characters: 501/500 ❌ (1 character over limit)
Please shorten your message by at least 1 character.
```

---

## Developer Notes

### Adding New Valid Values

When adding new sites, capability centers, or other values:

1. **Update config.py** - Add to constants dictionaries
2. **Update schemas.py** - Add to enums if applicable
3. **Update THIS file** - Document new valid values
4. **Update validation logic** - Ensure new values are recognized
5. **Update tests** - Add test cases for new values
6. **Update UI suggestions** - Show new values in dropdowns/suggestions

### Validation Consistency

Ensure validation is consistent across:
- ✅ Frontend (Streamlit UI) - `app.py`
- ✅ Backend (Orchestrator) - `orchestrator.py`
- ✅ Agents (Intake, Network, etc.) - Agent files
- ✅ Config (Central source of truth) - `config.py`
- ✅ Schemas (Data models) - `schemas.py`

---

## End of Document

**Last Updated:** 2026-01-18
**Maintainer:** Claude Code
**Status:** Production-Ready
