{
  "kind": "build-recipe",
  "id": "local-jev",
  "part_no": "B-05",
  "html": "https://insidethemachine.ai/build/local-jev",
  "md": "https://insidethemachine.ai/build/local-jev.md",
  "mcp": "https://insidethemachine.ai/mcp",
  "recipe": {
    "id": "local-jev",
    "family": "ops",
    "kind": "tool",
    "title": "Local Jev",
    "one": "A decide-only model on your own machine. It answers typed questions about each item: pick one, give a score, or yes/no. It never writes.",
    "input": "A JSON file of items and typed questions.",
    "output": "Strict JSON answers, each marked [sure] or [UNSURE], plus a receipt.",
    "claude": [
      "Writes the questions once.",
      "Decides the items Local Jev marks [UNSURE]."
    ],
    "private": "Everything runs against Ollama on your own computer. The tool refuses to talk to any other host. --dry-run shows exactly what the model would read.",
    "roles": [
      "decider"
    ],
    "stages": [
      {
        "id": "write",
        "who": "claude",
        "title": "Write the questions",
        "body": "One clear question each: choice, score or yes/no, with criteria in plain words."
      },
      {
        "id": "probe",
        "who": "local",
        "role": "decider",
        "title": "Read the odds",
        "body": "One short call per question reads how likely each answer is."
      },
      {
        "id": "answer",
        "who": "local",
        "role": "decider",
        "title": "Answer in strict JSON",
        "body": "A second call answers through Ollama structured outputs, so the reply must match the schema."
      },
      {
        "id": "mark",
        "who": "code",
        "title": "Mark sure or UNSURE",
        "body": "Choice and score: sure at 60% or more. Yes/no: yes at 90%+, no at 10% or less. If the two calls disagree, it is UNSURE."
      },
      {
        "id": "review",
        "who": "you",
        "title": "You decide the unsure ones",
        "body": "The last line lists every UNSURE answer."
      },
      {
        "id": "share",
        "who": "you",
        "title": "Share your run (optional)",
        "body": "At the end, the script shows exactly what it would upload: your chip, memory, the models, how long each stage took and the token counts. No prompts, no outputs, no file names. Say yes and it goes to our review queue. Nothing is public until we approve it."
      }
    ],
    "makeItYours": [
      "A verdict never triggers a delete, send or spend on its own."
    ],
    "tools": [
      "ollama"
    ],
    "status": "ran-cpu",
    "statusNote": "Runs today. Tested in a cloud container on CPU with Qwen3.5 0.8B. Speed not measured.",
    "code": {
      "path": "tools/local-jev/local-jev.mjs",
      "run": [
        "ollama pull <your model>",
        "node local-jev.mjs request.json --model <your model> --dry-run",
        "node local-jev.mjs request.json --model <your model>"
      ]
    }
  },
  "runs_from_gb": 8,
  "parts_by_memory_gb": [
    {
      "gb": 8,
      "usable": 6,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": "No model is small enough for the decider rule here, so the drafter's model decides too."
        }
      ],
      "ok": true
    },
    {
      "gb": 16,
      "usable": 12,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.5-0.8b",
          "name": "Qwen3.5 0.8B",
          "needGb": 2.6,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:0.8b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 24,
      "usable": 18,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 32,
      "usable": 24,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 48,
      "usable": 36,
      "picks": [
        {
          "role": "decider",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 64,
      "usable": 48,
      "picks": [
        {
          "role": "decider",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 96,
      "usable": 72,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 128,
      "usable": 96,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 192,
      "usable": 144,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 256,
      "usable": 192,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 512,
      "usable": 384,
      "picks": [
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    }
  ],
  "receipts": [
    {
      "key": "claude_hybrid",
      "label": "Claude tokens, this recipe",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "claude_all",
      "label": "Claude tokens, all in Claude",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "local_minutes",
      "label": "Local minutes",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "dollars",
      "label": "Claude dollars (estimate)",
      "value": "not run yet",
      "n": 0,
      "note": null
    }
  ],
  "data_dates": {
    "models": "2026-10-15",
    "speech": "2026-10-15",
    "images": "2026-10-15",
    "machines": "2026-10-15"
  }
}