{
  "name": "Produce the budget-vs-actuals report",
  "flow": [
    {
      "id": 1,
      "module": "accounting-system:getActuals",
      "metadata": {
        "designer": {
          "x": 0,
          "y": 0
        }
      },
      "parameters": {},
      "description": "This month's actuals grouped by GL category."
    },
    {
      "id": 2,
      "module": "google-sheets:getBudget",
      "metadata": {
        "designer": {
          "x": 300,
          "y": 0
        }
      },
      "parameters": {},
      "description": "The budget lines from the Budget tab."
    },
    {
      "id": 3,
      "module": "array-aggregator:computeVariance",
      "metadata": {
        "designer": {
          "x": 600,
          "y": 0
        }
      },
      "parameters": {},
      "description": "Place each actual beside its budget line; compute variance in dollars and percent."
    },
    {
      "id": 4,
      "module": "filter:flagOverages",
      "metadata": {
        "designer": {
          "x": 900,
          "y": 0
        }
      },
      "parameters": {},
      "description": "Keep every category running more than 10% over budget.",
      "spion_notes": "Added by Spion: the overages are the conversation; the on-track lines are not."
    },
    {
      "id": 5,
      "module": "google-sheets:refreshDashboard",
      "metadata": {
        "designer": {
          "x": 1200,
          "y": 0
        }
      },
      "parameters": {},
      "description": "Write the variances and refresh the Budget vs Actuals dashboard."
    }
  ],
  "metadata": {
    "version": 1,
    "generated_by": "Spion",
    "generated_at": "2026-06-14T14:13:03.649Z",
    "description": "Pull actuals by category, compute variance versus budget, highlight categories over 10%, and refresh the dashboard."
  }
}