---
title: Quests
nav_order: 5
tags:
    - Guide
    - External
    - User
# exclude-from-main-guides-list
---

## Quests

This section explains how to create and configure quest questions, answer choices, AutoCapture attributes, numeric validation, and dependencies.

_For a list of all guides on the TCAT Wiki, refer to the [Guides List](../../../../guides-list/index.md)._{ .guides-list-ref }

---

### Add a Quest

1. **Select** **Add Quest** under the element that should contain the question
2. **Enter** a numeric identifier in **Quest ID** and keep it distinct from the other quests in the definition
3. **Enter** the question in **Quest Title**
4. **Enter** instructions or context in **Description**
5. **Select** a value in **Quest Type**
6. **Enter** the answer tag in **Quest Tag** when the selected type requires one
7. **Enter** a URL in **Quest Image URL** only when the question needs an image

---

### Quest Fields

| Field               | Purpose                                                                                                   |
| :------------------ | :-------------------------------------------------------------------------------------------------------- |
| **Quest ID**        | Numeric identifier used to identify the question and reference it from dependencies                       |
| **Quest Title**     | Question shown to the contributor                                                                         |
| **Description**     | Supporting instructions or context                                                                        |
| **Quest Type**      | Determines the answer control used by AVIV ScoutRoute                                                     |
| **Quest Tag**       | Tag associated with the answer for quest types that use a single answer tag; AutoCapture uses attribute mappings instead |
| **Quest Image URL** | Optional URL for an image shown with the question; the Creator displays PNG/JPEG size and dimension hints |

---

### Choose a Quest Type

The current Creator interface exposes these quest types:

| Quest type          | Use it for                                                   |
| :------------------ | :----------------------------------------------------------- |
| **ExclusiveChoice** | A question where the contributor selects one answer          |
| **MultipleChoice**  | A question where the contributor can select multiple answers |
| **Numeric**         | A measurement or count entered as a number                   |
| **TextEntry**       | A short free-form response                                   |
| **AutoCapture**     | Automatically captures selected sidewalk measurements on supported iOS devices with LiDAR |

Choose the type before configuring type-specific fields. The Creator removes fields that do not apply to the selected type from the JSON Preview. AutoCapture is currently limited to sidewalks and iOS devices with LiDAR sensors.

---

### Configure Answer Choices

**ExclusiveChoice** and **MultipleChoice** quests use answer choices.

1. **Select** **+ Add Choice**
2. **Enter** the stored answer in **Value**
3. **Enter** the contributor-facing label in **Choice Text**
4. **Enter** an optional image URL in **Image URL**
5. **Enable** **Enable optional picture-taking prompt** when that answer should offer a picture-taking step
6. **Use** **Move choice up**, **Move choice down**, or **Delete choice** to organize the choices

The **Value** and **Choice Text** fields are required. Keep the stored values stable because dependencies refer to them.

---

### Set Numeric Validation

For a **Numeric** quest, use **Numeric Validation** to limit accepted values:

1. **Select** **Numeric** from **Quest Type**
2. **Enable** **Enable minimum** when the answer needs a lower bound
3. **Enter** the lower bound in the number field that appears
4. **Enable** **Enable maximum** when the answer needs an upper bound
5. **Enter** the upper bound in the number field that appears
6. **Explain** the expected unit in **Quest Title** or **Description**

Check the range against the intended measurement and unit before exporting.

---

### Configure AutoCapture Attributes

An **AutoCapture** quest automatically captures selected measurements instead of asking the contributor to enter an answer. The Creator currently supports this quest type for sidewalks on iOS devices with LiDAR sensors.

1. **Select** **AutoCapture** from **Quest Type**
2. **Select** at least one measurement in **AutoCapture Attributes**
3. **Review** the default export tag key for each selected measurement, or enter the tag key required by the project
4. **Review** the `auto_capture_attributes` mapping in the JSON Preview

The Creator uses these attribute keys:

