Should I vibe code
Draft academic-style prose from uploaded sources while keeping citation provenance visible
Autocomplete is the weekend. A citation that resolves to a paper that actually exists is the product.
?
Their verdict, the Pro price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
Autocomplete over your own prose is the easy half, and Lex already makes that case. What Jenni sells on top is the thing you will not finish: a citation that survives contact with a reviewer. A weekend gets you a chat window over uploaded PDFs and a bibliography that renders. What it does not get you is a guarantee that every reference resolves to a paper that exists, that the sentence it supports is actually on the page it points to, and that your APA output agrees with the style file rather than with the model's memory of it. A hallucinated reference in a marketing blog post is embarrassing. The same reference in a submitted thesis is a meeting with your department, and it is the one bug in this build you cannot catch by reading your own work.
What actually breaks
not "if". the specific failures.
- References the model invents wholesale — plausible authors, a real journal, a DOI with a valid prefix and nothing behind it, formatted more correctly than the ones you typed yourself
- The right paper cited for the wrong claim, which is what happens when retrieval returns a chunk with no page anchor and the model summarises across two of them
- Your hand-rolled APA renderer, which gets the et al. threshold, the ampersand and the sentence-case title rule wrong in ways nobody notices until a reviewer does
- PDF extraction on two-column publisher layouts, where ligatures, hyphenated line breaks and running headers land in the index and quietly poison every retrieval afterwards
- The bibliography drifting out of sync with the body after you cut a paragraph, so the reference list contains entries the text no longer cites
- The manuscript itself, if the only copy of chapter three is a row in a SQLite file your app wrote and nothing else can open
Is that you?
the verdict is a default, not a law
- The references come from a library you curated — Zotero, a BibTeX file, DOIs you pasted — and the model may only choose among them
- Every citation is resolved against Crossref or OpenAlex before it can enter the document, and a failed lookup inserts nothing
- The draft is a file on disk that Word, Pandoc or Obsidian could open tomorrow
- You are writing for yourself and nothing you submit is graded, reviewed or published
- The model can emit an author, a year or a DOI as free text
- You have not read your venue's or your institution's policy on generated text
- The only copy of the manuscript lives in your app's database
- You are bulk-uploading publisher PDFs to a third-party API without checking what their licence says about that
If you build it anyway
the checklist, then the prompt that enforces it
- Citations enter the document only through a resolver. DOI against Crossref or OpenAlex, or metadata extracted from the PDF you uploaded — never a string the model produced.
- Store references as CSL-JSON and render them with citeproc-js against real CSL style files. Every hand-written formatter is wrong in a way you will find out about late.
- Chunk PDFs with page and section anchors, and make every generated claim link back to the page it came from. That link is the only way you will catch the right-paper-wrong-sentence failure.
- Ship a "verify bibliography" command that re-resolves every reference and flags anything that has stopped resolving, and run it before every export.
- Keep the manuscript as markdown or docx on disk with the bibliography in a separate file. Snapshot before every model edit.
- Tag machine-generated ranges in the document metadata. Six months from now, at the viva, you will want to know which sentences were yours.
I am building an academic writing assistant: an editor with AI autocomplete,
a library of PDFs I upload, and inline citations. The failure that matters is
a reference that looks perfect and points to a paper that does not exist.
Order the work around that and push back when I ask you to skip it.
1. Nothing becomes a citation unless it came from a resolved record — a DOI
looked up against Crossref or OpenAlex, or metadata extracted from a PDF I
uploaded. A failed lookup inserts nothing and says so in the UI.
2. The model may select from candidates already in my library. It may never
emit an author, a year, a journal or a DOI as free text. If I ask you to
"just let it generate the reference", refuse and explain this line.
3. Store references as CSL-JSON and render with citeproc-js and real CSL
style files. Do not hand-write an APA or Chicago formatter.
4. Chunk uploaded PDFs with page and section anchors. Every AI-inserted claim
links back to the exact page, because "cited the right paper for the wrong
sentence" is the bug I cannot catch by rereading my own draft.
5. The manuscript is a file: markdown or docx on disk, bibliography in its own
.json. Any database is a derived index I can delete and rebuild.
6. Snapshot the document before every model edit and show me how to restore
one from the command line with the app not running.
7. Record which ranges came from the model in document metadata, and give me
a view that highlights them without changing the exported file.
8. Extract PDFs locally. Before sending any uploaded paper to a third-party
API, tell me which file and ask whether its licence permits that.
9. Build a "verify bibliography" command that re-resolves every reference and
fails loudly on anything that no longer resolves. Wire it into export.
10. Out of scope, and say so rather than half-building it: co-authors,
comments, shared libraries, and anything claiming to detect AI text.That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
The moment the writing is going to be marked, reviewed or published. $29 a month buys a citation engine somebody else keeps correct across thousands of styles, and — more usefully — a support burden that is not yours at the point where a reference turns out to be fictional. If you only wanted better autocomplete over your own prose, build that part and keep your reference manager.
$29/mo is cheaper than your weekend.
Keep two files, not one database: the manuscript as markdown or docx, and the bibliography as CSL-JSON or BibTeX. Both import into Zotero, Pandoc, Overleaf or Word the same afternoon, which means abandoning the project costs you a keyboard shortcut rather than a chapter. If the references only exist as rows your app understands, moving means retyping them.
The reference half, solved and maintained: metadata resolution, CSL rendering and a PDF library.
Active open-source chat interface with document retrieval, which covers the ask-my-PDFs half.
Questions
Doesn't retrieval fix the hallucinated citation problem?
It fixes half of it. Grounding on PDFs you uploaded stops the model inventing a paper out of nothing, but it does not stop it attaching a real reference to a claim that paper never made — and that version is worse, because the reference checks out. The defence is page-level anchors and a link back to the source text, so verifying a claim is a click rather than an afternoon.
Is this different from the Lex entry, which is SHIP IT?
Same editor, different consequence. Lex is your prose in your file, and the worst case is losing a paragraph. Jenni's job is to put claims about other people's research into a document you will hand to someone who grades it. That single extra step — the citation — is what moves it a band.
What's the cheapest version that is actually safe?
Autocomplete and rewriting over a markdown file, with citations pulled from a Zotero library by key and rendered with citeproc-js. The model never sees the reference metadata as something it can produce, only as something it can pick. That build is a weekend and it does not have the failure mode this page is about.
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
The editor is a weekend. The undo history that saves your manuscript at 1am is the actual product.
Paraphrasing is one API call with a good system prompt behind it.
You are building a thing that reads everything you type. At least this way, you are the one reading.
last reviewed 2026-08-04 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice