{
  "schemaVersion": 3,
  "updatedAt": "2026-10-30",
  "editorialStatus": "Tools only. Desk research with separate feature, cost and privacy dates; every entry states whether its workflow has been hands-on tested.",
  "tools": [
    {
      "id": "whisper",
      "name": "Whisper (local installation)",
      "kind": "tool",
      "tasks": [
        "transcribe",
        "translate",
        "captions"
      ],
      "does": "Transcribes recordings locally; speech translation produces English.",
      "url": "https://github.com/openai/whisper",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free open-source software; model downloads, storage and computing are your costs.",
        "checkedAt": "2026-10-29",
        "source": "https://github.com/openai/whisper"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use the local package, with downloaded models; audio stays on this computer."
      },
      "caveat": "Accuracy varies by language and recording; silent sections can produce invented words. The provider language table does not list isiXhosa or isiZulu. Speech translation produces English only. A web service using Whisper is a different privacy choice.",
      "workflow": [
        "Install the official package and FFmpeg using its README.",
        "Download a model; test a one-minute copy with the correct language.",
        "Run transcription locally, save timestamps and retain the original audio.",
        "For translation into English choose a suitable multilingual model, not turbo."
      ],
      "verification": "Listen to every quotation against the recording; check names, numbers, speaker changes and silent sections.",
      "terms": [
        "interview",
        "recording",
        "speech to text",
        "caption",
        "subtitles"
      ],
      "sources": [
        {
          "url": "https://github.com/openai/whisper",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "ai",
      "roles": [
        "reporter",
        "editor",
        "producer",
        "av",
        "factcheck",
        "freelance"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "technical",
      "languages": {
        "modes": [
          "transcription",
          "speech-translation"
        ],
        "transcription": [
          "English",
          "Chinese",
          "German",
          "Spanish",
          "Russian",
          "Korean",
          "French",
          "Japanese",
          "Portuguese",
          "Turkish",
          "Polish",
          "Catalan",
          "Dutch",
          "Arabic",
          "Swedish",
          "Italian",
          "Indonesian",
          "Hindi",
          "Finnish",
          "Vietnamese",
          "Hebrew",
          "Ukrainian",
          "Greek",
          "Malay",
          "Czech",
          "Romanian",
          "Danish",
          "Hungarian",
          "Tamil",
          "Norwegian",
          "Thai",
          "Urdu",
          "Croatian",
          "Bulgarian",
          "Lithuanian",
          "Latin",
          "Maori",
          "Malayalam",
          "Welsh",
          "Slovak",
          "Telugu",
          "Persian",
          "Latvian",
          "Bengali",
          "Serbian",
          "Azerbaijani",
          "Slovenian",
          "Kannada",
          "Estonian",
          "Macedonian",
          "Breton",
          "Basque",
          "Icelandic",
          "Armenian",
          "Nepali",
          "Mongolian",
          "Bosnian",
          "Kazakh",
          "Albanian",
          "Swahili",
          "Galician",
          "Marathi",
          "Punjabi",
          "Sinhala",
          "Khmer",
          "Shona",
          "Yoruba",
          "Somali",
          "Afrikaans",
          "Occitan",
          "Georgian",
          "Belarusian",
          "Tajik",
          "Sindhi",
          "Gujarati",
          "Amharic",
          "Yiddish",
          "Lao",
          "Uzbek",
          "Faroese",
          "Haitian Creole",
          "Pashto",
          "Turkmen",
          "Nynorsk",
          "Maltese",
          "Sanskrit",
          "Luxembourgish",
          "Myanmar",
          "Tibetan",
          "Tagalog",
          "Malagasy",
          "Assamese",
          "Tatar",
          "Hawaiian",
          "Lingala",
          "Hausa",
          "Bashkir",
          "Javanese",
          "Sundanese",
          "Cantonese"
        ],
        "speechTranslation": [
          "English"
        ],
        "summary": "Documents transcription in 100 languages, including English, Afrikaans, Swahili, French and German. isiXhosa and isiZulu are not in the provider language table. Speech translation produces English only. Accuracy is not independently tested.",
        "source": "https://github.com/openai/whisper/blob/main/whisper/tokenizer.py",
        "checkedAt": "2026-10-30",
        "accuracyTested": false,
        "speechSources": [
          "English",
          "Chinese",
          "German",
          "Spanish",
          "Russian",
          "Korean",
          "French",
          "Japanese",
          "Portuguese",
          "Turkish",
          "Polish",
          "Catalan",
          "Dutch",
          "Arabic",
          "Swedish",
          "Italian",
          "Indonesian",
          "Hindi",
          "Finnish",
          "Vietnamese",
          "Hebrew",
          "Ukrainian",
          "Greek",
          "Malay",
          "Czech",
          "Romanian",
          "Danish",
          "Hungarian",
          "Tamil",
          "Norwegian",
          "Thai",
          "Urdu",
          "Croatian",
          "Bulgarian",
          "Lithuanian",
          "Latin",
          "Maori",
          "Malayalam",
          "Welsh",
          "Slovak",
          "Telugu",
          "Persian",
          "Latvian",
          "Bengali",
          "Serbian",
          "Azerbaijani",
          "Slovenian",
          "Kannada",
          "Estonian",
          "Macedonian",
          "Breton",
          "Basque",
          "Icelandic",
          "Armenian",
          "Nepali",
          "Mongolian",
          "Bosnian",
          "Kazakh",
          "Albanian",
          "Swahili",
          "Galician",
          "Marathi",
          "Punjabi",
          "Sinhala",
          "Khmer",
          "Shona",
          "Yoruba",
          "Somali",
          "Afrikaans",
          "Occitan",
          "Georgian",
          "Belarusian",
          "Tajik",
          "Sindhi",
          "Gujarati",
          "Amharic",
          "Yiddish",
          "Lao",
          "Uzbek",
          "Faroese",
          "Haitian Creole",
          "Pashto",
          "Turkmen",
          "Nynorsk",
          "Maltese",
          "Sanskrit",
          "Luxembourgish",
          "Myanmar",
          "Tibetan",
          "Tagalog",
          "Malagasy",
          "Assamese",
          "Tatar",
          "Hawaiian",
          "Lingala",
          "Hausa",
          "Bashkir",
          "Javanese",
          "Sundanese",
          "Cantonese"
        ]
      },
      "formats": {
        "in": [
          "audio",
          "video"
        ],
        "out": [
          "txt",
          "srt",
          "vtt",
          "json"
        ]
      },
      "redFlags": [
        "Speech translation produces English only. Transcription accuracy varies and is not independently tested."
      ]
    },
    {
      "id": "otter",
      "name": "Otter.ai",
      "kind": "tool",
      "tasks": [
        "transcribe"
      ],
      "does": "Cloud transcription for non-confidential interviews and meetings.",
      "url": "https://otter.ai/",
      "region": "Global",
      "account": true,
      "platforms": "Web, iOS and Android",
      "cost": {
        "type": "free-tier",
        "summary": "Free Basic: 300 monthly transcription minutes and three lifetime audio/video file imports. Check per-meeting limits before starting.",
        "checkedAt": "2026-10-29",
        "source": "https://otter.ai/pricing",
        "quota": "300 transcription minutes; three lifetime file imports",
        "period": "month"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Audio and transcripts go to Otter servers."
      },
      "caveat": "Transcription is documented for six languages only; isiXhosa is not supported. German and Chinese are marked beta. Free imports do not reset each month, and Otter Chat translation was not assessed.",
      "workflow": [
        "Check remaining Basic allowance and supported language.",
        "Record or upload a non-sensitive sample without connecting meeting accounts.",
        "Correct speaker labels and timestamps while listening.",
        "Export or copy the checked text in the formats your plan allows."
      ],
      "verification": "Replay all quoted passages and compare names and figures with notes.",
      "terms": [],
      "sources": [
        {
          "url": "https://otter.ai/pricing",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "ai",
      "roles": [
        "reporter",
        "editor",
        "producer",
        "freelance"
      ],
      "devices": [
        "web",
        "mobile"
      ],
      "skill": "none",
      "languages": {
        "modes": [
          "transcription"
        ],
        "transcription": [
          "English",
          "Spanish",
          "French",
          "German",
          "Japanese",
          "Chinese (Simplified)"
        ],
        "summary": "Provider help documents transcription in English, Spanish, French, German, Japanese and Mandarin Chinese (Simplified); it says other languages, including isiXhosa, are not supported. Desktop web and iOS/Android apps. German and Chinese are marked beta. Accuracy is not independently tested.",
        "source": "https://help.otter.ai/hc/en-us/articles/360047247414-Supported-languages",
        "checkedAt": "2026-10-30",
        "accuracyTested": false
      },
      "formats": {
        "in": [
          "audio",
          "video"
        ],
        "out": [
          "txt",
          "docx",
          "srt"
        ]
      },
      "redFlags": [
        "Audio and transcripts are sent to Otter’s servers.",
        "isiXhosa is not supported."
      ]
    },
    {
      "id": "argos",
      "name": "Argos Translate (desktop)",
      "kind": "tool",
      "tasks": [
        "translate"
      ],
      "does": "Translates text offline using downloaded language packages; coverage depends on the listed pairs.",
      "url": "https://www.argosopentech.com/",
      "region": "Global",
      "account": false,
      "platforms": "Desktop",
      "cost": {
        "type": "free",
        "summary": "Free open-source local software; device and download costs remain.",
        "checkedAt": "2026-10-29",
        "source": "https://www.argosopentech.com/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use the installed desktop or command-line version. Public web demos send text elsewhere."
      },
      "caveat": "Only the documented language pairs are available; there is no isiXhosa package. Indirect translation can compound errors, and accuracy is not independently tested.",
      "workflow": [
        "Install the desktop package from the official project.",
        "Download the required language pair before handling sensitive text.",
        "Translate a short copy while offline; keep the original alongside it.",
        "Mark uncertain wording and retain paragraph references."
      ],
      "verification": "Ask a fluent speaker to check every quotation, idiom and consequential claim.",
      "terms": [
        "translation",
        "language",
        "non-english"
      ],
      "sources": [
        {
          "url": "https://www.argosopentech.com/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "ai",
      "roles": [
        "reporter",
        "editor",
        "freelance"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "languages": {
        "modes": [
          "text-translation"
        ],
        "textTranslation": [
          [
            "Albanian",
            "English"
          ],
          [
            "Arabic",
            "English"
          ],
          [
            "Azerbaijani",
            "English"
          ],
          [
            "Basque",
            "English"
          ],
          [
            "Bengali",
            "English"
          ],
          [
            "Bulgarian",
            "English"
          ],
          [
            "Catalan",
            "English"
          ],
          [
            "Chinese (traditional)",
            "English"
          ],
          [
            "Chinese",
            "English"
          ],
          [
            "Czech",
            "English"
          ],
          [
            "Danish",
            "English"
          ],
          [
            "Dutch",
            "English"
          ],
          [
            "English",
            "Albanian"
          ],
          [
            "English",
            "Arabic"
          ],
          [
            "English",
            "Azerbaijani"
          ],
          [
            "English",
            "Basque"
          ],
          [
            "English",
            "Bengali"
          ],
          [
            "English",
            "Bulgarian"
          ],
          [
            "English",
            "Catalan"
          ],
          [
            "English",
            "Chinese"
          ],
          [
            "English",
            "Chinese (traditional)"
          ],
          [
            "English",
            "Czech"
          ],
          [
            "English",
            "Danish"
          ],
          [
            "English",
            "Dutch"
          ],
          [
            "English",
            "Esperanto"
          ],
          [
            "English",
            "Estonian"
          ],
          [
            "English",
            "Finnish"
          ],
          [
            "English",
            "French"
          ],
          [
            "English",
            "Galician"
          ],
          [
            "English",
            "German"
          ],
          [
            "English",
            "Greek"
          ],
          [
            "English",
            "Hebrew"
          ],
          [
            "English",
            "Hindi"
          ],
          [
            "English",
            "Hungarian"
          ],
          [
            "English",
            "Indonesian"
          ],
          [
            "English",
            "Irish"
          ],
          [
            "English",
            "Italian"
          ],
          [
            "English",
            "Japanese"
          ],
          [
            "English",
            "Korean"
          ],
          [
            "English",
            "Kyrgyz"
          ],
          [
            "English",
            "Latvian"
          ],
          [
            "English",
            "Lithuanian"
          ],
          [
            "English",
            "Malay"
          ],
          [
            "English",
            "Norwegian"
          ],
          [
            "English",
            "Persian"
          ],
          [
            "English",
            "Polish"
          ],
          [
            "English",
            "Portuguese"
          ],
          [
            "English",
            "Portuguese (Brazil)"
          ],
          [
            "English",
            "Romanian"
          ],
          [
            "English",
            "Russian"
          ],
          [
            "English",
            "Slovak"
          ],
          [
            "English",
            "Slovenian"
          ],
          [
            "English",
            "Spanish"
          ],
          [
            "English",
            "Swahili"
          ],
          [
            "English",
            "Swedish"
          ],
          [
            "English",
            "Tagalog"
          ],
          [
            "English",
            "Thai"
          ],
          [
            "English",
            "Turkish"
          ],
          [
            "English",
            "Ukranian"
          ],
          [
            "English",
            "Urdu"
          ],
          [
            "English",
            "Vietnamese"
          ],
          [
            "Esperanto",
            "English"
          ],
          [
            "Estonian",
            "English"
          ],
          [
            "Finnish",
            "English"
          ],
          [
            "French",
            "English"
          ],
          [
            "Galician",
            "English"
          ],
          [
            "German",
            "English"
          ],
          [
            "Greek",
            "English"
          ],
          [
            "Hebrew",
            "English"
          ],
          [
            "Hindi",
            "English"
          ],
          [
            "Hungarian",
            "English"
          ],
          [
            "Indonesian",
            "English"
          ],
          [
            "Irish",
            "English"
          ],
          [
            "Italian",
            "English"
          ],
          [
            "Japanese",
            "English"
          ],
          [
            "Korean",
            "English"
          ],
          [
            "Kyrgyz",
            "English"
          ],
          [
            "Latvian",
            "English"
          ],
          [
            "Lithuanian",
            "English"
          ],
          [
            "Malay",
            "English"
          ],
          [
            "Norwegian",
            "English"
          ],
          [
            "Persian",
            "English"
          ],
          [
            "Polish",
            "English"
          ],
          [
            "Portuguese (Brazil)",
            "English"
          ],
          [
            "Portuguese",
            "English"
          ],
          [
            "Portuguese",
            "Spanish"
          ],
          [
            "Romanian",
            "English"
          ],
          [
            "Russian",
            "English"
          ],
          [
            "Slovak",
            "English"
          ],
          [
            "Slovenian",
            "English"
          ],
          [
            "Spanish",
            "English"
          ],
          [
            "Spanish",
            "Portuguese"
          ],
          [
            "Swahili",
            "English"
          ],
          [
            "Swedish",
            "English"
          ],
          [
            "Tagalog",
            "English"
          ],
          [
            "Thai",
            "English"
          ],
          [
            "Turkish",
            "English"
          ],
          [
            "Ukrainian",
            "English"
          ],
          [
            "Urdu",
            "English"
          ],
          [
            "Vietnamese",
            "English"
          ]
        ],
        "summary": "Documents 100 text-translation packages, including German→English and English→French. English is included as a source and target. No isiXhosa package is listed. Accuracy is not independently tested.",
        "source": "https://github.com/argosopentech/argospm-index",
        "checkedAt": "2026-10-30",
        "accuracyTested": false
      },
      "formats": {
        "in": [
          "text"
        ],
        "out": [
          "text"
        ]
      },
      "redFlags": [
        "No isiXhosa package is listed. Accuracy is not independently tested."
      ]
    },
    {
      "id": "ocrmypdf",
      "name": "OCRmyPDF",
      "kind": "tool",
      "tasks": [
        "ocr"
      ],
      "does": "Adds searchable text to scanned PDF files locally.",
      "url": "https://ocrmypdf.readthedocs.io/en/latest/",
      "region": "Global",
      "account": false,
      "platforms": "Windows via WSL, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free open-source software; installation and processing require your own computer.",
        "checkedAt": "2026-10-29",
        "source": "https://ocrmypdf.readthedocs.io/en/latest/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "The local command-line application processes your PDF on this computer."
      },
      "caveat": "Install required language packs. OCR can misread names, tables and handwriting; PDFs can carry malware.",
      "workflow": [
        "Install using the documented instructions and language packs.",
        "Work on a copy of the PDF in a restricted working folder.",
        "Run OCRmyPDF with the correct document language and a separate output filename.",
        "Search the output and retain original page numbers."
      ],
      "verification": "Compare key text and all quoted figures with the page image, including minus signs and decimal points.",
      "terms": [
        "scan",
        "scanned",
        "pdf",
        "handwriting",
        "searchable"
      ],
      "sources": [
        {
          "url": "https://ocrmypdf.readthedocs.io/en/latest/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "reporter",
        "editor",
        "data",
        "factcheck"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "technical",
      "formats": {
        "in": [
          "pdf"
        ],
        "out": [
          "pdf"
        ]
      },
      "redFlags": [
        "OCR can misread names, tables and handwriting."
      ]
    },
    {
      "id": "tabula",
      "name": "Tabula",
      "kind": "tool",
      "tasks": [
        "extract"
      ],
      "does": "Extracts tables from text-based PDFs into CSV.",
      "url": "https://tabula.technology/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux; Java may be needed",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://tabula.technology/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use the installed local application; its localhost browser interface is not a cloud upload."
      },
      "caveat": "Does not extract tables directly from image-only scans. The published release is old; check compatibility.",
      "workflow": [
        "Launch the local application and import a copy of a text PDF.",
        "Draw a selection around one table and preview the extraction.",
        "Adjust the selection or extraction mode if columns shift.",
        "Export CSV and retain the PDF page reference."
      ],
      "verification": "Recalculate totals and compare sample rows, headings and footnotes with the PDF.",
      "terms": [
        "pdf",
        "table",
        "spreadsheet",
        "csv"
      ],
      "sources": [
        {
          "url": "https://tabula.technology/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "reporter"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "pdf"
        ],
        "out": [
          "csv"
        ]
      },
      "redFlags": [
        "Does not extract image-only scans."
      ]
    },
    {
      "id": "openrefine",
      "name": "OpenRefine",
      "kind": "tool",
      "tasks": [
        "clean",
        "analyse"
      ],
      "does": "Cleans inconsistent names and values in tabular data.",
      "url": "https://openrefine.org/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://openrefine.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Local cleaning stays on your machine. Reconciliation and fetching URLs send data to external services; leave them off."
      },
      "caveat": "Clustering suggests merges; similar names are not necessarily the same person or organisation.",
      "workflow": [
        "Import a copy of CSV data into the local application.",
        "Use text facets to find inconsistent values and blanks.",
        "Review clustering suggestions individually before merging.",
        "Export the cleaned data and operation history; retain the original."
      ],
      "verification": "Compare row counts, unique identifiers and totals before and after; inspect every consequential merge.",
      "terms": [
        "messy",
        "duplicates",
        "deduplicate",
        "spreadsheet",
        "csv",
        "standardise"
      ],
      "sources": [
        {
          "url": "https://openrefine.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "reporter",
        "editor"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "csv",
          "tsv",
          "xlsx",
          "json"
        ],
        "out": [
          "csv",
          "json"
        ]
      },
      "redFlags": [
        "Clusters are suggestions, not confirmed identities."
      ]
    },
    {
      "id": "datasette",
      "name": "Datasette (local)",
      "kind": "tool",
      "tasks": [
        "analyse",
        "documents"
      ],
      "does": "Explores structured data with filters, facets and SQL.",
      "url": "https://datasette.io/",
      "region": "Global",
      "account": false,
      "platforms": "Desktop with Python",
      "cost": {
        "type": "free",
        "summary": "Free open-source software; optional public hosting costs extra.",
        "checkedAt": "2026-10-29",
        "source": "https://datasette.io/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Run the local instance on loopback only; public deployment shares data."
      },
      "caveat": "Setup requires technical skill. Plugins and public hosting change data handling.",
      "workflow": [
        "Create a working copy of your SQLite database or convert a CSV locally.",
        "Install Datasette and open the local instance bound to loopback.",
        "Use facets or a read-only SQL query to explore patterns.",
        "Save the query and export only the rows needed for reporting."
      ],
      "verification": "Check joins for duplicated rows; reproduce totals independently and trace findings to source records.",
      "terms": [
        "database",
        "sql",
        "csv",
        "query",
        "structured data"
      ],
      "sources": [
        {
          "url": "https://datasette.io/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "technical",
      "formats": {
        "in": [
          "sqlite",
          "csv"
        ],
        "out": [
          "json",
          "csv"
        ]
      },
      "redFlags": [
        "Public hosting shares the data."
      ]
    },
    {
      "id": "qgis",
      "name": "QGIS",
      "kind": "tool",
      "tasks": [
        "map",
        "analyse"
      ],
      "does": "Builds maps and examines geographic datasets.",
      "url": "https://www.qgis.org/",
      "region": "Europe / Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free and open-source desktop software.",
        "checkedAt": "2026-10-29",
        "source": "https://www.qgis.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use local layers. Online basemaps, geocoders and plugins contact other services; leave them off for confidential work."
      },
      "caveat": "Incorrect coordinate systems and changing boundaries can distort conclusions.",
      "workflow": [
        "Open a project with local boundary and CSV files.",
        "Set the correct coordinate reference system and map coordinates.",
        "Join records using stable area identifiers; inspect unmatched rows.",
        "Create a labelled layout with data date, units and attribution."
      ],
      "verification": "Check locations against source records, joins and boundary vintages; review any map that could identify a source.",
      "terms": [
        "mapping",
        "geography",
        "geolocation",
        "boundaries",
        "coordinates"
      ],
      "sources": [
        {
          "url": "https://www.qgis.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "reporter"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "technical",
      "formats": {
        "in": [
          "shp",
          "geojson",
          "csv"
        ],
        "out": [
          "map",
          "png",
          "pdf"
        ]
      },
      "redFlags": [
        "Wrong coordinate systems can distort the map."
      ]
    },
    {
      "id": "rawgraphs",
      "name": "RAWGraphs",
      "kind": "tool",
      "tasks": [
        "chart"
      ],
      "does": "Creates charts with data processed in the browser.",
      "url": "https://www.rawgraphs.io/",
      "region": "Europe / Global",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://www.rawgraphs.io/"
      },
      "privacy": {
        "mode": "browser",
        "summary": "The provider says inserted data is processed in your browser. The site itself still receives your visit."
      },
      "caveat": "This is a provider claim, not a security audit. Use a locally hosted reviewed copy for high-risk source material.",
      "workflow": [
        "Open the app and paste a minimised copy of your table.",
        "Choose a chart suited to the comparison you need.",
        "Map columns to dimensions and check aggregation settings.",
        "Export SVG or PNG with a source note and date."
      ],
      "verification": "Recalculate plotted values and inspect axes, labels, missing rows and accessibility.",
      "terms": [
        "visualisation",
        "visualization",
        "graph",
        "bar chart"
      ],
      "sources": [
        {
          "url": "https://www.rawgraphs.io/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "editor"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "csv",
          "tsv"
        ],
        "out": [
          "svg",
          "png"
        ]
      },
      "redFlags": [
        "Browser processing is a provider claim, not a security audit."
      ]
    },
    {
      "id": "datawrapper",
      "name": "Datawrapper",
      "kind": "tool",
      "tasks": [
        "chart",
        "map"
      ],
      "does": "Publishes charts, tables and maps for readers.",
      "url": "https://www.datawrapper.de/",
      "region": "Europe / Global",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "free-tier",
        "summary": "Free plan includes publishing, embedding and PNG downloads. Paid plans add features; retain attribution.",
        "checkedAt": "2026-10-29",
        "source": "https://www.datawrapper.de/pricing"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Data is uploaded; published graphics can expose their underlying data."
      },
      "caveat": "Do not upload source-identifying data. Check what readers can download before publishing.",
      "workflow": [
        "Create a free account and import a public or cleared table.",
        "Choose the chart or map and confirm column types and units.",
        "Add source links, date, title and accessible description.",
        "Preview on mobile before publishing or exporting a PNG."
      ],
      "verification": "Compare chart values with the source; check axes, rounding, attribution and public data access.",
      "terms": [
        "visualisation",
        "visualization",
        "graph",
        "bar chart"
      ],
      "sources": [
        {
          "url": "https://www.datawrapper.de/pricing",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "editor",
        "publisher"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "csv"
        ],
        "out": [
          "chart",
          "embed"
        ]
      },
      "redFlags": [
        "Published graphics can expose the underlying data."
      ]
    },
    {
      "id": "flourish",
      "name": "Flourish",
      "kind": "tool",
      "tasks": [
        "chart"
      ],
      "does": "Creates interactive graphics and data stories.",
      "url": "https://flourish.studio/",
      "region": "UK / Global",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "free-tier",
        "summary": "Free plan: unlimited projects and public publishing with attribution; paid features are separate.",
        "checkedAt": "2026-10-29",
        "source": "https://flourish.studio/pricing/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Data goes to Flourish. Unpublished privacy does not make an upload suitable for protected sources."
      },
      "caveat": "Review published data exposure and licensing before sharing.",
      "workflow": [
        "Create a free account and select a suitable template.",
        "Load cleared data and bind columns to template fields.",
        "Add labels, units, source notes and accessibility text.",
        "Preview the responsive result; publish only after checking exposure."
      ],
      "verification": "Check calculations and animations frame by frame where needed; avoid visual effects that misstate change.",
      "terms": [
        "visualisation",
        "visualization",
        "interactive",
        "animation"
      ],
      "sources": [
        {
          "url": "https://flourish.studio/pricing/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "data",
        "editor",
        "publisher"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "csv",
          "xlsx"
        ],
        "out": [
          "chart",
          "embed"
        ]
      },
      "redFlags": [
        "Published graphics and their data may be public."
      ]
    },
    {
      "id": "audacity",
      "name": "Audacity",
      "kind": "tool",
      "tasks": [
        "audio"
      ],
      "does": "Edits interview sound and prepares podcast audio.",
      "url": "https://www.audacityteam.org/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free open-source core editor; optional plugins or services can cost money.",
        "checkedAt": "2026-10-29",
        "source": "https://www.audacityteam.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use local projects and exports; avoid cloud sharing and unreviewed plugins."
      },
      "caveat": "Heavy noise reduction can alter speech. Preserve an untouched recording.",
      "workflow": [
        "Import a copy of the recording and save a local project.",
        "Trim unwanted sections without changing the meaning of an answer.",
        "Apply gentle level adjustment; audition processing against the original.",
        "Export a delivery copy and keep the project and original."
      ],
      "verification": "Listen through the entire export for edits, distortion, changed meaning and identifying background sounds.",
      "terms": [
        "podcast",
        "noise",
        "sound",
        "edit audio"
      ],
      "sources": [
        {
          "url": "https://www.audacityteam.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "producer",
        "av",
        "reporter"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "wav",
          "mp3",
          "flac"
        ],
        "out": [
          "wav",
          "mp3"
        ]
      },
      "redFlags": [
        "Heavy processing can change speech; keep the original."
      ]
    },
    {
      "id": "shotcut",
      "name": "Shotcut",
      "kind": "tool",
      "tasks": [
        "video"
      ],
      "does": "Edits video locally and exports finished clips.",
      "url": "https://shotcut.org/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://shotcut.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Local media editing and exports stay on your computer. Avoid network sources."
      },
      "caveat": "Editing can change context. Blurs and masks need checking in every frame.",
      "workflow": [
        "Create a local project with a copy of the original footage.",
        "Arrange clips on a timeline with clear in and out points.",
        "Add necessary titles and review any anonymisation throughout the clip.",
        "Export a copy using the required format; retain originals and project."
      ],
      "verification": "Watch the full export with sound, checking meaning, captions, visible identifiers and edit points.",
      "terms": [
        "edit video",
        "footage",
        "clip",
        "video editing"
      ],
      "sources": [
        {
          "url": "https://shotcut.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "av",
        "producer"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "mp4",
          "mov"
        ],
        "out": [
          "mp4"
        ]
      },
      "redFlags": [
        "Editing can change context; check every cut and blur."
      ]
    },
    {
      "id": "gimp",
      "name": "GIMP",
      "kind": "tool",
      "tasks": [
        "image"
      ],
      "does": "Crops, sizes and prepares photographs locally.",
      "url": "https://www.gimp.org/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://www.gimp.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Desktop editing uses local files; third-party plugins may behave differently."
      },
      "caveat": "Never alter news evidence without disclosure. Flattened visual masking alone is not a full confidentiality review.",
      "workflow": [
        "Open a working copy and retain the original photograph.",
        "Crop and resize within your publication standards.",
        "Apply only permitted tonal corrections; record material changes.",
        "Export a separate file and check metadata and captions before release."
      ],
      "verification": "Compare against the original for misleading changes; inspect the export for recoverable identifiers.",
      "terms": [
        "photo editing",
        "crop",
        "resize",
        "picture"
      ],
      "sources": [
        {
          "url": "https://www.gimp.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "photo",
        "av",
        "editor"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "jpg",
          "png",
          "tiff"
        ],
        "out": [
          "jpg",
          "png"
        ]
      },
      "redFlags": [
        "Do not alter news evidence without disclosure."
      ]
    },
    {
      "id": "obs",
      "name": "OBS Studio",
      "kind": "tool",
      "tasks": [
        "record"
      ],
      "does": "Records screens and produces video locally.",
      "url": "https://obsproject.com/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free and open source.",
        "checkedAt": "2026-10-29",
        "source": "https://obsproject.com/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Use local recording. Streaming and browser sources send or fetch data online."
      },
      "caveat": "Screen capture can expose notifications, credentials and source names.",
      "workflow": [
        "Close unrelated windows and silence notifications.",
        "Add only the window and audio sources you need.",
        "Choose local recording, then make and replay a short test.",
        "Record, stop and inspect the saved file before sharing."
      ],
      "verification": "Replay video and audio; inspect every captured window and notification for confidential details.",
      "terms": [
        "screen recording",
        "screencast",
        "capture"
      ],
      "sources": [
        {
          "url": "https://obsproject.com/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "producer",
        "av"
      ],
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "screen",
          "camera"
        ],
        "out": [
          "mp4",
          "mkv"
        ]
      },
      "redFlags": [
        "Screen capture can expose notifications and credentials."
      ]
    },
    {
      "id": "zotero",
      "name": "Zotero (local library)",
      "kind": "tool",
      "tasks": [
        "research"
      ],
      "does": "Organises source documents, annotations and references.",
      "url": "https://www.zotero.org/",
      "region": "Global",
      "account": false,
      "platforms": "Windows, macOS, Linux",
      "cost": {
        "type": "free",
        "summary": "Free local software; optional extra cloud file storage is paid.",
        "checkedAt": "2026-10-29",
        "source": "https://www.zotero.org/"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Keep sync off for confidential libraries. Online lookups and browser capture contact websites."
      },
      "caveat": "Imported references can contain mistakes. Backups and device access still need protection.",
      "workflow": [
        "Create a local library with sync disabled where confidentiality matters.",
        "Add permitted local documents and group them by story.",
        "Record provenance, page references and notes against each source.",
        "Export a reference list and back up the local library securely."
      ],
      "verification": "Open every cited item; check author, date, page numbers and whether it supports the claim.",
      "terms": [
        "citation",
        "bibliography",
        "organise sources",
        "reference"
      ],
      "sources": [
        {
          "url": "https://www.zotero.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "reporter",
        "editor",
        "factcheck",
        "freelance"
      ],
      "devices": [
        "desktop",
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "pdf",
          "webpage"
        ],
        "out": [
          "citations",
          "bib"
        ]
      },
      "redFlags": [
        "Keep sync off for confidential libraries."
      ]
    },
    {
      "id": "invid",
      "name": "InVID-WeVerify",
      "kind": "tool",
      "tasks": [
        "verify-media"
      ],
      "does": "Helps investigate images and video through keyframes and searches.",
      "url": "https://weverify.eu/verification-plugin/",
      "region": "Europe / Global",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free-tier",
        "summary": "Free plugin; some functions may require registration or separate service access.",
        "checkedAt": "2026-10-29",
        "source": "https://www.invid-project.eu/tools-and-services/invid-verification-plugin/",
        "quota": "Free plugin; some functions may need registration."
      },
      "privacy": {
        "mode": "mixed",
        "summary": "The extension invokes external search and analysis services. Treat it as an upload or disclosure risk."
      },
      "caveat": "Forensic and AI-detection indicators cannot establish authenticity on their own.",
      "workflow": [
        "Install from the project-linked official extension listing.",
        "Use public footage or an already-cleared image; extract useful keyframes.",
        "Search keyframes across services and trace the earliest credible source.",
        "Record links, dates and independently corroborating location evidence."
      ],
      "verification": "Contact the original uploader where feasible; verify time, location and context with independent evidence.",
      "terms": [
        "viral",
        "reverse image",
        "photo",
        "video",
        "fake",
        "keyframe"
      ],
      "sources": [
        {
          "url": "https://www.invid-project.eu/tools-and-services/invid-verification-plugin/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "factcheck",
        "photo",
        "reporter"
      ],
      "devices": [
        "web"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "image",
          "video"
        ],
        "out": [
          "links",
          "keyframes"
        ]
      },
      "redFlags": [
        "Forensic and AI-detection indicators do not establish authenticity."
      ]
    },
    {
      "id": "factcheck",
      "name": "Google Fact Check Explorer",
      "kind": "tool",
      "tasks": [
        "claims"
      ],
      "does": "Searches for previously published fact checks.",
      "url": "https://toolbox.google.com/factcheck/explorer",
      "region": "Global",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public web search; no charge shown.",
        "checkedAt": "2026-10-29",
        "source": "https://toolbox.google.com/factcheck/explorer"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Search text goes to Google. Do not search with confidential source identifiers."
      },
      "caveat": "It retrieves earlier checks; it does not verify a new claim. Coverage and language vary.",
      "workflow": [
        "Search a short public claim, person or quoted phrase.",
        "Try alternate wording and the original language.",
        "Open the fact-checking organisation’s full article.",
        "Follow its evidence links and check the claim date and context."
      ],
      "verification": "Verify the underlying primary evidence yourself; distinguish an old claim from a new event.",
      "terms": [
        "claim",
        "rumour",
        "rumor",
        "debunk",
        "fact check",
        "misinformation"
      ],
      "sources": [
        {
          "url": "https://toolbox.google.com/factcheck/explorer",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "factcheck",
        "reporter",
        "editor"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "text"
        ],
        "out": [
          "links"
        ]
      },
      "redFlags": [
        "A prior fact check does not establish a different new claim."
      ]
    },
    {
      "id": "cofacts",
      "name": "Cofacts",
      "kind": "tool",
      "tasks": [
        "claims"
      ],
      "does": "Searches community responses to circulating claims, especially in Taiwan.",
      "url": "https://cofacts.tw/",
      "region": "Asia-Pacific / Taiwan",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public web search is free; contribution features are separate.",
        "checkedAt": "2026-10-29",
        "source": "https://cofacts.tw/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Pasted queries go to the public service. Do not submit private messages containing identifiers."
      },
      "caveat": "Responses are contributed by users; they are evidence leads, not authoritative verdicts.",
      "workflow": [
        "Use the web search without linking a messaging account.",
        "Search a short, anonymised public phrase in Traditional Chinese.",
        "Read dated responses and follow their cited sources.",
        "Record which version of the claim each response addresses."
      ],
      "verification": "Check primary sources and dates independently; have a fluent reader review language and context.",
      "terms": [
        "taiwan",
        "chinese",
        "mandarin",
        "rumour",
        "rumor"
      ],
      "sources": [
        {
          "url": "https://cofacts.tw/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "factcheck"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "text"
        ],
        "out": [
          "links"
        ]
      },
      "redFlags": [
        "Covers Taiwan and Chinese-language claims only."
      ]
    },
    {
      "id": "suncalc",
      "name": "SunCalc",
      "kind": "tool",
      "tasks": [
        "verify-media"
      ],
      "does": "Explores sun position and shadow direction for a place and date.",
      "url": "https://www.suncalc.org/",
      "region": "Europe / Global",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public web tool; voluntary donations.",
        "checkedAt": "2026-10-29",
        "source": "https://www.suncalc.org/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Location and date choices may be visible to the website and map services."
      },
      "caveat": "A plausible shadow does not prove where or when an image was taken.",
      "workflow": [
        "Select the alleged location and date using public information.",
        "Set time and check the displayed timezone and daylight saving.",
        "Compare predicted direction with shadows and known landmarks.",
        "Record assumptions and possible alternative times or places."
      ],
      "verification": "Corroborate with independently located landmarks, weather and original publication evidence.",
      "terms": [
        "shadow",
        "sun",
        "geolocate",
        "location"
      ],
      "sources": [
        {
          "url": "https://www.suncalc.org/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "factcheck",
        "photo"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "location",
          "date"
        ],
        "out": [
          "sun position"
        ]
      },
      "redFlags": [
        "Sun position is an indicator, not proof of time or place."
      ]
    },
    {
      "id": "openafrica",
      "name": "openAFRICA",
      "kind": "tool",
      "tasks": [
        "datasets"
      ],
      "does": "Finds public datasets from African organisations.",
      "url": "https://open.africa/",
      "region": "Africa",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public dataset search and downloads; check each resource’s licence.",
        "checkedAt": "2026-10-29",
        "source": "https://open.africa/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Search terms go to the portal; downloaded data can be analysed locally."
      },
      "caveat": "Publisher quality, coverage and update dates vary. Open access does not remove personal-data obligations.",
      "workflow": [
        "Search by country and subject on the public portal.",
        "Open a dataset and read publisher, date, methodology and licence.",
        "Download a permitted resource through the web interface.",
        "Record its URL, version and retrieval date before analysis."
      ],
      "verification": "Compare figures with the originating agency; inspect missing values and whether geographic coverage matches the story.",
      "terms": [
        "african data",
        "kenya",
        "nigeria",
        "country data"
      ],
      "sources": [
        {
          "url": "https://open.africa/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "data",
        "reporter"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "search"
        ],
        "out": [
          "csv",
          "json"
        ]
      },
      "redFlags": [
        "Licences and definitions vary by dataset."
      ]
    },
    {
      "id": "municipalmoney",
      "name": "Municipal Money",
      "kind": "tool",
      "tasks": [
        "datasets",
        "analyse"
      ],
      "does": "Explores South African municipal finance indicators.",
      "url": "https://municipalmoney.gov.za/",
      "region": "Africa / South Africa",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public Treasury dashboard; no fee or sign-in shown.",
        "checkedAt": "2026-10-29",
        "source": "https://municipalmoney.gov.za/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Municipality searches go to the website; no private documents are needed."
      },
      "caveat": "The homepage says current data is undergoing completeness and integrity verification. Do not equate an indicator with proof of misconduct.",
      "workflow": [
        "Find the municipality by name and confirm the correct entity.",
        "Select the financial indicator and read its calculation note.",
        "Record the financial year, units and data qualification.",
        "Compare the trend with source financial statements."
      ],
      "verification": "Check audit outcomes, reporting periods and revisions; put disputed findings to the municipality.",
      "terms": [
        "municipality",
        "municipal",
        "budget",
        "council",
        "treasury"
      ],
      "sources": [
        {
          "url": "https://municipalmoney.gov.za/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "data",
        "reporter"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "municipality"
        ],
        "out": [
          "figures",
          "csv"
        ]
      },
      "redFlags": [
        "Indicators are not proof of misconduct."
      ]
    },
    {
      "id": "singapore",
      "name": "data.gov.sg",
      "kind": "tool",
      "tasks": [
        "datasets"
      ],
      "does": "Searches and downloads Singapore government datasets.",
      "url": "https://data.gov.sg/",
      "region": "Asia-Pacific / Singapore",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Government data is available free; read the Open Data Licence.",
        "checkedAt": "2026-10-29",
        "source": "https://data.gov.sg/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Search queries go to the portal. Use manual downloads; no API key is needed for this workflow."
      },
      "caveat": "Definitions and update frequency differ by agency and dataset.",
      "workflow": [
        "Search by subject and select the responsible agency.",
        "Read dataset metadata, period, definitions and licence.",
        "Download an available file through the website.",
        "Save the version and retrieval date with your working copy."
      ],
      "verification": "Compare against agency publications; check denominators, revisions and missing values.",
      "terms": [
        "singapore",
        "hdb",
        "asian data"
      ],
      "sources": [
        {
          "url": "https://data.gov.sg/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "data"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "search"
        ],
        "out": [
          "csv",
          "json"
        ]
      },
      "redFlags": [
        "Definitions and update frequency vary by agency."
      ]
    },
    {
      "id": "trove",
      "name": "Trove",
      "kind": "tool",
      "tasks": [
        "research",
        "datasets"
      ],
      "does": "Searches Australian newspapers and library collections.",
      "url": "https://trove.nla.gov.au/",
      "region": "Asia-Pacific / Australia",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Free search service; some linked collection items have access restrictions.",
        "checkedAt": "2026-10-29",
        "source": "https://www.library.gov.au/research/guides-and-resources/start-researching/using-trove"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Search queries go to the service; do not include protected source identifiers."
      },
      "caveat": "OCR errors and incomplete digitisation affect results. Copyright still applies to reuse.",
      "workflow": [
        "Search a name or phrase, then filter by newspaper and date.",
        "Try variant spellings where OCR may be poor.",
        "Open the digitised page and record title, date and page.",
        "Use the item’s citation or persistent link in research notes."
      ],
      "verification": "Read the original page image and check quoted text, publication date and rights before reproducing.",
      "terms": [
        "australia",
        "newspaper archive",
        "history",
        "historical"
      ],
      "sources": [
        {
          "url": "https://www.library.gov.au/research/guides-and-resources/start-researching/using-trove",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "dataset",
      "roles": [
        "reporter",
        "factcheck"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "search"
        ],
        "out": [
          "links",
          "images"
        ]
      },
      "redFlags": [
        "OCR errors and copyright still apply."
      ]
    },
    {
      "id": "gsi",
      "name": "GSI Maps (Japan)",
      "kind": "tool",
      "tasks": [
        "map",
        "verify-media"
      ],
      "does": "Provides Japanese maps and historical aerial imagery for geographic research.",
      "url": "https://maps.gsi.go.jp/",
      "region": "Asia-Pacific / Japan",
      "account": false,
      "platforms": "Web",
      "cost": {
        "type": "free",
        "summary": "Public map access; reuse conditions and attribution vary by material.",
        "checkedAt": "2026-10-29",
        "source": "https://www.gsi.go.jp/ENGLISH/page_e30233.html"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Place searches and map requests go to GSI and relevant servers."
      },
      "caveat": "Check imagery dates and reuse rules; English coverage is partial.",
      "workflow": [
        "Find the public location in Japan on GSI Maps.",
        "Choose the relevant map or aerial imagery layer.",
        "Read its date, scale and attribution requirements.",
        "Compare landmarks across periods and save reference links."
      ],
      "verification": "Corroborate the location with another independent source; check that imagery dates fit the event.",
      "terms": [
        "japan",
        "japanese",
        "aerial",
        "geolocate"
      ],
      "sources": [
        {
          "url": "https://www.gsi.go.jp/ENGLISH/page_e30233.html",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "scopeKeywords": [
        "japan",
        "japanese"
      ],
      "type": "software",
      "roles": [
        "data",
        "factcheck"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "place"
        ],
        "out": [
          "maps",
          "images"
        ]
      },
      "redFlags": [
        "Check imagery dates, attribution and reuse terms."
      ]
    },
    {
      "id": "whatdotheyknow",
      "name": "WhatDoTheyKnow",
      "kind": "tool",
      "tasks": [
        "records"
      ],
      "does": "Searches UK FOI responses and submits public requests.",
      "url": "https://www.whatdotheyknow.com/",
      "region": "UK",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "free-tier",
        "summary": "Free account: up to ten requests a day; paid Pro is separate.",
        "checkedAt": "2026-10-29",
        "source": "https://www.whatdotheyknow.com/help/about",
        "quota": "Up to ten requests",
        "period": "day"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Free requests and responses are published automatically. Search and account details go to the service."
      },
      "caveat": "Use the free service only for requests you can make public; laws and exemptions vary.",
      "workflow": [
        "Search existing responses before requesting more.",
        "Identify the correct UK authority and a narrow public question.",
        "Review the request for source identifiers and personal information.",
        "Submit only after accepting public publication; record the response and date."
      ],
      "verification": "Read the original response and attachments; distinguish refusal, missing records and evidence of absence.",
      "terms": [
        "foi",
        "freedom of information",
        "public records",
        "records request"
      ],
      "sources": [
        {
          "url": "https://www.whatdotheyknow.com/help/about",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "reporter",
        "freelance"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "text"
        ],
        "out": [
          "public requests"
        ]
      },
      "redFlags": [
        "Requests and responses are published automatically."
      ]
    },
    {
      "id": "changedetection",
      "name": "changedetection.io (self-hosted)",
      "kind": "tool",
      "tasks": [
        "monitor"
      ],
      "does": "Tracks changes on permitted public webpages.",
      "url": "https://github.com/dgtlmoon/changedetection.io",
      "region": "Global",
      "account": false,
      "platforms": "Self-hosted",
      "cost": {
        "type": "free",
        "summary": "Free open-source self-hosted software; hosting, electricity and maintenance cost extra. Hosted service is paid.",
        "checkedAt": "2026-10-29",
        "source": "https://github.com/dgtlmoon/changedetection.io"
      },
      "privacy": {
        "mode": "mixed",
        "summary": "Your own instance fetches pages; notification destinations receive configured content."
      },
      "caveat": "Requires technical setup. Check robots.txt and terms; never bypass blocks or monitor private sessions.",
      "workflow": [
        "Install a local or self-hosted instance from the official instructions.",
        "Add a public URL only after reviewing its terms and robots rules.",
        "Select the page section and set a modest check interval.",
        "Compare diffs manually; keep notifications off or exclude sensitive content."
      ],
      "verification": "Open the original page and confirm a substantive change rather than layout, timestamps or an error page.",
      "terms": [
        "watch a page",
        "website change",
        "alert",
        "tracking",
        "monitoring"
      ],
      "sources": [
        {
          "url": "https://github.com/dgtlmoon/changedetection.io",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "reporter",
        "factcheck"
      ],
      "devices": [
        "desktop",
        "self-hosted"
      ],
      "skill": "technical",
      "formats": {
        "in": [
          "url"
        ],
        "out": [
          "alerts",
          "diffs"
        ]
      },
      "redFlags": [
        "Requires self-hosting and checking site terms."
      ]
    },
    {
      "id": "visualping",
      "name": "Visualping",
      "kind": "tool",
      "tasks": [
        "monitor"
      ],
      "does": "Monitors public webpages for changes.",
      "url": "https://visualping.io/",
      "region": "Global",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "unverified",
        "summary": "A free starting option is advertised; current free limits could not be read from the pricing page. Confirm before relying on it.",
        "checkedAt": "2026-10-29",
        "source": "https://visualping.io/pricing"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "The vendor receives watched URLs and checks them from its servers."
      },
      "caveat": "Exact free allowance remains unverified; excluded by the verified-free filter.",
      "workflow": [
        "Read the current free allowance before signing up.",
        "Add only a public, non-sensitive URL after checking site terms.",
        "Select a stable page region and a permitted check frequency.",
        "Open each alert and compare with the current page yourself."
      ],
      "verification": "Confirm substantive edits at the source; preserve dates and distinguish false alerts.",
      "terms": [
        "watch a page",
        "website change",
        "alert"
      ],
      "sources": [
        {
          "url": "https://visualping.io/pricing",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "software",
      "roles": [
        "reporter",
        "factcheck"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "url"
        ],
        "out": [
          "alerts"
        ]
      },
      "redFlags": [
        "The exact free allowance is unverified."
      ]
    },
    {
      "id": "notebooklm",
      "name": "NotebookLM / Gemini Notebook",
      "kind": "tool",
      "tasks": [
        "summarise",
        "documents"
      ],
      "does": "Explores uploaded sources and provides references back to them.",
      "url": "https://notebooklm.google.com/",
      "region": "Global",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "free-tier",
        "summary": "Free Standard plan with a Google account; current help lists 50 sources per notebook. Limits and branding can change.",
        "checkedAt": "2026-10-29",
        "source": "https://support.google.com/notebooklm/answer/16213268",
        "quota": "50 sources per notebook on the free plan, per provider help."
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Uploaded sources and questions go to Google; account and product data terms apply."
      },
      "caveat": "Citations can be incomplete or fail to support a claim. Help pages now use Gemini Notebook branding.",
      "workflow": [
        "Check the current product name, terms and free allowance.",
        "Upload only public or cleared documents with stable page references.",
        "Ask a narrow question and request supporting passages.",
        "Open each citation and record unresolved contradictions."
      ],
      "verification": "Check every quotation, number and claim in the actual document; a source-linked answer is not verified evidence.",
      "terms": [
        "notebooklm",
        "gemini notebook",
        "summarize",
        "summary",
        "audit report",
        "long report"
      ],
      "sources": [
        {
          "url": "https://support.google.com/notebooklm/answer/16213268",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "ai",
      "roles": [
        "reporter",
        "editor",
        "factcheck",
        "freelance"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "pdf",
          "docx",
          "txt"
        ],
        "out": [
          "notes",
          "citations"
        ]
      },
      "redFlags": [
        "Uploaded documents are processed by Google."
      ]
    },
    {
      "id": "pinpoint",
      "name": "Google Pinpoint",
      "kind": "tool",
      "tasks": [
        "documents",
        "ocr"
      ],
      "does": "Searches document collections and supports document-heavy reporting.",
      "url": "https://journaliststudio.google.com/pinpoint/",
      "region": "Global",
      "account": true,
      "platforms": "Web",
      "cost": {
        "type": "unverified",
        "summary": "Journalism product; the current public page did not establish all access conditions or limits. Confirm before use.",
        "checkedAt": "2026-10-29",
        "source": "https://newsinitiative.withgoogle.com/resources/products/pinpoint/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "Uploaded documents are processed by Google; collection access settings need review."
      },
      "caveat": "Current eligibility and limits remain unverified; excluded by the verified-free filter.",
      "workflow": [
        "Read current access requirements on the official product page.",
        "Use public or cleared test documents and confirm collection visibility.",
        "Upload a small sample and test search against known terms.",
        "Retain original filenames and page references for each finding."
      ],
      "verification": "Open the original page for every quotation or figure; check OCR misses and collection access settings.",
      "terms": [
        "pinpoint",
        "document dump",
        "folder",
        "foia",
        "search documents"
      ],
      "sources": [
        {
          "url": "https://newsinitiative.withgoogle.com/resources/products/pinpoint/",
          "label": "Provider documentation",
          "checkedAt": "2026-10-29"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-29",
        "workflowTested": false,
        "featuresCheckedAt": "2026-10-29",
        "costCheckedAt": "2026-10-29",
        "privacyCheckedAt": "2026-10-29"
      },
      "type": "ai",
      "roles": [
        "reporter",
        "editor",
        "factcheck"
      ],
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "pdf",
          "docx"
        ],
        "out": [
          "search results"
        ]
      },
      "redFlags": [
        "Current access conditions and limits are unverified."
      ]
    },
    {
      "id": "subtitleedit",
      "name": "Subtitle Edit",
      "kind": "tool",
      "type": "software",
      "tasks": [
        "captions",
        "video"
      ],
      "roles": [
        "av",
        "producer",
        "editor"
      ],
      "does": "Edits, retimes and converts subtitle and caption files on a desktop computer.",
      "url": "https://www.nikse.dk/subtitleedit",
      "region": "Global",
      "account": false,
      "platforms": "Windows desktop; some features need a video player or OCR tools",
      "devices": [
        "desktop"
      ],
      "skill": "some",
      "formats": {
        "in": [
          "srt",
          "vtt",
          "ass",
          "txt"
        ],
        "out": [
          "srt",
          "vtt",
          "ass"
        ]
      },
      "cost": {
        "type": "free",
        "summary": "Free, open-source subtitle editor. No account or payment is required.",
        "checkedAt": "2026-10-30",
        "source": "https://www.nikse.dk/subtitleedit"
      },
      "privacy": {
        "mode": "offline",
        "summary": "Runs as a desktop application on your computer. Optional video players, spellcheck and translation features may contact external services; check settings."
      },
      "caveat": "Windows-focused. Machine translation and spellcheck can be wrong, and subtitle timing still needs checking against the audio.",
      "workflow": [
        "Install from the official site and open a copy of the subtitle or caption file.",
        "Import the audio or video and check sync at the start, middle and end.",
        "Fix line breaks, reading speed and speaker labels; check names and numbers against the transcript.",
        "Export the format the publisher requires and keep the original file."
      ],
      "verification": "Watch the exported captions with sound. Check sync, omissions, speaker changes, names, numbers and whether captions cover meaningful non-speech audio.",
      "terms": [
        "subtitle",
        "subtitle edit",
        "srt",
        "vtt",
        "captions",
        "caption"
      ],
      "sources": [
        {
          "url": "https://www.nikse.dk/subtitleedit",
          "label": "Provider documentation",
          "checkedAt": "2026-10-30"
        },
        {
          "url": "https://github.com/SubtitleEdit/subtitleedit",
          "label": "Source repository",
          "checkedAt": "2026-10-30"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-30",
        "featuresCheckedAt": "2026-10-30",
        "costCheckedAt": "2026-10-30",
        "privacyCheckedAt": "2026-10-30",
        "workflowTested": false
      },
      "redFlags": [
        "Windows-focused; generated captions still need checking."
      ]
    },
    {
      "id": "webaim",
      "name": "WebAIM Contrast Checker",
      "kind": "tool",
      "type": "software",
      "tasks": [
        "accessibility"
      ],
      "roles": [
        "editor",
        "publisher",
        "photo",
        "data"
      ],
      "does": "Checks whether two colours meet WCAG contrast ratios for text and interface elements.",
      "url": "https://webaim.org/resources/contrastchecker/",
      "region": "Global",
      "account": false,
      "platforms": "Web browser",
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "hex colours"
        ],
        "out": [
          "contrast ratio",
          "AA/AAA result"
        ]
      },
      "cost": {
        "type": "free",
        "summary": "Free public web tool from WebAIM; no account or payment is required.",
        "checkedAt": "2026-10-30",
        "source": "https://webaim.org/resources/contrastchecker/"
      },
      "privacy": {
        "mode": "browser",
        "summary": "Colour values are checked in the page. The site still receives an ordinary visit; do not enter confidential material into any field."
      },
      "caveat": "Tests colour contrast only. It does not check alt text, captions, keyboard access, motion or screen-reader output.",
      "workflow": [
        "Sample the actual foreground and background colours used on the page, not the brand palette alone.",
        "Enter both hex values and read the normal-text and large-text results.",
        "Adjust the design to meet the WCAG level your publication targets.",
        "Record the ratio and the elements checked alongside the accessibility review."
      ],
      "verification": "Check the rendered page, including hover and focus states, and test with a keyboard and a screen reader where accessibility is consequential.",
      "terms": [
        "accessibility",
        "contrast",
        "colour contrast",
        "wcag",
        "alt text"
      ],
      "sources": [
        {
          "url": "https://webaim.org/resources/contrastchecker/",
          "label": "Provider tool page",
          "checkedAt": "2026-10-30"
        },
        {
          "url": "https://webaim.org/standards/wcag/checklist",
          "label": "WCAG checklist",
          "checkedAt": "2026-10-30"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-30",
        "featuresCheckedAt": "2026-10-30",
        "costCheckedAt": "2026-10-30",
        "privacyCheckedAt": "2026-10-30",
        "workflowTested": false
      },
      "redFlags": [
        "Checks colour contrast only, not full accessibility."
      ]
    },
    {
      "id": "wayback",
      "name": "Wayback Machine",
      "kind": "tool",
      "type": "software",
      "tasks": [
        "research"
      ],
      "roles": [
        "reporter",
        "editor",
        "factcheck"
      ],
      "does": "Finds archived copies of public web pages and shows how they changed over time.",
      "url": "https://web.archive.org/",
      "region": "Global",
      "account": false,
      "platforms": "Web browser",
      "devices": [
        "web"
      ],
      "skill": "none",
      "formats": {
        "in": [
          "url"
        ],
        "out": [
          "archived page",
          "snapshot links"
        ]
      },
      "cost": {
        "type": "free",
        "summary": "Free public archive. No account is needed to search snapshots; some upload features may need an Internet Archive account.",
        "checkedAt": "2026-10-30",
        "source": "https://web.archive.org/"
      },
      "privacy": {
        "mode": "cloud",
        "summary": "The URL you look up is sent to the Internet Archive. Do not submit private, unpublished or source-identifying links."
      },
      "caveat": "Coverage is incomplete and snapshots can be blocked or altered. An archived copy shows a page at a time; it does not prove the page was true or that nothing else existed.",
      "workflow": [
        "Search the exact URL and the site’s own search or sitemap.",
        "Choose a snapshot close to the event and record its timestamp and permalink.",
        "Compare the archived page with the live page and with another independent source.",
        "Save the permalink and a local copy of the relevant passage for the story file."
      ],
      "verification": "Check who controlled the page, what changed and whether the archive captured the whole page. Corroborate any claim with a second source.",
      "terms": [
        "archive",
        "wayback",
        "old version",
        "deleted page",
        "web page history",
        "provenance"
      ],
      "sources": [
        {
          "url": "https://web.archive.org/",
          "label": "Provider service",
          "checkedAt": "2026-10-30"
        },
        {
          "url": "https://archive.org/about/",
          "label": "Internet Archive background",
          "checkedAt": "2026-10-30"
        }
      ],
      "review": {
        "status": "desk-reviewed",
        "by": "Build research pass",
        "checkedAt": "2026-10-30",
        "featuresCheckedAt": "2026-10-30",
        "costCheckedAt": "2026-10-30",
        "privacyCheckedAt": "2026-10-30",
        "workflowTested": false
      },
      "redFlags": [
        "Archive coverage is incomplete; a snapshot is not proof of truth."
      ]
    }
  ]
}
