Skip to content

Diffuse / Product design & engineering

Diffuse.
Designing the review loop.

An independent project from problem framing to working code: the browser extension, Jira and GitHub apps, and custom OpenAI and Anthropic agents.

Read the case study
DiffuseThe context comes with it.
Atlas sample release workspace, the page used to demonstrate a Diffuse review.Separate Diffuse v0.19 product capture showing viewport selection, on-page commenting, Review with AI, Diff View, saved review reports and Settings.
1
AN OBSERVATION, IN CONTEXTFrom “this looks wrong”
to a change you can check.
NoticeExplainChangeRecheck

01Designing for both sides1 / 1

Maya gives feedback. Alex acts on it.

I designed the review loop around the person raising a question and the person responding to it.

Maya
Capture the issue with its page, viewport and evidence.
Alex
Understand the context, make a change and return it for review.
Shared need
Keep the original observation available through the recheck.
Maya, an illustrative review persona.

Maya

Giving feedback
“How do I make the issue clear?”
Alex, an illustrative review persona.

Alex

Acting on feedback
“Can I reproduce the observation?”

Scenario personas used to frame the design.

02Framing the problem1 / 3

The prototype was here. The feedback was elsewhere.

My prototypes were already in the browser. Reviewing them still meant moving screenshots and explanations elsewhere.

Lost context
The page, viewport and state disappeared from the conversation.
Repeated work
The same observation was rewritten for every handoff.
Unclear evidence
Changed builds and AI conclusions were difficult to check.
atlas.Workspace / OverviewIn the review
YOUR WORKSPACEOverview
New item

Good ideas deserve a thoughtful release.

Aurora onboardingReady for review
Search, reimaginedIn progress
The observation“What does
New item create?”
The page and the conversation are still together.

02Framing the problem2 / 3

A screenshot carries the pixels. The context gets left behind.

I used a small fictional Atlas scenario: what does “New item” create? A cropped screenshot could not carry the whole question.

On the page
The surrounding interface helps explain the ambiguity.
After sharing
Someone has to recover the page, viewport and intended change.
The opportunity
Capture that context while it is still available.
screenshot.png
OverviewNew item
Which page?
Which viewport?
What should change?

02Framing the problem3 / 3

Before the work starts, the feedback gets written again.

I followed one observation from the first question to the next review. Each handoff needed a different piece of context.

Capture
The subject, page and state.
Act
The expected behavior and supporting evidence.
Recheck
The updated preview and the build being checked.
Message“New item is unclear.”
New issueMake the action explicit.
Page
Add the reviewed page
Change to
Describe the expected behavior
Evidence
Attach screenshot again

03From idea to implementation1 / 3

I designed the workflow and built it in code.

I took Diffuse from problem framing and solution ideation to a working Chrome extension, vibe coding with Codex and Claude.

Design
Define the review flow, interactions and handoff requirements.
Build
Create capture, comparison, portable reviews, integrations and AI workflows.
Refine
Try the implementation, review generated code and adjust the interaction.
From problem to working software
01

Frame the problem.

Feedback loses contextChanges go unverified
02

Explore the whole loop.

ObserveActVerify
03

Vibe-code. Test. Refine.

Chrome extensionBuilt with Codex + Claude

03From idea to implementation2 / 3

I built the connections around the handoff.

Browser capture was only the beginning. I built the Jira and GitHub apps around what the next person needed to do.

Jira
An editable issue preview, project fields, evidence uploads and delivery receipts.
GitHub
OAuth sign-in and the Diffuse Review App connect findings, commits and rechecks.
Portable review
A file-based handoff when neither service is needed.
The integration work I built
Chrome extension
DiffuseObservation Page context Evidence
Jira

Jira

Atlassian OAuth app

An issue with its evidence
GitHub

GitHub

OAuth + GitHub App

A review beside the PR
Keep the connection.Preserved evidence and delivery receipts. GitHub adds the recheck.

03From idea to implementation3 / 3

I created agents for specific review responsibilities.

I authored custom OpenAI and Anthropic agents, including their instructions, review criteria, tools and output structures.

