{
  "query": {
    "service_intent": "blowout",
    "geography": "strict",
    "selected_addons": [],
    "require_availability": false,
    "limit": 20,
    "offset": 0,
    "neighborhood": null,
    "normalized_service": "blowout"
  },
  "dataset_revision": "b-merchants@2026-10-23T11:05:07Z#4f15ef234749;price-kinds@2026-10-24T09:56:47Z+public-research@e360e97d86a8+handoffs@eeeb1675e507",
  "decision_facts_revision": "decision-facts@2026-10-23T15:34:38Z",
  "ranking": "Geographic match, then salon and service names alphabetically. Information completeness does not imply service quality.",
  "availability_note": "No provider-confirmed availability is available. Date-specific options remain conditional; no slot is held or booked.",
  "options": [
    {
      "salon": {
        "slug": "art-of-hair-bernal-heights",
        "name": "Art of Hair",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-art-of-hair-bernal-heights:svc:60",
        "name": "BLOWOUT - LONG",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 70,
          "max": 70,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 70,
        "known_subtotal_max": 70,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 70,
        "max_minutes": 70,
        "base_service_minutes": 70,
        "base_service_max_minutes": 70,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "09:30",
            "close": "20:30"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "10:00",
            "close": "18:30"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/art-of-hair-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - LONG.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "art-of-hair-bernal-heights",
        "name": "Art of Hair",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-art-of-hair-bernal-heights:svc:59",
        "name": "BLOWOUT - MID",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 60,
          "max": 60,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 60,
        "known_subtotal_max": 60,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 55,
        "max_minutes": 55,
        "base_service_minutes": 55,
        "base_service_max_minutes": 55,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "09:30",
            "close": "20:30"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "10:00",
            "close": "18:30"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/art-of-hair-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - MID.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "art-of-hair-bernal-heights",
        "name": "Art of Hair",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-art-of-hair-bernal-heights:svc:58",
        "name": "BLOWOUT - SHORT",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.blancasartofhair.com/salon-services",
              "checked_at": "2026-10-22T14:54:22Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 50,
          "max": 50,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.blancasartofhair.com/salon-services",
            "checked_at": "2026-10-22T14:54:22Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 50,
        "known_subtotal_max": 50,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 30,
        "max_minutes": 30,
        "base_service_minutes": 30,
        "base_service_max_minutes": 30,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-22T14:54:22Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "07:30",
            "close": "20:30"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "09:30",
            "close": "20:30"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "10:00",
            "close": "18:30"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.blancasartofhair.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer, with split HTML digits reconstructed; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/art-of-hair-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - SHORT.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "barber-and-gent-bernal-heights",
        "name": "Barber & Gent",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-barber-and-gent-bernal-heights:svc:61",
        "name": "BLOWOUT - LONG",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 75,
          "max": 75,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 75,
        "known_subtotal_max": 75,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 70,
        "max_minutes": 70,
        "base_service_minutes": 70,
        "base_service_max_minutes": 70,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "09:00",
            "close": "18:00"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/barber-and-gent-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - LONG.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "barber-and-gent-bernal-heights",
        "name": "Barber & Gent",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-barber-and-gent-bernal-heights:svc:60",
        "name": "BLOWOUT - MID",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 65,
          "max": 65,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 65,
        "known_subtotal_max": 65,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 55,
        "max_minutes": 55,
        "base_service_minutes": 55,
        "base_service_max_minutes": 55,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "09:00",
            "close": "18:00"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/barber-and-gent-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - MID.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "barber-and-gent-bernal-heights",
        "name": "Barber & Gent",
        "neighborhood": "bernal-heights",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-barber-and-gent-bernal-heights:svc:59",
        "name": "BLOWOUT - SHORT",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "match",
        "reasons": [],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Blowout service varies by hair length; extensions add-on is separately priced."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barberandgent.com/salon-services",
              "checked_at": "2026-10-22T17:54:05Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Blowout service varies by hair length; extensions add-on is separately priced."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 55,
          "max": 55,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.barberandgent.com/salon-services",
            "checked_at": "2026-10-22T17:54:05Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 55,
        "known_subtotal_max": 55,
        "unresolved_charges": [],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 30,
        "max_minutes": 30,
        "base_service_minutes": 30,
        "base_service_max_minutes": 30,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-22T17:54:05Z",
          "status": "verified",
          "note": "Duration as published by the business."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "monday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "tuesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "08:00",
            "close": "21:00"
          },
          {
            "day": "sunday",
            "closed": false,
            "open": "09:00",
            "close": "18:00"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://www.barberandgent.com/salon-services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Business shop-hours footer; not appointment inventory."
        },
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/barber-and-gent-bernal-heights&to=https%3A%2F%2Fgo.booker.com%2F%23%2Flocation%2Fbarberandgent",
        "booking_url": "https://go.booker.com/#/location/barberandgent",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: BLOWOUT - SHORT.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    }
  ],
  "uncertain": [
    {
      "salon": {
        "slug": "ohana-hair-studio-mission",
        "name": "'Ohana Hair Studio",
        "neighborhood": "mission",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-ohana-hair-studio-mission:svc:7",
        "name": "Blow-out",
        "description": null,
        "price_note": "Published by the salon; opening hours are not appointment availability."
      },
      "merchant_context": {
        "checked_at": "2026-10-25T20:42:45Z",
        "add_ons": [],
        "unknowns": [
          "Appointment/referral only. Operating days listed but clock hours unknown; Sundays alternate. Haircut price conflicts between own pages.",
          "Fresh business clock hours could not be established from the salon-owned pages checked; any older observations keep their original dates.",
          "Unpublished durations, mandatory extras and patch-test/deposit terms are unknown, not absent or free."
        ],
        "detail_api": "https://agentsalonsf.com/api/v1/salons/ohana-hair-studio-mission"
      },
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.ohanahairstudio.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.ohanahairstudio.com/",
          "checked_at": "2026-10-25T20:38:10Z",
          "status": "verified",
          "note": null
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.ohanahairstudio.com/",
          "checked_at": "2026-10-25T20:38:10Z",
          "status": "verified",
          "note": "Published by the salon; opening hours are not appointment availability."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 40,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.ohanahairstudio.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 40,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.ohanahairstudio.com/",
          "checked_at": null,
          "status": "unknown",
          "note": "Not established on the salon-owned pages checked."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "tel:+14155959655",
        "booking_url": "tel:+14155959655",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "contact_or_research",
        "remaining_steps": [
          "No online booking published. Call +14155959655.",
          "Select the published service: Blow-out.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Contact the salon through its published contact method; no online booking route is verified."
        ]
      }
    },
    {
      "salon": {
        "slug": "alexander-g-elite-studio-financial-district-south-beach",
        "name": "Alexander G. Elite Studio",
        "neighborhood": "financial-district-south-beach",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-alexander-g-elite-studio-financial-district-south-beach:svc:8",
        "name": "Blow-dry",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Published blow-dry charge starts at $85; final quote unavailable.",
          "Starting price only; the final service charge is not bounded."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-22T19:01:55Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Iron finishing is included with the blow-dry on request."
            }
          },
          "style": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-23T14:56:25Z",
              "status": "verified",
              "note": "Iron finishing is included with the blow-dry on request."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-22T19:01:55Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-22T19:01:55Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://alexanderg.com/services",
              "checked_at": "2026-10-22T19:01:55Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://alexanderg.com/services",
          "checked_at": "2026-10-22T19:01:55Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://alexanderg.com/services",
          "checked_at": "2026-10-22T19:01:55Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "salon_website",
          "url": "https://alexanderg.com/services",
          "checked_at": "2026-10-23T14:56:25Z",
          "status": "verified",
          "note": "Only Tue-Sat published; absent days remain unknown."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-22T19:01:55Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Iron finishing is included with the blow-dry on request."
          },
          "style": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-23T14:56:25Z",
            "status": "verified",
            "note": "Iron finishing is included with the blow-dry on request."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-22T19:01:55Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-22T19:01:55Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-22T19:01:55Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 85,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://alexanderg.com/services",
            "checked_at": "2026-10-22T19:01:55Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 85,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Published blow-dry charge starts at $85; final quote unavailable.",
          "Starting price only; the final service charge is not bounded."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Duration not published."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": [
          {
            "day": "tuesday",
            "closed": false,
            "open": "10:00",
            "close": "17:00"
          },
          {
            "day": "wednesday",
            "closed": false,
            "open": "10:00",
            "close": "18:00"
          },
          {
            "day": "thursday",
            "closed": false,
            "open": "10:00",
            "close": "18:00"
          },
          {
            "day": "friday",
            "closed": false,
            "open": "10:00",
            "close": "16:00"
          },
          {
            "day": "saturday",
            "closed": false,
            "open": "10:00",
            "close": "16:00"
          }
        ],
        "for_date": null,
        "source": "salon_website",
        "checked_at": "2026-10-23T14:56:25Z",
        "unconfirmed": false,
        "label": "Salon-published opening hours; not appointment availability.",
        "recheck": {
          "url": "https://alexanderg.com/services",
          "checked_at": "2026-10-23T14:56:25Z",
          "note": "Only Tue-Sat published; absent days remain unknown."
        },
        "conflict": true,
        "conflicts": [
          {
            "value": [
              {
                "day": "monday",
                "closed": false,
                "open": "10:00",
                "close": "19:00"
              },
              {
                "day": "tuesday",
                "closed": false,
                "open": "10:00",
                "close": "19:00"
              },
              {
                "day": "wednesday",
                "closed": false,
                "open": "10:00",
                "close": "19:00"
              },
              {
                "day": "thursday",
                "closed": false,
                "open": "10:00",
                "close": "19:00"
              },
              {
                "day": "friday",
                "closed": false,
                "open": "10:00",
                "close": "19:00"
              },
              {
                "day": "saturday",
                "closed": false,
                "open": "09:00",
                "close": "17:00"
              },
              {
                "day": "sunday",
                "closed": true
              }
            ],
            "provenance": {
              "status": "verified",
              "source": {
                "type": "salon_website",
                "url": "https://alexanderg.com/"
              },
              "observedAt": "2026-10-22T19:01:53Z"
            }
          }
        ]
      },
      "availability": {
        "basis": "published_hours",
        "checked_at": "2026-10-23T14:56:25Z",
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/alexander-g-elite-studio-financial-district-south-beach&to=https%3A%2F%2Fbooking.mangomint.com%2Falexanderg",
        "booking_url": "https://booking.mangomint.com/alexanderg",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: Blow-dry.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "arrow-salon-mission",
        "name": "Arrow Salon",
        "neighborhood": "mission",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-arrow-salon-mission:public-shampoo-blowout-34",
        "name": "Shampoo + Blowout",
        "description": "Published by the business; independently unconfirmed.",
        "price_note": "Published base price; final total unverified. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": {
        "checked_at": "2026-10-25T20:42:45Z",
        "add_ons": [],
        "unknowns": [
          "Fresh business clock hours could not be established from the salon-owned pages checked; any older observations keep their original dates.",
          "No new complete salon-owned menu established in this pass; existing sourced menu, if any, is retained with its original dates.",
          "Unpublished durations, mandatory extras and patch-test/deposit terms are unknown, not absent or free."
        ],
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "public_context": {
        "conflicts": [
          "Root Touch Up + Haircut, Patty: the public booking page has a numeric price of $260, while its price-description field says $250.00. Confirm the option price before relying on it.",
          "Root Touch Up + Haircut, Grace: the public booking page has a numeric price of $250, while its price-description field says $240.00. Confirm the option price before relying on it.",
          "General website base prices are sometimes below the explicit booking options: haircut $100+ versus $110/$120/$130 in the main menu, partial lightening $250+ versus $275, and blowout $75+ versus $80. These are separate source scopes, not interchangeable quotes."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "The general website menu does not publish durations. Option labels identify a published choice; no current stylist availability was established.",
          "No usable public terms established for: deposit, noShow, payment, walkIns."
        ],
        "profile_url": "https://agentsalonsf.com/salons/arrow-salon-mission",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
              "checked_at": "2026-10-24T09:28:28Z",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
          "checked_at": "2026-10-24T09:28:28Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
          "checked_at": "2026-10-24T09:28:28Z",
          "status": "reported",
          "note": "Published base price; final total unverified. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 80,
          "max": 80,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
            "checked_at": "2026-10-24T09:28:28Z",
            "status": "reported",
            "note": "Published base price; final total unverified. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 80,
        "known_subtotal_max": 80,
        "unresolved_charges": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
          "checked_at": "2026-10-24T09:28:28Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Complimentary consultations are available in person or by contacting the salon.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": "At least 48 hours notice to avoid a service fee or 50% of the booked service. More than 15 minutes late may require adjustment.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/policy",
            "checked_at": "2026-10-25T20:38:33Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          },
          "status": "published"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/arrow-salon-mission&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2F0u6c8z7ysje8bf%2Flocation%2F25YERQT7GV97T",
        "booking_url": "https://book.squareup.com/appointments/0u6c8z7ysje8bf/location/25YERQT7GV97T",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo + Blowout.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "arrow-salon-mission",
        "name": "Arrow Salon",
        "neighborhood": "mission",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-arrow-salon-mission:public-shampoo-blowout-44",
        "name": "Shampoo + Blowout",
        "description": "Curls or straightening can be added; extra price not stated.",
        "price_note": "Alexis menu. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": {
        "checked_at": "2026-10-25T20:42:45Z",
        "add_ons": [],
        "unknowns": [
          "Fresh business clock hours could not be established from the salon-owned pages checked; any older observations keep their original dates.",
          "No new complete salon-owned menu established in this pass; existing sourced menu, if any, is retained with its original dates.",
          "Unpublished durations, mandatory extras and patch-test/deposit terms are unknown, not absent or free."
        ],
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "public_context": {
        "conflicts": [
          "Root Touch Up + Haircut, Patty: the public booking page has a numeric price of $260, while its price-description field says $250.00. Confirm the option price before relying on it.",
          "Root Touch Up + Haircut, Grace: the public booking page has a numeric price of $250, while its price-description field says $240.00. Confirm the option price before relying on it.",
          "General website base prices are sometimes below the explicit booking options: haircut $100+ versus $110/$120/$130 in the main menu, partial lightening $250+ versus $275, and blowout $75+ versus $80. These are separate source scopes, not interchangeable quotes."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "The general website menu does not publish durations. Option labels identify a published choice; no current stylist availability was established.",
          "No usable public terms established for: deposit, noShow, payment, walkIns."
        ],
        "profile_url": "https://agentsalonsf.com/salons/arrow-salon-mission",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
              "checked_at": "2026-10-24T09:29:31Z",
              "status": "reported",
              "note": "Curls or straightening can be added; extra price not stated."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
          "checked_at": "2026-10-24T09:29:31Z",
          "status": "reported",
          "note": "Curls or straightening can be added; extra price not stated."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
          "checked_at": "2026-10-24T09:29:31Z",
          "status": "reported",
          "note": "Alexis menu. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Curls or straightening can be added; extra price not stated."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 80,
          "max": 80,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
            "checked_at": "2026-10-24T09:29:31Z",
            "status": "reported",
            "note": "Alexis menu. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 80,
        "known_subtotal_max": 80,
        "unresolved_charges": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
          "checked_at": "2026-10-24T09:29:31Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Complimentary consultations are available in person or by contacting the salon.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": "At least 48 hours notice to avoid a service fee or 50% of the booked service. More than 15 minutes late may require adjustment.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/policy",
            "checked_at": "2026-10-25T20:38:33Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          },
          "status": "published"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/arrow-salon-mission&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2Fm5hdj0io0ws4tk%2Flocation%2FL8MTF4JZ6BE99%2Fservices",
        "booking_url": "https://book.squareup.com/appointments/m5hdj0io0ws4tk/location/L8MTF4JZ6BE99/services",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo + Blowout.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "arrow-salon-mission",
        "name": "Arrow Salon",
        "neighborhood": "mission",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-arrow-salon-mission:public-shampoo-blowout-50",
        "name": "Shampoo Blowout",
        "description": "Website states services include shampoo and blow-dry.",
        "price_note": "General website price; varies by stylist. Do not replace a selected booking option with this amount. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": {
        "checked_at": "2026-10-25T20:42:45Z",
        "add_ons": [],
        "unknowns": [
          "Fresh business clock hours could not be established from the salon-owned pages checked; any older observations keep their original dates.",
          "No new complete salon-owned menu established in this pass; existing sourced menu, if any, is retained with its original dates.",
          "Unpublished durations, mandatory extras and patch-test/deposit terms are unknown, not absent or free."
        ],
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "public_context": {
        "conflicts": [
          "Root Touch Up + Haircut, Patty: the public booking page has a numeric price of $260, while its price-description field says $250.00. Confirm the option price before relying on it.",
          "Root Touch Up + Haircut, Grace: the public booking page has a numeric price of $250, while its price-description field says $240.00. Confirm the option price before relying on it.",
          "General website base prices are sometimes below the explicit booking options: haircut $100+ versus $110/$120/$130 in the main menu, partial lightening $250+ versus $275, and blowout $75+ versus $80. These are separate source scopes, not interchangeable quotes."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "The general website menu does not publish durations. Option labels identify a published choice; no current stylist availability was established.",
          "No usable public terms established for: deposit, noShow, payment, walkIns."
        ],
        "profile_url": "https://agentsalonsf.com/salons/arrow-salon-mission",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/arrow-salon-mission"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.arrowsalonsf.com/services",
              "checked_at": "2026-10-24T09:34:11Z",
              "status": "reported",
              "note": "Website states services include shampoo and blow-dry."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.arrowsalonsf.com/services",
          "checked_at": "2026-10-24T09:34:11Z",
          "status": "reported",
          "note": "Website states services include shampoo and blow-dry."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.arrowsalonsf.com/services",
          "checked_at": "2026-10-24T09:34:11Z",
          "status": "reported",
          "note": "General website price; varies by stylist. Do not replace a selected booking option with this amount. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "Website states services include shampoo and blow-dry."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 75,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "reported",
            "note": "General website price; varies by stylist. Do not replace a selected booking option with this amount. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 75,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.arrowsalonsf.com/services",
          "checked_at": null,
          "status": "unknown",
          "note": "Not established on the public pages checked."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Complimentary consultations are available in person or by contacting the salon.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/services",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": "At least 48 hours notice to avoid a service fee or 50% of the booked service. More than 15 minutes late may require adjustment.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.arrowsalonsf.com/policy",
            "checked_at": "2026-10-25T20:38:33Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          },
          "status": "published"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/arrow-salon-mission&to=https%3A%2F%2Fwww.arrowsalonsf.com%2Fbooknow",
        "booking_url": "https://www.arrowsalonsf.com/booknow",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: Shampoo Blowout.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "arty-japantown",
        "name": "Arty",
        "neighborhood": "japantown",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-arty-japantown:svc:2",
        "name": "SHAMPOO & BLOWDRY",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.artyhair.com/price.html",
              "checked_at": "2026-10-22T13:40:27Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.artyhair.com/price.html",
          "checked_at": "2026-10-22T13:40:27Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.artyhair.com/price.html",
          "checked_at": "2026-10-22T13:40:27Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 55,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.artyhair.com/price.html",
            "checked_at": "2026-10-22T13:40:27Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 55,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Duration not published."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/arty-japantown&to=https%3A%2F%2Fwww.artyhair.com%2Fappointment.html",
        "booking_url": "https://www.artyhair.com/appointment.html",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the business’s own booking page. Choose the service (and staff, if offered), pick an open time — live slots are shown only on the booking page — and confirm with your details.",
          "Select the published service: SHAMPOO & BLOWDRY.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "b-parlor-castro-upper-market",
        "name": "B Parlor",
        "neighborhood": "castro-upper-market",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-b-parlor-castro-upper-market:svc:7",
        "name": "Classic Blowout",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bparlor.com/services",
              "checked_at": "2026-10-22T17:32:57Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.bparlor.com/services",
          "checked_at": "2026-10-22T17:32:57Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.bparlor.com/services",
          "checked_at": "2026-10-22T17:32:57Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "range",
        "base": {
          "min": 85,
          "max": 100,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.bparlor.com/services",
            "checked_at": "2026-10-22T17:32:57Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 85,
        "known_subtotal_max": 100,
        "unresolved_charges": [
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Duration not published."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "tel:+14152558554",
        "booking_url": "tel:+14152558554",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "contact_or_research",
        "remaining_steps": [
          "No online booking published. Call +14152558554.",
          "Select the published service: Classic Blowout.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Contact the salon through its published contact method; no online booking route is verified."
        ]
      }
    },
    {
      "salon": {
        "slug": "backstage-salon-russian-hill",
        "name": "Backstage Salon",
        "neighborhood": "russian-hill",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-backstage-salon-russian-hill:svc:4",
        "name": "BLOW DRY",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.backstagesf.com/services",
              "checked_at": "2026-10-22T13:40:02Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.backstagesf.com/services",
          "checked_at": "2026-10-22T13:40:02Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.backstagesf.com/services",
          "checked_at": "2026-10-22T13:40:02Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 75,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.backstagesf.com/services",
            "checked_at": "2026-10-22T13:40:02Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 75,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Duration not published."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "tel:+14157751440",
        "booking_url": "tel:+14157751440",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "contact_or_research",
        "remaining_steps": [
          "No online booking published. Call +14157751440.",
          "Select the published service: BLOW DRY.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Contact the salon through its published contact method; no online booking route is verified."
        ]
      }
    },
    {
      "salon": {
        "slug": "bangin-hair-salon-castro-upper-market",
        "name": "Bangin Hair Salon",
        "neighborhood": "castro-upper-market",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-bangin-hair-salon-castro-upper-market:public-shampoo-and-blow-dry-30",
        "name": "Shampoo and Blow Dry",
        "description": "For curls or waves, choose the separate iron-styling option.",
        "price_note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": null,
      "public_context": {
        "conflicts": [
          "Juliann Global Bleach Out: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Juliann Color Correction: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
          "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "No priced service list was established for Jenny or Andy. The team page has seven stylists but the main booking menu has four; Juliann is represented by a separate menu. Roster presence is not availability.",
          "Website says haircuts and color include wash/blow-dry, excluding bang and neck trims. Individual dry-haircut and add-on services have narrower scope; confirm before combining.",
          "No usable public terms established for: deposit, payment."
        ],
        "profile_url": "https://agentsalonsf.com/salons/bangin-hair-salon-castro-upper-market",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/bangin-hair-salon-castro-upper-market"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "For curls or waves, choose the separate iron-styling option."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "For curls or waves, choose the separate iron-styling option."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "For curls or waves, choose the separate iron-styling option."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 95,
          "max": 95,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 95,
        "known_subtotal_max": 95,
        "unresolved_charges": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Website asks clients new to hair coloring to book a color consultation so the stylist can choose appropriate time and services. Separate Juliann requirements are recorded on the relevant service rows.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.banginhairsalon.com/",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "scope_requires_confirmation",
          "published_context": "Main booking menu: less than 24 hours of notice incurs 50%; same-day cancellation incurs 100%. Other website and Juliann terms differ; see conflicts before relying on this policy.",
          "conflicts": [
            "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
            "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
          ]
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/bangin-hair-salon-castro-upper-market&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2F2hwm8d263a0zet%2Flocation%2FA6Z53KBPMEZTM",
        "booking_url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo and Blow Dry.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "bangin-hair-salon-castro-upper-market",
        "name": "Bangin Hair Salon",
        "neighborhood": "castro-upper-market",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-bangin-hair-salon-castro-upper-market:public-shampoo-blow-dry-and-iron-31",
        "name": "Shampoo, Blow Dry and Iron",
        "description": "Includes thermal styling.",
        "price_note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": null,
      "public_context": {
        "conflicts": [
          "Juliann Global Bleach Out: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Juliann Color Correction: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
          "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "No priced service list was established for Jenny or Andy. The team page has seven stylists but the main booking menu has four; Juliann is represented by a separate menu. Roster presence is not availability.",
          "Website says haircuts and color include wash/blow-dry, excluding bang and neck trims. Individual dry-haircut and add-on services have narrower scope; confirm before combining.",
          "No usable public terms established for: deposit, payment."
        ],
        "profile_url": "https://agentsalonsf.com/salons/bangin-hair-salon-castro-upper-market",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/bangin-hair-salon-castro-upper-market"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "blow_dry": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Includes thermal styling."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 95,
          "max": 95,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Published option: Joseph. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 95,
        "known_subtotal_max": 95,
        "unresolved_charges": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Website asks clients new to hair coloring to book a color consultation so the stylist can choose appropriate time and services. Separate Juliann requirements are recorded on the relevant service rows.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.banginhairsalon.com/",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "scope_requires_confirmation",
          "published_context": "Main booking menu: less than 24 hours of notice incurs 50%; same-day cancellation incurs 100%. Other website and Juliann terms differ; see conflicts before relying on this policy.",
          "conflicts": [
            "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
            "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
          ]
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/bangin-hair-salon-castro-upper-market&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2F2hwm8d263a0zet%2Flocation%2FA6Z53KBPMEZTM",
        "booking_url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo, Blow Dry and Iron.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "bangin-hair-salon-castro-upper-market",
        "name": "Bangin Hair Salon",
        "neighborhood": "castro-upper-market",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-bangin-hair-salon-castro-upper-market:public-shampoo-blow-dry-and-iron-32",
        "name": "Shampoo, Blow Dry and Iron",
        "description": "Includes thermal styling.",
        "price_note": "Published option: Brendan. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": null,
      "public_context": {
        "conflicts": [
          "Juliann Global Bleach Out: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Juliann Color Correction: displayed price is $600 for 240 minutes, but the service description says $550 for the first four hours plus $130 per additional hour.",
          "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
          "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
        ],
        "unknowns": [
          "Exact final total, including applicable extras, tax and gratuity, is not established by a published base price.",
          "Appointment availability was not checked.",
          "No priced service list was established for Jenny or Andy. The team page has seven stylists but the main booking menu has four; Juliann is represented by a separate menu. Roster presence is not availability.",
          "Website says haircuts and color include wash/blow-dry, excluding bang and neck trims. Individual dry-haircut and add-on services have narrower scope; confirm before combining.",
          "No usable public terms established for: deposit, payment."
        ],
        "profile_url": "https://agentsalonsf.com/salons/bangin-hair-salon-castro-upper-market",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/bangin-hair-salon-castro-upper-market"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "blow_dry": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
              "checked_at": "2026-10-24T09:29:50Z",
              "status": "reported",
              "note": "Includes thermal styling."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Includes thermal styling."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published option: Brendan. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Includes thermal styling."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "fixed",
        "base": {
          "min": 135,
          "max": 135,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "reported",
            "note": "Published option: Brendan. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 135,
        "known_subtotal_max": 135,
        "unresolved_charges": [
          "Published policies differ by source or stylist; confirm the applicable policy for this option. See public_context.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
          "checked_at": "2026-10-24T09:29:50Z",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Website asks clients new to hair coloring to book a color consultation so the stylist can choose appropriate time and services. Separate Juliann requirements are recorded on the relevant service rows.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.banginhairsalon.com/",
            "checked_at": "2026-10-24T09:34:11Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
            "checked_at": "2026-10-24T09:29:50Z",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "scope_requires_confirmation",
          "published_context": "Main booking menu: less than 24 hours of notice incurs 50%; same-day cancellation incurs 100%. Other website and Juliann terms differ; see conflicts before relying on this policy.",
          "conflicts": [
            "Homepage asks 24 hours of notice for cuts and 48 hours for color; main booking policy says less than 24 hours incurs 50% and same-day cancellation/no-show incurs 100%. The applicable color deadline needs confirmation.",
            "Juliann has a separate stricter policy: less than one week of notice for cancellation/rescheduling incurs 50%; same-day cancellation or no-show incurs 100%. It must not be replaced with the main booking menu policy."
          ]
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/bangin-hair-salon-castro-upper-market&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2F2hwm8d263a0zet%2Flocation%2FA6Z53KBPMEZTM",
        "booking_url": "https://book.squareup.com/appointments/2hwm8d263a0zet/location/A6Z53KBPMEZTM",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo, Blow Dry and Iron.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "barnets-salon-mission",
        "name": "Barnets Salon",
        "neighborhood": "mission",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-barnets-salon-mission:svc:13",
        "name": "Blow Dry / Flat Iron",
        "description": null,
        "price_note": "Published by the salon; opening hours are not appointment availability."
      },
      "merchant_context": {
        "checked_at": "2026-10-25T20:44:31Z",
        "add_ons": [],
        "unknowns": [
          "Fresh business clock hours could not be established from the salon-owned pages checked; any older observations keep their original dates.",
          "Unpublished durations, mandatory extras and patch-test/deposit terms are unknown, not absent or free."
        ],
        "detail_api": "https://agentsalonsf.com/api/v1/salons/barnets-salon-mission"
      },
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "blow_dry": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.barnetssalon.com/",
              "checked_at": "2026-10-25T20:38:10Z",
              "status": "verified",
              "note": null
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.barnetssalon.com/",
          "checked_at": "2026-10-25T20:38:10Z",
          "status": "verified",
          "note": null
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.barnetssalon.com/",
          "checked_at": "2026-10-25T20:38:10Z",
          "status": "verified",
          "note": "Published by the salon; opening hours are not appointment availability."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": null
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 55,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 55,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "salon_website",
          "url": "https://www.barnetssalon.com/",
          "checked_at": null,
          "status": "unknown",
          "note": "Not established on the salon-owned pages checked."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": "24 hours notice to cancel/reschedule; otherwise $50 per hour charge.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.barnetssalon.com/",
            "checked_at": "2026-10-25T20:38:10Z",
            "status": "verified",
            "note": "Published by the salon; opening hours are not appointment availability."
          },
          "status": "published"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/barnets-salon-mission&to=https%3A%2F%2Fsquareup.com%2Fappointments%2Fbook%2F5GSF1FMJPKR1F%2Fbarnets-salon-san-francisco-ca",
        "booking_url": "https://squareup.com/appointments/book/5GSF1FMJPKR1F/barnets-salon-san-francisco-ca",
        "link_scope": "salon",
        "checked_at": "2026-10-25T20:44:31Z",
        "link_check": {
          "url": "https://squareup.com/appointments/book/5GSF1FMJPKR1F/barnets-salon-san-francisco-ca",
          "provider": "square",
          "link_scope": "salon",
          "service_name": null,
          "source_url": "https://www.barnetssalon.com/",
          "checked_at": "2026-10-25T20:44:31Z",
          "http_status": 200,
          "final_url": "https://barnets-106048.square.site/",
          "public_without_login": null,
          "note": "Salon-published booking destination. Select the required service on the booking page; no appointment is reserved. Header-only check does not verify login requirements or availability."
        },
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Select Blow Dry / Flat Iron on the booking page. Salon-published booking destination. Select the required service on the booking page; no appointment is reserved. Header-only check does not verify login requirements or availability.",
          "Select the published service: Blow Dry / Flat Iron.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    },
    {
      "salon": {
        "slug": "bijoux-salon-financial-district-south-beach",
        "name": "Bijoux Salon",
        "neighborhood": "financial-district-south-beach",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-bijoux-salon-financial-district-south-beach:svc:13",
        "name": "Shampoo Blowdry",
        "description": "As published on the business’s own price list.",
        "price_note": "As published on the business’s own price list."
      },
      "merchant_context": null,
      "public_context": null,
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "salon_website",
              "url": "https://www.bijouxsalonsf.com/services",
              "checked_at": "2026-10-22T17:32:07Z",
              "status": "verified",
              "note": "As published on the business’s own price list."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "salon_website",
          "url": "https://www.bijouxsalonsf.com/services",
          "checked_at": "2026-10-22T17:32:07Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "price": {
          "source": "salon_website",
          "url": "https://www.bijouxsalonsf.com/services",
          "checked_at": "2026-10-22T17:32:07Z",
          "status": "verified",
          "note": "As published on the business’s own price list."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "blow_dry": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "style": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "consultation": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "haircut": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "iron_finish": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 55,
          "max": null,
          "evidence": {
            "source": "salon_website",
            "url": "https://www.bijouxsalonsf.com/services",
            "checked_at": "2026-10-22T17:32:07Z",
            "status": "verified",
            "note": "As published on the business’s own price list."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 55,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": null,
        "max_minutes": null,
        "base_service_minutes": null,
        "base_service_max_minutes": null,
        "evidence": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Duration not published."
        },
        "status": "unknown",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "tel:+14155002433",
        "booking_url": "tel:+14155002433",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "contact_or_research",
        "remaining_steps": [
          "No online booking published. Call +14155002433.",
          "Select the published service: Shampoo Blowdry.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Contact the salon through its published contact method; no online booking route is verified."
        ]
      }
    },
    {
      "salon": {
        "slug": "oro-castro-upper-market",
        "name": "Blond.ish",
        "neighborhood": "castro-upper-market",
        "geographic_match": "in"
      },
      "offering": {
        "id": "sf-oro-castro-upper-market:public-shampoo-blow-dry-13",
        "name": "Shampoo & Blow-dry",
        "description": "Published by the business; independently unconfirmed.",
        "price_note": "Published customer-menu price; final scope and charges require confirmation. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
      },
      "merchant_context": null,
      "public_context": {
        "conflicts": [
          "The website general menu lists All Over Color from $220, Mini Foil from $250 and Full Highlight/Balayage from $350; the booking menu lists $175+, $180+ and $355+ respectively. Stylist-specific website prices vary further. These are unresolved source differences, not verified offers.",
          "The booking menu includes an extended partial-highlight option with a zero price and no explicit complimentary-service claim. It is retained with unknown price.",
          "The public website says the salon was previously ORO; the existing slug retains that old name."
        ],
        "unknowns": [
          "No live appointment availability or booking confirmation was checked.",
          "Published prices are not a final total; applicable extra product, time, tax and gratuity must be confirmed.",
          "K18 is listed on individual stylist price lists but is not explicitly identified as an add-on there; it remains a treatment menu item.",
          "No deposit, no-show-specific or walk-in terms were found on reviewed pages."
        ],
        "profile_url": "https://agentsalonsf.com/salons/oro-castro-upper-market",
        "detail_api": "https://agentsalonsf.com/api/v1/salons/oro-castro-upper-market"
      },
      "fit": {
        "status": "conditional",
        "reasons": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "inclusions": {
          "shampoo": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "blow_dry": {
            "included": true,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "style": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "consultation": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "haircut": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "iron_finish": {
            "included": null,
            "evidence": {
              "source": "booking_provider",
              "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
              "checked_at": "2026-10-24T09:28:54.325065+00:00",
              "status": "reported",
              "note": "Published by the business; independently unconfirmed."
            }
          },
          "toner": {
            "included": null,
            "evidence": {
              "source": null,
              "url": null,
              "checked_at": null,
              "status": "unknown",
              "note": null
            }
          }
        },
        "service_match": "published_service",
        "availability_confirmed": false
      },
      "evidence": {
        "service": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
          "checked_at": "2026-10-24T09:28:54.325065+00:00",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "price": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
          "checked_at": "2026-10-24T09:28:54.325065+00:00",
          "status": "reported",
          "note": "Published customer-menu price; final scope and charges require confirmation. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
        },
        "hours": {
          "source": "derived",
          "url": null,
          "checked_at": null,
          "status": "unknown",
          "note": "Opening hours not published by the business."
        },
        "inclusions": {
          "shampoo": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "blow_dry": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "style": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "consultation": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "haircut": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "iron_finish": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published by the business; independently unconfirmed."
          },
          "toner": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          }
        }
      },
      "price": {
        "currency": "USD",
        "kind": "from",
        "base": {
          "min": 100,
          "max": null,
          "evidence": {
            "source": "booking_provider",
            "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
            "checked_at": "2026-10-24T09:28:54.325065+00:00",
            "status": "reported",
            "note": "Published customer-menu price; final scope and charges require confirmation. Published base price; final total, mandatory extras, tax and tip are not guaranteed."
          }
        },
        "mandatory_extras": [],
        "selected_addons": [],
        "known_subtotal_min": 100,
        "known_subtotal_max": null,
        "unresolved_charges": [
          "Starting price only; the final service charge is not bounded.",
          "Mandatory extras have not been verified for this service from the salon menu."
        ],
        "budget_status": "not_requested",
        "subtotal_note": "Published known subtotal, not a provider-confirmed final quote. Deposit is not added again; optional gratuity is excluded. Charges appearing in both lists are counted once by id."
      },
      "duration": {
        "min_minutes": 60,
        "max_minutes": 60,
        "base_service_minutes": 60,
        "base_service_max_minutes": 60,
        "evidence": {
          "source": "booking_provider",
          "url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
          "checked_at": "2026-10-24T09:28:54.325065+00:00",
          "status": "reported",
          "note": "Published by the business; independently unconfirmed."
        },
        "status": "published",
        "note": "Published service duration, when known; confirm when booking."
      },
      "hours": {
        "value": null,
        "for_date": null,
        "source": "derived",
        "checked_at": null,
        "unconfirmed": true,
        "label": "Opening hours unconfirmed; see source and recheck evidence.",
        "recheck": null,
        "conflict": false,
        "conflicts": []
      },
      "availability": {
        "basis": "none",
        "checked_at": null,
        "confirmed": false,
        "note": "Opening hours do not establish appointment availability. Confirm on the booking provider."
      },
      "conditions": {
        "consultation": {
          "value": "Consultation requested for becoming a bleach-and-tone client; transformational color requires current and desired-hair photos. Consultation-dependent services should be discussed before booking.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.blondishhair.com/services",
            "checked_at": "2026-10-24T09:28:25.190923+00:00",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published",
          "required": null
        },
        "deposit": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown",
          "treatment": "advance_not_added_to_total",
          "added_to_subtotal": false
        },
        "cancellation": {
          "value": "At least 48 hours notice requested. Changes or cancellations within 48 hours incur 50%; within 24 hours incur 100%.",
          "evidence": {
            "source": "salon_website",
            "url": "https://www.blondishhair.com/services",
            "checked_at": "2026-10-24T09:28:25.190923+00:00",
            "status": "verified",
            "note": "Published policy; applicability to the chosen stylist/service must be confirmed."
          },
          "status": "published"
        },
        "patch_test": {
          "value": null,
          "evidence": {
            "source": null,
            "url": null,
            "checked_at": null,
            "status": "unknown",
            "note": null
          },
          "status": "unknown"
        }
      },
      "next_action": {
        "url": "https://agentsalonsf.com/out?m=san-francisco/hair-salon/oro-castro-upper-market&to=https%3A%2F%2Fbook.squareup.com%2Fappointments%2F568a4964-f17d-4920-bf8e-cc94cbcb4a15%2Flocation%2FM6Y3RXVY1WMR1%2Fservices",
        "booking_url": "https://book.squareup.com/appointments/568a4964-f17d-4920-bf8e-cc94cbcb4a15/location/M6Y3RXVY1WMR1/services",
        "link_scope": "salon",
        "checked_at": null,
        "link_check": null,
        "precision": "salon",
        "kind": "provider_handoff",
        "remaining_steps": [
          "Opens the public booking menu that published this service option. Select the matching service and stylist option, confirm current price and applicable policies, and check availability there. No service, staff or slot is preselected; nothing has been reserved.",
          "Select the published service: Shampoo & Blow-dry.",
          "Check an actual appointment including the full service duration.",
          "Confirm the final payable amount, deposit and cancellation terms before submitting a booking.",
          "Complete booking on the salon’s provider and obtain its confirmation; this site has not reserved a slot."
        ]
      }
    }
  ],
  "excluded": [],
  "unresolved_salons": [],
  "unresolved_salons_total": 0,
  "unresolved_salons_next_offset": null,
  "total": 143,
  "count": 20,
  "offset": 0,
  "next_offset": 20,
  "no_match_reason": null,
  "documentation": "https://agentsalonsf.com/agents"
}