{
  "_id": "6a46d510c8416c4719cd61a1",
  "Package": "AIscreenR",
  "Title": "AI Screening Tools in R for Systematic Reviewing",
  "Version": "0.4.0",
  "Authors@R": "c(\nperson(given = \"Mikkel H.\",\nfamily = \"Vembye\",\nemail = \"mikkel.vembye@gmail.com\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0001-9071-0724\")),\nperson(given = \"Thomas\",\nfamily = \"Olsen\",\nemail = \"thomasolsen123@hotmail.com\",\nrole = c(\"aut\"))\n)",
  "Description": "Provides functions to conduct title and abstract screening\nin systematic reviews using large language models, such as the\nGenerative Pre-trained Transformer (GPT) models from 'OpenAI'\n<https://developers.openai.com/>. These functions can enhance\nthe quality of title and abstract screenings while reducing the\ntotal screening time significantly. In addition, the package\nincludes tools for quality assessment of title and abstract\nscreenings, as described in Vembye, Christensen, Mølgaard, and\nSchytt (2025) <DOI:10.1037/met0000769>.",
  "License": "GPL (>= 3)",
  "Encoding": "UTF-8",
  "Config/testthat/edition": "3",
  "Config/testthat/parallel": "true",
  "Config/testthat/start-first": "tabscreen_gpt, approximate_price_gpt,\nrate_limits, api_key_functions",
  "URL": "https://mikkelvembye.github.io/AIscreenR/,\nhttps://github.com/MikkelVembye/AIscreenR",
  "BugReports": "https://github.com/MikkelVembye/AIscreenR/issues",
  "LazyData": "true",
  "VignetteBuilder": "quarto",
  "Config/Needs/website": "quarto",
  "Config/roxygen2/version": "8.0.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-02 21:12:44 UTC",
    "User": "root"
  },
  "Author": "Mikkel H. Vembye [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-9071-0724>), Thomas Olsen [aut]",
  "Maintainer": "Mikkel H. Vembye <mikkel.vembye@gmail.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-07-02 03:52:08 UTC",
  "RemoteUrl": "https://github.com/cran/AIscreenR",
  "RemoteRef": "HEAD",
  "RemoteSha": "36b6f05d3d4cd6eb5ca697ccb20be654c7e0c526",
  "_user": "cran",
  "_type": "src",
  "_file": "AIscreenR_0.4.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/986e2e959258bd323f4775ba8df7361b2be265fb2d73146de248d4b001b05057",
  "_filesize": 5366043,
  "_sha256": "986e2e959258bd323f4775ba8df7361b2be265fb2d73146de248d4b001b05057",
  "_expires": "2026-10-10T21:16:00.000Z",
  "_created": "2026-07-02T21:12:44.000Z",
  "_published": "2026-07-02T21:16:00.632Z",
  "_jobs": [
    {
      "job": 84879502877,
      "time": 156,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8051791916"
    },
    {
      "job": 84879502872,
      "time": 154,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8051791135"
    },
    {
      "job": 84878881889,
      "time": 208,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8051738151"
    },
    {
      "job": 84879502779,
      "time": 157,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8051792226"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/28621729625",
  "_status": "success",
  "_upstream": "https://github.com/cran/AIscreenR",
  "_commit": {
    "id": "36b6f05d3d4cd6eb5ca697ccb20be654c7e0c526",
    "author": "Mikkel H. Vembye <mikkel.vembye@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.4.0\n",
    "time": 1782964328
  },
  "_maintainer": {
    "name": "Mikkel H. Vembye",
    "email": "mikkel.vembye@gmail.com",
    "login": "mikkelvembye",
    "description": "PhD, meta-analyst ",
    "uuid": 43212804,
    "orcid": "0000-0001-9071-0724"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "httr2",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "furrr",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "tictoc",
      "role": "Imports"
    },
    {
      "package": "askpass",
      "role": "Imports"
    },
    {
      "package": "curl",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "tidyselect",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "usethis",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "readtext",
      "role": "Suggests"
    },
    {
      "package": "quarto",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-34",
      "n": 1
    },
    {
      "week": "2026-16",
      "n": 2
    },
    {
      "week": "2026-17",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.2.0",
      "date": "2025-08-18"
    },
    {
      "name": "0.3.0",
      "date": "2026-04-13"
    },
    {
      "name": "0.3.1",
      "date": "2026-04-13"
    },
    {
      "name": "0.3.2",
      "date": "2026-04-20"
    },
    {
      "name": "0.4.0",
      "date": "2026-07-02"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "mikkelvembye",
      "count": 7,
      "uuid": 43212804
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 615,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 598,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/AIscreenR"
  },
  "_devurl": "https://github.com/mikkelvembye/aiscreenr",
  "_pkgdown": "https://mikkelvembye.github.io/AIscreenR/",
  "_searchresults": 38,
  "_quarto": true,
  "_topics": [
    "quarto"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/AIscreenR.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/mikkelvembye/aiscreenr",
  "_realowner": "mikkelvembye",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2024-11-08"
    },
    {
      "version": "0.1.1",
      "date": "2024-11-26"
    },
    {
      "version": "0.2.0",
      "date": "2025-08-18"
    },
    {
      "version": "0.3.0",
      "date": "2026-04-13"
    },
    {
      "version": "0.3.1",
      "date": "2026-04-13"
    },
    {
      "version": "0.3.2",
      "date": "2026-04-20"
    },
    {
      "version": "0.4.0",
      "date": "2026-07-02"
    }
  ],
  "_exports": [
    "approximate_price_gpt",
    "create_fine_tune_data",
    "get_api_key",
    "get_api_key_anthropic",
    "get_api_key_gemini",
    "get_api_key_groq",
    "get_api_key_mistral",
    "is_chatgpt",
    "is_chatgpt_tbl",
    "is_gpt",
    "is_gpt_agg_tbl",
    "is_gpt_tbl",
    "rate_limits_per_minute",
    "read_ris_to_dataframe",
    "report",
    "sample_references",
    "save_dataframe_to_ris",
    "save_fine_tune_data",
    "screen_analyzer",
    "screen_errors",
    "screen_errors.chatgpt",
    "screen_errors.gpt",
    "set_api_key",
    "tabscreen_claude",
    "tabscreen_gemini",
    "tabscreen_gpt",
    "tabscreen_gpt.original",
    "tabscreen_gpt.tools",
    "tabscreen_groq",
    "tabscreen_mistral",
    "tabscreen_ollama"
  ],
  "_datasets": [
    {
      "name": "claude_model_prizes",
      "title": "Claude model prices (last updated May 13, 2026) Data set containing input and output prizes for all Claude's API models.",
      "object": "claude_model_prizes",
      "class": [
        "data.frame"
      ],
      "fields": [
        "model",
        "price_in_per_token",
        "price_out_per_token"
      ],
      "rows": 7,
      "table": true,
      "tojson": true
    },
    {
      "name": "disagreements",
      "title": "Disagreement sample data",
      "object": "disagreements",
      "class": [
        "gpt_agg_tbl",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "author",
        "human_code",
        "studyid",
        "title",
        "abstract",
        "promptid",
        "prompt",
        "model",
        "question",
        "top_p",
        "incl_p",
        "final_decision_gpt",
        "final_decision_gpt_num",
        "longest_answer",
        "reps",
        "n_mis_answers",
        "submodel"
      ],
      "rows": 7,
      "table": true,
      "tojson": true
    },
    {
      "name": "filges2015_dat",
      "title": "RIS file data from Functional Family Therapy (FFT) systematic review",
      "object": "filges2015_dat",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "author",
        "eppi_id",
        "studyid",
        "title",
        "abstract",
        "human_code"
      ],
      "rows": 270,
      "table": true,
      "tojson": true
    },
    {
      "name": "gemini_model_prizes",
      "title": "Gemini model prices (last updated May 7, 2026) Data set containing input and output prizes for all Gemini's API models.",
      "object": "gemini_model_prizes",
      "class": [
        "data.frame"
      ],
      "fields": [
        "model",
        "price_in_per_token",
        "price_out_per_token"
      ],
      "rows": 9,
      "table": true,
      "tojson": true
    },
    {
      "name": "groq_model_prizes",
      "title": "Groq model prices (last updated March 18, 2026)",
      "object": "groq_model_prizes",
      "class": [
        "data.frame"
      ],
      "fields": [
        "model",
        "price_in_per_token",
        "price_out_per_token"
      ],
      "rows": 4,
      "table": true,
      "tojson": true
    },
    {
      "name": "mistral_model_prizes",
      "title": "Mistral model prices (last updated May 7, 2026) Data set containing input and output prizes for all Mistral's API models.",
      "object": "mistral_model_prizes",
      "class": [
        "data.frame"
      ],
      "fields": [
        "model",
        "price_in_per_token",
        "price_out_per_token"
      ],
      "rows": 18,
      "table": true,
      "tojson": true
    },
    {
      "name": "model_prizes",
      "title": "Model prize data (last updated March 18, 2026)",
      "object": "model_prizes",
      "class": [
        "data.frame"
      ],
      "fields": [
        "model",
        "price_in_per_token",
        "price_out_per_token"
      ],
      "rows": 76,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "approximate_price_gpt",
      "title": "Approximate price estimation for title and abstract screening using OpenAI's GPT API models",
      "topics": [
        "approximate_price_gpt"
      ]
    },
    {
      "page": "claude_model_prizes",
      "title": "Claude model prices (last updated May 13, 2026) Data set containing input and output prizes for all Claude's API models.",
      "topics": [
        "claude_model_prizes"
      ]
    },
    {
      "page": "create_fine_tune_data",
      "title": "Function to generate dataset to be used for fine-tuning models",
      "topics": [
        "create_fine_tune_data"
      ]
    },
    {
      "page": "disagreements",
      "title": "Disagreement sample data",
      "topics": [
        "disagreements"
      ]
    },
    {
      "page": "filges2015_dat",
      "title": "RIS file data from Functional Family Therapy (FFT) systematic review",
      "topics": [
        "filges2015_dat"
      ]
    },
    {
      "page": "gemini_model_prizes",
      "title": "Gemini model prices (last updated May 7, 2026) Data set containing input and output prizes for all Gemini's API models.",
      "topics": [
        "gemini_model_prizes"
      ]
    },
    {
      "page": "get_api_key",
      "title": "Get API key from R environment variable.",
      "topics": [
        "get_api_key"
      ]
    },
    {
      "page": "get_api_key_anthropic",
      "title": "Get Anthropic API key from R environment variable.",
      "topics": [
        "get_api_key_anthropic"
      ]
    },
    {
      "page": "get_api_key_gemini",
      "title": "Get Gemini API key from R environment variable.",
      "topics": [
        "get_api_key_gemini"
      ]
    },
    {
      "page": "get_api_key_groq",
      "title": "Get GROQ API key from R environment variable.",
      "topics": [
        "get_api_key_groq"
      ]
    },
    {
      "page": "get_api_key_mistral",
      "title": "Get Mistral API key from R environment variable.",
      "topics": [
        "get_api_key_mistral"
      ]
    },
    {
      "page": "groq_model_prizes",
      "title": "Groq model prices (last updated March 18, 2026)",
      "topics": [
        "groq_model_prizes"
      ]
    },
    {
      "page": "is_chatgpt",
      "title": "Test if the object is a ''chatgpt'' object",
      "topics": [
        "is_chatgpt"
      ]
    },
    {
      "page": "is_chatgpt_tbl",
      "title": "Test if the object is a ''chatgpt_tbl'' object",
      "topics": [
        "is_chatgpt_tbl"
      ]
    },
    {
      "page": "is_gpt",
      "title": "Test if the object is a ''gpt'' object",
      "topics": [
        "is_gpt"
      ]
    },
    {
      "page": "is_gpt_agg_tbl",
      "title": "Test if the object is a ''gpt_agg_tbl'' object",
      "topics": [
        "is_gpt_agg_tbl"
      ]
    },
    {
      "page": "is_gpt_tbl",
      "title": "Test if the object is a ''gpt_tbl'' object",
      "topics": [
        "is_gpt_tbl"
      ]
    },
    {
      "page": "mistral_model_prizes",
      "title": "Mistral model prices (last updated May 7, 2026) Data set containing input and output prizes for all Mistral's API models.",
      "topics": [
        "mistral_model_prizes"
      ]
    },
    {
      "page": "model_prizes",
      "title": "Model prize data (last updated March 18, 2026)",
      "topics": [
        "model_prizes"
      ]
    },
    {
      "page": "print.chatgpt",
      "title": "Print methods for ''chatgpt'' objects",
      "topics": [
        "print.chatgpt"
      ]
    },
    {
      "page": "print.gpt",
      "title": "Print methods for ''gpt'' objects",
      "topics": [
        "print.gpt"
      ]
    },
    {
      "page": "print.gpt_price",
      "title": "Print methods for ''gpt_price'' objects",
      "topics": [
        "print.gpt_price"
      ]
    },
    {
      "page": "print.groq",
      "title": "Print method for 'groq' objects",
      "topics": [
        "print.groq"
      ]
    },
    {
      "page": "rate_limits_per_minute",
      "title": "Find updated rate limits for API models",
      "topics": [
        "rate_limits_per_minute"
      ]
    },
    {
      "page": "read_ris_to_dataframe",
      "title": "Read an RIS file into a data frame",
      "topics": [
        "read_ris_to_dataframe"
      ]
    },
    {
      "page": "report",
      "title": "Generate a report for screening disagreements between human and AI decisions",
      "topics": [
        "report"
      ]
    },
    {
      "page": "sample_references",
      "title": "Random sample references",
      "topics": [
        "sample_references"
      ]
    },
    {
      "page": "save_dataframe_to_ris",
      "title": "Write a data frame to a RIS file",
      "topics": [
        "save_dataframe_to_ris"
      ]
    },
    {
      "page": "save_fine_tune_data",
      "title": "Function to write/save fine tune dataset in required jsonl format",
      "topics": [
        "save_fine_tune_data"
      ]
    },
    {
      "page": "screen_analyzer",
      "title": "Analyze performance between the human and AI screening.",
      "topics": [
        "screen_analyzer"
      ]
    },
    {
      "page": "screen_errors",
      "title": "Generic function to re-screen failed title and abstract requests.",
      "topics": [
        "screen_errors"
      ]
    },
    {
      "page": "screen_errors.chatgpt",
      "title": "Re-screen failed requests.",
      "topics": [
        "screen_errors.chatgpt"
      ]
    },
    {
      "page": "screen_errors.gpt",
      "title": "Re-screen failed requests.",
      "topics": [
        "screen_errors.gpt"
      ]
    },
    {
      "page": "set_api_key",
      "title": "Creating a temporary R environment API key variable",
      "topics": [
        "set_api_key"
      ]
    },
    {
      "page": "tabscreen_claude",
      "title": "Title and abstract screening with Anthropic's API models",
      "topics": [
        "tabscreen_claude"
      ]
    },
    {
      "page": "tabscreen_gemini",
      "title": "Title and abstract screening with Gemini API models using function calls",
      "topics": [
        "tabscreen_gemini"
      ]
    },
    {
      "page": "tabscreen_gpt.original",
      "title": "Title and abstract screening with GPT API models using function calls via the original function call arguments",
      "topics": [
        "tabscreen_gpt.original"
      ]
    },
    {
      "page": "tabscreen_gpt.tools",
      "title": "Title and abstract screening with GPT API models using function calls via the tools argument",
      "topics": [
        "tabscreen_gpt.tools"
      ]
    },
    {
      "page": "tabscreen_gpt.tools_responses",
      "title": "Title and abstract screening with GPT API models using function calls via the tools argument and the responses endpoint",
      "topics": [
        "tabscreen_gpt",
        "tabscreen_gpt.tools_responses"
      ]
    },
    {
      "page": "tabscreen_groq",
      "title": "Title and abstract screening with GROQ API models using function calls via the tools argument",
      "topics": [
        "tabscreen_groq"
      ]
    },
    {
      "page": "tabscreen_mistral",
      "title": "Title and abstract screening with mistral's API models",
      "topics": [
        "tabscreen_mistral"
      ]
    },
    {
      "page": "tabscreen_ollama",
      "title": "Title and abstract screening with OLLAMA API models using function calls via the tools argument",
      "topics": [
        "tabscreen_ollama"
      ]
    }
  ],
  "_rundeps": [
    "askpass",
    "base64enc",
    "cli",
    "codetools",
    "cpp11",
    "curl",
    "digest",
    "dplyr",
    "fastmap",
    "furrr",
    "future",
    "generics",
    "globals",
    "glue",
    "htmltools",
    "httr2",
    "jsonlite",
    "lifecycle",
    "listenv",
    "magrittr",
    "openssl",
    "parallelly",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "rappdirs",
    "rlang",
    "stringi",
    "stringr",
    "sys",
    "tibble",
    "tictoc",
    "tidyr",
    "tidyselect",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "Using-GPT-API-Models-For-Screening.qmd",
      "filename": "Using-GPT-API-Models-For-Screening.html",
      "title": "Using GPT API Models For Screening",
      "engine": "quarto::html",
      "headings": [
        "Introduction",
        "Get Started",
        "Load and Convert RIS File Data to a Data Frame",
        "Load relevant R packages",
        "Convert RIS files to data frames",
        "Create the test dataset",
        "Handle Your API Key",
        "Get your API key",
        "Manage your API key in R",
        "Permanent solution",
        "Temporary solution",
        "Prompting in R",
        "Run the Test Screening",
        "Screen failed requests",
        "Analyze Screening",
        "Assess results via a benchmark scheme",
        "Make judgments over multiple screenings",
        "Check and Resolve Disagreements",
        "Get detailed descriptions for disagreement records",
        "Example of detailed answer",
        "Approximate Price of Full-Scale Screening",
        "Conduct the Full Screening",
        "Convert Relevant Records Back to a RIS File",
        "Other Sources of Information",
        "References"
      ],
      "created": "2026-04-13 14:12:09",
      "modified": "2026-07-02 03:52:08",
      "commits": 3
    }
  ],
  "_score": 3.1818435879447726,
  "_indexed": false,
  "_nocasepkg": "aiscreenr",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://mikkelvembye.r-universe.dev/AIscreenR",
  "_previous": "0.3.2",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-07-02T21:15:09.000Z",
      "distro": "resolute",
      "commit": "36b6f05d3d4cd6eb5ca697ccb20be654c7e0c526",
      "fileid": "https://r2.ropensci.org/031994aa5c80dc6e503beb13b81ef6c6e10db47935ad2854ebcc07f2f082975d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28621729625"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-07-02T21:15:05.000Z",
      "distro": "resolute",
      "commit": "36b6f05d3d4cd6eb5ca697ccb20be654c7e0c526",
      "fileid": "https://r2.ropensci.org/ebb455940279b7844ba5d3add1b81fda65373991f33238fddd51ff5585ce2b54",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28621729625"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.4.0",
      "date": "2026-07-02T21:15:42.000Z",
      "commit": "36b6f05d3d4cd6eb5ca697ccb20be654c7e0c526",
      "fileid": "https://r2.ropensci.org/a43881c3cd03ea00bc697a6a51d7858d3e9a42f0bd168aef62d36f6e49e262e9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/28621729625"
    }
  ]
}