Research & Academia
Literature review and writing assistance for researchers.
← All modules in this stageResearch is one of the few places where "did you make this up?" is a career-ending question. Claude can dramatically speed up reading, summarising, structuring, and drafting — if you keep a hard line between what's in your sources and what the model thinks.
By the end of this module you'll have
- A working summarise-with-citations prompt that fails loudly when sources don't support a claim
- A clear pattern for literature triage that scales to dozens of papers
- Templates for the writing tasks researchers actually do: abstract, related-work paragraph, peer-review reply
Time: about 1.5 hours for the basics, ~6 hours with all three notebooks.
Prerequisites: Modules 9 (RAG), 13 (content creation), 15 (advanced reasoning).
The non-negotiable rule
Every claim must be traceable to a source you've read. If Claude writes a sentence with no citation, treat it as unsupported. The patterns below all enforce this.
This isn't a stylistic preference — it's the difference between research and "AI-generated text that looks like research".
Recipe 1 · Summarise a paper, with citations to its own sections
from anthropic import Anthropic
from dotenv import load_dotenv
load_dotenv()
client = Anthropic()
paper_text = open("paper.txt").read() # or PDF -> text via your favourite extractor
response = client.messages.create(
model="claude-sonnet-4-6", max_tokens=900,
system=(
"You are a careful research assistant. Summarise the paper below. "
"For every factual claim in your summary, append a section reference in brackets, "
"e.g. [§3.2] or [Abstract]. If you cannot find a section reference, do NOT make the claim. "
"Output: 6 bullet points covering: question, method, data, key result, limitations, future work."
),
messages=[{"role": "user", "content": paper_text}],
)
print(response.content[0].text)
You should see bullets like "Method: a transformer with rotary positional embeddings [§3.1]". Sentences without references shouldn't exist; if they do, that's a sign to push back on the prompt or distrust the model.
Recipe 2 · Literature triage
When you have 30 candidate papers and no time, you don't read them all. You triage — figure out which 5 to read in depth.
def triage(title: str, abstract: str, my_focus: str) -> dict:
response = client.messages.create(
model="claude-haiku-4-5-20251001", max_tokens=200,
system=(
"You are screening papers for a literature review. Output one JSON object with: "
'{"relevance": "high"|"medium"|"low", '
'"why": short string referencing the abstract, '
'"open_q": one open question this paper might help answer or "n/a"}'
"Use only what's in the abstract. Do not invent details."
),
messages=[{
"role": "user",
"content": f"MY FOCUS: {my_focus}\n\nTITLE: {title}\n\nABSTRACT: {abstract}",
}],
)
import json
return json.loads(response.content[0].text)
# Run over your bibliography; sort by relevance.
This is a filter, not a substitute for reading. The "high" pile is what you read carefully. The "low" pile is parked. The triage saves the read time, not the reading.
Recipe 3 · Related-work paragraph
You have a stack of papers you've read and notes on each. You need a tightly-cited paragraph for your introduction.
notes = """\
[Smith 2024] showed that X improves Y by Z%.
[Patel 2025] argued the opposite — that the gain disappears with proper controls.
[Lee 2023] introduced the dataset everyone now uses; reported strong baselines.
"""
related = client.messages.create(
model="claude-opus-4-7", max_tokens=400,
system=(
"Draft a related-work paragraph (≤180 words) for the introduction of a research paper. "
"Cite every claim with the bracketed handle from the notes (e.g. [Smith 2024]). "
"Do NOT add citations not present in the notes. Do NOT make claims the notes don't support."
),
messages=[{"role": "user", "content": "Notes I have:\n" + notes}],
).content[0].text
print(related)
The output uses the citation handles you supplied. If a model invents [Jones 2024], that's an easy automated check (regex against the supplied handles).
Recipe 4 · Peer-review reply
Replying to reviewers is its own skill. The template is brutally consistent.
review = """\
Reviewer 2: 'The experiments only use one dataset. The claims of generality are unjustified.'
"""
response_letter = client.messages.create(
model="claude-sonnet-4-6", max_tokens=400,
system=(
"You are drafting a polite, substantive reviewer response. Format: "
"1) Restate the concern in one sentence. "
"2) Acknowledge specifically what is fair. "
"3) Describe the concrete change made (or rebut, with evidence). "
"4) Point to the new section/figure. "
"Do not invent experiments; if asked to add one, write [TODO: run X]."
),
messages=[{"role": "user", "content": review}],
).content[0].text
print(response_letter)
The [TODO: run X] rule keeps you honest. The model is drafting language, not committing you to experiments you haven't run.
Things to never do
| Don't | Because |
|---|---|
| Ask Claude to "find papers on X" | It will invent realistic-looking ones (wrong years, wrong authors). Use a real search engine. |
| Paste your draft and ask for a "punch-up" without a voice guide | Your tone will drift toward generic academic-ese. |
| Trust a literature summary for citations | Even with the citation rule, sample-check before building on it. |
| Use a paper-only prompt to fact-check a claim | The model can only check against what's in the prompt. Wider claims need a real source check. |
| Submit text containing "[TODO]" markers | They survive. They get noticed. |
Try changing one thing
- Run the triage on a bibliography you already screened by hand. Compute agreement. If it's below 80%, sharpen the rubric.
- Take your last accepted paper's introduction. Generate the related-work paragraph with the citation rule. Compare.
- Build a
verify_no_invented_cites(text, allowed_handles)function that fails on any bracketed citation not in the allowed list. - Add a "structured-output" version where the related-work paragraph is JSON:
[{"sentence": "...", "cites": ["Smith 2024"]}]. Trivially auditable.
Going deeper: open the notebooks
notebooks/01_introduction.ipynb— citation discipline, summary patterns (~1.5–2h)notebooks/02_intermediate.ipynb— literature review pipelines, structured note-taking (~2–3h)notebooks/03_advanced.ipynb— academic ethics, reproducibility, when to disclose AI assistance (~1.5–2.5h)
Module checklist
- [ ] You've summarised a real paper with section references and verified them against the source
- [ ] You've triaged a bibliography and compared the result to your own judgement
- [ ] You can name three things you would never delegate to Claude in research
- [ ] You have a checking step that catches invented citations before they reach a reader
Next module
Module S3 · Creative Writing — different rules entirely, because invention is the point.