Skip to main content
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. 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. 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:
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: 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

Factors

Full catalogs