{
  "total": 4,
  "source": "d1",
  "tracking_since": "2026-10-25T12:38:37.716Z",
  "source_rechecks": {
    "rows": 332,
    "series": 250,
    "last_checked_at": "2026-10-25T13:38:37.000Z",
    "latest_result_counts": {
      "confirmed": 240,
      "unreachable": 5,
      "needs_review": 4,
      "changed": 1
    },
    "method": "Each source URL is fetched and the recorded numbers are looked for in the page (PDFs via pdftotext); anything not confirmed is reviewed by a human. Log: /downloads/price_rechecks.jsonl"
  },
  "observations": [
    {
      "id": "po_20261025_285369f7f16c",
      "series_key": "ps_7a4a9457e22621e5",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "use_case_ids": [
        "solar-panel-cleaning-utility"
      ],
      "provider_id": null,
      "description": "Panel cleaning (all methods), sites up to 10 MW, plus mob/demob",
      "low": 0.75,
      "high": 4,
      "currency": "USD",
      "unit": "per panel",
      "region": "US",
      "source_url": "https://soilar.tech/solar-farm-cleaning-costs/",
      "as_of": "2026-10",
      "observed_at": "2026-10-25T12:38:37.716Z",
      "content_hash": "sha256:285369f7f16ca5ac95e732f7159b7233a38f39e15b44d11cb073e0d62fa8a301",
      "supersedes": null,
      "origin": "backfill",
      "change_reason": null,
      "current": true,
      "usd": {
        "currency": "USD",
        "low": 0.75,
        "high": 4,
        "note": "Already in target currency; no conversion."
      }
    },
    {
      "id": "po_20261025_3e6eafd8d02d",
      "series_key": "ps_9372120d780d31af",
      "kind": "provider_published",
      "use_case_id": "solar-panel-cleaning-utility",
      "use_case_ids": [
        "solar-panel-cleaning-utility"
      ],
      "provider_id": "taypro",
      "description": "Robotic solar cleaning service (OPEX model)",
      "low": 0.45,
      "high": 0.7,
      "currency": "INR",
      "unit": "per panel per cycle",
      "region": "",
      "source_url": "https://taypro.in/solar-cleaning-capex-vs-opex",
      "as_of": "2026-10",
      "observed_at": "2026-10-25T12:38:37.716Z",
      "content_hash": "sha256:3e6eafd8d02dedf8a0403d644e416e7db6b7eac4e7969b10077e2cd1a8cb1ed9",
      "supersedes": null,
      "origin": "backfill",
      "change_reason": null,
      "current": true,
      "usd": {
        "currency": "USD",
        "low": 0,
        "high": 0.01,
        "fx": {
          "pair": "INR/USD",
          "rate": 0.010533,
          "inr_per_usd": 94.94,
          "rate_date": "2026-10-23",
          "source": "European Central Bank reference rates via Frankfurter",
          "source_url": "https://api.frankfurter.dev/v1/latest?base=USD"
        },
        "note": "Converted at the published reference rate on 2026-10-23, not at the price's as_of date. Indicative only."
      }
    },
    {
      "id": "po_20261025_a69169acffc9",
      "series_key": "ps_23a85d5239348ea6",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "use_case_ids": [
        "solar-panel-cleaning-utility"
      ],
      "provider_id": null,
      "description": "Robotic cleaning-as-a-service, India utility-scale",
      "low": 0.45,
      "high": 0.7,
      "currency": "INR",
      "unit": "per panel per cycle",
      "region": "IN",
      "source_url": "https://taypro.in/solar-cleaning-capex-vs-opex",
      "as_of": "2026-10",
      "observed_at": "2026-10-25T12:38:37.716Z",
      "content_hash": "sha256:a69169acffc9559f903b175c2f8d2e84ac986553c81d5f44cde97030ab818015",
      "supersedes": null,
      "origin": "backfill",
      "change_reason": null,
      "current": true,
      "usd": {
        "currency": "USD",
        "low": 0,
        "high": 0.01,
        "fx": {
          "pair": "INR/USD",
          "rate": 0.010533,
          "inr_per_usd": 94.94,
          "rate_date": "2026-10-23",
          "source": "European Central Bank reference rates via Frankfurter",
          "source_url": "https://api.frankfurter.dev/v1/latest?base=USD"
        },
        "note": "Converted at the published reference rate on 2026-10-23, not at the price's as_of date. Indicative only."
      }
    },
    {
      "id": "po_20261025_ccd7f7fbfbe7",
      "series_key": "ps_36549f3378f6f912",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "use_case_ids": [
        "solar-panel-cleaning-utility"
      ],
      "provider_id": null,
      "description": "Utility-scale panel cleaning (all methods), 101-250 MW sites, plus mob/demob",
      "low": 0.37,
      "high": 0.75,
      "currency": "USD",
      "unit": "per panel",
      "region": "US",
      "source_url": "https://soilar.tech/solar-farm-cleaning-costs/",
      "as_of": "2026-10",
      "observed_at": "2026-10-25T12:38:37.716Z",
      "content_hash": "sha256:ccd7f7fbfbe71b2e0906932e56665e74f3722273d50dc195bf7048be86ee456d",
      "supersedes": null,
      "origin": "backfill",
      "change_reason": null,
      "current": true,
      "usd": {
        "currency": "USD",
        "low": 0.37,
        "high": 0.75,
        "note": "Already in target currency; no conversion."
      }
    }
  ],
  "series": [
    {
      "series_key": "ps_7a4a9457e22621e5",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "provider_id": null,
      "description": "Panel cleaning (all methods), sites up to 10 MW, plus mob/demob",
      "currency": "USD",
      "unit": "per panel",
      "region": "US",
      "source_url": "https://soilar.tech/solar-farm-cleaning-costs/",
      "observations": 1,
      "first_observed_at": "2026-10-25T12:38:37.716Z",
      "last_observed_at": "2026-10-25T12:38:37.716Z",
      "current": true,
      "latest": {
        "low": 0.75,
        "high": 4,
        "as_of": "2026-10",
        "id": "po_20261025_285369f7f16c"
      },
      "trend": null,
      "last_rechecked": {
        "checked_at": "2026-10-25T13:26:35.985Z",
        "result": "confirmed",
        "by": "automatic"
      }
    },
    {
      "series_key": "ps_9372120d780d31af",
      "kind": "provider_published",
      "use_case_id": "solar-panel-cleaning-utility",
      "provider_id": "taypro",
      "description": "Robotic solar cleaning service (OPEX model)",
      "currency": "INR",
      "unit": "per panel per cycle",
      "region": "",
      "source_url": "https://taypro.in/solar-cleaning-capex-vs-opex",
      "observations": 1,
      "first_observed_at": "2026-10-25T12:38:37.716Z",
      "last_observed_at": "2026-10-25T12:38:37.716Z",
      "current": true,
      "latest": {
        "low": 0.45,
        "high": 0.7,
        "as_of": "2026-10",
        "id": "po_20261025_3e6eafd8d02d"
      },
      "trend": null,
      "last_rechecked": {
        "checked_at": "2026-10-25T13:26:35.985Z",
        "result": "confirmed",
        "by": "automatic"
      }
    },
    {
      "series_key": "ps_23a85d5239348ea6",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "provider_id": null,
      "description": "Robotic cleaning-as-a-service, India utility-scale",
      "currency": "INR",
      "unit": "per panel per cycle",
      "region": "IN",
      "source_url": "https://taypro.in/solar-cleaning-capex-vs-opex",
      "observations": 1,
      "first_observed_at": "2026-10-25T12:38:37.716Z",
      "last_observed_at": "2026-10-25T12:38:37.716Z",
      "current": true,
      "latest": {
        "low": 0.45,
        "high": 0.7,
        "as_of": "2026-10",
        "id": "po_20261025_a69169acffc9"
      },
      "trend": null,
      "last_rechecked": {
        "checked_at": "2026-10-25T13:26:35.985Z",
        "result": "confirmed",
        "by": "automatic"
      }
    },
    {
      "series_key": "ps_36549f3378f6f912",
      "kind": "benchmark",
      "use_case_id": "solar-panel-cleaning-utility",
      "provider_id": null,
      "description": "Utility-scale panel cleaning (all methods), 101-250 MW sites, plus mob/demob",
      "currency": "USD",
      "unit": "per panel",
      "region": "US",
      "source_url": "https://soilar.tech/solar-farm-cleaning-costs/",
      "observations": 1,
      "first_observed_at": "2026-10-25T12:38:37.716Z",
      "last_observed_at": "2026-10-25T12:38:37.716Z",
      "current": true,
      "latest": {
        "low": 0.37,
        "high": 0.75,
        "as_of": "2026-10",
        "id": "po_20261025_ccd7f7fbfbe7"
      },
      "trend": null,
      "last_rechecked": {
        "checked_at": "2026-10-25T13:26:35.985Z",
        "result": "confirmed",
        "by": "automatic"
      }
    }
  ],
  "note": "Only one observation per series so far: we started recording every price on 2026-10-25 and re-check every source on a schedule. A trend appears when a re-checked source shows a different price (we never overwrite old observations).",
  "pagination": {
    "total": 4,
    "limit": 200,
    "offset": 0,
    "returned": 4,
    "next_offset": null,
    "next": null,
    "prev": null
  },
  "license": "Whirrwork (https://whirrwork.com), CC BY 4.0"
}