> ## 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.

# Tattoo pack

> Inspect the unvalidated tattoo reference pack, draft v0.1.

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

## Provenance

Questions: tattoo.co current constant, unvalidated

Factors: tattoo.co current constant, unvalidated

## Tattoo pack v0

Pack id: `tattoo`; version: `0.1.0`. These are synthetic reference settings,
not validated market prices or real quote data. The pricing and intake constants
are attributed by the authorized handoff and PRD to tattoo.co `f018b86`.
The source handoff file is absent from this workspace; the tattoo.co source was
not independently inspected. Existing constants are marked
`"provenance": "tattoo.co current constant, unvalidated"` on each catalog,
model, question, numeric option, and factor. The model's top-level provenance
applies to its entire numeric maps. Catalog numeric maps inherit their containing
factor's provenance; rates and minimums also carry it explicitly.
Formula B inference rules in `inference-rules.json` carry
`"provenance": "tattoo.co f018b86 server/pricing-calculator.ts, unvalidated"`.
These source-parity claims follow PRD-003, not independent source verification.

**Exception:** `expiry_days: 7` is an illustrative, configurable business setting,
not a tattoo.co source constant. Pack version and this expiry are UQP metadata.
No fixed validity default is imposed on businesses.

## Inputs and switches

`questions.json` preserves `size` exactly as `xs|sm|md|lg|xl|unsure`. Optional
positive `width` and `height` in inches override square defaults only when both
are provided. `placement` is a multi-select of the 16 listed areas. Description,
budget bounds, and first-tattoo status must contain no contact details. Budget
and first-tattoo answers are informational: they have no pricing factor and
cannot change the result. Consent is explicit evaluator/request metadata, not
an intake question; no contact or consent question is added here.
`reference_images` is a raw numeric count only, not image data or URLs.

Questions map to factors through `questions.json` → `factor_ids[]`. A question
is omitted only when all its consuming factors are disabled; informational
questions without factors remain available. Inferred complexity/style requires
description rather than the corresponding selection question. A disabled factor
contributes its identity (×1 or +0) and logs
`{step, factor_id, skipped: true, reason: "disabled"}`. Answers to disabled
factors are ignored for pricing but preserved in raw answers; they cannot
re-enable a factor. The placement question maps to both `placement` and
`wraparound`, so disabling placement alone does not remove it when wraparound
needs it.

`default-pricing-model.json` selects Formula A. Formula B is available only
through per-business switches, not as the default model. Factor ids are `size`,
`placement`, `complexity`, `style`, `wraparound`, `tier`, `deposit`, `sessions`,
`cover_up`, `multi_area`, `city_rate`, and `non_usd`.

* `placement`: `additive_0_5h` uses `value.additive_hours: 0.5`; switching
  to `multiplier_1_2` uses `value.multiplier: 1.2` without resetting any weight.
  No default weight is set; an optional explicit `weight` overrides the selected
  mode's default. Any tricky area applies the effect once. `placement.value.match`
  maps modes to matching behavior: `additive_0_5h: substring` (case-sensitive A)
  and `multiplier_1_2: substring_ci` (case-insensitive B).
* `complexity` / `style`: `asked` or `inferred_from_text`.
* `wraparound`: disabled by default; enabling `wraparound_multiplier_1_3`
  applies weight `1.3` according to the pack inference rules below.
* `tier`: `fallback_standard` or `inferred`. Explicit artist rate wins.
  Inferred realism uses senior; detailed, moderate, or color uses standard;
  otherwise apprentice.
* `deposit`: `pct_of_low_30`, `pct_of_total_50`, or `artist_set`. Keep
  `deposit_policy` aligned with this factor's mode. Formula B uses 50% of total,
  rounded to nearest 50. Factor `value` defines `low_percentage: 0.3`,
  `total_percentage: 0.5`, `low_increment: 25`, `total_increment: 50`, and
  `piece_increment: 25`, identically in the catalog and default model.
  Artist-set fixed deposits use the exact configured amount; `none` produces
  zero. Artist percentage deposits remain an open decision for Gavin: only an
  explicitly selected `artist_set` mode may use them, with explicit
  `deposit_policy.basis: low | total | start` and
  `deposit_policy.rounding_increment: number | null`. Missing parameters are
  an error; `start` requires the by-piece path. `null` means no rounding. No basis or rounding default is chosen or shipped
  for artist percentages; this mode is off in the default pricing model.
