flowchart LR
S1[/"STAGE I<br><b>Triage</b><br>(15 min)"/]
S2[/"STAGE II<br><b>Analyseblitz</b><br>(Mock → Real)"/]
S3[/"STAGE III<br><b>Draftschreiben</b><br>(80% Complete)"/]
D1[("Discard<br>or Defer")]
C1[("Share with<br>Collaborators")]
S1 -->|"Pass"| S2
S2 -->|"Sniff Test ✓"| S3
S1 -->|"Fail"| D1
S3 -->|"Ready"| C1
style S1 fill:#C0D6DF,stroke:#2F6690,stroke-width:2px,color:#212529
style S2 fill:#fff8e1,stroke:#F0A202,stroke-width:2px,color:#212529
style S3 fill:#d4edda,stroke:#1e5c4b,stroke-width:2px,color:#212529
style D1 fill:#f8d7da,stroke:#A0030B,stroke-width:2px,color:#212529
style C1 fill:#d4edda,stroke:#008767,stroke-width:2px,color:#212529
Description
Blitzschreiben is a system that I conceptualized in order to make sure I was being efficient with my time when doing academic research. There are a number of time consuming activities, and while I can’t “fix” them all, there really are a few things that I thought could be helped. The overall concept is outlined here.
I feel like most researchers have their own ways of approaching things, so this might not be liked by everyone. However, this does do a few things that I think are helpful, like help with simulating data for testing statistical methods, keep track of core information, and help some tasks move just a bit faster with better quality results, ideally.
This is a brief example of how I use this system to help with writing. These functions come from the PRoMAn package that I have authored; more information that can be found here.
The Three-Stage Pipeline
Blitzschreiben organizes research projects into three distinct stages:
| Stage | Name | Goal | Time Target |
|---|---|---|---|
| I | Triage | Decide if idea is worth pursuing | ~15 minutes |
| II | Analyseblitz | Develop and execute analysis | Variable |
| III | Draftschreiben | Write manuscript to 80% completion | Variable |
Stage I forces quick decisions so you don’t waste weeks on dead-end ideas. Stages II and III reward the ideas that survived with structured, quality-focused development.
Here is the overall pipeline:
Starting a Project
Since this is a part of PRoMAn, this works like any other project that relies on this package. I will create a “Test Project” as an example. The following is a typical project creation:
#load in PRoMAn
library(PRoMAn)
# Set up the project folder - code is not required. If you do not add in an explicit parent directory, as I did here, you will be prompted to select one with the file explorer.
create_project("TS", "Test Project", "zero-value project for testing PRoMAn functions")
# when you run the above function, the terminal will show you your new project directory, which you can copy and paste here:
set_project("C:/Users/jhelle12/Desktop/projects/TS")
# since the create_project() function also sets the directory, you don't have to enter the path, but that only works because the working directory is set. You can also use setWD() and then set_project() does not require input.If you haven’t seen a PRoMAn project yet, now is a good time to see what folders were created and how the directory is now set up for your project. This is also outlined (at my website).
In general, all of the things we do here will primarily concern the “personal_notes” folder, and also the “sources” folder.
The First Stage
The first stage in the Blitzschreiben system is to conduct idea triage. The goal is to quickly make a decision about whether or not your idea should be pursued in its current form.
You can initiate a “card” using the following function:
init_blitz_project(
project_code = "TS",
idea_title = "Testing the Efficacy of Automated Academic Writing Workflows"
)Project codes are often used to refer to the project work in PRoMAn functions. The way I use them is discussed in the tutorial at my website. These do not have to be used in the form I suggest, however, if you give your project a name be careful not to get these mixed up in PRoMAn function calls.
This first stage does not only serve as a threshing floor for ideas - assuming that you proceed with your idea, these first stage cards will carry forward information for the next stages. So, even if you feel like you know that you want to follow through with the project, this is how you simultaneously begin the groundwork.
This will create a markdown template called “stage1_triage_Test Project.md.” Which, is just “stage1_triage_” + your project name. It will be in your personal_notes folder. All of this info will be displayed in the console too, and it will also prompt you to start a timer if you are going to begin triage. It should take about 15 minutes per idea, and you should be able to process about four ideas at a time if you have them. This way, you can record insights, small ideas and questions, and then take a solid fifteen minute session to really interrogate the tractability of your ideas.
The markdown card will look something like this:
Stage I: Project Planning
Date
2025-11-05
Blitz: Testing the Efficacy of Automated Academic Writing Workflows
Research Question
Our research question was if certain methods of academic writing, such as PRoMAn, are associated with an increase in research quality and a decrease in time spent on project development.
Dataset(s)
- Source: test data
- Status: accessible
- Notes: Everything is good to go.
Sample Description (Table 1 Sketch)
- N ≈ 750
| Role | Variable | Type | Values/Range | Description |
|---|---|---|---|---|
| Exposure | PRoMAn_usage | numeric | 1-180 | time of working on a project while using PRoMAn, in hours |
| Outcome | efficiency | numeric | 1-20 | a score based on quality of research using the GRADE system, and time spent on research |
| Covariate | age | numeric | 20-67 | Age in years |
| Covariate | diagnosis_date | date | 2020-01-01 - 2023-12-31 | Date of diagnosis |
| Covariate | gender | factor | m,f | Gender/Sex |
| Covariate | test_factor | factor | a,b,c | just a made up factor for test |
Methods / Analysis Plan
- We plan on conducting t-tests in order to associate efficiency score with time spent using PRoMAn while conducting academic research.
- We plan to account for experience, which may be more important than the use of a pcakage
- plot of time to project finish vs. PRoMAn time use
Background Rationale
- Nobody ever researched this amazing package
Barriers or Challenges
- Nobody has ever used this amazing package
Status / Next Step
- Next step: prepare to recruit collaborators
This may take more than one round of the primary stage in order to complete, and I suggest gathering documents and resources before your triage in order to fill this out. That is usually how I approach this; I will have some notes, a potential data source, and a question. Then I’ll sit down, put it quickly into this framework, and then see if is worth developing further. If it isn’t worth it after this and fifteen minutes of pondering, then I toss it. If I think it has potential, but is not quite ready for sharing with others, I mark it for needing more development, and then I’ll rotate it back in to my triage sessions so that it gets another 15 minutes or so of development time in the next round of triage.
Sometimes these are difficult to fill out completely without further input, however the more you can put here the better, as you’ll see in the next step. I don’t only mean that philosophically.
When filling out the card above, be sure to keep formatting to the example as much as possible. This card is going to be read by PRoMAn so that this information can be readily used in the next stages, and it needs to be in expected formats so functions can parse it correctly. This info will also go into the “lexicon” of your project, a hidden .proman file that records key information for reference.
deleting or changing large parts of the card, rather than filling it out might mean that the second stage and further do not work correctly.
Keep with the format in the example as closely as possible, and it will work fine, but putting strange values for ranges or unrecognizeable variable types might break PRoMAn’s ability to help you out.
Stage II - Analyseblitz
Once you have decided your idea passes muster and it’s time to start with the analysis, you can initiate the second stage with:
# Create the Stage II Analyseblitz template
create_analyseblitz_template(
project_code = "TS",
analysis_type = "experimental" # Options: "regression", "descriptive", "survival", "experimental", "mixed"
)This will create a Quarto document (analyseblitz_TS.qmd) in your personal_notes folder. This document is intended to be a sort of lab notebook in which you are able to test out and finalize your project methods.
A Mock-Then-Real Approach
Stage II is conceptually geared for a test run of your planned analysis using simulated data, so that you have a safe space for trial and error before acquiring data or before the real analysis. This allows you to:
Test new R packages without risking real data
Examine weak spots in your analysis plan
Learn something new before the real deal
Develop your analysis plan hands-on, even without data access yet
The workflow is:
Prep Phase: Find references, load packages
Mock Analysis: Use simulated data, write and debug analysis code
Real Analysis: Copy-paste from mock, swap in real data
Sniff Test: Do results make sense?
Automatic Data Simulation
One of the most powerful features is that PRoMAn automatically generates simulation code based on your Stage I variable table. When you create a Stage II template, it parses your variable specifications and generates appropriate R code:
#| eval: false
# The Stage II template will include code like this, auto-generated:
set.seed(42)
n <- 750 # From your Stage I sample size
sim_data <- data.frame(id = 1:n)
# PRoMan_usage (numeric): time using PRoMan, in hours
sim_data$proman_usage <- runif(n, min = 1, max = 180)
# efficiency (numeric): GRADE-based efficiency score
sim_data$efficiency <- runif(n, min = 1, max = 20)
# age (numeric): Age in years
sim_data$age <- runif(n, min = 20, max = 67)
# gender (factor): Gender/Sex
sim_data$gender <- sample(c("m", "f"), n, replace = TRUE)
# test_factor (factor): made up factor for test
sim_data$test_factor <- sample(c("a", "b", "c"), n, replace = TRUE)When you create a second stage document (and then third), a number of things will be automatically carried forward. PRoMAn keeps track of a number of things so that your work hopefully is easier to conduct at a better quality. Some of the things you will find automatically in the second stage quarto document (and respective folders):
simulation data based on your stage I card variables table for testing analysis methods
a bibliography from any PDFs that you have put into your “sources” folder
The beginning of an abstract that might be useful for sharing with your collaborators, submitting for conferences, etc.
Stage III - Writing
Once your analysis passes the “sniff test” and you’re confident in the results, it’s time to write:
#| eval: false
# Create Stage III draft template
create_blitz_template(3, "TS", title = "Test Research Paper")The 80% Rule
The goal of Stage III is to reach 80% completion before sharing with collaborators. This means:
All sections have substantive content (not just placeholders)
Key figures and tables are drafted
Main argument is clear and supported
References are in place
This respects collaborators’ time by not asking them to review a skeleton, while still leaving room for their substantive input.
Automatic Content Population
The Stage III template automatically pulls forward:
Research question from Stage I
Sample description from Stage I variable table
Methods summary from Stage II analysis type
Background rationale from Stage I
Bibliography & Sources Management
At any time, you can create a bibTex style bibliography for the sources in your sources folder. This function parses information from the PDF itself and uses CrossRef to check for further article information and corroborate metadata.
As long as all the sources you want to use are in your sources folder in your PRoMAn project, you can run this code to create a bibtex bibliography:
#create a bibliography from PDFs in the sources folder.
generate_bibliography()The function uses a multi-layered approach:
DOI extraction from the PDF text
CrossRef lookup for complete, verified metadata (if DOI found)
First-page parsing for title, authors, year, journal
PDF metadata as fallback
This function can be error-prone (as all bibliography software is), but it provides a great starting point. Always verify the generated entries, especially for conference proceedings, book chapters, and older scanned PDFs.
Tagging PDFs
You can tag PDFs to organize your sources:
#| eval: false
# Tag specific PDFs
tag_pdfs(c("smith2020.pdf", "jones2019.pdf"), tags = c("methods", "key-paper"))
# Generate bibliography for only methods papers
generate_bibliography(tag = "methods")Annotated Bibliography
We can create an annotated bibliography with the following function:
#create an annotated bibliography skeleton from the bibliography:
annotated_bibliography()This creates an annotated bibliography Quarto document in your personal_notes folder that includes all of the information from your BibTeX file. As the name implies, annotated_bibliography() is intended to help the user quickly add notes to their bibliography. The file includes structured fields for:
Relevance: high/medium/low
Summary: One-sentence description
Methods Notes: Key methodological approaches
Key Findings: Results relevant to your work
This file is also recognizable and parseable by PRoMan, so your annotations can be incorporated back into your bibliography.
Updating the Bibliography
After adding annotations or importing external .bib files (perhaps from a reference management application like Mendeley), update your master bibliography:
#| eval: false
# Update bibliography with annotations and merge other .bib files
update_bibliography()This function:
Parses annotations from your annotation file
Extracts annotations from reading notes
Merges any other
.bibfiles in the sources folderRemoves duplicates
Creates a unified, annotated bibliography
Creating Reading Notes
When reading individual sources, PRoMAn can create structured reading notes:
#| eval: false
# Create a reading note (interactive PDF selection)
create_pdf_reading_note()
# Create note for a specific PDF
create_pdf_reading_note("important_paper.pdf", project_code = "TS")This creates a markdown file in personal_notes/reading/ with auto-extracted bibliographic information, a BibTeX entry, and structured sections for summarizing the paper and noting its relevance to your work.
Reviewing Reading Notes
#| eval: false
# Review all reading notes
review_reading_notes()
# Review notes from the last 7 days
review_reading_notes(days_back = 7)
# Review notes for a specific project
review_reading_notes(project_filter = "TS")Other Bibliography Functions
#| eval: false
# Check bibliography status
check_bibliography()
# Find missing DOIs via CrossRef search
find_missing_dois()
# Rename PDFs based on extracted metadata (preview first)
rename_pdfs()
rename_pdfs(apply = TRUE) # Apply the renames
# Export to other formats
translate_bibliography("ris") # For EndNote, Zotero
translate_bibliography("csv") # For spreadsheet analysisCommunication Extras
Some of the notes and docs here may not be too appealing for collaborators. Different collaborators may want more executive summaries, examples of how to do the methods if you mentoring them regarding the methods, etc. PRoMAn has a few functions to help with that using the information you put together here.
Collaborator Onboarding Packages
When bringing a new collaborator onto a project, you can automatically generate an onboarding package that pulls information from your Blitzschreiben stages:
Collaborator Onboarding Packages
When bringing a new collaborator onto a project, you can automatically generate an onboarding package that pulls information from your Blitzschreiben stages:
This creates a folder (collaborator_onboarding_[DATE]/) containing multiple documents tailored to different needs:
Package type options:
"executive"— High-level strategic overview for senior collaborators or advisors"tutorial"— Educational explanation of methods for those learning the approach"operational"— Technical details for hands-on contributors"mixed"— All three types (recommended for most situations)
The generated package includes a navigation document (00_START_HERE.md) that helps your collaborator quickly find what they need:
## Quick Start Recommendations
**If you're here to:**
- **Provide strategic input** → Start with Executive Summary
- **Learn the methods** → Start with Tutorial Walkthrough
- **Do hands-on work** → Start with Operational Details
- **Understand everything** → Read in order: Executive → Tutorial → Operational
What Gets Pulled Into Onboarding Documents
PRoMan automatically extracts information from your existing project files:
| Document | Information Sources |
|---|---|
| Executive Summary | Research question, background rationale, key findings, publication plans |
| Tutorial Walkthrough | Methods explanation, analysis steps, interpretation guidance |
| Operational Details | File structure, data dictionary, code organization, reproduction steps |
Generate onboarding packages after completing Stage I and making progress on Stage II. The more complete your Blitzschreiben documents, the more useful the auto-generated onboarding materials will be.
Email Templates
For regular communication with collaborators, PRoMan can generate structured email templates:
#| eval: false
# Progress update email
create_update_template(project_code = "TS", update_type = "progress")
# Milestone announcement
create_update_template(project_code = "TS", update_type = "milestone")
# Request for input or feedback
create_update_template(project_code = "TS", update_type = "request")
# Sharing key results
create_update_template(project_code = "TS", update_type = "results")
Update type options:
| Type | Use When |
|---|---|
"progress" |
Regular check-ins, weekly/biweekly updates |
"milestone" |
Completing a major phase or achieving a key goal |
"request" |
Needing specific input, expertise, or feedback |
"results" |
Sharing findings and discussing implications |
Each template includes structured sections appropriate for that communication type. For example, a results update template includes:
Main findings with space for interpretation
What the results suggest
Next steps and publication timeline
Request for discussion
Meeting Agendas
Generate structured meeting agendas for different project phases:
#| eval: false
# Kickoff meeting with new collaborators
create_meeting_agenda(
project_code = "TS",
meeting_type = "kickoff",
attendees = c("Dr. Smith", "Dr. Jones", "Graduate Student A")
)
# Regular progress meeting
create_meeting_agenda(project_code = "TS", meeting_type = "progress")
# Results discussion meeting
create_meeting_agenda(project_code = "TS", meeting_type = "results")
# Project planning meeting
create_meeting_agenda(project_code = "TS", meeting_type = "planning")
Meeting type options:
| Type | Purpose | Typical Duration |
|---|---|---|
"kickoff" |
Project overview, roles, initial planning | 30 min |
"progress" |
Status updates, challenges, next steps | 30 min |
"results" |
Present findings, discuss interpretation, plan publication | 45 min |
"planning" |
Goals review, resource allocation, timeline | 30 min |
Each agenda includes:
Timed sections appropriate for that meeting type
Space for action items with assignees and due dates
Notes section for meeting documentation
Communication Workflow Example
Here’s how these tools fit into a typical collaboration workflow:
#| eval: false
# 1. When a new collaborator joins
create_collaborator_onboarding(
project_code = "TS",
collaborator_name = "Dr. Smith",
package_type = "mixed"
)
# 2. Schedule and prepare for kickoff meeting
create_meeting_agenda(
project_code = "TS",
meeting_type = "kickoff",
attendees = c("Dr. Smith")
)
# 3. Send regular progress updates
create_update_template(project_code = "TS", update_type = "progress")
# 4. When you have results to share
create_update_template(project_code = "TS", update_type = "results")
create_meeting_agenda(project_code = "TS", meeting_type = "results")
# 5. Request specific input when needed
create_update_template(project_code = "TS", update_type = "request")
All generated templates are starting points. PRoMan pulls what it can from your project files, but you should always review and customize the content before sharing with collaborators. The placeholders (marked with [brackets]) indicate where you need to add specific information.
Complete Workflow Example
In reality, all of that code above is executed like this:
#| eval: false
### Test project for PRoMan Development
#-------------------------------------------------------------------#
library(PRoMan)
# ─────────────────────────────────────────────────────────────────
# PROJECT SETUP
# ─────────────────────────────────────────────────────────────────
# create_project("TS", "Test Project", "zero-value project for testing PRoMan functions")
set_project("C:/Users/jhelle12/Desktop/projects/TS")
# ─────────────────────────────────────────────────────────────────
# STAGE I: TRIAGE
# ─────────────────────────────────────────────────────────────────
init_blitz_project(
project_code = "TS",
idea_title = "Testing the Efficacy of Automated Academic Writing Workflows"
)
# ... fill out the Stage I card in personal_notes/ ...
# ─────────────────────────────────────────────────────────────────
# STAGE II: ANALYSEBLITZ
# ─────────────────────────────────────────────────────────────────
create_analyseblitz_template(project_code = "TS", analysis_type = "experimental")
# ... complete mock analysis, then real analysis ...
# ─────────────────────────────────────────────────────────────────
# BIBLIOGRAPHY MANAGEMENT
# ─────────────────────────────────────────────────────────────────
# Creating a bibliography from PDFs in the sources folder
generate_bibliography()
# Testing annotated bibliography file
annotated_bibliography()
# ─────────────────────────────────────────────────────────────────
# STAGE III: DRAFTSCHREIBEN
# ─────────────────────────────────────────────────────────────────
# Create Stage 3 Draftschreiben template
create_blitz_template(3, "TS", title = "Test Research Paper")
# ─────────────────────────────────────────────────────────────────
# COMMUNICATION WITH COLLABORATORS
# ─────────────────────────────────────────────────────────────────
# Create onboarding package for new collaborator
create_collaborator_onboarding(
project_code = "TS",
collaborator_name = "Dr. Smith",
package_type = "mixed"
)
# Generate meeting agenda
create_meeting_agenda(project_code = "TS", meeting_type = "results")
# Create email template for sharing results
create_update_template(project_code = "TS", update_type = "results")Tips for Success
Do’s
Fill out Stage I cards completely — the more detail, the better your auto-generated Stage II content
Respect the 15-minute triage limit — it’s designed to prevent overthinking
Use the mock analysis phase — it catches problems before they matter
Keep PDFs in the sources folder — bibliography generation works automatically
Tag your PDFs — makes it easy to generate targeted bibliographies
Customize templates before sending — auto-generated content is a starting point
Don’ts
Don’t skip Stage I — even for “obvious” projects, the card captures crucial information
Don’t modify card structure — PRoMan parses specific formats
Don’t share before 80% — respect collaborators’ time
Don’t let Stage I pile up — triage regularly to keep the pipeline flowing
Don’t send templates without review — always personalize before sharing
Function Reference
| Function | Purpose |
|---|---|
| Blitzschreiben Pipeline | |
init_blitz_project() |
Start tracking a new project, create Stage I card |
create_analyseblitz_template() |
Create Stage II analysis template |
create_blitz_template(3, ...) |
Create Stage III draft template |
start_triage_timer() |
Begin timed triage session |
check_triage_time() |
Check remaining time |
| Bibliography Management | |
generate_bibliography() |
Create .bib from PDFs |
tag_pdfs() |
Tag PDFs for organization |
annotated_bibliography() |
Create annotation template |
update_bibliography() |
Merge and update bibliography |
find_missing_dois() |
Search for missing DOIs |
rename_pdfs() |
Standardize PDF filenames |
translate_bibliography() |
Export to RIS/CSV |
check_bibliography() |
View bibliography status |
| Reading Notes | |
create_pdf_reading_note() |
Create structured reading note |
review_reading_notes() |
Review and compile notes |
| Communication | |
create_collaborator_onboarding() |
Generate onboarding package for new collaborator |
create_update_template() |
Create email template (progress/milestone/request/results) |
create_meeting_agenda() |
Generate meeting agenda (kickoff/progress/results/planning) |