Research artifacts¶
Beyond scholarly papers, snowcite can ingest any user-supplied research
material — interview transcripts, code, archival documents, notes, dataset
descriptions — and cite it inline alongside the literature. This turns
snowcite into a mixed-methods assistant rather than a pure literature-review
tool.
Supported types¶
| Type | What it is | Typical use |
|---|---|---|
interview |
Transcript of a conversation | Block quotes in findings/discussion |
code |
Source file or snippet | \lstinputlisting / #raw(read()) in methodology |
document |
Archival text, letter, internal doc | Cited like a primary source |
note |
Free-form research note | Referenced in discussion, background |
dataset |
Description of a dataset (not the data itself) | Methodology, data availability |
Only text files are supported. Convert PDFs and .docx with pdftotext or
pandoc first.
Importing¶
From a file:
Import my interview with P03:
path = "interviews/p03.md"
type = "interview"
label = "P03 — first pilot"
summary = "Pilot interview covering onboarding friction"
metadata = {"participant": "P03", "consent": "written", "language": "ru"}
Claude calls import_artifact(path, type, label, summary, metadata).
From chat (for short notes / code snippets typed inline):
Claude calls add_artifact_inline(type, label, content, ...).
Citation format¶
Every artifact gets a compact inline citation:
[I:3]— interview id 3[C:auth.py]— code artifact (label, not id, is shown if available)[D:5]— document[N:2]— note[DS:1]— dataset
These tokens appear inline in the text, and the Primary-sources appendix expands them. Keep the format consistent throughout the document.
Assigning artifacts to a section¶
Outline entries accept artifact_ids alongside paper_ids:
save_outline([
{
"name": "findings",
"target_words": 800,
"paper_ids": [12, 17, 23],
"artifact_ids": [1, 2, 3, 4],
},
])
prepare_section_for_review and regenerate_section_brief load both
automatically. The academic-reviewer subagent verifies quotes against
both abstracts and artifact content.
Writing with artifacts¶
When Claude drafts a section that has assigned artifacts, it:
- Reads the full content of each assigned artifact (not truncated like abstracts — you want verbatim quotes).
- Weaves in quotes, paraphrases, references using the
[X:id]citation labels. - Does not copy entire transcripts — just the relevant excerpts.
Example output:
Early users struggled to connect the two onboarding steps:
«Я не понял, надо ли сначала подтвердить почту или загрузить документ — инструкция была в двух разных местах.» [I:3]
This aligns with prior work on fragmented task flows [Smith2021].
Code inclusion¶
For code artifacts snowcite generates a backend-specific listing snippet:
Claude calls include_code_artifact(artifact_id, backend) and pastes the
returned snippet into the section:
- LaTeX:
\lstinputlisting[caption={auth.py}]{/path/to/auth.py} - Typst:
#figure(caption: [auth.py], raw(read("/path/to/auth.py"), lang: "python"))
Both read the file live from disk at compile time, so code changes propagate automatically.
Primary-sources appendix¶
Artifacts do not enter the main bibliography. Instead, generate an appendix:
Claude calls generate_primary_sources_appendix(backend) and pastes the
returned snippet after the main bibliography. Every included artifact
appears with its citation token, label, type, and summary.
Excluding without deleting¶
set_artifact_included(artifact_id, False) removes an artifact from the
writing pipeline (won't appear in prepare_section_for_review or the
primary-sources appendix) but keeps it in the database. Useful for pilot
interviews that don't make it into the final thesis.
set_artifact_included(artifact_id, True) puts it back.
For a hard delete, use delete_artifact(artifact_id).
What snowcite does not do¶
- No audio transcription. Bring transcripts ready.
- No PDF / .docx parsing. Convert with
pdftotext/pandocfirst. - No data analysis. Use pandas / R / etc. externally, save figures as
PNG, insert them as
#image("plot.png")/\includegraphics. - No automatic qualitative coding. You tag manually via
metadata, or ask Claude to help interactively, but snowcite has no built-in codebook structure.