* `size.mode`: `no_estimate` (Formula A default) sets
  `review_status: MUTATION_REQUIRED`, logs the skip, and asks for size in
  assumptions. The required `price_range` preserves the existing partial model
  calculation, including zero intermediate values; it is an unavailable service
  estimate, never a purchasable zero-price quote. Formula B's `fixed_base_hours` mode uses
  `size.value.unknown_base_hours: 4`.
* Top-level model `keyword_match`: `substring` by default for exact Formula B matching
  behavior; optional `whole_word` is a per-business stricter alternative.

## Formula B inference data

`inference-rules.json` stores ordered, data-only rules with ids, target factors,
output values, conditions, and provenance. No regex or code evaluation is used.
Matching is case-insensitive substring by default; first matching rule wins.
PRD-003 attributes these rules to `server/pricing-calculator.ts` at `f018b86`
(unvalidated). Inferred modes ignore the client's selected complexity/style.

* **Complexity:** realism if (`portrait` AND `realistic`), `photorealistic`,
  `photo-realistic`, (`face` AND `realistic`), or `hyperrealism`; otherwise
  detailed if `detailed`, `intricate`, `complex`, `mandala`, `geometric`,
  (`realism` AND (`black` OR `grey`)), or more than 3 reference images;
  otherwise moderate if `shading`, `pattern`, `design`, `realistic`, or
  description length >100 characters; otherwise simple.
* **Style:** color if `color`, `rainbow`, `blue`, `red`, `green`, or `colorful`;
  otherwise popcolor if `pop`, `accent`, or `highlight`; otherwise blackgrey.
  Color takes priority over popcolor. US spelling only: `colour` is not a
  keyword. Substring false positives such as `red` in `hundred` are intentional
  source parity; businesses may opt into `whole_word` instead.
* **Tier:** only when no artist rate exists: realism → senior; detailed,
  moderate, or color → standard; otherwise apprentice.
* **Wraparound:** description contains `wrap` or `around`, or description
  contains `sleeve` and a placement contains `arm` or `leg`.

## Pricing contract