Three responsibilities
Review screens, attempt a journey, and evaluate its saved evidence.
Deployment in Settings
Choose a provider and key; set up the reviewer or journey agents. Diffuse creates, checks and enables them.
Clear boundaries
The extension controls browser actions. The evaluator cannot operate the page.
Custom agents I authored
InstructionsToolsEvaluation criteria
Diffuse SettingsAI review

Create definitions. Verify. Enable.

Screen reviewerUX + accessibility guidance
Journey userOne observed action at a time
Journey evaluatorRead the saved evidence

04Mapping the handoffs1 / 3

A question about the experience.

Maya notices a confusing control; Alex needs to understand it. I used a shared review file to connect that handoff.

Notice
Pin the confusing control or record the behavior.
Share
Export the comments with their page context and evidence.
Investigate
Load the review and inspect the original moment before revising.
Atlas · Overview
OverviewNew item1
In progress12
Ready for review04
Stakeholder’s comment

What will New item create? The next step is unclear.

Screenshot attached
Same question. Same context.Loaded from the shared review file.
Original capture 1440 × 900 Review loaded

04Mapping the handoffs2 / 3

A design decision, carried into implementation.

Maya reviews the implementation; Alex makes the change. I connected their comparison and recheck through the GitHub pull request.

Compare
Inspect the live reference and save the discrepancy.
Publish
Preview the findings and confirm the reviewed commit.
Return
Capture the change and mark it ready for recheck.
Diffuse review on the PRPreview + reviewed commit

Clarify the primary action.

Original capture
New item

The action is ambiguous.

Updated capture
Create release

The intent is explicit.

Requested change

Use Create release, matching the reference.

Ready for recheck

Updated evidence is captured on this build.
A reviewer checks the result.

04Mapping the handoffs3 / 3

A second pair of eyes, with the reasoning intact.

Maya shares a critique; Alex decides how to refine the design. I preserved the reasoning while leaving room for interpretation.

Critique
Inspect hierarchy and copy; accept only useful AI suggestions.
Share
Export the considered observations and captured reference context.
Continue
Load the evidence and decide what the next iteration needs.
Optional AI suggestion

Make the primary action explicit.

The designer inspects the page and chooses what to keep.

Accepted by the designerSaved as a comment, then shared.
Shared comment

Make the primary action easier to find and understand.

Atlas · Overview
Original capture 1440 × 900 Review loaded

05Designing in-place feedback1 / 3

The selected element became the starting point.

I made the selected element the starting point. A reviewer can explain the problem beside its subject, with the interface still visible.

Pin
Identify one element or select an area.
Context
Save the page and viewport with the observation.
Example
Atlas says “New item”; the reference says “Create release.”

05Designing in-place feedback2 / 3

A live comparison preserved the interaction.

I built a live-tab comparison so the reviewer could inspect the implementation against an interactive reference.

Align
Compare both views at the same viewport.
Inspect
Move the divider or adjust opacity to reveal differences.
Repeat
Check desktop and phone layouts before capturing the finding.

Move the divider. Inspect the difference.

Compare the reference and implementation in the same view. Here, the primary action changes from “New item” to “Create release.”

1440 × 900
Loading the Atlas sample pages…
50%
100%

Lower it to see the production page through the reference.

Drag to compare. Use the arrow keys when a slider is focused.

05Designing in-place feedback3 / 3

The viewport is part of the feedback.

The same action can wrap, move or become harder to find on a phone. I treated viewport size as part of the observation.

Capture
Keep the reviewed viewport with the feedback.
Reproduce
Reopen the layout at the size that prompted the issue.
Recheck
For Atlas: check the label, release form and keyboard access across sizes.
Desktop 1440 × 900 Phone 390 × 844
Atlas desktop view with the release action aligned at the right of the page heading.
Atlas in a 390-pixel phone viewport, with comment pin 4 on the New item action and the content stacked in one column.
Same question. Different layout.The page, size and location stay attached.

06Refining the interaction1 / 3

I moved the comment beside its subject.

