The Game Changer: Review 192 detections instead of 6,201!
After Praven Pro validates your BirdNET data, you might have thousands of detections marked for manual review:
Results:
Accepted: 581
Rejected: 23
Needs Review: 6,201 ← Too many to review!
Nobody wants to review 6,201 detections manually.
Instead of reviewing ALL 6,201 detections, Praven automatically selects the top 3 best representatives for each species.
For each detection needing review, Praven calculates a quality score based on:
Quality Score = Base Confidence
+ 0.10 (if no warnings)
+ 0.05 (if valid temporal window)
+ 0.05 (if valid habitat)
Higher quality score = more representative detection
For each species, Praven selects the top 3 highest-quality detections.
These are the cleanest, most confident, most biologically plausible detections for that species.
You review the top 3 for each species and make a species-level decision:
Smart review is enabled by default. Just run Praven normally:
python validate.py detections.csv \
--lat 63.341 --lon 10.215 \
--habitat wetland
You’ll automatically get:
review.csv - All 6,201 detections (for reference)PRIORITY_REVIEW.csv - Only 192 detections (review these!)from praven.pipeline import create_pipeline
# Smart review enabled by default
pipeline = create_pipeline(
location=(63.341, 10.215),
habitat_type="wetland"
)
outputs = pipeline.process_birdnet_csv("detections.csv")
# Priority review file in outputs['priority_review']
If you want to review all detections manually:
pipeline = ValidationPipeline(config, smart_review=False)
This file contains only the top 3 detections per species (192 total).
common_name,confidence,quality_score,temporal_valid,habitat_valid
Graylag Goose,0.95,1.05,true,true
Graylag Goose,0.92,1.02,true,true
Graylag Goose,0.88,0.98,true,true
Great Snipe,0.87,0.97,true,false
Great Snipe,0.83,0.93,true,false
Great Snipe,0.79,0.89,true,false
...
For each species, check the spectrograms for the top 3 detections.
Example: Graylag Goose
Example: Phantom Species
You can apply decisions programmatically:
from praven.review_selector import apply_species_decisions
# Your manual review decisions
decisions = {
'Graylag Goose': 'accept',
'Lesser Spotted Woodpecker': 'reject',
'Great Snipe': 'accept',
# ... 85 species total
}
# Apply to all detections
final_df = apply_species_decisions(validated_df, decisions)
# Save final results
final_df.to_csv('final_validated.csv')
Total detections: 6,805
Accepted: 581 (auto)
Rejected: 23 (auto)
Review: 6,201 (manual) ← Would take ~207 hours!
Priority Review: 192 detections (top 3 for 85 species)
@ 3 min per species = ~4 hours
Workload reduction: 97%
Scientific validity:
If 3 independent, high-quality detections are all valid (or all invalid), you can be confident about the species.
output/
├── praven_results_full.csv # All 6,805 detections
├── praven_results_accepted.csv # 581 auto-accepted
├── praven_results_rejected.csv # 23 auto-rejected
├── praven_results_review.csv # All 6,201 for review
├── praven_results_PRIORITY_REVIEW.csv # 192 for review (USE THIS!)
└── praven_results_summary.txt # Summary + instructions
The PRIORITY_REVIEW file is already sorted by species, making it easy to review in batches.
Open the 3 detections for each species in Raven Pro to compare spectrograms side-by-side.
If the top 3 are mixed (some valid, some invalid), note this and review additional detections from review.csv.
Review similar species together (e.g., all geese, all waders) to spot patterns.
from praven.review_selector import SmartReviewSelector
# Select top 5 per species instead of 3
selector = SmartReviewSelector(detections_per_species=5)
# You can modify quality score calculation in
# praven/review_selector.py:_select_best_representatives()
Is it okay to make species-level decisions based on 3 detections?
YES - this approach is scientifically sound:
Precedent:
A: Smart review selects however many exist (1, 2, or 3). You’ll still review them all.
A: Yes! The review.csv file still contains all 6,201. Priority review is optional.
A: You can always go back to review.csv and check more detections for that species.
A: No! Auto-accepted (581) and auto-rejected (23) detections are untouched. Smart review only affects the REVIEW category.
Smart Review Selection is a game-changing feature that makes manual review practical:
✅ 97% workload reduction (6,201 → 192 detections) ✅ Scientifically valid (top 3 representatives per species) ✅ Automatic (enabled by default) ✅ Flexible (can still review all if needed) ✅ Time-saving (hours instead of days)
The bottom line: Instead of reviewing thousands of detections, review hundreds - and get the same accuracy!