File Exclusion Filtering
Bilanc automatically excludes generated and non-human-authored files from all metrics — both AI complexity scoring and rework analysis. Filtering happens at the data pipeline level, before any analysis runs, so excluded files never consume AI tokens or inflate statistics.What Gets Excluded
Lock files — Machine-generated dependency resolution output:package-lock.json,yarn.lock,pnpm-lock.yamlGemfile.lock,poetry.lock,Pipfile.lockcomposer.lock,Cargo.lock,go.sum- Any file ending in
.lock
*.min.js,*.min.css,*.bundle.js,*.chunk.js- Files under
node_modules/,dist/, orbuild/directories
- Files under
generated/directories - Protocol buffer output (
*.pb.go,*.pb.py) - Other generated patterns (
*_generated.go,*.g.dart)
- Compiled Python (
*.pyc,__pycache__/) - Environment files (
.env,.env.*) - Source maps (
*.map)
Where Filtering Happens
Exclusion is applied in thepull_request_files model, which is the single data source feeding both:
- AI complexity scoring via
pull_requests_view - Rework analysis via
pull_request_rework
AI Complexity Scoring
For each merged pull request, Bilanc sends the filtered diffs (with filename context) to an AI model that produces:- A complexity score for the overall PR
- Categorization of the type of work (feature, bug fix, refactor, etc.)
- A summary of the changes
Known Limitations
- Bitbucket filenames: Bitbucket pull request files may not include filenames. These files pass through unfiltered since we cannot match them against exclusion patterns.
- Hardcoded list: The exclusion list is not currently configurable per organization. It covers common patterns but may not match every project’s generated files.
- No weighting: Excluded files are fully removed from analysis, not downweighted. There is no partial credit for changes to semi-generated files.
File exclusion runs automatically on all code contributions with no configuration required. The exclusion list is maintained as part of the data pipeline and applies uniformly across all organizations.