The first design asked for title, component and state too soon. I moved the composer beside the selected element and made the comment the starting point.

Start small
A comment first; expected behavior is optional.
Keep choices compact
Category and severity become dropdowns.
Expand when useful
Reproduction steps and evidence stay within reach.
After · On-page comment
Archived Diffuse v0.11.0 comment popover beside the selected Atlas control, keeping feedback in the page.
Design iterationSee the earlier sidebar
Before · Sidebar form
Earlier Diffuse comment form in a sidebar, showing separate title, comment, expected result, category and component fields.

The sidebar separated the thought from its subject. The revision keeps capture on the page and lets detail expand when needed.

06Refining the interaction2 / 3

Supporting detail stayed close to the comment.

Simplifying the composer should not make a detailed issue harder to explain. Supporting material stayed with its comment.

Explain
Add reproduction steps when the behavior needs context.
Show
Attach or inspect a screenshot or recording.
Extend
Turn a short observation into a reproducible issue without starting again.

06Refining the interaction3 / 3

Behavior needed more than a screenshot.

In the Atlas example, Save reveals a three-character minimum only after submission. The screenshot shows the error, but misses the sequence.

Observed
An empty Release name reaches validation after Save.
Proposed
Explain the requirement beside the field beforehand.
Evidence
Keep the screenshot, reproduction steps and recording together.

07Designing the AI review1 / 5

I gave the audit a question and a boundary.

I designed AI review as another pass over the work, with an explicit question and a bounded view of the evidence.

Choose
One entry opens Screen review or Journey test.
Focus
Use the current page, a live prototype or a frame reference.
Ask
For Atlas: inspect the action label, hierarchy and copy at this viewport.

Give AI a focus

An Atlas page with New item highlighted, an instruction to review the primary action, and Run AI review.atlas / overviewWORKSPACEOverview62New itemREVIEW FOCUSIs the primary action clear?Run AI review

07Designing the AI review2 / 5

Provider choice without losing the review’s history.

I made Anthropic and OpenAI separate connections, so provider choice would not erase the context of work already recorded.

New work
Uses the selected provider and its saved configuration.
Saved journeys
Keep their original provider for discussion, continuation and alternative routes.
Responsibilities
Screen review, journey actions and evaluation stay distinct.
Two providers. Three roles.
Connection saved
Connection saved
01Screen reviewerInspect the current interface
02Journey userAttempt the task
03Journey evaluatorReview the recorded journey

History keeps its context.Saved journeys retain the provider recorded when they ran.

07Designing the AI review3 / 5

I made the limits of a finding visible.

I structured the reviewer around a versioned set of NN/g and W3C-informed checks, with three explicit assessment types.

Visible observation
Something the captured screen supports.
UX recommendation
A proposed improvement, with its rationale.
Needs verification
Behavior or accessibility that requires additional evidence.
A finding with a source.Example
Recorded evidence01
AtlasReleases
New item1
Captured page · primary action
Review guidance

Make the action’s purpose clear.

Finding 01Captured area
Visible observation

The primary action says “New item”.

UX recommendation

Use “Create release” to name the outcome.

Needs verification

Check keyboard behavior and accessible semantics in the live interface.

A person decides
AcceptDismiss

07Designing the AI review4 / 5

Accepted findings returned to the page.

Accepted AI findings join the same comment system as human feedback. Acceptance is a reviewer decision.

Locate
A numbered pin keeps the page and viewport.
Inspect
The finding retains its evidence, assessment and guidance links.
Act
The Atlas suggestion becomes “New item” → “Create release.”

Keep it in context

The accepted observation is attached to New item as a numbered pin, with the comment and captured evidence saved together.atlas / overviewWORKSPACEOverview62New item1✓ SAVED OBSERVATIONMake the action explicit.New item → Create releasePage + viewportCaptured evidence attached

07Designing the AI review5 / 5

The handoff became a verification brief.

I shaped the AI handoff .md around a small verification brief, giving a coding assistant a scoped change and a way to check it.

