diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js
index 26a66bbb8bbea0bb5132baebb6c4f811cd545a21..4e0e6c816cf9df7ae9c21f2a231f55baf164bbc6 100644
--- a/editors/demo/src/Editoria/config/config.js
+++ b/editors/demo/src/Editoria/config/config.js
@@ -313,6 +313,8 @@ export default {
   AskAiContentService: {
     AskAiContentTransformation: DummyPromise,
     AiOn: true,
+    FreeTextPromptsOn: true,
+    CustomPrompts: [],
   },
 
   services: [
diff --git a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
index aea72c7d1dcc0fd6d967f89fedd66f28e2352109..4607e7834235573b4b4abc0c3734b884ec8c89b0 100644
--- a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
+++ b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
@@ -17,7 +17,7 @@ const AskAIForm = styled.div`
   border-top-left-radius: 4px;
   border-top-right-radius: 4px;
   box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08);
-  display: inline-flex;
+  display: ${prop => (prop.hidden ? 'none' : 'inline-flex;')};
   justify-content: space-between;
   padding: 8px 12px;
   width: 458px;
@@ -96,23 +96,38 @@ const ResultText = styled.div`
 const SubmitButton = styled.button`
   background: none;
   border: none;
-  cursor: pointer;
+  cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};
   outline: none;
   padding: 0 8px; /* Adjust padding as needed */
 `;
 
+const PromptDiv = styled.div`
+  background: white;
+  border: 0.5px #dcdcdc solid;
+  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08);
+  display: inline-flex;
+  justify-content: space-between;
+  padding: 8px 12px;
+  width: 458px;
+`;
+
 const AskAIOverlay = ({ setPosition, position, config }) => {
   const { t, i18n } = useTranslation();
   const {
+    app,
     pmViews: { main },
     options,
   } = useContext(WaxContext);
   const [result, setResult] = useState('');
   const [isSubmitted, setIsSubmitted] = useState(false);
   const [isLoading, setIsLoading] = useState(false);
+  const [promptIdx, setPromptIdx] = useState(-1);
   const { AskAiContentTransformation } = config;
   const inputRef = useRef(null);
 
+  const aiService = app.config.get('config.AskAiContentService');
+  const prompts = aiService.CustomPrompts;
+
   useLayoutEffect(() => {
     const WaxSurface = main.dom.getBoundingClientRect();
     const { selection } = main.state;
@@ -176,6 +191,7 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
       setIsSubmitted(true);
     } finally {
       setIsLoading(false);
+      setPromptIdx(-1);
     }
   };
 
@@ -198,9 +214,16 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
     }
   };
 
+  const handleSubmitPrompt = idx => {
+    setPromptIdx(idx);
+
+    inputRef.current.value = prompts[idx];
+    handleSubmit(new Event('submit'));
+  };
+
   return options?.AiOn ? (
     <Wrapper id="ai-overlay">
-      <AskAIForm>
+      <AskAIForm hidden={!aiService.FreeTextPromptsOn}>
         <AskAIFormInput
           id="askAiInput"
           onKeyPress={handleKeyDown}
@@ -216,6 +239,21 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
           {isLoading ? <icons.loaderIco /> : <icons.submitIco />}
         </SubmitButton>
       </AskAIForm>
+      {prompts.map((prompt, idx) => (
+        <PromptDiv key={prompt}>
+          <ResultText>{prompt}</ResultText>
+          <SubmitButton
+            disabled={isLoading}
+            onClick={() => handleSubmitPrompt(idx)}
+          >
+            {isLoading && idx === promptIdx ? (
+              <icons.loaderIco />
+            ) : (
+              <icons.submitIco />
+            )}
+          </SubmitButton>
+        </PromptDiv>
+      ))}
       {isSubmitted && (
         <>
           <ResultDiv>