# Convert a completed conjoint design to MX8 Labs JSON

Use the attached source material to produce one completed choice-based conjoint design that conforms to this schema:

https://mx8labs.com/schemas/mx8-completed-conjoint-design-v1.schema.json

## Rules

1. Return only one JSON object unless source selection is ambiguous as described below. Do not use Markdown fences or add commentary outside the JSON.
2. Set `schemaVersion` to `1` and `kind` to `mx8.completed-conjoint-design`.
3. Translate only a completed design. Do not generate, optimize, rebalance, expand, or otherwise alter its concepts or tasks.
4. Preserve the supplied order of attributes, levels, task sets, tasks, and concepts within each task.
5. Preserve respondent-facing labels verbatim. Do not correct, shorten, summarize, or standardize them.
6. Create stable, readable IDs using only letters, numbers, periods, underscores, colons, or hyphens. An ID must begin with a letter or number.
7. Represent every concept once in `concepts`. When the same complete attribute-level profile appears more than once, reuse its concept ID unless the source explicitly distinguishes the occurrences.
8. Store concept values as `{ "attribute-id": "level-id" }`. Every concept must contain exactly one known level for every attribute.
9. Preserve every supplied task and task-set assignment exactly. Do not randomize or deduplicate tasks.
10. Use `hasDontKnowOption` only for an explicit none, no-choice, opt-out, or “don’t know” alternative. Do not treat a follow-up purchase-intent question as a none option.
11. Include assignment and ordering settings only when the source states them explicitly. Omit optional fields that are not known.
12. Never invent missing information. Add each unsupported or unmapped instruction to `unmappedItems` with a precise source location and description. These items are review warnings, not executable programming instructions.
13. Include the original filename or source name in `metadata.sourceName` when available.
14. Before responding, check all identifiers, concept values, task references, counts, and ordering against the source.
15. Put the exact forced-choice question wording in `study.questionText` when it is supplied. Omit it when the source does not provide wording.
16. Include `prohibitions` only when the source explicitly provides the complete constraint set. Use an empty array only when the source explicitly confirms that there are no prohibitions. Omit the property when constraints are unknown.

## Ambiguous source selection

If the material contains multiple plausible completed designs, versions, or programming matrices, do not produce JSON unless the user has explicitly identified the authoritative one. Ask one concise clarification question that names each plausible source and gives its task-set, task, and concepts-per-task counts when available. Do this even when one source appears more final or programming-ready than the others.

When the source identifies a final or programming-ready design, use it as authoritative. Use design-generation, Sawtooth, mirrored, example, and supporting sheets only to verify labels, instructions, counts, and cell-level consistency. If those sources conflict, ask for clarification rather than choosing one silently.

## Required top-level shape

```json
{
  "$schema": "https://mx8labs.com/schemas/mx8-completed-conjoint-design-v1.schema.json",
  "schemaVersion": 1,
  "kind": "mx8.completed-conjoint-design",
  "metadata": {
    "sourceName": "original source name",
    "sourceFormat": "source format",
    "notes": "optional source note"
  },
  "study": {
    "name": "Study name",
    "questionText": "Which option do you prefer?",
    "hasDontKnowOption": false,
    "assignmentStrategy": "external",
    "randomizeTaskOrder": false,
    "randomizeConceptOrder": false
  },
  "attributes": [
    {
      "id": "attribute-1",
      "name": "Attribute name",
      "type": "categorical",
      "levels": [
        { "id": "attribute-1-level-1", "label": "First level" },
        { "id": "attribute-1-level-2", "label": "Second level" }
      ]
    }
  ],
  "concepts": [
    {
      "id": "concept-1",
      "values": {
        "attribute-1": "attribute-1-level-1"
      }
    },
    {
      "id": "concept-2",
      "values": {
        "attribute-1": "attribute-1-level-2"
      }
    }
  ],
  "taskSets": [
    {
      "id": "task-set-1",
      "tasks": [
        {
          "id": "task-1",
          "conceptIds": ["concept-1", "concept-2"]
        }
      ]
    }
  ],
  "prohibitions": [],
  "unmappedItems": [
    {
      "source": "Sheet or section name",
      "description": "Instruction that could not be represented without guessing"
    }
  ]
}
```

Remove optional example properties that are not supported by the source. The final response must still be valid JSON and must not contain these instructions.
