
Skills
Systems Thinking
Interaction Design
Duration
Four Months
Role
Product Designer

A legacy feature transformed into an intuitive collaboration tool. Reduces configuration time from 2-3 minutes to 15 seconds.
Context
During my summer 2024 internship on the Confluence Page Extensions team at Atlassian, I inherited what seemed like a straightforward project. The goal was to improve the anchor macro, a feature that allows users to create a hyperlink to a specific part of a Confluence page. What I discovered was a feature so broken that the team had plans to depreciate it.
What is a macro?
Macros are pre-built, functional components that Confluence users can insert into pages, adding capabilities that go beyond basic text and image. The are interactive, and extend the functionality of basic Confluence pages. They are inserted through Confluence’s slash command menu or the elements browser.
The anchor macro is the 8th most used macro in Confluence. Its particularly helpful on long pages, where collaborators can guide readers to specific areas that require their attention.

The existing experience
The user must insert the anchor macro, name the anchor in the right rail, and then manually create their anchor link in the URL bar.
Name anchor
Create link with #[name]
Editor configuration icon



To link an anchor within the editor, the user links #[name] onto a highlighted piece of text.



Why it matters
On the roadmap for Confluence Cloud is the transition to Live Pages, which centers automatic saves and real-time, dynamic editing on documents, with no need to hit the publish button. To make the anchor macro seamlessly compatible with real-time collaboration, its important that all Confluence macros are as WYSIWYG as possible,
Approach + Limitations
Pain points
For page creators 👤
For Page contributors 👤 and passive consumers 👤


Technical constraints
Unlike most other macros (table macro, status indicators, Jira issues macro etc.) which add tangible elements to a page, anchors are fundamentally about extracting something from the page, creating a reference point for navigation. This mismatch meant that it made more sense for anchor to be less visible in the within the editing process.
Engineering constraints meant the anchor had to remain within Confluence’s existing macro framework. The solution had to remain a macro, meaning it could not generate a link without user input, or remove the naming step.
Defining an MVP
When defining the MVP, I established clear boundaries for what we would exclude due to engineering constraints and project scope. The anchor macro would remain limited to existing entry points (slash command and element browser) since expanding access methods wasn't technically feasible within our timeline. Engineering constraints also required avoiding new configuration options.
Design Recommendation
Good (shipped design)
✅ Single-click URL generation: Users get a shareable link instantly
✅ Clear anchor identification: Visual indication of which anchor is linked to
❌ Right-rail configuration still required: Maintains some complexity
❌ Inline presence interrupts flow: Visible elements still disrupt content

Editing an anchor

Removing an anchor
Better
✅ Models existing flow while reducing content disruption
✅ Shows user where the macro is located
❌ Macro constraints cause an unintuitive endpoint

Copy on hover

Navigating to an anchor link
Looking Ahead
While the MVP addressed immediate usability problems, the ideal long-term solution would eliminate the macro framework entirely. Users would simply highlight any content and instantly generate shareable links without inserting separate elements. This would treat anchors as a native page feature rather than an add-on, seamlessly supporting live collaborative editing where multiple users can create and share content references in real-time.
Best✅ Intuitive, no need for macro configuration✅ Leverages interaction patterns that users were already familiar with❌ Less precision in longer blocks of content

Copy link from drag handle menu

Highlight anchored text on navigation
Takeaways
Owning a design meant challenging even my most basic assumptions. Sometimes the best way to improve something is to replace it entirely. There is also the art of balancing user needs with what the business can actually deliver. I was able to ship a valuable improvement, rather than waiting for the perfect solution.
Working with a project manager, content designer, and engineer within the team taught me the value of stakeholder feedback at every step of the way. I also learned to consider the future of the Confluence Cloud and it’s design system.
Product Design Internship
Anchor Macro Reinvention

Skills
Systems Thinking
Interaction Design
Duration
Four Months
Role
Product Designer
Context
Approach + Limitations
Design Recommendation
Looking Ahead

A legacy feature transformed into an intuitive collaboration tool. Reduces configuration time from 2-3 minutes to 15 seconds.
Context
During my summer 2024 internship on the Confluence Page Extensions team at Atlassian, I inherited what seemed like a straightforward project. The goal was to improve the anchor macro, a feature that allows users to create a hyperlink to a specific part of a Confluence page. What I discovered was a feature so broken that the team had plans to depreciate it.
What is a macro?
Macros are pre-built, functional components that Confluence users can insert into pages, adding capabilities that go beyond basic text and image. The are interactive, and extend the functionality of basic Confluence pages. They are inserted through Confluence’s slash command menu or the elements browser.
The anchor macro is the 8th most used macro in Confluence. Its particularly helpful on long pages, where collaborators can guide readers to specific areas that require their attention.

The existing experience
The user must insert the anchor macro, name the anchor in the right rail, and then manually create their anchor link in the URL bar.
Name anchor
Create link with #[name]
Editor configuration icon



To link an anchor within the editor, the user links #[name] onto a highlighted piece of text.



Why it matters
On the roadmap for Confluence Cloud is the transition to Live Pages, which centers automatic saves and real-time, dynamic editing on documents, with no need to hit the publish button. To make the anchor macro seamlessly compatible with real-time collaboration, its important that all Confluence macros are as WYSIWYG as possible,
Approach + Limitations
Pain points
For page creators
For Page contributors and passive consumers
Technical constraints
Unlike most other macros (table macro, status indicators, Jira issues macro etc.) which add tangible elements to a page, anchors are fundamentally about extracting something from the page, creating a reference point for navigation. This mismatch meant that it made more sense for anchor to be less visible in the editing process.
Engineering constraints meant the anchor had to remain within Confluence’s existing macro framework. The solution had to remain a macro, meaning it could not generate a link without user input, or remove the naming step.



