AEM Rockstar 2024
The prologue

Aug 2023 - Mar 2024 · won at Adobe Summit · repo public Nov 2024

ad hoc hand-written Java and jQuery, versioned 1.0 → 1.2 through fall 2023. The AI was the feature, not the author.

The pitch that won AEM Rockstar at Adobe Summit 2024: personalization at scale, inside AEM's own authoring UI. An author opens an experience fragment, types "rewrite this for ages 13 to 17," reviews a side-by-side table of every proposed change, and one click later has a new fragment variation open in the editor.

The design constraint that shaped it: add capability without adding surface. Generation is a Sling selector on the stock experience-fragment page type, the UI is one clientlib injected into the stock properties editor, and writes go through AEM's own copy and POST machinery. No new endpoints, no new editor, no writes without review.

label
Open the Rockstar 2024 flow diagram full size

Flow of the Rockstar 2024 build: an injected jQuery clientlib in AEM's properties editor sends the author's prompt to ExfragGptServlet, a Sling selector on the stock experience-fragment page type; QueryBuilder collects the fragment's text properties; ChatGptService runs each through Chat Completions with a per-fragment chat log; results return to a review table of path, original, and generated values; on approval, AEM's own wcmcommand copyPage plus a Sling POST write the accepted values into a new fragment variation.

The whole flow. Drawn for this page from the repo's code.

The frontend is where most of the craft went. A ~270-line Granite/jQuery clientlib hooks foundation-contentloaded, derives the fragment path from the properties-editor URL, and builds the review table in the DOM: path, original value, generated value, one row per property the QueryBuilder walk found. A continue-chat toggle threads the chat id back, so the model refines its last answer instead of starting over. Approval clones the variation through /bin/wcmcommand, writes the accepted values with a Sling POST, and links straight into the new fragment's editor. A second clientlib does the same for whole pages.

None of this code was AI-written; in August 2023 the AI was the product, GPT-3.5 by default with GPT-4 behind a config. The shape it demoed is the one everything above formalizes later as propose and dispose: the model proposes values, a human reviews every row, and deterministic machinery does the writing. In 2023 that pattern was a jQuery table.

id
p-rockstar
  • 0 new endpoints · Sling selectors on stock types
  • 2 clientlibs: fragments + pages
  • 1.0 → 1.2 releases, Aug - Nov 2023

All projects