{
  "generatedAt": "2026-05-20T16:49:00.675Z",
  "ready": true,
  "costReady": {
    "dataforseoStage1": true,
    "apifyStage2": true
  },
  "costFile": "data/sources/budgets/source-acquisition-cost-plan.json",
  "currency": "GBP",
  "counts": {
    "checks": 12,
    "passing": 12,
    "blocked": 0
  },
  "estimates": {
    "dataforseoStage1": {
      "estimatedTotal": 0.075,
      "maxSpend": 5,
      "taskCount": 10,
      "reviewDepth": 100,
      "depthUnits": 10
    },
    "apifyStage2": {
      "estimatedTotal": 3,
      "maxSpend": 5,
      "actorRuns": 1,
      "targetCount": 3,
      "maxRequestsPerBrand": 100
    }
  },
  "guardrails": [
    "This file is for local cost planning only; it does not call providers or store credentials.",
    "Use current provider pricing/source URLs when filling unit costs; do not guess pricing in code.",
    "Estimated total must fit the explicit max spend budget before approval/spend gates can unlock.",
    "Full-catalogue scraping is intentionally outside this cost plan."
  ],
  "checks": [
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Pricing source recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "https://dataforseo.com/apis/reviews-api/amazon-reviews-api checked 2026-05-19T13:30:32.762667Z"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Unit cost recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 0.00075 per task"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Estimate matches capped task count",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "10 tasks / 10 expected; depth 100 / 100 expected"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Estimated total is positive",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 0.075"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Estimated total fits max spend",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 0.075 estimated / 5 max spend"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Hard stop preserved",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "hardStopAfterFirstRun=true"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Pricing source recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "https://apify.com/pricing checked 2026-05-20T16:41:55.103Z"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Estimated actor run cost recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 3 per actor run"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Estimate matches first-batch caps",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "1 runs / 1; 3 targets / 3; 100 requests per brand / 100"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Estimated total is positive",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 3"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Estimated total fits max spend",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 3 estimated / 5 max spend"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Hard stop preserved",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "hardStopAfterFirstDataset=true"
    }
  ],
  "nextActions": [],
  "costPlan": {
    "currency": "GBP",
    "owner": "user-approved-top3-expanded-scrape-budget",
    "updatedAt": "2026-05-20T16:48:36.463Z",
    "notes": "Starter paid scrape lane reduced to GBP 3-5 equivalent first. Actual first run should stay under the tighter env caps below.",
    "dataforseoStage1": {
      "pricingSourceUrl": "https://dataforseo.com/apis/reviews-api/amazon-reviews-api",
      "pricingCheckedAt": "2026-05-19T13:30:32.762667Z",
      "unitCostPerTask": 0.00075,
      "taskCount": 10,
      "reviewDepth": 100,
      "estimatedTotal": 0.075,
      "maxSpendRef": 5,
      "hardStopAfterFirstRun": true,
      "notes": "Uses 100 review depth by default; scripts support DATAFORSEO_REVIEWS_DEPTH up to 1000 only with explicit env override."
    },
    "apifyStage2": {
      "pricingSourceUrl": "https://apify.com/pricing",
      "pricingCheckedAt": "2026-05-20T16:41:55.103Z",
      "estimatedActorRunCost": 3,
      "actorRuns": 1,
      "targetCount": 3,
      "maxRequestsPerBrand": 100,
      "estimatedTotal": 3,
      "maxSpendRef": 5,
      "hardStopAfterFirstDataset": true,
      "notes": "First expanded budget allows 100 requests per brand/source; scripts support APIFY_REQUESTS_PER_BRAND up to 1000 only with explicit env override."
    }
  }
}