Defining an MVP
When defining the MVP, I established clear boundaries for what we would exclude due to engineering constraints and project scope. The anchor macro would remain limited to existing entry points (slash command and element browser) since expanding access methods wasn't technically feasible within our timeline. Engineering constraints also required avoiding new configuration options.
Design Recommendation
Good (shipped design)
✅ Single-click URL generation: Users get a shareable link instantly
✅ Clear anchor identification: Visual indication of which anchor is linked to
❌ Right-rail configuration still required: Maintains some complexity
❌ Inline presence interrupts flow: Visible elements still disrupt content

Editing an anchor

Removing an anchor
Better
✅ Models existing flow while reducing content disruption
✅ Shows user where the macro is located
❌ Macro constraints cause an unintuitive endpoint

Copy on hover

Navigating to an anchor link
Looking Ahead
While the MVP addressed immediate usability problems, the ideal long-term solution would eliminate the macro framework entirely. Users would simply highlight any content and instantly generate shareable links without inserting separate elements. This would treat anchors as a native page feature rather than an add-on, seamlessly supporting live collaborative editing where multiple users can create and share content references in real-time.
Best✅ Intuitive, no need for macro configuration✅ Leverages interaction patterns that users were already familiar with❌ Less precision in longer blocks of content

Copy link from drag handle menu

Highlight anchored text on navigation
Takeaways
Owning a design meant challenging even my most basic assumptions. Sometimes the best way to improve something is to replace it entirely. There is also the art of balancing user needs with what the business can actually deliver. I was able to ship a valuable improvement, rather than waiting for the perfect solution.
Working with a project manager, content designer, and engineer within the team taught me the value of stakeholder feedback at every step of the way. I also learned to consider the future of the Confluence Cloud and it’s design system.

work
about
resume
Product Design Internship
Anchor Macro Reinvention

Skills
Systems Thinking
Interaction Design
Duration
Three months
Role
Product Designer
Context
Approach + Limitations
Design Recommendation
Looking Ahead

A legacy feature transformed into an intuitive collaboration tool. Reduces configuration time from 2-3 minutes to 15 seconds.
Context
During my summer 2024 internship on the Confluence Page Extensions team at Atlassian, I inherited what seemed like a straightforward project. The goal was to improve the anchor macro, a feature that allows users to create a hyperlink to a specific part of a Confluence page. What I discovered was a feature so broken that the team had plans to depreciate it.
What is a macro?
Macros are pre-built, functional components that Confluence users can insert into pages, adding capabilities that go beyond basic text and image. The are interactive, and extend the functionality of basic Confluence pages. They are inserted through Confluence’s slash command menu or the elements browser.
The anchor macro is the 8th most used macro in Confluence. Its particularly helpful on long pages, where collaborators can guide readers to specific areas that require their attention.

The existing experience
The user must insert the anchor macro, name the anchor in the right rail, and then manually create their anchor link in the URL bar.
Name anchor
Create link with #[name]
Editor configuration icon



To link an anchor within the editor, the user links #[name] onto a highlighted piece of text.



Why it matters
On the roadmap for Confluence Cloud is the transition to Live Pages, which centers automatic saves and real-time, dynamic editing on documents, with no need to hit the publish button. To make the anchor macro seamlessly compatible with real-time collaboration, its important that all Confluence macros are as WYSIWYG as possible.
Approach + Limitations
Pain points
For page creators 👤
For Page contributors 👤 and passive consumers 👤
Technical constraints
Unlike most other macros (table macro, status indicators, Jira issues macro etc.) which add tangible elements to a page, anchors are fundamentally about extracting something from the page, creating a reference point for navigation. This mismatch meant that it made more sense for anchor to be less visible in the editing process.
Engineering constraints meant the anchor had to remain within Confluence’s existing macro framework. The solution had to remain a macro, meaning it could not generate a link without user input, or remove the naming step.
Defining an MVP
When defining the MVP, I established clear boundaries for what we would exclude due to engineering constraints and project scope. The anchor macro would remain limited to existing entry points (slash command and element browser) since expanding access methods wasn't technically feasible within our timeline. Engineering constraints also required avoiding new entry points or configuration options.
Design Recommendation
Good (shipped design)
✅ Single-click URL generation: Users get a shareable link instantly
✅ Clear anchor identification: Visual indication of which anchor is linked to
❌ Right-rail configuration still required: Maintains some complexity
❌ Inline presence interrupts flow: Visible elements still disrupt content

Editing an anchor

Removing an anchor
Better
✅ Models existing flow while reducing content disruption
✅ Shows user where the macro is located
❌ Macro constraints cause an unintuitive endpoint

Copy on hover

Navigating to an anchor link
Looking Ahead
While the MVP addressed immediate usability problems, the ideal long-term solution would eliminate the macro framework entirely. Users would simply highlight any content and instantly generate shareable links without inserting separate elements. This would treat anchors as a native page feature rather than an add-on, seamlessly supporting live collaborative editing where multiple users can create and share content references in real-time.
Best✅ Intuitive, no need for macro configuration✅ Leverages interaction patterns that users were already familiar with❌ Less precision in longer blocks of content

Copy link from drag handle menu

Highlight anchored text on navigation
Takeaways
Owning a design meant challenging even my most basic assumptions. Sometimes the best way to improve something is to replace it entirely. There is also the art of balancing user needs with what the business can actually deliver. I was able to ship a valuable improvement, rather than waiting for the perfect solution.
Working with a project manager, content designer, and engineer within the team taught me the value of stakeholder feedback at every step of the way. I also learned to consider the future of the Confluence Cloud and it’s design system.

work
about
resume