The writing surface is the easy part: an editor with grey completions from a language model, a library of PDFs you can ask questions of and inline citations formatted from the open CSL style files, exported through Pandoc. An agent gets a usable version running over a weekend. The weekend goes on trust. Suggested citations must point at papers that exist, so completions have to be grounded in your own PDFs or a lookup in a public index such as OpenAlex, never in the model's memory. Real-time co-authoring, Jenni's own paper index and its claim-checking reviews stay behind.
Before you buildCheck Jenni Free first: unlimited citations in 10,000+ styles plus 10 autocompletes a day and 5 chat messages may cover a short paper. Zotero with Pandoc does the citing for nothing.
Build me a research writing workbench to replace Jenni AI. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React front end built with Vite and TipTap in Markdown mode. `npm start` serves http://localhost:4780. - Documents: Markdown files in ~/Papers/<paper>/draft.md with citations written as [@citekey]. Autosave after each pause and commit a snapshot with `simple-git` every 10 minutes. - Library: import a BibTeX or CSL JSON file exported from Zotero (`@citation-js/core` with the BibTeX plugin) and a folder of PDFs matched by cite key or DOI. Extract text per page with `pdfjs-dist`, split into chunks of about 300 words, embed through an OpenAI-compatible endpoint and store them with better-sqlite3 and `sqlite-vec` in ./data/library.db. - Autocomplete: on Tab, send the paragraph so far and the 5 best library chunks to the model (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL in .env) and show a grey continuation. A claim taken from a chunk must carry [@citekey, p. N]; with no supporting chunk the suggestion carries no citation. Reject any cite key that is not in the library. - Chat: a side panel that answers questions across the library, quotes the chunk and opens the PDF at that page in a `pdfjs` viewer. - Discovery: search OpenAlex from the UI (add OPENALEX_API_KEY to .env if it asks for one), show title, authors, year, abstract and open-access link, and add a chosen paper as a BibTeX entry. - Check: a button listing every [@key] missing from the library and every sentence with a number or "studies show" and no citation. - Export: `pandoc --citeproc` with a CSL style fetched on demand from the citation-style-language styles repository, to .docx, .html and .pdf when LaTeX is installed. - Single user. No accounts, no telemetry, local-first: only your model, embedding and OpenAlex calls leave the machine. - Out of scope: real-time co-authoring, comments, a hosted paper index, a browser extension. - README: setup, the .env keys, the Zotero export steps, and a warning that language models invent references, so open and check every citation before you submit.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Jenni AI.
Add a literature review table to the workbench in this folder. Requirements: - A page with one row per library paper and columns for research question, method, sample, main finding and limitations, filled by the model from that paper's own chunks. - Every cell shows the page number it came from and links to the PDF at that page; if the paper doesn't say, the cell reads "not stated" instead of a guess. - Cache results per paper in SQLite, add a re-run button, and export the table to CSV. - Update the README.
Add a claim checker to the workbench in this folder. Requirements: - A command and a button that take every sentence in draft.md with a [@citekey, p. N] citation, fetch the cited page's chunks and ask the model whether the page supports the sentence. - Report supported, partly supported or unsupported, with the quote it relied on and its page. - Never edit the draft; list the findings in a side panel, each one clickable to jump to the sentence. - Run on 20 sentences at a time and keep results in SQLite so unchanged sentences are not re-checked. - Update the README.
Add Zotero sync to the workbench in this folder. Requirements: - Read the user's library over the Zotero web API (ZOTERO_USER_ID and ZOTERO_API_KEY in .env), starting from the last synced version number and fetching only changes. - Add new items and download their PDF attachments, then index them like a manual import; mark deleted items instead of removing their chunks. - A `workbench sync` command and a button; print how many items were added, changed or removed. - Update the README with how to create a read-only Zotero API key.
Make the workbench in this folder run with no outside model. Requirements: - Support Ollama for both completions and embeddings (OLLAMA_URL, CHAT_MODEL and EMBED_MODEL in .env) next to the OpenAI-compatible option, chosen by one setting. - Re-embed the library when the embedding model changes, and refuse to mix vectors from two models. - Show in the UI which endpoint is active and what leaves the machine (nothing, in Ollama mode). - Update the README with a model suggestion for a 16 GB laptop and the expected speed.
Writers pay for speed against a deadline: the tool sits beside the draft, suggests the next sentence from papers they have uploaded and formats citations without a trip to a reference manager. The free plan gives only a few AI actions, so a paper under way soon needs a paid plan, billed monthly with no long commitment.
Estimate · Embeddings and completions for a few dozen papers cost cents; a thesis-sized library with long PDFs may reach a few dollars a month, and Ollama makes it free. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 10 autocompletes a day, 10 PDF uploads, 3 AI edits, 5 AI chat messages, 3 reviews and 3 workflow runs; PDFs up to 25 MB and 150 pages; body-only document export. |
| Plus | $30 | $12 | 5,000 autocompletes a month, unlimited PDF uploads, 500 AI edits and 500 AI chat messages a month, 10 reviews and 10 workflow runs; PDFs up to 100 MB and 500 pages; full export and live chat support. |
| Pro | $73 | $29 | Unlimited autocomplete, edits, chat, reviews and workflow runs; PDFs up to 100 MB and 1,000 pages; priority support. |
Free gives 10 AI autocompletes a day, 5 AI chat messages and 10 PDF uploads, with unlimited citations in 10,000+ styles.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Real-time co-authoring with comments and suggested edits, Semantic search across Jenni's index of 200M+ papers and 10M+ open-access full texts.
About $30 a month on the Plus plan, $360 a year (checked 2026-10-19).
Real-time co-authoring with comments and suggested edits; Semantic search across Jenni's index of 200M+ papers and 10M+ open-access full texts; Reviews that check each claim in a draft against your sources; The browser extension and the built-in import from Zotero and Mendeley. If any of those matter to you, keep paying.
Yes: Zotero (open source), Zettlr (open source), Overleaf Community Edition (open source).