AI Normalization — Overview
Bug bounty platforms often have messy scope entries. Targets might look like:
*.example.com (main website)instead of*.example.comhttps://app.example.com/api/v2 - REST APIinstead ofhttps://app.example.com/api/v2All subdomains of example.cominstead of*.example.com
AI normalization uses an LLM (OpenAI-compatible API) to clean these up automatically.
What it does
- Cleans up entries — strips descriptions, comments, and formatting artifacts from target strings.
- Handles wildcards — converts “All subdomains of X” to
*.X. - Classifies scope intent — determines if a messy entry is a wildcard, URL, domain, etc.
- Normalizes categories — maps platform-specific category names to unified ones.
- Caches results — stores AI outputs in the
targets_ai_enhanceddatabase table. Only new/changed targets are sent to the API on subsequent polls, avoiding redundant API calls and costs.
How it looks
In the web UI, the program detail page has an “AI / Raw” toggle to switch between views.
In the CLI with --db, changes show the mapping:
🆕 h1 https://hackerone.com/program *.example.com (main site) -> *.example.com
Requirements
- A database (
--dbflag) - An OpenAI-compatible API key
See Configuration for setup.