diff --git a/enterprise/frontend/src/embedding-sdk/cli/utils/generate-password.ts b/enterprise/frontend/src/embedding-sdk/cli/utils/generate-password.ts
index ad15b362d61e9f684a500faabcb1eca883a22d2c..466db338e1420721bab94e726ab2a2f534e8fe49 100644
--- a/enterprise/frontend/src/embedding-sdk/cli/utils/generate-password.ts
+++ b/enterprise/frontend/src/embedding-sdk/cli/utils/generate-password.ts
@@ -1,16 +1,29 @@
 export function generateRandomDemoPassword(): string {
   const chars = "abcdefghijklmnopqrstuvwxyz";
+  const upperCaseChars = chars.toUpperCase();
   const numbers = "0123456789";
 
-  const allChars = chars + chars.toUpperCase() + numbers;
+  const allChars = chars + upperCaseChars + numbers;
   const length = 14;
 
   let password = "";
 
-  for (let i = 0; i < length; i++) {
-    const randomIndex = Math.floor(Math.random() * allChars.length);
-    password += allChars[randomIndex];
+  //make sure we have at least 1 number, one upper case and one lower case character
+  password += pickRandom(chars);
+  password += pickRandom(upperCaseChars);
+  password += pickRandom(numbers);
+
+  for (let i = password.length; i < length; i++) {
+    password += pickRandom(allChars);
   }
 
-  return password;
+  return shuffle(password);
 }
+
+const pickRandom = (arr: string) => arr[Math.floor(Math.random() * arr.length)];
+
+const shuffle = (arr: string) =>
+  arr
+    .split("")
+    .sort(() => Math.random() - 0.5)
+    .join("");