Rates use `currency`, `pricing_mode`, `tiers`, `range_band`, and
`piece_high_multiplier`. Optional `rates.artist` contains `hourly_rate`,
`shop_minimum`, `piece_starting_price`, `deposit_type`, `deposit_amount`, and
`deposit_percentage` (a fraction, like the model's `0.3`). `by_piece` uses
its piece path only when a piece starting price is set. Without one it falls
back to hourly and logs the reason; it does not throw. `both` returns only the
hourly range and logs `pricing_mode: both → hourly`.

Hourly base hours are `max(1, ceil(width * height / 12))`. Apply placement,
then complexity, then multiply hours by rate and style (Formula A).
Formula B instead uses base × complexity, then tricky placement ×1.2, then
wraparound ×1.3, then rate × style. The shop minimum is
`max(subtotal, artist.shop_minimum ?? rate)`. Apply the `0.85/1.15` band and
round each bound to the nearest 50. Formula A deposit rounds 30% of low to
nearest 25. Preserve full-precision hours for money calculations; display hours
to one decimal: Formula A uses `Math.round(t * 10) / 10`, while Formula B
uses `toFixed(1)`. These can differ at binary .x5 edges; log both display
values alongside unrounded hours, retaining B's `toFixed(1)` string. The default
shown value uses A's `Math.round(t * 10) / 10`. Rounding
hours before pricing would not reliably preserve the supplied golden ranges.

`by_piece` bypasses hourly math and the band: low is the starting price, high
is nearest-50 rounding of start times 1.5, and both formulas use deposit
`max(100, round25(start * 0.3))`. Hours are zero. A disabled factor is logged
as skipped and contributes the identity, never its configured weight/value.

Sessions/session caps, cover-up, multi-area summing, city rate, and non-USD
currency are explicitly `not_yet_modeled`, disabled, and contain no pricing
math. Multiple placements do not add areas. A provisional session envelope
uses one session with the estimated hours for hourly work, or zero sessions
and zero hours for by-piece; this is not session splitting or a session cap.
The ordered intermediates log records resolved factor inputs (asked/inferred,
matched rule id and keywords), base hours, placement adjustment, complexity,
wraparound, unrounded hours, displayed hours, rate and source
(`from_artist | tier:<name>`), style, subtotal, whether the shop minimum applied,
total, band bounds before/after rounding, deposit basis, raw deposit, rounded
deposit, and any by-piece fallback reason. Both source display-hour values are
logged without rounding money inputs. Preserve raw answers without PII.
Platform fees and BNPL stay out of the Quote entirely, including assumptions.

## Evaluator API

`evaluate(answers, pricingModel, now)` accepts the question-answer map plus
explicit `consent` metadata. For a `QuoteRequest`, pass
`{ ...request.answers, consent: request.consent }`; `now` is an explicit Date or
RFC 3339 timestamp. The result separates consent from the preserved raw answers.
`getEnabledQuestions(pricingModel)` returns the intake question ids to display.
`buildQuoteManifest(model, pricingModelRef)` constructs a QuoteManifest using
that same enabled-question set.
The evaluator performs no I/O, calls no clock, and does not mutate its inputs.

A `pre_price` result remains pending artist review with a required non-binding range;
intermediates, sessions, and deposit are explicitly provisional. `post_price`
also returns the computed range for review. No artist approval is implied. Consent
preferences are copied, but `anonymized` remains false: preserving free text
is not proof of deidentification, so callers must not forward it as anonymous
research data without a separate privacy step.

## Estimate and binding Quote lifecycle

`evaluate()` returns `kind: estimate`, `binding: false`, with a required
`price_range` (`min`, `max`, `currency`, `basis`, `method`, `provenance`)
and low confidence for these unvalidated example rules. Range and deposit
amounts both include provenance (`who`, `when`). Deposit policies come from
`deposit_policy.policies` when configured; otherwise they are explicitly
example placeholders requiring provider review. Example data, not real prices.

Artist review produces a binding `Quote` in `QUOTED` with `valid_until`.
Acceptance requires explicit approval of the amount and nonempty policies
before payment handoff. Provider is merchant of record; UQP never holds funds.
A deposit is paid only after trusted payment-processor confirmation, never
client self-report. Poll instead of holding calls open. Webhook delivery is deferred in the local reference bindings.

## Questions

| ID | Label | Type | Required | Status | Provenance | Evidence source\_ids | Evidence count |
| - | - | - | - | - | - | - | - |
| description | Describe your tattoo | text | true | | tattoo.co current constant, unvalidated | | |
| placement | Placement areas | multi\_select | true | | tattoo.co current constant, unvalidated | | |
| size | Size choice | single\_select | true | | tattoo.co current constant, unvalidated | | |
| width | Width | number | false | | tattoo.co current constant, unvalidated | | |
| height | Height | number | false | | tattoo.co current constant, unvalidated | | |
| complexity | Complexity | single\_select | true | | tattoo.co current constant, unvalidated | | |
| style | Color style | single\_select | true | | tattoo.co current constant, unvalidated | | |
| budget\_min | Minimum budget | number | false | | tattoo.co current constant, unvalidated | | |
| budget\_max | Maximum budget | number | false | | tattoo.co current constant, unvalidated | | |
| first\_tattoo | Is this your first tattoo? | boolean | false | | tattoo.co current constant, unvalidated | | |
| reference\_images | Number of reference images | number | false | | tattoo.co f018b86 server/pricing-calculator.ts, unvalidated | | |

## Factors

| ID | Description | Status | Enabled by default | Evidence status | Provenance | Evidence source\_ids | Evidence count |
| - | - | - | - | - | - | - | - |
| size | Maximum of minimum hours and ceiling of area divided by area\_per\_hour. | modeled | true | | tattoo.co current constant, unvalidated | | |
| placement | Apply once when any selected area is tricky. Mode selects additive\_hours or multiplier; an optional weight explicitly overrides the selected default. | modeled | true | | tattoo.co current constant, unvalidated | | |
| complexity | | modeled | true | | tattoo.co current constant, unvalidated | | |
| style | | modeled | true | | tattoo.co current constant, unvalidated | | |
| wraparound | | modeled | false | | tattoo.co current constant, unvalidated | | |
| tier | An explicit artist hourly rate takes precedence. Inferred tier: realism senior; detailed, moderate, or color standard; otherwise apprentice. | modeled | true | | tattoo.co current constant, unvalidated | | |
| deposit | Formula A rounds 30% of low to nearest 25. Formula B rounds 50% of total to nearest 50. Artist-set uses explicit artist settings. | modeled | true | | tattoo.co current constant, unvalidated | | |
| sessions | Catalog placeholder only; disabled and has no pricing math. | not\_yet\_modeled | false | | tattoo.co current constant, unvalidated | | |
| cover\_up | Catalog placeholder only; disabled and has no pricing math. | not\_yet\_modeled | false | | tattoo.co current constant, unvalidated | | |
| multi\_area | Catalog placeholder only; disabled and has no pricing math. | not\_yet\_modeled | false | | tattoo.co current constant, unvalidated | | |
| city\_rate | Catalog placeholder only; disabled and has no pricing math. | not\_yet\_modeled | false | | tattoo.co current constant, unvalidated | | |
| non\_usd | Catalog placeholder only; disabled and has no pricing math. | not\_yet\_modeled | false | | tattoo.co current constant, unvalidated | | |

## Full catalogs

```json theme={null}
{
  "pack_id": "tattoo",
  "pack_version": "0.1.0",
  "provenance": "tattoo.co current constant, unvalidated",
  "questions": [
    {
      "id": "description",
      "label": "Describe your tattoo",
      "type": "text",
      "required": true,
      "factor_ids": [
        "complexity",
        "style",
        "wraparound"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Describe the design without contact information. Text inference is used only when enabled by the business."
    },
    {
      "id": "placement",
      "label": "Placement areas",
      "type": "multi_select",
      "required": true,
      "factor_ids": [
        "placement",
        "wraparound"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "options": [
        "Shoulder",
        "Upper Arm",
        "Lower Arm",
        "Wrist",
        "Hand",
        "Other",
        "Head",
        "Neck",
        "Chest",
        "Back",
        "Abdomen",
        "Foot",
        "Lower Leg",
        "Upper Leg",
        "Hips",
        "Buttocks"
      ],
      "description": "Select one or more areas. Multiple selections trigger any-tricky detection, not area summing."
    },
    {
      "id": "size",
      "label": "Size choice",
      "type": "single_select",
      "required": true,
      "factor_ids": [
        "size"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "options": [
        {
          "value": "xs",
          "label": "xs",
          "width": 1.5,
          "height": 1.5,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "sm",
          "label": "sm",
          "width": 3,
          "height": 3,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "md",
          "label": "md",
          "width": 5,
          "height": 5,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "lg",
          "label": "lg",
          "width": 8,
          "height": 8,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "xl",
          "label": "xl",
          "width": 12,
          "height": 12,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "unsure",
          "label": "unsure",
          "width": 5,
          "height": 5,
          "provenance": "tattoo.co current constant, unvalidated"
        }
      ],
      "description": "Retain the exact raw choice, including xs, xl, and unsure. Dimensions are square defaults in inches."
    },
    {
      "id": "width",
      "label": "Width",
      "type": "number",
      "required": false,
      "factor_ids": [
        "size"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "unit": "inches",
      "description": "Optional positive width; provide together with height to override the default dimensions."
    },
    {
      "id": "height",
      "label": "Height",
      "type": "number",
      "required": false,
      "factor_ids": [
        "size"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "unit": "inches",
      "description": "Optional positive height; provide together with width to override the default dimensions."
    },
    {
      "id": "complexity",
      "label": "Complexity",
      "type": "single_select",
      "required": true,
      "factor_ids": [
        "complexity"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "options": [
        {
          "value": "simple",
          "label": "simple",
          "multiplier": 1,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "moderate",
          "label": "moderate",
          "multiplier": 1.15,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "detailed",
          "label": "detailed",
          "multiplier": 1.35,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "realism",
          "label": "realism",
          "multiplier": 1.6,
          "provenance": "tattoo.co current constant, unvalidated"
        }
      ]
    },
    {
      "id": "style",
      "label": "Color style",
      "type": "single_select",
      "required": true,
      "factor_ids": [
        "style"
      ],
      "provenance": "tattoo.co current constant, unvalidated",
      "options": [
        {
          "value": "blackgrey",
          "label": "blackgrey",
          "multiplier": 1,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "popcolor",
          "label": "popcolor",
          "multiplier": 1.15,
          "provenance": "tattoo.co current constant, unvalidated"
        },
        {
          "value": "color",
          "label": "color",
          "multiplier": 1.3,
          "provenance": "tattoo.co current constant, unvalidated"
        }
      ]
    },
    {
      "id": "budget_min",
      "label": "Minimum budget",
      "type": "number",
      "required": false,
      "factor_ids": [],
      "provenance": "tattoo.co current constant, unvalidated",
      "unit": "USD",
      "description": "Informational only; does not change the estimate."
    },
    {
      "id": "budget_max",
      "label": "Maximum budget",
      "type": "number",
      "required": false,
      "factor_ids": [],
      "provenance": "tattoo.co current constant, unvalidated",
      "unit": "USD",
      "description": "Informational only; does not change the estimate."
    },
    {
      "id": "first_tattoo",
      "label": "Is this your first tattoo?",
      "type": "boolean",
      "required": false,
      "factor_ids": [],
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Informational only; does not change the estimate."
    },
    {
      "id": "reference_images",
      "label": "Number of reference images",
      "type": "number",
      "required": false,
      "factor_ids": [
        "complexity"
      ],
      "provenance": "tattoo.co f018b86 server/pricing-calculator.ts, unvalidated",
      "description": "Count only; no image URLs or contact details."
    }
  ]
}
```

```json theme={null}
{
  "pack_id": "tattoo",
  "pack_version": "0.1.0",
  "provenance": "tattoo.co current constant, unvalidated",
  "factors": [
    {
      "id": "size",
      "label": "Size hours",
      "question_ids": [
        "size",
        "width",
        "height"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "value": {
        "dimensions": {
          "xs": 1.5,
          "sm": 3,
          "md": 5,
          "lg": 8,
          "xl": 12,
          "unsure": 5
        },
        "area_per_hour": 12,
        "minimum_hours": 1,
        "unknown_base_hours": 4
      },
      "description": "Maximum of minimum hours and ceiling of area divided by area_per_hour.",
      "enabled": true,
      "mode": "no_estimate",
      "modes": [
        "no_estimate",
        "fixed_base_hours"
      ]
    },
    {
      "id": "placement",
      "label": "Tricky placement",
      "question_ids": [
        "placement"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "additive_0_5h",
      "modes": [
        "additive_0_5h",
        "multiplier_1_2"
      ],
      "value": {
        "additive_hours": 0.5,
        "multiplier": 1.2,
        "tricky": [
          "Wrist",
          "Hand",
          "Neck",
          "Foot",
          "Lower Leg"
        ],
        "match": {
          "additive_0_5h": "substring",
          "multiplier_1_2": "substring_ci"
        }
      },
      "values": {
        "additive_0_5h": 0.5,
        "multiplier_1_2": 1.2
      },
      "description": "Apply once when any selected area is tricky. Mode selects additive_hours or multiplier; an optional weight explicitly overrides the selected default.",
      "enabled": true
    },
    {
      "id": "complexity",
      "label": "Complexity",
      "question_ids": [
        "complexity",
        "description"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "asked",
      "modes": [
        "asked",
        "inferred_from_text"
      ],
      "value": {
        "simple": 1,
        "moderate": 1.15,
        "detailed": 1.35,
        "realism": 1.6
      },
      "enabled": true
    },
    {
      "id": "style",
      "label": "Color style",
      "question_ids": [
        "style",
        "description"
      ],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "asked",
      "modes": [
        "asked",
        "inferred_from_text"
      ],
      "value": {
        "blackgrey": 1,
        "popcolor": 1.15,
        "color": 1.3
      },
      "enabled": true
    },
    {
      "id": "wraparound",
      "label": "Wraparound or sleeve",
      "question_ids": [
        "description"
      ],
      "enabled_by_default": false,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "wraparound_multiplier_1_3",
      "modes": [
        "wraparound_multiplier_1_3"
      ],
      "weight": 1.3,
      "enabled": false
    },
    {
      "id": "tier",
      "label": "Artist tier fallback",
      "question_ids": [],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "fallback_standard",
      "modes": [
        "fallback_standard",
        "inferred"
      ],
      "values": {
        "apprentice": 120,
        "standard": 200,
        "senior": 300
      },
      "description": "An explicit artist hourly rate takes precedence. Inferred tier: realism senior; detailed, moderate, or color standard; otherwise apprentice.",
      "enabled": true
    },
    {
      "id": "deposit",
      "label": "Deposit policy",
      "question_ids": [],
      "enabled_by_default": true,
      "status": "modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "pct_of_low_30",
      "modes": [
        "pct_of_low_30",
        "pct_of_total_50",
        "artist_set"
      ],
      "values": {
        "pct_of_low_30": {
          "percentage": 0.3,
          "rounding_increment": 25
        },
        "pct_of_total_50": {
          "percentage": 0.5,
          "rounding_increment": 50
        },
        "artist_set": {
          "types": [
            "fixed",
            "percentage",
            "none"
          ]
        }
      },
      "description": "Formula A rounds 30% of low to nearest 25. Formula B rounds 50% of total to nearest 50. Artist-set uses explicit artist settings.",
      "value": {
        "low_percentage": 0.3,
        "total_percentage": 0.5,
        "low_increment": 25,
        "total_increment": 50,
        "piece_increment": 25
      },
      "enabled": true
    },
    {
      "id": "sessions",
      "label": "Sessions and session cap",
      "question_ids": [],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "mode": "not_yet_modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Catalog placeholder only; disabled and has no pricing math.",
      "enabled": false
    },
    {
      "id": "cover_up",
      "label": "Cover-up",
      "question_ids": [],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "mode": "not_yet_modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Catalog placeholder only; disabled and has no pricing math.",
      "enabled": false
    },
    {
      "id": "multi_area",
      "label": "Multi-area summing",
      "question_ids": [
        "placement"
      ],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "mode": "not_yet_modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Catalog placeholder only; disabled and has no pricing math.",
      "enabled": false
    },
    {
      "id": "city_rate",
      "label": "City rate",
      "question_ids": [],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "mode": "not_yet_modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Catalog placeholder only; disabled and has no pricing math.",
      "enabled": false
    },
    {
      "id": "non_usd",
      "label": "Currency other than USD",
      "question_ids": [],
      "enabled_by_default": false,
      "status": "not_yet_modeled",
      "mode": "not_yet_modeled",
      "provenance": "tattoo.co current constant, unvalidated",
      "description": "Catalog placeholder only; disabled and has no pricing math.",
      "enabled": false
    }
  ]
}
```


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