Skip to content

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.

Different teams and tools use different labeling conventions:

  • GitHub might use enhancement or feature-request
  • Jira might use Story as an issue type
  • Linear might use improvement
  • Notion might have a custom Type field

GuideMode maps all of these to a canonical set of issue types, enabling consistent metrics like work distribution and type-based filtering.

GuideMode classifies all issues into seven canonical types:

TypeDescriptionWork Category
featureNew functionality or capabilityPlanned
bugDefects or issues to fixUnplanned
choreMaintenance and housekeepingPlanned
tech_debtTechnical debt remediationUnplanned
discoveryResearch, spikes, or explorationPlanned
incidentProduction incidents or outagesUnplanned
otherUncategorized issues-

When determining an issue’s type, GuideMode uses a priority-based approach:

Diagram
  1. Custom Mappings (Highest Priority)

    • Repository-specific mappings checked first
    • Global mappings checked second
    • Configured in Settings → Integrations → Label Mappings
  2. Standard Label Inference

    • Pattern matching against common label names
    • Case-insensitive partial matching
  3. Fallback

    • Returns other if no mapping found

GuideMode includes built-in patterns for common label conventions:

Issue TypeMatching Patterns
bugbug, bugfix, defect, fix, hotfix, regression
featurefeature, enhancement, improvement, story
tech_debttech-debt, technical-debt, techdebt, debt, legacy, cleanup-debt
chorechore, refactor, maintenance, cleanup
discoveryspike, research, investigation, discovery, exploration
incidentincident, outage, critical, emergency, p0, p1, sev0, sev1

Pattern matching is:

  • Case-insensitive (BUG matches bug)
  • Partial matching (bugfix contains bug)
  • Priority ordered (tech-debt is checked before chore to avoid false matches)
LabelInferred TypeReason
enhancementfeatureContains “enhancement”
type:bugbugContains “bug”
tech-debt-cleanuptech_debtContains “tech-debt”
P0incidentExact match for severity
documentationotherNo pattern match

In addition to type mapping, labels can indicate that an issue is blocked:

Diagram
PatternDescription
blockedExact match
on-hold, on hold, onholdOn hold variations
waiting, waiting-for, waiting forWaiting states
*dependency*Contains “dependency”
needs-*Starts with “needs-”
*awaiting*Contains “awaiting”

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

Configure custom mappings in Settings → Integrations → Label Mappings.

FieldDescription
externalLabelThe label name from the provider (e.g., “enhancement”)
internalTypeThe GuideMode type to map to (feature, bug, etc.)
mapsToBlockedWhether this label indicates blocked status
repositoryIdOptional - scope mapping to specific repository

Mappings can be scoped to specific repositories:

  1. Repository-specific - Only applies to issues in that repository
  2. Global - Applies to all issues from that provider

Repository-specific mappings take priority over global mappings.

External LabelInternal TypeBlockedRepository
enhancementfeatureNoGlobal
improvementfeatureNoGlobal
spikediscoveryNoGlobal
blocked-by-external-YesGlobal
waiting-on-design-Yesfrontend-repo

GitHub labels are synced directly. Both issue labels and PR labels are processed.

Jira has both labels and issue types. GuideMode uses:

  1. Labels for custom mappings
  2. Jira issue type name as fallback (e.g., “Story” → feature, “Bug” → bug)

Linear labels are synced. Linear’s built-in issue states are handled separately by Status Mapping.

Notion databases may have:

  • A dedicated Type property (single or multi-select)
  • Custom label properties

Configure which properties to use in the Notion integration settings.