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

# PricingModel

> Configure business-owned rates, enabled factors, deposit rules, inference and review settings for a selected pack.

Source: spec/schemas/pricing-model.json. Draft v0.1; reference, not production.

Use the canonical JSON below for all constraints.

## Properties and definitions

| Property / definition | Required | Type / reference | Description / constraints |
| - | - | - | - |
| pack\_id | yes | common.json#/\$defs/packId | \{"\$ref":"common.json#/\$defs/packId"} |
| pack\_version | yes | common.json#/\$defs/packVersion | \{"\$ref":"common.json#/\$defs/packVersion"} |
| id | no | string | \{"type":"string","minLength":1} |
| artist\_review\_mode | no | common.json#/\$defs/reviewMode | \{"\$ref":"common.json#/\$defs/reviewMode"} |
| factors | yes | array | \{"type":"array","items":\{"type":"object","properties":\{"id":\{"type":"string","minLength":1},"enabled":\{"type":"boolean"},"weight":\{"type":"number"},"value":\{},"mode":\{"type":"string","minLength":1},"provenance":\{"type":"string","minLength":1}},"required":\["id","enabled"],"additionalProperties":false}} |
| rates | yes | object | \{"type":"object","additionalProperties":true} |
| minimums | yes | object | \{"type":"object","additionalProperties":true} |
| rounding | yes | object | \{"type":"object","properties":\{"increment":\{"type":"number","exclusiveMinimum":0},"mode":\{"enum":\["nearest","up","down"]}},"required":\["increment","mode"],"additionalProperties":false} |
| deposit\_policy | yes | object | \{"type":"object","properties":\{"mode":\{"type":"string","minLength":1},"amount":\{"type":"number","minimum":0},"percentage":\{"type":"number","minimum":0,"maximum":1},"basis":\{"type":"string","minLength":1},"rounding\_increment":\{"type":\["number","null"],"exclusiveMinimum":0},"policies":\{"type":"array","minItems":1,"items":\{"type":"string","minLength":1}}},"required":\["mode"],"additionalProperties":false} |
| expiry\_days | yes | common.json#/\$defs/expiryDays | \{"\$ref":"common.json#/\$defs/expiryDays"} |
| provenance | no | string | \{"type":"string","minLength":1} |
| keyword\_match | no | enum | \{"enum":\["substring","whole\_word"]} |

## Full JSON

```json theme={null}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://uqp.dev/spec/schemas/pricing-model.json",
  "title": "PricingModel",
  "type": "object",
  "properties": {
    "pack_id": {
      "$ref": "common.json#/$defs/packId"
    },
    "pack_version": {
      "$ref": "common.json#/$defs/packVersion"
    },
    "id": {
      "type": "string",
      "minLength": 1
    },
    "artist_review_mode": {
      "$ref": "common.json#/$defs/reviewMode"
    },
    "factors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "enabled": {
            "type": "boolean"
          },
          "weight": {
            "type": "number"
          },
          "value": {},
          "mode": {
            "type": "string",
            "minLength": 1
          },
          "provenance": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "id",
          "enabled"
        ],
        "additionalProperties": false
      }
    },
    "rates": {
      "type": "object",
      "additionalProperties": true
    },
    "minimums": {
      "type": "object",
      "additionalProperties": true
    },
    "rounding": {
      "type": "object",
      "properties": {
        "increment": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "mode": {
          "enum": [
            "nearest",
            "up",
            "down"
          ]
        }
      },
      "required": [
        "increment",
        "mode"
      ],
      "additionalProperties": false
    },
    "deposit_policy": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "minLength": 1
        },
        "amount": {
          "type": "number",
          "minimum": 0
        },
        "percentage": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "rounding_increment": {
          "type": [
            "number",
            "null"
          ],
          "exclusiveMinimum": 0
        },
        "policies": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "required": [
        "mode"
      ],
      "additionalProperties": false
    },
    "expiry_days": {
      "$ref": "common.json#/$defs/expiryDays"
    },
    "provenance": {
      "type": "string",
      "minLength": 1
    },
    "keyword_match": {
      "enum": [
        "substring",
        "whole_word"
      ]
    }
  },
  "required": [
    "pack_id",
    "pack_version",
    "factors",
    "rates",
    "minimums",
    "rounding",
    "deposit_policy",
    "expiry_days"
  ],
  "additionalProperties": false
}
```

## Reference example

Tattoo pack 0.1.0 at a fixed evaluation time. **Example data, not real prices.** The Quote represents synthetic artist review, not evaluator approval.

```json theme={null}
{
  "pack_id": "tattoo",
  "pack_version": "0.1.0",
  "provenance": "tattoo.co current constant, unvalidated",
  "id": "tattoo-formula-a-example",
  "artist_review_mode": "post_price",
  "factors": [
    {
      "id": "size",
      "enabled": true,
      "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
      },
      "mode": "no_estimate"
    },
    {
      "id": "placement",
      "enabled": true,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "additive_0_5h",
      "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"
        }
      }
    },
    {
      "id": "complexity",
      "enabled": true,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "asked",
      "value": {
        "simple": 1,
        "moderate": 1.15,
        "detailed": 1.35,
        "realism": 1.6
      }
    },
    {
      "id": "style",
      "enabled": true,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "asked",
      "value": {
        "blackgrey": 1,
        "popcolor": 1.15,
        "color": 1.3
      }
    },
    {
      "id": "wraparound",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "wraparound_multiplier_1_3",
      "weight": 1.3
    },
    {
      "id": "tier",
      "enabled": true,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "fallback_standard"
    },
    {
      "id": "deposit",
      "enabled": true,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "pct_of_low_30",
      "value": {
        "low_percentage": 0.3,
        "total_percentage": 0.5,
        "low_increment": 25,
        "total_increment": 50,
        "piece_increment": 25
      }
    },
    {
      "id": "sessions",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "not_yet_modeled"
    },
    {
      "id": "cover_up",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "not_yet_modeled"
    },
    {
      "id": "multi_area",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "not_yet_modeled"
    },
    {
      "id": "city_rate",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "not_yet_modeled"
    },
    {
      "id": "non_usd",
      "enabled": false,
      "provenance": "tattoo.co current constant, unvalidated",
      "mode": "not_yet_modeled"
    }
  ],
  "rates": {
    "currency": "USD",
    "pricing_mode": "hourly",
    "tiers": {
      "apprentice": 120,
      "standard": 200,
      "senior": 300
    },
    "range_band": {
      "low": 0.85,
      "high": 1.15
    },
    "piece_high_multiplier": 1.5,
    "provenance": "tattoo.co current constant, unvalidated"
  },
  "minimums": {
    "piece_deposit": 100,
    "provenance": "tattoo.co current constant, unvalidated"
  },
  "rounding": {
    "increment": 50,
    "mode": "nearest"
  },
  "deposit_policy": {
    "mode": "pct_of_low_30",
    "percentage": 0.3
  },
  "expiry_days": 7,
  "keyword_match": "substring"
}
```


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