{
  "generatedAt": "2026-05-20T16:49:00.672Z",
  "ready": true,
  "budgetAllowed": {
    "dataforseoStage1": true,
    "apifyStage2": true
  },
  "budgetFile": "data/sources/budgets/source-acquisition-budget.json",
  "currency": "GBP",
  "counts": {
    "checks": 9,
    "passing": 9,
    "blocked": 0
  },
  "checks": [
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Budget lane enabled",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "enabled=true"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Max spend recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 5"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Task cap covers pilot only",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "10 max tasks for 10 pilot targets"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Review depth capped",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "100 reviews per ASIN (target range 100-1000)"
    },
    {
      "Provider": "DataForSEO",
      "Stage": "1",
      "Check": "Hard stop after first run",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "hardStopAfterFirstRun=true"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Budget lane enabled",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "enabled=true"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Max spend recorded",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "GBP 5"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Actor and target caps preserve selective gap-fill",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "1 actor runs, 3 targets, 100 requests/brand for 3 first-batch targets (target range 100-1000)"
    },
    {
      "Provider": "Apify",
      "Stage": "2",
      "Check": "Hard stop after first dataset",
      "Status": "pass",
      "Blocking": "yes",
      "Evidence": "hardStopAfterFirstDataset=true"
    }
  ],
  "nextActions": [],
  "budget": {
    "currency": "GBP",
    "owner": "user-approved-top3-expanded-scrape-budget",
    "updatedAt": "2026-05-20T16:48:36.463Z",
    "notes": "User reduced the starter paid scrape lane to a few dollars first. Keep the expanded item capacity, but cap the first paid run tightly.",
    "top3ExpandedScrape": {
      "enabled": true,
      "targetProducts": [
        "JV-TURMERIC500",
        "JV-DEFF1000",
        "JV-VISISOFT"
      ],
      "targetItemsPerProductMin": 100,
      "targetItemsPerProductMax": 1000,
      "defaultItemsPerSource": 300,
      "dashboardVisibleItemCap": 1000
    },
    "dataforseoStage1": {
      "enabled": true,
      "maxSpend": 5,
      "maxTasks": 10,
      "marketplace": "amazon.co.uk",
      "maxReviewsPerAsin": 100,
      "maxReviewsPerAsinCeiling": 1000,
      "hardStopAfterFirstRun": true,
      "approvalRef": "data/sources/approvals/dataforseo-stage1-approval.json"
    },
    "apifyStage2": {
      "enabled": true,
      "maxSpend": 5,
      "maxActorRuns": 1,
      "maxTargets": 3,
      "maxRequestsPerBrand": 100,
      "maxRequestsPerBrandCeiling": 1000,
      "hardStopAfterFirstDataset": true,
      "approvalRef": "data/sources/approvals/apify-stage2-approval.json"
    }
  }
}