Current
The action says “New item.”
Change to
Use “Create release” to explain the action.
Verify
Check desktop and phone, the release form, and keyboard access.
AI handoff.mdMARKDOWN
CURRENT“New item”

The action is ambiguous.

CHANGE TO“Create release”

Match the reference label and treatment.

VERIFY
  • Desktop and phone layouts
  • Opens the release form
  • Keyboard access still works
Include the referenced evidence with the handoff.

08Making journeys inspectable1 / 5

A journey needed a goal and a perspective.

I brought screen review and journey testing into one entry. Journey setup makes the intended task and simulated perspective explicit.

Task
Set a goal, optional success criteria and test data.
Perspective
Choose confidence, familiarity, persistence, review focus and exploration style.
Benchmark
An action target measures the attempt; passing it does not stop execution.
Journey testingA task, a perspective, a target.
Review with AI
Screen reviewJourney test
The goalAdd Oat milk to the ingredients table.Find the route from the dashboard.
New to this productSimulated perspective
Technical confidence
Moderate
Product familiarity
Low
Task familiarity
High
Persistence
Moderate
Action target20 actions

A benchmark for the attempt.
Passing it does not stop the journey.

Comment shortcuts: configure, disable or reset

08Making journeys inspectable2 / 5

I separated trying the task from judging the attempt.

I gave acting and evaluating different responsibilities, with the reviewer deciding which findings become comments.

Journey User
Attempts the goal. Diffuse validates each proposed action against a fresh page observation.
Journey Evaluator
Inspects saved evidence and answers questions; it cannot operate the website.
Continuity
A saved journey keeps its original Anthropic or OpenAI provider.
Journey testingTry the interface. Inspect the evidence.
Journey UserAttempt the task

Goal + persona + fresh page observation

ScreenshotsActions & outcomesStep notes
Journey EvaluatorAssess the attempt

Review evidence + answer follow-up questions

Cannot operate the website
The reviewer decides which findings become comments.

08Making journeys inspectable3 / 5

The attempted route became part of the evidence.

I made the attempted path inspectable: step notes, screenshots and a silent recording support the assessment.

Inspect
“Watch this step” opens its recorded moment.
Control
Pause, resume or stop; the ending retains a specific reason.
Accept
Useful findings become comments with page context and reproduction steps.
Journey testingKeep the attempted path inspectable.
Follow the step

Action, execution and result.

Recover context

The goal, persona and page.

Inspect evidence

The saved page capture.

08Making journeys inspectable4 / 5

A blocked attempt needed a way forward.

A blocker should leave room for judgment: an experience issue, an AI miss, or something still uncertain.

Discuss
Ask about the journey or one step, with links to saved evidence.
Continue
Use guidance in a linked attempt from the current page.
Try another route
Start a separate attempt from the original URL; preserve earlier evidence.
Journey testingA blocker becomes a conversation.
Ask AI · saved journey context
Diffuse

I can’t find the remaining ingredients. What should I try?

Open the recorded step
Reviewer guidance

Use the filter to show archived ingredients.

How do you assess this blocker?
Issue with the experienceAI missed somethingNot sure yet
Continue journeyFrom the current page

Use the guidance in a linked new attempt.

Try another routeFrom the original start

Edit the alternative and create a separate attempt.

The earlier steps and recording stay saved.

08Making journeys inspectable5 / 5

An unfinished attempt still has something to tell us.

I added Journeys to Review Reports so an unfinished attempt remains inspectable, even with no accepted comments or executed actions.

Context
Keep the goal, persona, action target and known stop reason.
Step ledger
Retain the action, reasoning, execution status, result and page context.
Evidence
Include screenshots and recordings while stored; notes remain after older media clears.
Journey testingThe report keeps the whole attempt.
Review reportJourneys 03
Add an ingredientCompleted · 18 actions · target 20
Completed
Find archived ingredientsStopped · 4 actions · target 20
Stopped
Persona
New to this product
Stop reason
Stopped by the reviewer
Step 04Executed
Open the ingredients filter

Reason: inspect the available status options.

