A Python-based web application that automatically fills scoreboard CSV templates using fuzzy-matched team names from raw pasted standings data.
- π Web Interface - Easy-to-use web UI for pasting data and uploading templates
- π Drag & Drop CSV Upload - Upload your scoreboard template with one click
- π― Smart Text Parser - Handles various formats (tab-separated, space-separated, multi-space)
- π Fuzzy Matching - Handles spelling mistakes, spacing issues, and case differences using
rapidfuzz - π Match Confidence Reporting - Visual feedback with color-coded confidence scores
- β¬οΈ Instant Download - Get your filled scoreboard immediately
- π Real-time Preview - See match results before downloading
- Python 3.11+
- pandas
- rapidfuzz
- streamlit
All dependencies are already installed in this Replit environment.
The web app is already running! Just open the webview in Replit and:
- Paste your raw standings data in the left text area
- Upload your CSV template on the right
- Click "Process Scoreboard"
- Download your filled scoreboard with one click!
python scoreboard_autofill.py-
Paste Raw Standings Data
- The tool will prompt you to paste your raw standings
- Press Enter on an empty line to finish
-
Provide Template CSV Path
- Enter the path to your template CSV file
- Example:
example_template.csv
-
Review Results
- The tool shows fuzzy match confidence scores
- Green (π’) = >90% confidence
- Yellow (π‘) = 75-90% confidence
- Orange (π ) = <75% confidence
-
Get Output
- Filled scoreboard saved as
filled_scoreboard.csv
- Filled scoreboard saved as
The tool accepts raw standings in various formats:
Rank Participant Total Points Placement Points Kill Points
1st GlitchXReborn 15 10 5
2nd Sinewy Esports 9 6 3
1st GlitchXReborn 15 10 5
2nd Sinewy Esports 9 6 3
1st GlitchXReborn 15 10 5
2nd Sinewy Esports 9 6 3
Your template CSV should have at least these columns:
- A team name column (automatically detected: "Team Name", "Team", "Participant", or "Name")
- Columns for placement and kill points (will be created if not present)
Rank,Team Name,Placement Points,Finishes
1,GlitchXReborn,,,
2,Sinewy Esports,,,
Create a CSV file with your team names:
Rank,Team Name,Placement Points,Finishes
1,GlitchXReborn,,,
2,Sinewy Esports,,,
3,Team Velocity,,,
Save as my_scoreboard.csv
Copy your standings data from any source (spreadsheet, website, document)
python scoreboard_autofill.pyWhen prompted:
- Paste your raw standings
- Enter template path:
my_scoreboard.csv - Review the match summary
- Check
filled_scoreboard.csvfor results
This project includes example files for testing:
python scoreboard_autofill.pyWhen prompted:
- Paste the contents of
sample_input.txt - Enter template path:
example_template.csv
The tool uses rapidfuzz to handle:
- Spelling mistakes: "Glitch Reborn" β "GlitchXReborn"
- Different spacing: "TeamVelocity" β "Team Velocity"
- Case differences: "SINEWY ESPORTS" β "Sinewy Esports"
- Missing characters: "Phoenix Gamng" β "Phoenix Gaming"
- Extra characters: "Noova Squad" β "Nova Squad"
Default threshold: 75% similarity required for a match
Teams below this threshold will be reported as unmatched.
The tool generates:
- filled_scoreboard.csv - Your template with data filled in
- Console Summary - Shows:
- Successfully matched teams
- Fuzzy match confidence scores
- Unmatched teams (if any)
- Placement points and kill points filled
For best results, ensure template team names are:
- Spelled correctly
- Consistent with source data
- Free of extra whitespace
If teams don't match:
- Check spelling in template
- Verify team name in raw data
- Lower the match threshold if needed (edit line 145 in script)
The tool automatically detects these column name variations:
- Team names: "Team Name", "Team", "Participant", "Name"
- Placement: "Placement Points", "Placement", "Place Points"
- Kills: "Finishes", "Kill Points", "Kills", "Finish Points"
Edit scoreboard_autofill.py line 145:
matcher = FuzzyMatcher(match_threshold=75) # Change 75 to your preferenceLower = more lenient matching (more false positives) Higher = stricter matching (more misses)
Edit scoreboard_autofill.py line 374:
output_path = "filled_scoreboard.csv" # Change to your preference.
βββ scoreboard_autofill.py # Main script
βββ example_template.csv # Sample template
βββ sample_input.txt # Sample raw standings
βββ README.md # This file
- Ensure your data has at least 5 columns
- Check that numbers are in the last 3 columns
- Verify rank is in the first column
- Rename your team column to "Team Name", "Team", "Participant", or "Name"
- Or, the tool will use the second column by default
- Check for typos in template
- Ensure team names in raw data match template
- Consider lowering the match threshold
- The tool skips header rows automatically
- Empty lines in input are ignored
- Output always saves as
filled_scoreboard.csv(customize if needed) - Original template is never modified
Once complete, you'll have:
- β Filled scoreboard CSV ready to use
- β Match confidence report for verification
- β Summary of all matched and unmatched teams
Made for easy scoreboard management! π