> ## Documentation Index
> Fetch the complete documentation index at: https://uqp.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Laser-removal pack

> Inspect the unvalidated laser-removal reference pack, draft v0.1.

You are reading an **unvalidated** pack: **reference, not production**, draft v0.1. Example data, not real prices.

## Provenance

Questions: public consult-form evidence 2026-11-05 (n=8), unvalidated

Factors: public consult-form evidence 2026-11-05 (n=8), unvalidated

## Laser-removal pack v0 (PRD-014)

This is an **unvalidated reference pack, not a production quoting or medical
assessment system**. It estimates one non-cosmetic tattoo at a time, subject to an
in-person consultation in every case. Neither removal, session count, outcome,
safety nor final price is guaranteed. The existing site is unchanged.

## Evidence and limits

The canonical supplied evidence is preserved exactly in
[`research/evidence/laser-removal-2026-11-05.json`](https://uqp.dev/docs/research/evidence).
Its provenance and collection statements are supplied reviewer records, not an
independent revalidation or permission to collect more material. No network
collection is needed to use this pack.

This is a convenience sample of **8 eligible sources, 6 with forms**, including
consultation guidance and a pricing FAQ. It is not representative; even a page
with a form can have tags from surrounding guidance rather than literal fields.
Question `source_ids` lists all eligible sources tagged for the corresponding
factor, and `evidence_count` is that list's length. Counts use all eight sources,
not only the six form-bearing sources. Excluded sources do not contribute.

| Core question | Tagged sources | Evidence count |
| - | - | -: |
| `placement` | LR01–LR08 | 8 |
| `ink_colors` | LR01–LR08 | 8 |
| `tattoo_age` | LR01–LR08 | 8 |
| `photo` | LR01, LR03, LR05, LR06, LR07, LR08 | 6 |
| `size` | LR01, LR02, LR03, LR04, LR06, LR07, LR08 | 7 |
| `removal_goal` | LR02, LR03, LR04, LR05, LR06, LR07 | 6 |

Frequency supports intake coverage only. It does not establish clinical relevance,
causation, weights, prices, or validated session predictions. Public price
observations remain context only and are never evaluator defaults. LR06's
session guidance and LR04's full-removal-versus-fade discussion provide context,
not scientific derivation of the numerical assumptions below.

## Intake and privacy

The six core questions above are required:

* `placement`: a nonempty string; collected, not assigned a placement multiplier.
* `ink_colors`: a nonempty array from the catalog color options; `unsure` requires manual review.
* `tattoo_age`: a nonnegative finite number of years; no age-based adjustment.
* `size`: `small | medium | large`. These are **business-defined tiers**, not
  universal dimensions. The business must explain its own tier boundaries.
* `removal_goal`: `full_removal | fade_for_cover_up | unsure`.
* `photo`: `{ client_reference: string, clear: boolean, has_scale: boolean }`.
  A usable reference must be nonempty, clear and include a scale.

Photo input is only an opaque client-held reference and quality attestations.
The pack does not upload, fetch, inspect, store or echo images or their references.
It cannot verify what a photo actually shows. Clients retain responsibility for
secure photo handling and review outside this evaluator; do not put image data,
contact details or sensitive clinical content into answers.

Details are optional. `prior_treatment` is boolean; `prior_session_count` is an
optional nonnegative integer shown conditionally when prior treatment is true
using the question's `show_if` condition. An omitted count means unknown, not zero.
Optional Fitzpatrick skin type I–VI is descriptive and non-diagnostic; it is not
inferred, used to assess suitability, or assigned a price multiplier. Budget,
timeline and informational details do not affect price or promise treatment dates.
PMU/cosmetic work and multiple tattoos require manual review rather than automatic
pricing. Each tattoo needs its own intake and consultation.

## Business configuration and evaluation

Call `evaluate(answers, config)` with an explicit configuration. Alongside the
intake fields, answers must include protocol consent metadata
`{ share_for_pricing_research: boolean, anonymize: boolean, captured_at: string }`
under `consent`; opting out of research is supported. Photo references, placement
and free text are not echoed in the result. Configuration shape:

```ts theme={null}
{
  currency: 'USD',
  per_session: {
    small: businessSmallRate,
    medium: businessMediumRate,
    large: businessLargeRate,
  },
}
```

All three rates must be finite positive numbers supplied by the business. There
are **no default prices**, guessed rates, currency conversions or fallbacks to
public observations. A missing or invalid configuration cannot produce a priced
estimate. The default model describes assumptions, not a ready-to-sell price list.

For eligible answers, the reference calculation starts with these **unvalidated
remaining-session assumptions**:

| Goal | Minimum | Maximum |
| - | -: | -: |
| Fade for cover-up | 3 | 6 |
| Full removal | 6 | 12 |
| Unsure | 3 | 12 |

Any color other than black/grey adds `[0, 2]` once, not once per color.
Known prior session count subtracts from both endpoints. The minimum is floored
at 1 and the maximum remains at least one session above the minimum; past
sessions cannot establish completion or eliminate remaining uncertainty.
Prior treatment with an unknown count widens only the maximum by 2. These are
illustrative modeling choices, not clinical rules or deductions from frequency.
The total range uses the configured per-session rate for the selected size times
the remaining-session endpoints. Placement, age and optional details do not add
hidden adjustments. There are no package discounts, deposits, treatment schedules
or interval promises, even where the evidence mentions them.

A priced result uses the protocol `Estimate` schema, including the additive
session-range variant with `min`/`max` and `requires_in_person_consult`. Required
consultation does not turn the reference estimate into a final quote. A manual
result is a **separate, unpriced result**, not an `Estimate` with zero or invented
prices: its review status is `MUTATION_REQUIRED`. PMU, multiple tattoos, missing
size or photo, unclear photos, missing photo scale, invalid required answers and
invalid business configuration all require this manual path.

## Metadata and judgment calls

* Core-versus-optional intake is a conservative reference design, not a claim
  that every sampled provider requires these six fields.
* Source coverage is traceable through additive `source_ids`/`evidence_count`.
  Question status marks assumptions/unvalidated choices. Factor
  `evidence_status` is separate from the existing `status` values
  `modeled`/`not_yet_modeled`: an implemented factor is not validated evidence.
* Session assumptions, the color adjustment, prior-session subtraction/floor,
  unknown-count widening and three business-defined size buckets are deliberately
  explicit unvalidated judgments. No universal size thresholds are invented.
* Required photo quality and scale are attested intake gates, not automated image
  analysis. Client references are not returned as estimate content.
* Conditional display is represented by question `show_if`; display logic does
  not make missing core answers valid or override manual-review gates.
* `inference-rules.json` is empty: this pack does not invent text inference.
  An additive shared inference-rules schema validates its envelope and the
  existing tattoo rules; the schema inventory test now expects ten schemas.
* Shared schema additions are additive; the manual-review result is not forced
  into the priced Estimate contract. This pack does not change tattoo pricing,
  deploy a site, or validate a medical treatment plan.

The generic model requires expiry and rounding fields. Its one-day expiry and
unit-rounding placeholders are explicitly unvalidated assumptions, not quote
terms or applied rounding rules. The schema-required zero unpaid deposit is a
not-modeled placeholder, never a purchasable service price or deposit policy.

## Questions

| ID | Label | Type | Required | Status | Provenance | Evidence source\_ids | Evidence count |
| - | - | - | - | - | - | - | - |
| placement | Tattoo placement | text | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| ink\_colors | Ink colors | multi\_select | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| tattoo\_age | Tattoo age in years | number | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| photo | Clear photo with measuring scale | object | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR03","LR05","LR06","LR07","LR08"] | 6 |
| size | Business-defined size tier | single\_select | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR06","LR07","LR08"] | 7 |
| removal\_goal | Removal goal | single\_select | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR02","LR03","LR04","LR05","LR06","LR07"] | 6 |
| details | Optional details | text | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR03","LR06","LR08"] | 4 |
| prior\_treatment | Previous laser treatment? | boolean | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR05","LR07"] | 4 |
| prior\_session\_count | Previous session count | number | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR05"] | 1 |
| professional\_vs\_amateur | Professional or amateur tattoo | single\_select | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01"] | 1 |
| skin\_type | Optional Fitzpatrick skin type (non-diagnostic) | single\_select | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR06"] | 1 |
| multiple\_tattoos | More than one tattoo? | boolean | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR08"] | 1 |
| cosmetic\_pmu | Cosmetic tattoo or permanent makeup? | boolean | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR08"] | 1 |
| budget | Optional budget | number | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR07"] | 1 |
| timeline | Optional timeline or event date | text | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR07"] | 1 |

## Factors

| ID | Description | Status | Enabled by default | Evidence status | Provenance | Evidence source\_ids | Evidence count |
| - | - | - | - | - | - | - | - |
| placement | Body area only; no contact or identifying information. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| ink\_colors | List visible colors. Unknown colors require manual review. Vocabulary and session adjustments are unvalidated assumptions. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| tattoo\_age | Intake context only; no price adjustment. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR05","LR06","LR07","LR08"] | 8 |
| photo | Client-side reference only: \{client\_reference, clear, has\_scale}. Keep image bytes in the client; UQP never stores, fetches or echoes images or references. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR03","LR05","LR06","LR07","LR08"] | 6 |
| size | Business must define small/medium/large boundaries and confirm the selected tier at consult; no universal dimensions assumed. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR03","LR04","LR06","LR07","LR08"] | 7 |
| removal\_goal | Full removal / fade for cover-up / unsure. Session ranges are unvalidated assumptions, not promised outcomes. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR02","LR03","LR04","LR05","LR06","LR07"] | 6 |
| free\_text | Optional tattoo details only; do not include identifying, contact or health information. Never inferred for pricing. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR03","LR06","LR08"] | 4 |
| prior\_treatment | Intake context only; no price adjustment. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01","LR02","LR05","LR07"] | 4 |
| prior\_session\_count | Optional nonnegative integer, shown only if prior\_treatment is true. Remaining-session adjustments are unvalidated assumptions. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR05"] | 1 |
| professional\_vs\_amateur | Intake context only; no price adjustment. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR01"] | 1 |
| skin\_type | Optional self-description only; not a diagnosis, eligibility decision, medical assessment or price adjustment. I–VI vocabulary is an unvalidated assumption. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR06"] | 1 |
| multi\_tattoo | One tattoo per evaluation. Multiple tattoos require separate intake and manual review. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR08"] | 1 |
| cosmetic\_pmu | Cosmetic/PMU always requires manual review and is never priced. | modeled | true | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR08"] | 1 |
| budget | Optional in configured business currency; does not alter prices. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR07"] | 1 |
| timeline | Planning context only; no promised completion date. Do not include identifying details. | not\_yet\_modeled | false | unvalidated | public consult-form evidence 2026-11-05 (n=8), unvalidated | \["LR07"] | 1 |

## Full catalogs

```json theme={null}
{
  "pack_id": "laser-removal",
  "pack_version": "0.1.0",
  "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
  "questions": [
    {
      "id": "placement",
      "label": "Tattoo placement",
      "type": "text",
      "required": true,
      "factor_ids": [
        "placement"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "status": "unvalidated",
      "description": "Body area only; no contact or identifying information."
    },
    {
      "id": "ink_colors",
      "label": "Ink colors",
      "type": "multi_select",
      "required": true,
      "factor_ids": [
        "ink_colors"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "status": "unvalidated",
      "description": "List visible colors. Unknown colors require manual review. Vocabulary and session adjustments are unvalidated assumptions.",
      "options": [
        "black",
        "grey",
        "red",
        "blue",
        "green",
        "yellow",
        "white",
        "other",
        "unsure"
      ]
    },
    {
      "id": "tattoo_age",
      "label": "Tattoo age in years",
      "type": "number",
      "required": true,
      "factor_ids": [
        "tattoo_age"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "status": "unvalidated",
      "unit": "years"
    },
    {
      "id": "photo",
      "label": "Clear photo with measuring scale",
      "type": "object",
      "required": true,
      "factor_ids": [
        "photo"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR03",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 6,
      "status": "unvalidated",
      "description": "Client-side reference only: {client_reference, clear, has_scale}. Keep image bytes in the client; UQP never stores, fetches or echoes images or references."
    },
    {
      "id": "size",
      "label": "Business-defined size tier",
      "type": "single_select",
      "required": true,
      "factor_ids": [
        "size"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 7,
      "status": "unvalidated",
      "description": "Business must define small/medium/large boundaries and confirm the selected tier at consult; no universal dimensions assumed.",
      "options": [
        "small",
        "medium",
        "large"
      ]
    },
    {
      "id": "removal_goal",
      "label": "Removal goal",
      "type": "single_select",
      "required": true,
      "factor_ids": [
        "removal_goal"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07"
      ],
      "evidence_count": 6,
      "status": "unvalidated",
      "description": "Full removal / fade for cover-up / unsure. Session ranges are unvalidated assumptions, not promised outcomes.",
      "options": [
        "full_removal",
        "fade_for_cover_up",
        "unsure"
      ]
    },
    {
      "id": "details",
      "label": "Optional details",
      "type": "text",
      "required": false,
      "factor_ids": [
        "free_text"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR03",
        "LR06",
        "LR08"
      ],
      "evidence_count": 4,
      "status": "unvalidated",
      "description": "Optional tattoo details only; do not include identifying, contact or health information. Never inferred for pricing."
    },
    {
      "id": "prior_treatment",
      "label": "Previous laser treatment?",
      "type": "boolean",
      "required": false,
      "factor_ids": [
        "prior_treatment"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR05",
        "LR07"
      ],
      "evidence_count": 4,
      "status": "unvalidated"
    },
    {
      "id": "prior_session_count",
      "label": "Previous session count",
      "type": "number",
      "required": false,
      "factor_ids": [
        "prior_session_count"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR05"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "Optional nonnegative integer, shown only if prior_treatment is true. Remaining-session adjustments are unvalidated assumptions.",
      "show_if": {
        "question_id": "prior_treatment",
        "equals": true
      }
    },
    {
      "id": "professional_vs_amateur",
      "label": "Professional or amateur tattoo",
      "type": "single_select",
      "required": false,
      "factor_ids": [
        "professional_vs_amateur"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR01"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "options": [
        "professional",
        "amateur",
        "unsure"
      ]
    },
    {
      "id": "skin_type",
      "label": "Optional Fitzpatrick skin type (non-diagnostic)",
      "type": "single_select",
      "required": false,
      "factor_ids": [
        "skin_type"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR06"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "Optional self-description only; not a diagnosis, eligibility decision, medical assessment or price adjustment. I\u2013VI vocabulary is an unvalidated assumption.",
      "options": [
        "I",
        "II",
        "III",
        "IV",
        "V",
        "VI",
        "unsure"
      ]
    },
    {
      "id": "multiple_tattoos",
      "label": "More than one tattoo?",
      "type": "boolean",
      "required": false,
      "factor_ids": [
        "multi_tattoo"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR08"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "One tattoo per evaluation. Multiple tattoos require separate intake and manual review."
    },
    {
      "id": "cosmetic_pmu",
      "label": "Cosmetic tattoo or permanent makeup?",
      "type": "boolean",
      "required": false,
      "factor_ids": [
        "cosmetic_pmu"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR08"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "Cosmetic/PMU always requires manual review and is never priced."
    },
    {
      "id": "budget",
      "label": "Optional budget",
      "type": "number",
      "required": false,
      "factor_ids": [
        "budget"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR07"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "Optional in configured business currency; does not alter prices."
    },
    {
      "id": "timeline",
      "label": "Optional timeline or event date",
      "type": "text",
      "required": false,
      "factor_ids": [
        "timeline"
      ],
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "source_ids": [
        "LR07"
      ],
      "evidence_count": 1,
      "status": "unvalidated",
      "description": "Planning context only; no promised completion date. Do not include identifying details."
    }
  ]
}
```

```json theme={null}
{
  "pack_id": "laser-removal",
  "pack_version": "0.1.0",
  "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
  "factors": [
    {
      "id": "placement",
      "label": "Tattoo placement",
      "question_ids": [
        "placement"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Body area only; no contact or identifying information."
    },
    {
      "id": "ink_colors",
      "label": "Ink colors",
      "question_ids": [
        "ink_colors"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "List visible colors. Unknown colors require manual review. Vocabulary and session adjustments are unvalidated assumptions."
    },
    {
      "id": "tattoo_age",
      "label": "Tattoo age in years",
      "question_ids": [
        "tattoo_age"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 8,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Intake context only; no price adjustment."
    },
    {
      "id": "photo",
      "label": "Clear photo with measuring scale",
      "question_ids": [
        "photo"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR03",
        "LR05",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 6,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Client-side reference only: {client_reference, clear, has_scale}. Keep image bytes in the client; UQP never stores, fetches or echoes images or references."
    },
    {
      "id": "size",
      "label": "Business-defined size tier",
      "question_ids": [
        "size"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR03",
        "LR04",
        "LR06",
        "LR07",
        "LR08"
      ],
      "evidence_count": 7,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Business must define small/medium/large boundaries and confirm the selected tier at consult; no universal dimensions assumed."
    },
    {
      "id": "removal_goal",
      "label": "Removal goal",
      "question_ids": [
        "removal_goal"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR02",
        "LR03",
        "LR04",
        "LR05",
        "LR06",
        "LR07"
      ],
      "evidence_count": 6,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Full removal / fade for cover-up / unsure. Session ranges are unvalidated assumptions, not promised outcomes."
    },
    {
      "id": "free_text",
      "label": "Optional details",
      "question_ids": [
        "details"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR03",
        "LR06",
        "LR08"
      ],
      "evidence_count": 4,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Optional tattoo details only; do not include identifying, contact or health information. Never inferred for pricing."
    },
    {
      "id": "prior_treatment",
      "label": "Previous laser treatment?",
      "question_ids": [
        "prior_treatment"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01",
        "LR02",
        "LR05",
        "LR07"
      ],
      "evidence_count": 4,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Intake context only; no price adjustment."
    },
    {
      "id": "prior_session_count",
      "label": "Previous session count",
      "question_ids": [
        "prior_session_count"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR05"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Optional nonnegative integer, shown only if prior_treatment is true. Remaining-session adjustments are unvalidated assumptions."
    },
    {
      "id": "professional_vs_amateur",
      "label": "Professional or amateur tattoo",
      "question_ids": [
        "professional_vs_amateur"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR01"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Intake context only; no price adjustment."
    },
    {
      "id": "skin_type",
      "label": "Optional Fitzpatrick skin type (non-diagnostic)",
      "question_ids": [
        "skin_type"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR06"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Optional self-description only; not a diagnosis, eligibility decision, medical assessment or price adjustment. I\u2013VI vocabulary is an unvalidated assumption."
    },
    {
      "id": "multi_tattoo",
      "label": "More than one tattoo?",
      "question_ids": [
        "multiple_tattoos"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR08"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "One tattoo per evaluation. Multiple tattoos require separate intake and manual review."
    },
    {
      "id": "cosmetic_pmu",
      "label": "Cosmetic tattoo or permanent makeup?",
      "question_ids": [
        "cosmetic_pmu"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR08"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Cosmetic/PMU always requires manual review and is never priced."
    },
    {
      "id": "budget",
      "label": "Optional budget",
      "question_ids": [
        "budget"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR07"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Optional in configured business currency; does not alter prices."
    },
    {
      "id": "timeline",
      "label": "Optional timeline or event date",
      "question_ids": [
        "timeline"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "evidence_status": "unvalidated",
      "source_ids": [
        "LR07"
      ],
      "evidence_count": 1,
      "provenance": "public consult-form evidence 2026-11-05 (n=8), unvalidated",
      "description": "Planning context only; no promised completion date. Do not include identifying details."
    }
  ]
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.