ResultStatus options are visible./ingredients · saved page context
Try the setup wizardStopped · 0 actions · no accepted findings
Step ledgers remain when older media is cleared.

09Designing the handoff1 / 5

Capture and sharing needed separate moments.

I separated capture from the second pass before sharing: refine the wording, choose what needs action and retain the evidence.

Design peer
Reopen a portable review.
Coding assistant
Work from the Markdown verification brief.
Delivery team
Send selected findings to Jira or the relevant GitHub PR.

09Designing the handoff2 / 5

A review file became a way to continue.

I designed .diffuse-review.json as a portable handoff that could return to the interface without a shared ticketing system.

Export
Package saved comments and evidence.
Share
Pass the review to someone with access to the site.
Continue
Load it in Diffuse and inspect the original context.
REVIEWER

Export review

09Designing the handoff3 / 5

The file carries the review.

The file carries the review context. The recipient still needs their own access to the reviewed site.

Included
Comments, evidence, page, viewport and recorded location.
AI findings
Accepted assessments retain their labels and guidance links.
Separate
Site login and unsaved application state stay on the original device.
SHARED FILE

Share file

09Designing the handoff4 / 5

Shared feedback had to return to the interface.

I paired export with Load review so the next person could interpret the feedback against the interface itself.

Load
Bring the saved comments into the sidebar and page.
Select
Restore the recorded page, viewport and location.
Inspect
Read the original explanation before deciding what to change.
RECIPIENT

Load review

09Designing the handoff5 / 5

I delayed ticket structure until the handoff.

I delayed Jira’s task structure until delivery, keeping quick capture separate from preparing an actionable issue.

Prepare
Edit the title and project fields in the preview.
Attach
Carry the selected finding’s screenshots or recording.
Recover
Delivery receipts and upload recovery help finish interrupted handoffs.

10Designing the recheck1 / 3

The feedback belongs with the change.

I extended GitHub review around the original finding, the proposed change and the later check.

Preview
Make the PR, working preview and reviewed commit explicit.
Publish
Keep selected findings in one summary with native evidence attachments.
Respond
Read in GitHub or load the review onto the working preview.
Reviewer · Give feedback

Publish findings

Diffuse’s Publish feedback to a PR dialog shows the sample Atlas destination, reviewed commit, selected finding and original screenshot. A portfolio demonstration banner identifies the simulated publication.View full-size screenshot

10Designing the recheck2 / 3

I separated ready from verified.

A reviewee needs a way to show progress without declaring their own change verified.

Recover
Load the PR feedback and inspect the original capture.
Adapt
Remap the preview origin or moved pin while preserving the evidence.
Return
Capture the update and choose “Share update & mark ready.”
Reviewee · Work through feedback

Show the change

Diffuse’s Ask for another look dialog shows sample Atlas reference evidence, build confirmation and Share update & mark ready. A banner identifies the local portfolio demonstration.View full-size screenshot

10Designing the recheck3 / 3

Verification belonged to a specific build.

I tied verification to the preview and build that someone actually checked.

Compare
Inspect original and current evidence; capture the fresh check.
Decide
Choose “Verify on preview” or “Still present.”
Revisit
A new commit or changed preview makes the earlier check historical.
Reviewer · Recheck

Recheck

Diffuse’s Record what you checked dialog shows sample Atlas reference evidence, the reviewer’s confirmation and Share check & mark verified. A banner labels the portfolio demonstration.View full-size screenshot

11What I learned1 / 1

A review is a loop between people.

Building the plugin, apps, services and agents let me carry design intent through the whole review loop.

Capture taught me
Reduce initial decisions and keep evidence close.
AI taught me
Separate action from evaluation; retain unsuccessful attempts.
Next validation
Test whether another person can reproduce a finding and confidently recheck the change.
Notice
Change
Recheck
The context
stays with it.

Explore Diffuse.

Explore the browser-based review workflow and the implementation behind it. Releases trace how capture, handoff and verification have evolved.

Independent project, v0.19. Personas and test records are illustrative; OpenAI live-account inference and wider adoption are not yet verified.