Blitzschreiben Workflow & Primer

How to use PRoMAn to Complete Projects Faster

PRoMAn includes a number of modules for a system of writing and managing projects, and this provides a brief overview on how that works.
Author

John Grady Heller

Published

April 28, 2026

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:

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
Figure 1: The Blitzschreiben Three-Stage 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"
)
WarningProject Codes

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.

ImportantCard Format When Editing

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:

  1. Prep Phase: Find references, load packages

  2. Mock Analysis: Use simulated data, write and debug analysis code

  3. Real Analysis: Copy-paste from mock, swap in real data

  4. 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)
NoteAutomatic Carrying Forward of Previous Stage Work

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:

  1. DOI extraction from the PDF text

  2. CrossRef lookup for complete, verified metadata (if DOI found)

  3. First-page parsing for title, authors, year, journal

  4. PDF metadata as fallback

NoteCitation Accuracy

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:

  1. Parses annotations from your annotation file

  2. Extracts annotations from reading notes

  3. Merges any other .bib files in the sources folder

  4. Removes duplicates

  5. 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 analysis

Communication 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
TipBest Practice

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")
NoteCustomization Required

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)