Building a Literature Review System That Actually Survives
I spent three years trying to keep a proper literature journal during my PhD before I realized most of my setup was just decorative. The process looks clean on paper. In practice it is a mess of PDFs with filenames like "smith_2019_final_rev2.pdf" and notes scattered across three different apps. Here is what I have learned since then. Start with a single source of truth for your references. Zotero is fine, but do not let it be the only place anything lives. I use Zotero for storage and tagging, but my actual literature journal lives as a set of Markdown files linked from a simple index document. Each paper gets its own file named by a consistent convention: YYYY-AUTHOR-FIRSTWORD.md. This makes chronological sorting trivial and lets you grep for specific terms across all your notes at once. The note template I settled on after burning through several iterations has five sections. One is for the paper's core argument stated in your own words in two sentences. Another tracks the methodology and whether it is actually rigorous. A third section is for your critiques and questions. The fourth pulls out exact quotes with full citations. The fifth connects the paper to other works in your journal. This last section is the part most people skip and the one that makes the system useful later.
My indexing document is a table with columns for author, year, topic tags, method, key finding, and status. Status is just: read, need to re-read, discarded, or foundational. The word foundational means this paper becomes a pillar for your review and you should mention it in nearly every section you write. I tag everything with at least two topic labels because papers rarely fit into one category. A paper about neural networks and medical imaging needs both tags, otherwise it disappears when you search by one.
Where People Go Wrong
The most common mistake is collecting without synthesizing. I watched several graduate students build massive libraries of saved PDFs and read zero critical notes. By the time they started writing their actual literature review, they had thousands of references and no idea how they related to each other. The system only works if you force yourself to write the two-sentence summary for every paper you add. If you cannot summarize it, you did not actually read it, and you should not keep it. Another trap is over-tagging. When I first built my journal, I created forty-eight custom tags and spent more time organizing metadata than reading papers. Within six months I had a system too complex to maintain and reverted to manual searching. I ended up with about eight top-level tags and let the content speak for itself. Tags should be stable categories like method type, domain, or theoretical framework. They should not be project-specific because your projects change and your tags become obsolete.
Get the Full Details

A Specific Problem I Encountered
About a year into my literature journal project, I hit a wall with preprints and conference papers that had no DOI. Zotero handles these inconsistently, and my automated citation extraction failed roughly forty percent of the time for non-standard sources. Papers from arXiv, SSRN, and regional conferences kept showing up with missing metadata or incorrect journal names. The workaround was surprisingly simple. I wrote a small Python script using the crossref API for DOI-minted papers and fell back to manual entry for everything else. But the real fix was creating a separate folder in my journal structure called manual-entries where I dumped anything the automation could not handle. I reviewed that folder once a week and either completed the citation data or discarded the paper entirely. This took about twenty minutes per week and eliminated the growing pile of broken references that was making my journal unreliable. I also stopped trying to force every paper into my main index table. Some sources are important context but not central to the argument. They go into a companion document called supporting-materials.md and are only referenced when a section needs additional backing. This keeps the main index focused on what actually matters for the review.
What This Approach Cannot Do
A literature journal is not a replacement for reading. It is a retrieval system for things you have already processed. If you rely on your journal to carry the weight of your understanding, you will produce thin work. The journal preserves your thoughts, not the source material. When you are stuck in a section and realize you do not remember a key detail, you still have to go back to the original paper. The system also does not scale well past roughly two thousand entries. After that point, even good tagging and search becomes inefficient. At that threshold, the better move is to migrate your best notes into a proper knowledge management tool like Obsidian or Logseq, or to consolidate by dropping papers that are no longer foundational. I cleaned my journal down to about eighteen hundred high-signal entries before switching tools. It took a weekend of painful decisions and made the whole system usable again.
Practical Setup Steps
Install Zotero and the Better BibTeX plugin. Configure Better BibTeX to export citations in a consistent format and enable automatic PDF downloading if your institution has access. Set up your Markdown directory structure with a main index file and an entries folder. Create your note template and apply it to every paper from day one. Run your Python cleanup script weekly. Review your index monthly and prune entries you no longer need. This routine takes about an hour per week and keeps the system from decaying. The payoff is that when you sit down to write a literature review section, you can open your index, filter by topic tags, and have a curated list of relevant papers with summaries and connections already written. The actual writing becomes a matter of restructuring what you already know rather than starting from scratch every time. I cut my literature review drafting time from roughly six weeks to about ten days after switching to this system. The earlier you build it, the more dramatic the difference.

Tools and Resources
Zotero is free and open source. The Better BibTeX plugin is available through the Zotero preferences interface. My cleanup script uses the requests library and the crossref Python package, both installable via pip. For the Markdown-based journal structure itself, any text editor works, though VS Code with the Markdown All in One extension makes linking between entries straightforward. I have shared a basic template configuration on GitHub under my username, which includes the note template, index format, and the Python script I described. It is not polished but it is functional and has been used by several researchers who found it after I posted the initial version. If you prefer a more integrated environment, Obsidian has a literature review ecosystem with plugins like Zotero Integration and Templater that automate parts of this workflow. The trade-off is that Obsidian introduces another layer of complexity. For most people doing a standard thesis or dissertation, the plain Markdown approach is sufficient and less prone to breaking when plugins update or change behavior. The core insight is that a comprehensive literature journal is a personal research tool, not a universal solution. It reflects your thinking, not the literature itself. Build it in a way that matches how you actually work, prune it ruthlessly, and never confuse having many references with having understood many references. That distinction is the only thing that matters when you are actually writing.