Label Mapping
GuideMode normalizes labels from all connected providers (GitHub, Jira, Linear, Notion) into a consistent set of issue types. This enables unified analytics and metrics across your entire workflow.
Why Label Mapping?
Section titled “Why Label Mapping?”Different teams and tools use different labeling conventions:
- GitHub might use
enhancementorfeature-request - Jira might use
Storyas an issue type - Linear might use
improvement - Notion might have a custom
Typefield
GuideMode maps all of these to a canonical set of issue types, enabling consistent metrics like work distribution and type-based filtering.
Issue Types
Section titled “Issue Types”GuideMode classifies all issues into seven canonical types:
| Type | Description | Work Category |
|---|---|---|
feature |
New functionality or capability | Planned |
bug |
Defects or issues to fix | Unplanned |
chore |
Maintenance and housekeeping | Planned |
tech_debt |
Technical debt remediation | Unplanned |
discovery |
Research, spikes, or exploration | Planned |
incident |
Production incidents or outages | Unplanned |
other |
Uncategorized issues | - |
Mapping Priority
Section titled “Mapping Priority”When determining an issue’s type, GuideMode uses a priority-based approach:
Priority Order
Section titled “Priority Order”-
Custom Mappings (Highest Priority)
- Repository-specific mappings checked first
- Global mappings checked second
- Configured in Settings → Integrations → Label Mappings
-
Standard Label Inference
- Pattern matching against common label names
- Case-insensitive partial matching
-
Fallback
- Returns
otherif no mapping found
- Returns
Standard Label Patterns
Section titled “Standard Label Patterns”GuideMode includes built-in patterns for common label conventions:
| Issue Type | Matching Patterns |
|---|---|
bug |
bug, bugfix, defect, fix, hotfix, regression |
feature |
feature, enhancement, improvement, story |
tech_debt |
tech-debt, technical-debt, techdebt, debt, legacy, cleanup-debt |
chore |
chore, refactor, maintenance, cleanup |
discovery |
spike, research, investigation, discovery, exploration |
incident |
incident, outage, critical, emergency, p0, p1, sev0, sev1 |
Pattern matching is:
- Case-insensitive (
BUGmatchesbug) - Partial matching (
bugfixcontainsbug) - Priority ordered (
tech-debtis checked beforechoreto avoid false matches)
Examples
Section titled “Examples”| Label | Inferred Type | Reason |
|---|---|---|
enhancement |
feature |
Contains “enhancement” |
type:bug |
bug |
Contains “bug” |
tech-debt-cleanup |
tech_debt |
Contains “tech-debt” |
P0 |
incident |
Exact match for severity |
documentation |
other |
No pattern match |
Blocked Status Detection
Section titled “Blocked Status Detection”In addition to type mapping, labels can indicate that an issue is blocked:
Default Blocked Patterns
Section titled “Default Blocked Patterns”| Pattern | Description |
|---|---|
blocked |
Exact match |
on-hold, on hold, onhold |
On hold variations |
waiting, waiting-for, waiting for |
Waiting states |
*dependency* |
Contains “dependency” |
needs-* |
Starts with “needs-” |
*awaiting* |
Contains “awaiting” |
Custom Blocked Mappings
Section titled “Custom Blocked Mappings”When you configure custom blocked mappings in Settings → Integrations → Label Mappings, they completely override the default patterns. This allows teams to:
- Use team-specific terminology
- Disable default blocked detection
- Map labels to blocked that don’t match default patterns
Custom Label Mappings
Section titled “Custom Label Mappings”Configure custom mappings in Settings → Integrations → Label Mappings.
Mapping Fields
Section titled “Mapping Fields”| Field | Description |
|---|---|
externalLabel |
The label name from the provider (e.g., “enhancement”) |
internalType |
The GuideMode type to map to (feature, bug, etc.) |
mapsToBlocked |
Whether this label indicates blocked status |
repositoryId |
Optional - scope mapping to specific repository |
Scoping
Section titled “Scoping”Mappings can be scoped to specific repositories:
- Repository-specific - Only applies to issues in that repository
- Global - Applies to all issues from that provider
Repository-specific mappings take priority over global mappings.
Example Configuration
Section titled “Example Configuration”| External Label | Internal Type | Blocked | Repository |
|---|---|---|---|
enhancement |
feature |
No | Global |
improvement |
feature |
No | Global |
spike |
discovery |
No | Global |
blocked-by-external |
- | Yes | Global |
waiting-on-design |
- | Yes | frontend-repo |
Provider-Specific Notes
Section titled “Provider-Specific Notes”GitHub
Section titled “GitHub”GitHub labels are synced directly. Both issue labels and PR labels are processed.
Jira has both labels and issue types. GuideMode uses:
- Labels for custom mappings
- Jira issue type name as fallback (e.g., “Story” →
feature, “Bug” →bug)
Linear
Section titled “Linear”Linear labels are synced. Linear’s built-in issue states are handled separately by Status Mapping.
Notion
Section titled “Notion”Notion databases may have:
- A dedicated
Typeproperty (single or multi-select) - Custom label properties
Configure which properties to use in the Notion integration settings.
Related Documentation
Section titled “Related Documentation”- Issues - Issue types and lifecycle
- Status Mapping - Status to state mapping
- Issue Linking - Cross-issue relationships
