projects· 2 min read

Building a Knowledge Graph from JIRA and Confluence

A hands-on guide to extracting structured knowledge from JIRA tickets and Confluence pages, connecting them into a queryable graph that powers intelligent search.

Share

The Problem

Enterprise teams drown in unstructured information spread across JIRA tickets, Confluence pages, Slack threads, and Google Docs. Finding the right context for a decision made six months ago is almost impossible.

The Solution: A Knowledge Graph

A knowledge graph connects entities (people, projects, decisions, tickets) with typed relationships, making it possible to traverse connections and surface relevant context automatically.

Architecture Overview

Loading diagram...

Implementation

Step 1: Extract Data

Pull tickets and pages using the REST APIs. Normalize the data into a common schema:

from jira import JIRA
from atlassian import Confluence

def extract_jira_tickets(project_key: str) -> list[dict]:
    jira = JIRA(server=JIRA_URL, token_auth=JIRA_TOKEN)
    issues = jira.search_issues(f"project={project_key}", maxResults=1000)
    return [normalize_issue(issue) for issue in issues]

Step 2: Build the Graph

Map entities to nodes and relationships to edges. Key relationship types:

  • ASSIGNED_TO — ticket to person
  • BLOCKS / BLOCKED_BY — ticket dependencies
  • REFERENCES — confluence page to ticket
  • DECIDED_IN — decision to meeting/page

Step 3: Query

With the graph in place, you can answer questions like:

  • "What decisions were made about the auth migration?"
  • "Who has context on the payment service refactor?"
  • "What tickets are blocking the Q3 launch?"

Results

After indexing ~5,000 JIRA tickets and ~800 Confluence pages, search relevance improved dramatically compared to native JIRA/Confluence search. The graph structure allows multi-hop queries that traditional search simply can't handle.

0 Comments

Anonymous identity assigned on post
Loading comments...