Utils to streamline attendee/speaker/staff reporting stats for the PSF post-event survey.
├── src/ # Scripts
│ └── fetch_current_survey.py # Download survey questions → draft response file
├── results-and-reports/ # Output files (draft responses, analysis results)
├── data-input-has-PII-not-committed/ # Source data (Pretix, Sessionize) - gitignored
└── docs/ # Reference documentation
The draft_response_YYYY.txt file serves three purposes:
- Working document - edit over multiple days
- Copy/paste source - easy to select each answer
- Question reference - see the actual question to ensure your answer matches
This may take multiple sessions, so the process is designed to save work as you go.
- Get current year event survey link from PSF
- Run
src/fetch_current_survey.pyto download questions and create draft response - Edit and save the draft file as you answer questions
- Download source data from Pretix/Sessionize for analytics questions (e.g. attendee demographics)
- Note: These files are gitignored. Do NOT save PII into text files.
- Run Pandas scripts for demographic analysis (may need modification if questions change)
- Copy Pandas output into appropriate response sections
- When done, open the survey URL and copy/paste responses from draft file
- Commit changes and push to PyBay GitHub repo
# Generate a draft response file from a Google Form URL
python src/fetch_current_survey.py "https://docs.google.com/forms/d/e/.../viewform"
# Output goes to results-and-reports/draft_response_YYYY.txt by default
# Or specify a custom output path:
python src/fetch_current_survey.py "https://docs.google.com/forms/d/e/.../viewform" -o results-and-reports/draft_response_2025.txtThe script dynamically extracts questions from the form, so if PSF updates their questions year-over-year, just run with the new URL.
Use rapidfuzz to reduce manual work by pre-populating responses from prior year:
- Load prior year's
results-and-reports/draft_response_2024.txt - Parse each
##section to get question + response pairs - For each current year question:
- Fuzzy match against prior year questions using
rapidfuzz - If score >= 95% AND question is not analytics-specific (Attendees, Speakers/Coaches, Staff)
- Pre-populate with prior response, prefixed with:
[DRAFT - COPIED FROM 2024 - REVIEW AND UPDATE]
- Fuzzy match against prior year questions using
This saves time on recurring text responses like Venue (if same location), Sponsors (if similar), Retrospective boilerplate, etc.