Skip to main content

jevgram

jevgram is a command-line tool that checks if a document is AI-generated. Similar to pangram but a lot cheaper (you'll need API key from https://console.typesafe.ai/login - free, super easy, couple of clicks)

Supported inputs

  • Plain text and source-like text files, such as .txt, .md, .tex, and similar files
  • PDF files
  • DOCX files

Minimal example:

Go to https://console.typesafe.ai/login and create an API key. Copy the key
$ export TYPESAFE_API_KEY=apikey_...
$ pipx install jevgram
$ jevgram README.md # try jevgram on this document
File: README.md
Type: text
Characters extracted: 3044
Characters sent to JEV: 3044
Model: jev-1.13.0
Prediction: AI
Probability AI: 79.00%
Probability human: 21.00%
Confidence: 58.00%

PDF extraction uses pypdf. DOCX extraction is handled directly from the Word XML contained in the .docx file.

Detailed instructions

Install (MacOS, Linux; Windows coming up)

pipx install jevgram

Get a TypeSafe API key

jevgram needs a TypeSafe API key to call JEV.

  1. Login to TypeSafe: https://console.typesafe.ai/login

    (if you don't have an account, create one, for example just clicking on "Login with Google")

  2. Click API Keys on the left, then Create API key on the right

  3. Copy the key and save it somewhere private.

  4. Set the key in your terminal:

export TYPESAFE_API_KEY="paste-your-key-here"

To avoid setting the key every time, add the export TYPESAFE_API_KEY=... line to your shell profile, such as ~/.bashrc or ~/.zshrc.

You can also pass a key directly with --api-key, but environment variables are safer/easier.

Usage

jevgram document.txt
jevgram paper.pdf
jevgram manuscript.docx --json

By default, long files are sampled down to 32,000 characters using the beginning, middle, and end of the extracted text. To send the whole extracted document, use:

jevgram document.txt --max-chars 0

To inspect extraction without calling JEV:

jevgram document.pdf --extract-only

To inspect the request body without calling JEV:

jevgram document.txt --dump-request

Output

Human-readable output includes the predicted class, AI probability, human probability, confidence when provided by JEV, and whether the input was truncated. --json produces machine-readable output for scripts.

Cost

This app is open-source/free on my end, but it uses JEV API, which is not free. Works like this: once you create a TypeSafe account and API key, you may get a credit for $5 free usage. jevgram is intended for personal use, and you can check a lot of documents for $5 (I tried dozens so far, I have yet to spend 1 cent). Once you use up the free credit, jevgram will fail and politely tell you to add credit card number to TypeSafe (to be fair, this is untested because I have not reached that point yet)

Notes

Authorship detection is probabilistic, so if you run jevgram multiple times on the same document, you'll get different (though pretty similar) probablities

Metadata

Release files for jevgram 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jevgram 0.1.6
File Size Uploaded Provenance
jevgram-0.1.6.tar.gz 10.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jevgram 0.1.6
File Interpreter ABI Platform
jevgram-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 21.4 kB

Release files / jevgram-0.1.6.tar.gz

Download URL jevgram-0.1.6.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
510de16c3090524e3f36ea66c4d06be6bd28dbbd0bc6d833fea45dc82bdde3c0
BLAKE2b-256 checksum
How to use checksums
ac90b977dd24be0d580ec98beca178e1720cb2b04df15477df7a73fc29f5047d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.4

Release files / jevgram-0.1.6-py3-none-any.whl

Download URL jevgram-0.1.6-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c524c6785e9720217959a5df24eadea263340cf839c3a3c3a71d94c9ebf5806
BLAKE2b-256 checksum
How to use checksums
135438c72e4b25acce8f9555c07ef0c8d63c33dd28b3b98e0d47664eb9f80976
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.4

Security for jevgram 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page