{
  "generated_at": "2026-09-07T03:05:28.046Z",
  "index": {
    "categories": 216,
    "brands": 3578,
    "claims": 2697,
    "tiers": {
      "catalog": 2336,
      "captured": 1239,
      "verified": 3
    },
    "freshness": {
      "total_dated": 2697,
      "checked_24h": 2453,
      "checked_24h_pct": 91,
      "oldest_days": 61,
      "buckets": [
        {
          "label": "under 24h",
          "n": 2453
        },
        {
          "label": "1–7 days",
          "n": 30
        },
        {
          "label": "7–30 days",
          "n": 211
        },
        {
          "label": "30+ days",
          "n": 3
        }
      ]
    },
    "disclosure": {
      "assessed": 89,
      "avg_score": 58
    },
    "offers": {
      "active": 166,
      "expired": 0,
      "failed_verification": 0,
      "brands_with_active_offers": 157,
      "categories_with_offers": 32,
      "recheck_window_days": 14,
      "policy": "offers never influence ranking; capture is own-published-surfaces only, receipts or nothing"
    }
  },
  "audit": {
    "evidence_refreshed_at": "2026-09-07T02:22:08.459Z",
    "last_run": {
      "run_at": "2026-09-07T02:22:08.459Z",
      "checked": 2694,
      "fresh": 2450,
      "drift": 148,
      "dead": 24,
      "bot_wall": 72,
      "offers": {
        "checked": 166,
        "confirmed": 165,
        "expired": 0,
        "failed_verification": 0,
        "bot_wall": 1
      }
    },
    "runs": [
      {
        "run_at": "2026-08-31T20:15:36.210Z",
        "checked": 2694,
        "drift": 120,
        "dead": 24
      },
      {
        "run_at": "2026-09-01T08:15:36.710Z",
        "checked": 2694,
        "drift": 123,
        "dead": 24
      },
      {
        "run_at": "2026-09-01T20:15:36.968Z",
        "checked": 2694,
        "drift": 128,
        "dead": 23
      },
      {
        "run_at": "2026-09-02T08:15:50.831Z",
        "checked": 2694,
        "drift": 130,
        "dead": 27
      },
      {
        "run_at": "2026-09-02T20:15:50.963Z",
        "checked": 2694,
        "drift": 133,
        "dead": 25
      },
      {
        "run_at": "2026-09-03T08:15:51.210Z",
        "checked": 2694,
        "drift": 134,
        "dead": 22
      },
      {
        "run_at": "2026-09-03T20:15:51.460Z",
        "checked": 2694,
        "drift": 134,
        "dead": 24
      },
      {
        "run_at": "2026-09-04T08:15:51.961Z",
        "checked": 2694,
        "drift": 140,
        "dead": 22
      },
      {
        "run_at": "2026-09-04T20:15:52.466Z",
        "checked": 2694,
        "drift": 145,
        "dead": 26
      },
      {
        "run_at": "2026-09-05T08:15:52.712Z",
        "checked": 2694,
        "drift": 147,
        "dead": 23
      },
      {
        "run_at": "2026-09-05T20:15:52.961Z",
        "checked": 2694,
        "drift": 148,
        "dead": 23
      },
      {
        "run_at": "2026-09-06T08:15:53.216Z",
        "checked": 2694,
        "drift": 146,
        "dead": 25
      },
      {
        "run_at": "2026-09-06T20:15:53.460Z",
        "checked": 2694,
        "drift": 148,
        "dead": 23
      },
      {
        "run_at": "2026-09-07T02:22:08.459Z",
        "checked": 2694,
        "drift": 148,
        "dead": 24
      }
    ],
    "open_confirmations": [
      {
        "brand": "Cymbiotika",
        "category": "Magnesium supplements",
        "since": "2026-08-28T06:30:00.000Z"
      },
      {
        "brand": "Frøya Organics",
        "category": "Natural skincare",
        "since": "2026-08-24T02:59:43.773Z"
      },
      {
        "brand": "Norse Organics",
        "category": "Natural skincare",
        "since": "2026-08-24T02:59:43.773Z"
      },
      {
        "brand": "Norse Organics",
        "category": "Natural skincare",
        "since": "2026-08-24T02:59:43.773Z"
      },
      {
        "brand": "Cymbiotika",
        "category": "Creatine",
        "since": "2026-08-28T06:30:00.000Z"
      },
      {
        "brand": "Boost Mobile",
        "category": "Prepaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      },
      {
        "brand": "Boost Mobile",
        "category": "Prepaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      },
      {
        "brand": "Boost Mobile",
        "category": "Prepaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      },
      {
        "brand": "Boost Mobile (postpaid-style offering)",
        "category": "Postpaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      },
      {
        "brand": "Boost Mobile (postpaid-style offering)",
        "category": "Postpaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      },
      {
        "brand": "Boost Mobile (postpaid-style offering)",
        "category": "Postpaid mobile plans",
        "since": "2026-08-25T07:11:02.025Z"
      }
    ],
    "review_queue_depth": 172,
    "selection": {
      "explanation": "Commit-before-inspect sampling: before each crawl fetches a single page, the crawler computes and durably logs a commitment — sha256 over the sorted list of every claim ID eligible that run, the full selection-rule text, and the run timestamp. After the run, the report of what was actually checked is verified against the commitment (same set, same deterministic order). So no one, including Graviti, can retroactively claim a different population was eligible than actually was, and a claim quietly dropped from the report breaks the verification arithmetic. The population derives from the published index plus the committed rule, so the preimage is publicly recomputable. Design: docs/SELECTION.md in the repo.",
      "run_at": "2026-09-07T02:22:08.459Z",
      "committed_at": "2026-09-07T02:22:08.459Z",
      "commitment": "3219dae76b7631a705a637b923dbe023fe48134ab630420998f210f07f95acfe",
      "commitment_covers": "sha256 of the canonical JSON {\"run_at\": <run timestamp>, \"population\": <sorted claim_id list>, \"rule\": <rule text>} — reproduce by enumerating claim IDs from the published index per the rule",
      "population_size": 2863,
      "population_sha256": "9bf0e9d48372da9c6687a52baa480f1423ee2ceee3c80b6547e17f0cde6db592",
      "committed_order_sha256": "35808dc5b800dc7b41d6cf3af6dce1de23567930928d625ddb584b0213cd248a",
      "rule_sha256": "7ff1f859e10acce741735a11033f98b00457d44df3461d74bbf48f3e90c83292",
      "rule": "Eligible population: every claim on every non-catalog brand in the published index (catalog-tier brands carry zero claims by design and are never crawled), enumerated in index order. Claim identity: <category_id>/<brand_id>/<first 16 hex chars of sha256(provenance_url + \"\\n\" + claim text)> — stable across runs; freshness timestamps never change identity. Processing: the ENTIRE eligible population is processed every run — no sampling and no capacity truncation (if a truncation rule is ever introduced it becomes part of this committed text, changing this hash publicly). Order: decay-class urgency, ascending days remaining in the claim's disclosed window (window_days minus days_since_check, per the public CLAIM_DECAY_RULES in src/engine.ts) — already-stale claims lead, static-class claims with no window go last, ties resolve by index order, so the queue is deterministic and reproducible from the committed population. Claims on fictional demo domains (example-*.com/.dev/.org) are recorded in the report with outcome 'skipped', never fetched — recorded, not omitted. Every processed claim appears in the run report with its claim_id; after the run the report's checked set and order are verified against this commitment, and a mismatch is a published failure. OFFERS SUB-POPULATION: every offer with status 'active' on every brand in the published index (any data tier — an offer is disclosure, not a claim, so catalog-tier brands' offers are eligible), enumerated in index order after the brand's claims. Offer identity: <category_id>/<brand_id>/offer:<first 16 hex chars of sha256(source_url + \"\\n\" + (code, or description for codeless offers))> — recorded in the run report's committed-identity field (claim_id) under the shared verification arithmetic. An offer past its brand-published expiry date is recorded with outcome 'offer_expired' (note: published expiry passed) without a fetch — recorded, never omitted. Other active offers are re-checked against their own source page on the disclosed 14-day offer window: the code (or, for codeless offers, ≥50% of the quoted incentive's significant tokens) must appear in the page's normalized visible text — found refreshes last_checked; a page that loads without it retires the offer (status expired, outcome offer_expired); an HTTP-dead source (non-bot-wall error status) fails verification (status failed_verification, outcome offer_source_dead); bot-wall statuses (403/429/503) and thrown network/timeout errors change nothing (outcomes offer_bot_wall / offer_unreachable_transient — a crawl limitation is not an expiry; a persistently unreachable offer goes visibly stale instead). Expired and failed offers are terminal for their identity — re-activation requires a fresh capture with a fresh receipt — and terminal offers leave the eligible population at the transition, changing the committed population between runs, honestly. Offer urgency in the shared queue: days remaining in the 14-day window, ascending, interleaved with claims by the same arithmetic.",
      "verification": {
        "checked": 2863,
        "population_match": true,
        "order_match": true,
        "pass": true
      }
    }
  },
  "canaries": {
    "explanation": "Canary-based drift detection: we push subjects of known ground truth through the system on every build and every crawl. Panel A replays golden queries, adversarial cases, and structural invariants through the scoring engine before each deploy — a divergence fails the build. Panel B routes the audit crawler across three pages we control (one steady, one deliberately drifted, one deliberately gone) before every cycle — a misread means the sensor itself is broken, and that cycle refreshes no real claims. If our own sensors drift, this block says so before the index does. Two independently maintained panels, so neither becomes the other's ground truth. Design: docs/CANARIES.md in the repo.",
    "panel_a": {
      "name": "Panel A — build canaries (engine, routing, invariants)",
      "run_at": "2026-09-07T03:05:12.312Z",
      "pass": true,
      "cases": {
        "total": 3786,
        "failed": 0
      },
      "sections": {
        "routing": {
          "total": 44,
          "failed": 0
        },
        "shadowing": {
          "total": 2145,
          "failed": 0
        },
        "invariants": {
          "total": 1519,
          "failed": 0
        },
        "adversarial": {
          "total": 7,
          "failed": 0
        },
        "offers": {
          "total": 71,
          "failed": 0
        }
      },
      "policy": "fails the build on any divergence (fail closed)"
    },
    "panel_b": {
      "name": "Panel B — crawler-cycle canaries (steady / drift / gone)",
      "run_at": "2026-09-07T02:22:08.459Z",
      "pass": true,
      "cases": {
        "total": 3,
        "failed": 0
      },
      "results": [
        {
          "id": "steady",
          "expected": "fresh",
          "outcome": "fresh",
          "pass": true
        },
        {
          "id": "drift",
          "expected": "drift",
          "outcome": "drift",
          "pass": true
        },
        {
          "id": "gone",
          "expected": "unreachable",
          "outcome": "unreachable",
          "pass": true
        }
      ],
      "policy": "a misread canary aborts the cycle before any real claim is touched (fail closed)"
    }
  },
  "demand": {
    "match_intent_total": 35,
    "in_index": 34,
    "in_index_pct": 97,
    "first_recorded": "2026-08-22T20:13:25.995Z",
    "last_recorded": "2026-09-07T03:04:54.861Z",
    "by_week": [
      {
        "week": "2026-w34",
        "n": 7
      },
      {
        "week": "2026-w35",
        "n": 26
      },
      {
        "week": "2026-w37",
        "n": 2
      }
    ],
    "top_out_of_scope_topics": [
      {
        "topic": "espresso",
        "n": 1
      }
    ],
    "conversions_attributed": 0,
    "http_counting_live": false,
    "counting_note": "match_intent calls recorded by the MCP server where it runs; direct HTTP fetches of the public index endpoints are not yet counted, so lookup totals undercount. Aggregate by design: no verbatim questions, no user identifiers."
  },
  "ledger": {
    "versions": 35,
    "latest_version": 35,
    "latest_entry_hash": "c719f4bd724b1d46a6cb2151e336387208e04f975cf37042c237c83f41e17147",
    "latest_at": "2026-09-07T03:05:13.318Z",
    "latest_annotation": "Verified offers build: per-brand offers[] with receipts (code or published codeless promo, discount, terms/expiry as published, source_url + verbatim quote, active/expired/failed_verification lifecycle) — first sweep 166 offers on 157 brands across 32 categories, captured from brands' OWN published surfaces only (homepage banners, /offers, /sale pages, newsletter incentives — never coupon aggregators), staged with page-byte evidence and human-reviewed with recorded reject reasons. Laws, enforced structurally: offers never influence ranking (the engine assembles offer blocks after scores are final and never reads offers in scoring — Panel A gained rank-neutrality canaries incl. a synthetic 99%-off bribe on the worst-ranked brand, and a 216/216-category A/B sweep with offers stripped produced byte-identical rankings and scores) and never count as evidence (evidenceState never reads offers — a catalog-only brand with a captured code stays unranked); capture is free: verification does not buy code placement, codes do not buy rank. Offers carry their own decay class — 14-day re-check window, tighter than the 45d fast claim class — re-checked by the continuous audit crawl under the same commit-before-inspect selection integrity (offers join the committed population as a defined sub-population; SELECTION_RULE text extended, so rule_sha256 changed publicly, which is exactly how rule changes are supposed to look); a source page that no longer shows the code retires the offer (expired), a dead source fails verification, bot walls and transient network errors change nothing; terminal offers keep their receipts and are never re-surfaced as live. Surfaces: offers blocks with the never-affects-rank note on match_intent (recommendations + in_landscape_not_evidenced) / get_verified_claims (full history) / category_landscape rows on BOTH transports; report_conversion accepts optional offer_code (backwards-compatible) for deal-attributed conversion economics; disclosure() carries offers_influence_ranking: false + policy on every payload; console/scan/landscape render receipted offer chips; /brands states the plain-language policy; llms.txt Verified offers section + usage rule 13; docs/OFFERS.md methodology; /pulse offers counts (index totals + per-run re-check totals). Engine rubric hash moves because offer payload surfaces were added to the engine source — scoring math untouched, proven by the identical-score sweeps above. Entry also carries the scheduled crawl's freshness re-stamps and the first offers re-check run.",
    "anchored": 34,
    "pending": 1,
    "blocks": [
      963634,
      963634,
      963641,
      963794,
      963798,
      963803,
      963803,
      963805,
      963874,
      963883,
      963896,
      963913,
      963950,
      963952,
      963952,
      963956,
      963957,
      963964,
      963969,
      964006,
      964023,
      964029,
      964032,
      964033,
      964087,
      964145,
      964168,
      964240,
      964247,
      964392,
      964401,
      964605,
      965040,
      965344
    ],
    "anchors": [
      {
        "version": 1,
        "block": 963634,
        "block_hash": "0000000000000000000207a82bd95758364d806a6aedab62deb2ee26122ba847",
        "url": "https://mempool.space/block/0000000000000000000207a82bd95758364d806a6aedab62deb2ee26122ba847"
      },
      {
        "version": 2,
        "block": 963634,
        "block_hash": "0000000000000000000207a82bd95758364d806a6aedab62deb2ee26122ba847",
        "url": "https://mempool.space/block/0000000000000000000207a82bd95758364d806a6aedab62deb2ee26122ba847"
      },
      {
        "version": 3,
        "block": 963641,
        "block_hash": "000000000000000000011fc31b64317b37a445a50aec5e63765044fcfd91bb89",
        "url": "https://mempool.space/block/000000000000000000011fc31b64317b37a445a50aec5e63765044fcfd91bb89"
      },
      {
        "version": 4,
        "block": 963794,
        "block_hash": "000000000000000000003258fa1d4600f8c5508ff39999e716696626c0347147",
        "url": "https://mempool.space/block/000000000000000000003258fa1d4600f8c5508ff39999e716696626c0347147"
      },
      {
        "version": 5,
        "block": 963798,
        "block_hash": "000000000000000000009994991596caec561b960239feb39af2d23f0e20a6cf",
        "url": "https://mempool.space/block/000000000000000000009994991596caec561b960239feb39af2d23f0e20a6cf"
      },
      {
        "version": 6,
        "block": 963803,
        "block_hash": "00000000000000000000f9c1b314117fa25f6eeff9d12396b44c0170cf9af969",
        "url": "https://mempool.space/block/00000000000000000000f9c1b314117fa25f6eeff9d12396b44c0170cf9af969"
      },
      {
        "version": 7,
        "block": 963803,
        "block_hash": "00000000000000000000f9c1b314117fa25f6eeff9d12396b44c0170cf9af969",
        "url": "https://mempool.space/block/00000000000000000000f9c1b314117fa25f6eeff9d12396b44c0170cf9af969"
      },
      {
        "version": 8,
        "block": 963805,
        "block_hash": "0000000000000000000073d6ac2ed97a1ac48a5e4c953ea71142505dc95c1646",
        "url": "https://mempool.space/block/0000000000000000000073d6ac2ed97a1ac48a5e4c953ea71142505dc95c1646"
      },
      {
        "version": 9,
        "block": 963874,
        "block_hash": "00000000000000000002055e2e8e3abc4f79a6cf9183b21af437ddba5360bbc3",
        "url": "https://mempool.space/block/00000000000000000002055e2e8e3abc4f79a6cf9183b21af437ddba5360bbc3"
      },
      {
        "version": 10,
        "block": 963883,
        "block_hash": "000000000000000000005007b9bcc157dc8ed5f83e689ee72391df8c3bcdce40",
        "url": "https://mempool.space/block/000000000000000000005007b9bcc157dc8ed5f83e689ee72391df8c3bcdce40"
      },
      {
        "version": 11,
        "block": 963896,
        "block_hash": "00000000000000000000a2ec23b345d17b0d416ad406168b77d6b892d8c24f42",
        "url": "https://mempool.space/block/00000000000000000000a2ec23b345d17b0d416ad406168b77d6b892d8c24f42"
      },
      {
        "version": 12,
        "block": 963913,
        "block_hash": "00000000000000000000d6f6f939a166c065e3decb0e8771dd260d6d6cebe742",
        "url": "https://mempool.space/block/00000000000000000000d6f6f939a166c065e3decb0e8771dd260d6d6cebe742"
      },
      {
        "version": 13,
        "block": 963950,
        "block_hash": "00000000000000000000efbb158fe1460f4fa308fb520026724ff4ef92a0e5b2",
        "url": "https://mempool.space/block/00000000000000000000efbb158fe1460f4fa308fb520026724ff4ef92a0e5b2"
      },
      {
        "version": 14,
        "block": 963952,
        "block_hash": "000000000000000000017b47a9e45b48ea2f4363f187e88c465e376eb92a086f",
        "url": "https://mempool.space/block/000000000000000000017b47a9e45b48ea2f4363f187e88c465e376eb92a086f"
      },
      {
        "version": 15,
        "block": 963952,
        "block_hash": "000000000000000000017b47a9e45b48ea2f4363f187e88c465e376eb92a086f",
        "url": "https://mempool.space/block/000000000000000000017b47a9e45b48ea2f4363f187e88c465e376eb92a086f"
      },
      {
        "version": 16,
        "block": 963956,
        "block_hash": "00000000000000000001565f885c9747f855677a14b8a1a21ed9bd8d77bda413",
        "url": "https://mempool.space/block/00000000000000000001565f885c9747f855677a14b8a1a21ed9bd8d77bda413"
      },
      {
        "version": 17,
        "block": 963957,
        "block_hash": "0000000000000000000081f4234193d7f8420220fc1534d36149a1d185f60ff5",
        "url": "https://mempool.space/block/0000000000000000000081f4234193d7f8420220fc1534d36149a1d185f60ff5"
      },
      {
        "version": 18,
        "block": 963964,
        "block_hash": "000000000000000000022821c7d5fbcafb4d2e44d48d1a623d86a735689a9ae5",
        "url": "https://mempool.space/block/000000000000000000022821c7d5fbcafb4d2e44d48d1a623d86a735689a9ae5"
      },
      {
        "version": 19,
        "block": 963969,
        "block_hash": "00000000000000000000007a86eb59407d137ddaa640149d331531efb186ca4f",
        "url": "https://mempool.space/block/00000000000000000000007a86eb59407d137ddaa640149d331531efb186ca4f"
      },
      {
        "version": 20,
        "block": 964006,
        "block_hash": "00000000000000000001a86a2c63bab799e1d5bcee2ea26ca7d39fddfe98273b",
        "url": "https://mempool.space/block/00000000000000000001a86a2c63bab799e1d5bcee2ea26ca7d39fddfe98273b"
      },
      {
        "version": 21,
        "block": 964023,
        "block_hash": "00000000000000000000816060fab6e3c1ddb68b0cabb4ec5de5aa044dc66d01",
        "url": "https://mempool.space/block/00000000000000000000816060fab6e3c1ddb68b0cabb4ec5de5aa044dc66d01"
      },
      {
        "version": 22,
        "block": 964029,
        "block_hash": "00000000000000000001ce253209a1b803e78fb27027a81027d533e38ae9b216",
        "url": "https://mempool.space/block/00000000000000000001ce253209a1b803e78fb27027a81027d533e38ae9b216"
      },
      {
        "version": 23,
        "block": 964032,
        "block_hash": "00000000000000000000190b799a8c2c522a4d806cdeec4e41a6c1d2e0540fce",
        "url": "https://mempool.space/block/00000000000000000000190b799a8c2c522a4d806cdeec4e41a6c1d2e0540fce"
      },
      {
        "version": 24,
        "block": 964033,
        "block_hash": "000000000000000000021477de8af72e4deb4ad164ef617c771f403f96843202",
        "url": "https://mempool.space/block/000000000000000000021477de8af72e4deb4ad164ef617c771f403f96843202"
      },
      {
        "version": 25,
        "block": 964087,
        "block_hash": "000000000000000000018ec663b1daed175aa31d47475ca9b7f2a97ea27534d1",
        "url": "https://mempool.space/block/000000000000000000018ec663b1daed175aa31d47475ca9b7f2a97ea27534d1"
      },
      {
        "version": 26,
        "block": 964145,
        "block_hash": "000000000000000000017295f1a1d4e7bbbe0eb6d1408337f2cc17aaf0ea96b5",
        "url": "https://mempool.space/block/000000000000000000017295f1a1d4e7bbbe0eb6d1408337f2cc17aaf0ea96b5"
      },
      {
        "version": 27,
        "block": 964168,
        "block_hash": "00000000000000000001e95b21a0e13dff4a093b7bd96bf2b7f2e8f2de4ed9e3",
        "url": "https://mempool.space/block/00000000000000000001e95b21a0e13dff4a093b7bd96bf2b7f2e8f2de4ed9e3"
      },
      {
        "version": 28,
        "block": 964240,
        "block_hash": "00000000000000000001b3d4711bf47202b8077078759c49046e0b21a94cf33a",
        "url": "https://mempool.space/block/00000000000000000001b3d4711bf47202b8077078759c49046e0b21a94cf33a"
      },
      {
        "version": 29,
        "block": 964247,
        "block_hash": "00000000000000000001cbf5aa8cedaf10a03664932b5c14eae838da00b8c77a",
        "url": "https://mempool.space/block/00000000000000000001cbf5aa8cedaf10a03664932b5c14eae838da00b8c77a"
      },
      {
        "version": 30,
        "block": 964392,
        "block_hash": "00000000000000000000533af042bfd0d44045cdcd5d8abe285a33ad668cd515",
        "url": "https://mempool.space/block/00000000000000000000533af042bfd0d44045cdcd5d8abe285a33ad668cd515"
      },
      {
        "version": 31,
        "block": 964401,
        "block_hash": "000000000000000000009d99d408838cd16414cceda39d1910e6550ada733368",
        "url": "https://mempool.space/block/000000000000000000009d99d408838cd16414cceda39d1910e6550ada733368"
      },
      {
        "version": 32,
        "block": 964605,
        "block_hash": "00000000000000000000dead6c74d8ce695ceb5f66bbb3e77fa9f5288e8a7203",
        "url": "https://mempool.space/block/00000000000000000000dead6c74d8ce695ceb5f66bbb3e77fa9f5288e8a7203"
      },
      {
        "version": 33,
        "block": 965040,
        "block_hash": "00000000000000000000c043a324e2af843d68ccfd827e99e24f4d4166746620",
        "url": "https://mempool.space/block/00000000000000000000c043a324e2af843d68ccfd827e99e24f4d4166746620"
      },
      {
        "version": 34,
        "block": 965344,
        "block_hash": "0000000000000000000208a229eb634c4b6653de374dd2652c9a7ef0c0827440",
        "url": "https://mempool.space/block/0000000000000000000208a229eb634c4b6653de374dd2652c9a7ef0c0827440"
      }
    ],
    "receipts_url": "https://graviti.thesingulariti.ai/receipts.json"
  }
}