| Measurement         | Attribute key          | Default export tag key       |
| :------------------ | :--------------------- | :--------------------------- |
| Width               | `ac_width`             | `ext:ac:width`               |
| Incline             | `ac_incline`           | `ext:ac:incline`              |
| Cross slope         | `ac_cross_slope`       | `ext:ac:cross_slope`          |
| Surface integrity   | `ac_surface_integrity` | `ext:ac:surface_integrity`    |
| Surface disruption  | `ac_surface_disruption`| `ext:ac:surface_disruption`   |
| Height from ground  | `ac_height_from_ground`| `ext:ac:height_from_ground`   |
| LiDAR depth         | `ac_lidar_depth`       | `ext:ac:lidar_depth`          |

An AutoCapture quest uses these mappings instead of **Quest Tag**. Select at least one attribute and keep each export tag key non-empty to pass validation.

---

### Add a Dependency

A dependency displays a quest only when another quest in the same element has the required answer.

1. **Add** another quest to the same element before configuring the dependency
2. **Select** **Single** or **Multiple (AND)** under **Dependency**
3. For **Single**, **choose** the sibling quest in **Dependent Question**
4. **Choose** or enter the matching answer in **Required Value**
5. For **Multiple (AND)**, **add** each condition and verify that all conditions must be satisfied
6. **Review** the dependency in the JSON Preview and Validation panel

Select **None** when the quest should not depend on another question. Use the stored **Value** from the dependent choice, not its display label, when defining a choice dependency.

---

### Combine Answer Values in a Dependency

Quest visibility is controlled by the `quest_answer_dependency` field, which the Creator populates from the **Dependency** settings. Within a single dependency condition, **Required Value** accepts either:

- **A single value** - the dependent quest's answer must equal that value
- **Multiple values** - the dependent quest's answer must equal **any one** of the listed values (an "OR" between the listed values)

Enter each accepted value in **Required Value** for that condition to use the OR behavior. For example, to show a quest only when a previous quest is answered `example_1`, `example_2`, or `example_3`, enter all three values in the same condition:

```json
"required_value": ["example_1", "example_2", "example_3"]
```

---

### Combine Multiple Dependency Conditions

**Multiple (AND)** adds more than one condition to a single quest's `quest_answer_dependency`, each referencing its own **Dependent Question**. The quest shows only when **every** condition in the list is satisfied ("AND" between conditions). Combined with the OR behavior of multiple values within one condition, this lets a dependency list express `(condition 1) AND (condition 2)`, where each condition can itself be `(value A OR value B)`.

For example, this dependency list shows the quest only when quest 101 is answered `value_a` **or** `value_b`, **and** quest 102 is answered `value_x`:

```json
"quest_answer_dependency": [
    { "question_id": 101, "required_value": ["value_a", "value_b"] },
    { "question_id": 102, "required_value": "value_x" }
]
```

```text
Visible only if: (Q101 == "value_a" OR Q101 == "value_b") AND (Q102 == "value_x")
```

| Q101 answer | Q102 answer   | Quest visible?                        |
| :---------- | :------------ | :------------------------------------ |
| `value_a`   | `value_x`     | Yes                                   |
| `value_b`   | `value_x`     | Yes                                   |
| `value_c`   | `value_x`     | No — fails Q101's OR condition        |
| anything    | not `value_x` | No — fails the AND between conditions |

Every condition in a **Multiple (AND)** dependency list must pass; no condition is evaluated as an "or" against another condition in the same list.

---

### Reorder or Remove Quests

- **Select** **Move quest up** or **Move quest down** to change the order of questions within an element
- **Select** **Delete quest** to remove a question
- **Select** the quest heading to collapse or expand its fields

After changing a quest ID or order, review any dependencies that reference it.

---

### Next Steps

Continue to [Presets and Custom Icons](presets-and-icons.md) for optional reusable configuration, or go to [Validation and Export](validation-and-export.md) when the definition is complete.
