diff --git a/dev-ai-app-dev-rel/build/build.md b/dev-ai-app-dev-rel/build/build.md index f5d5d1a3f..d1ffdabae 100644 --- a/dev-ai-app-dev-rel/build/build.md +++ b/dev-ai-app-dev-rel/build/build.md @@ -4,7 +4,7 @@ In this lab, you build a complete retail return recommendation engine. You'll connect to the database, explore order and image data, and invoke an LLM (Large Language Model) to generate personalized return allowance decisions and policy explanations. Building on earlier exercises, you’ll use Python to deliver a fully integrated, AI-powered retail returns application. -This lab uses some of the basic coding samples you created in lab 2, such as `cursor.execute` and more. +This lab uses some of the basic coding samples you created in lab 3, such as `cursor.execute` and more. Estimated Time: 30 minutes @@ -20,10 +20,10 @@ Estimated Time: 30 minutes This lab assumes you have: * An Oracle Cloud account -* Completed lab 1: Connect to the Development Environment +* Completed lab 2: Connect to the Development Environment ## Task 1: Build the application in Jupyter Notebook ->💡**Note**: Review Lab 1: Connect to the development environment for instructions on accessing JupyterLab. +>💡**Note**: Review Lab 2: Connect to the development environment for instructions on accessing JupyterLab. 1. You should see a terminal pop up once you are logged into LiveLabs. (You can always create a new one by clicking on the blue + and select terminal) @@ -182,7 +182,7 @@ You will query customer data from the `customer_returns_dv` JSON duality view, w ![Fetch customer](./images/fetch-customer.png " ") -If you saw or ran the demo lab "Run the Demo" earlier, this is what gets printed out when the Return officer clicks on the customer 1000. You just built it. +If you saw or ran the demo lab #1 "Run the Demo" earlier, this is what gets printed out when the Return officer clicks on the customer 1000. You just built it. ## Task 4: Create a function to generate recommendations for the customer diff --git a/dev-ai-app-dev-rel/introduction/introduction.md b/dev-ai-app-dev-rel/introduction/introduction.md index 956a5b08d..831168e59 100644 --- a/dev-ai-app-dev-rel/introduction/introduction.md +++ b/dev-ai-app-dev-rel/introduction/introduction.md @@ -6,32 +6,30 @@ In this set of labs, we'll look at SeerGroup, a global conglomerate with multipl This workshop shows how SeerGroup tackles this. By keeping data in one place and using more modern tools and framworks, such as LangChain, they are working to cut out multiple integrations to give analysts, engineers, and managers a **single platform** for smarter and more informed approvals, efficient and more accurate investigations, and clearer customer answers and outcomes. - -✅ **Overview of Labs 1–4** +✅ **Overview of Labs 2–5** In the next labs, you’ll connect to Oracle AI Database, shape data using JSON Duality Views, build a retrieval-augmented application, and then extend it to be an AI agent via reusable tools using Model Context Protocol (MCP). By the end, you’ll see how SeerGroup industries can move from siloed processes to data and AI-driven applications. Labs 1 and 2 will be in the morning session, and Labs 3 and 4 will be completed in the afternoon sessions. -* **Lab 1 – Connect to your environment** +* **Lab 2 – Connect to your environment** Log in to the JupyterLab IDE where you’ll run Python code. -* **Lab 2 – Build the data foundation** +* **Lab 3 – Build the data foundation** Use Python with Oracle AI Database to create tables, shape them into JSON Duality Views, and interact with them using both SQL and MongoDB-style API syntax. This lays the groundwork for AI workflows across SeerGroup. -* **Lab 3 – Implement RAG** +* **Lab 4 – Implement RAG** Construct a working AI application. Pull customer and grid data, generate recommendations with OCI Generative AI, chunk and vectorize the results, and answer follow-up questions using Vector Search + RAG. -* **Lab 4 – Explorer agentic apps with Oracle MCP** +* **Lab 5 – Explorer agentic apps with Oracle MCP** This lab links Oracle MCP to LangChain (an AI agent framework ) through a Flask web console and exposes SQL operations as AI-discoverable tools. It includes SeerHolding sample schemas for domain-specific prompt testing. By the end, you’ll have a complete toolkit—from clean data to live AI apps to composable tools—that shows how SeerGroup industries can turn their data into intelligent applications. diff --git a/dev-ai-app-dev-rel/user-story/files/starter-file.sql b/dev-ai-app-dev-rel/user-story/files/starter-file.sql new file mode 100644 index 000000000..9d7e762e8 --- /dev/null +++ b/dev-ai-app-dev-rel/user-story/files/starter-file.sql @@ -0,0 +1,101 @@ +/* NOTE: Files cannot contain empty lines (line breaks) */ +/* Specify the base URL that you copied from your files in OCI Object Storage in the define base_URL line below*/ +/* change idthydc0kinr to your real namespace. The name is case-sensitive. */ +/* change ADWCLab to your real bucket name. The name is case-sensitive. */ +/* change us-phoenix-1 to your real region name. The name is case-sensitive. */ +/* you can find these values on the OCI Console .. Storage .. Object Storage screen */ +set define on +define base_URL='https://objectstorage.us-phoenix-1.oraclecloud.com/n/idthydc0kinr/b/ADWCLab/o' +/* copy Channels table */ +begin + dbms_cloud.copy_data( + table_name =>'CHANNELS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/chan_v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true') + ); +end; +/ +/* copy Countries table */ +begin + dbms_cloud.copy_data( + table_name =>'COUNTRIES', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/coun_v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true') + ); +end; +/ +/* Copy customers */ +begin + dbms_cloud.copy_data( + table_name =>'CUSTOMERS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/cust1v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'SUPPLEMENTARY_DEMOGRAPHICS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/dem1v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'SALES', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/dmsal_v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'PRODUCTS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/prod1v3.dat', + format => json_object('delimiter' value '|', 'quote' value '^', 'ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'PROMOTIONS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/prom1v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'SALES', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/sale1v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'TIMES', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/time_v3.dat', + format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true') + ); +end; +/ +begin + dbms_cloud.copy_data( + table_name =>'COSTS', + credential_name =>'OBJ_STORE_CRED', + file_uri_list =>'&base_URL/costs.dat', + format => json_object('ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true') + ); +end; +/ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-ai.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-ai.png new file mode 100644 index 000000000..39ab529a8 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-ai.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-approve.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-approve.png new file mode 100644 index 000000000..72fedc9c2 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-approve.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-approved-list.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-approved-list.png new file mode 100644 index 000000000..e707bda8f Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-approved-list.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot1.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot1.png new file mode 100644 index 000000000..96cd4450d Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot1.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot2.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot2.png new file mode 100644 index 000000000..8b0082501 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-chatbot2.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-dashboard.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-dashboard.png new file mode 100644 index 000000000..3680fd451 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-decision.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-decision.png new file mode 100644 index 000000000..d18e6b10e Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-decision.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-download-pdf.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-download-pdf.png new file mode 100644 index 000000000..a88d58a9b Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-download-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-download.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-download.png new file mode 100644 index 000000000..a8836bcc6 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-download.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-save.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-save.png new file mode 100644 index 000000000..cd4d37b41 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-save.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-final-loan.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-final-loan.png new file mode 100644 index 000000000..ba4ce001c Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-final-loan.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-loan.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-loan.png new file mode 100644 index 000000000..353b635e7 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson-select-loan.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alex-anderson.png b/dev-ai-app-dev-rel/user-story/images/alex-anderson.png new file mode 100644 index 000000000..962e05611 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alex-anderson.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-ai.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-ai.png new file mode 100644 index 000000000..865cb1edf Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-ai.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-chatbot.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-chatbot.png new file mode 100644 index 000000000..7806f17e5 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-chatbot.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-decision.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-decision.png new file mode 100644 index 000000000..1c282d176 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-decision.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-deny.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-deny.png new file mode 100644 index 000000000..2ba877a49 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-deny.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-details.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-details.png new file mode 100644 index 000000000..bdb9117b1 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-details.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-dotplot.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-dotplot.png new file mode 100644 index 000000000..335782505 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-dotplot.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-download.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-download.png new file mode 100644 index 000000000..270798ce5 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-download.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-graph.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-graph.png new file mode 100644 index 000000000..975cbc688 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-graph.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith-pdf.png b/dev-ai-app-dev-rel/user-story/images/alice-smith-pdf.png new file mode 100644 index 000000000..172524785 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/alice-smith.png b/dev-ai-app-dev-rel/user-story/images/alice-smith.png new file mode 100644 index 000000000..68a699d1d Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/alice-smith.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/app-home.png b/dev-ai-app-dev-rel/user-story/images/app-home.png new file mode 100644 index 000000000..b63e95e00 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/app-home.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/click-dashboard.png b/dev-ai-app-dev-rel/user-story/images/click-dashboard.png new file mode 100644 index 000000000..0c414e957 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/click-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/code-highlight-1.png b/dev-ai-app-dev-rel/user-story/images/code-highlight-1.png new file mode 100644 index 000000000..decd21130 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/code-highlight-1.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/customer-details.png b/dev-ai-app-dev-rel/user-story/images/customer-details.png new file mode 100644 index 000000000..731356111 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/customer-details.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-in-progress.png b/dev-ai-app-dev-rel/user-story/images/david-in-progress.png new file mode 100644 index 000000000..478056947 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-in-progress.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-return-dashboard.png b/dev-ai-app-dev-rel/user-story/images/david-return-dashboard.png new file mode 100644 index 000000000..243577541 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-return-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-chatbot.png b/dev-ai-app-dev-rel/user-story/images/david-williams-chatbot.png new file mode 100644 index 000000000..4b3f7bfc2 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-chatbot.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-decision.png b/dev-ai-app-dev-rel/user-story/images/david-williams-decision.png new file mode 100644 index 000000000..6537e1918 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-decision.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-decisions.png b/dev-ai-app-dev-rel/user-story/images/david-williams-decisions.png new file mode 100644 index 000000000..4a347aacb Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-decisions.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-decisons.png b/dev-ai-app-dev-rel/user-story/images/david-williams-decisons.png new file mode 100644 index 000000000..a35ecfd0d Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-decisons.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-details.png b/dev-ai-app-dev-rel/user-story/images/david-williams-details.png new file mode 100644 index 000000000..bc59d3b7b Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-details.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-download.png b/dev-ai-app-dev-rel/user-story/images/david-williams-download.png new file mode 100644 index 000000000..c1d2f7d98 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-download.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-generate-pdf.png b/dev-ai-app-dev-rel/user-story/images/david-williams-generate-pdf.png new file mode 100644 index 000000000..ee3051028 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-generate-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-save.png b/dev-ai-app-dev-rel/user-story/images/david-williams-save.png new file mode 100644 index 000000000..cc630a792 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-save.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams-select.png b/dev-ai-app-dev-rel/user-story/images/david-williams-select.png new file mode 100644 index 000000000..00f81f3ee Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams-select.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/david-williams.png b/dev-ai-app-dev-rel/user-story/images/david-williams.png new file mode 100644 index 000000000..7ddaf1d58 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/david-williams.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/expand-graph.png b/dev-ai-app-dev-rel/user-story/images/expand-graph.png new file mode 100644 index 000000000..3cc2a37c5 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/expand-graph.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/income-updated.png b/dev-ai-app-dev-rel/user-story/images/income-updated.png new file mode 100644 index 000000000..a0e294345 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/income-updated.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/isla-wilson.png b/dev-ai-app-dev-rel/user-story/images/isla-wilson.png new file mode 100644 index 000000000..8c173d229 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/isla-wilson.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/jason-moore.png b/dev-ai-app-dev-rel/user-story/images/jason-moore.png new file mode 100644 index 000000000..6cb0e6c77 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/jason-moore.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/login.png b/dev-ai-app-dev-rel/user-story/images/login.png new file mode 100644 index 000000000..40927d0cf Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/login.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/open-alice-smith-pdf.png b/dev-ai-app-dev-rel/user-story/images/open-alice-smith-pdf.png new file mode 100644 index 000000000..bb38faa12 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/open-alice-smith-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/open-david-williams-pdf.png b/dev-ai-app-dev-rel/user-story/images/open-david-williams-pdf.png new file mode 100644 index 000000000..c4f8ff487 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/open-david-williams-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/pending-review.png b/dev-ai-app-dev-rel/user-story/images/pending-review.png new file mode 100644 index 000000000..ae06cbf11 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/pending-review.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/process-selected-pdf.png b/dev-ai-app-dev-rel/user-story/images/process-selected-pdf.png new file mode 100644 index 000000000..48f2c9178 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/process-selected-pdf.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/profile-updated.png b/dev-ai-app-dev-rel/user-story/images/profile-updated.png new file mode 100644 index 000000000..6aa225753 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/profile-updated.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/return-description-updated.png b/dev-ai-app-dev-rel/user-story/images/return-description-updated.png new file mode 100644 index 000000000..727e516a1 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/return-description-updated.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/sample1.png b/dev-ai-app-dev-rel/user-story/images/sample1.png new file mode 100644 index 000000000..2d9ad4738 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/sample1.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/sample2.png b/dev-ai-app-dev-rel/user-story/images/sample2.png new file mode 100644 index 000000000..145c9d39c Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/sample2.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/save-details.png b/dev-ai-app-dev-rel/user-story/images/save-details.png new file mode 100644 index 000000000..ffb3e8a32 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/save-details.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/select-alex-anderson.png b/dev-ai-app-dev-rel/user-story/images/select-alex-anderson.png new file mode 100644 index 000000000..21e962b79 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/select-alex-anderson.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/select-dashboard.png b/dev-ai-app-dev-rel/user-story/images/select-dashboard.png new file mode 100644 index 000000000..2b355708b Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/select-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/select-james-woods-denied.png b/dev-ai-app-dev-rel/user-story/images/select-james-woods-denied.png new file mode 100644 index 000000000..b02b44a36 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/select-james-woods-denied.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/smith-denied-list.png b/dev-ai-app-dev-rel/user-story/images/smith-denied-list.png new file mode 100644 index 000000000..d9a19cfe2 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/smith-denied-list.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/smith-return-dashboard.png b/dev-ai-app-dev-rel/user-story/images/smith-return-dashboard.png new file mode 100644 index 000000000..e5ef14a9b Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/smith-return-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/start-demo.png b/dev-ai-app-dev-rel/user-story/images/start-demo.png new file mode 100644 index 000000000..376187731 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/start-demo.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/upload-document.png b/dev-ai-app-dev-rel/user-story/images/upload-document.png new file mode 100644 index 000000000..ad16c3358 Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/upload-document.png differ diff --git a/dev-ai-app-dev-rel/user-story/images/woods-return-dashboard.png b/dev-ai-app-dev-rel/user-story/images/woods-return-dashboard.png new file mode 100644 index 000000000..92a50b35f Binary files /dev/null and b/dev-ai-app-dev-rel/user-story/images/woods-return-dashboard.png differ diff --git a/dev-ai-app-dev-rel/user-story/user-story.md b/dev-ai-app-dev-rel/user-story/user-story.md new file mode 100644 index 000000000..004338997 --- /dev/null +++ b/dev-ai-app-dev-rel/user-story/user-story.md @@ -0,0 +1,242 @@ +# Run the Demo + +## Introduction + +In this lab, you’ll step into the shoes of a **Return Authorization Specialist** using an AI powered returns app built on Oracle AI Database. See how Generative AI, Vector Search, and Graph Analytics reduce review times by automating photo analysis, order verification, and fraud checks - all inside one converged database, with zero data shuffling. + +**Disclaimer**: Please note that your results may vary. The information provided is generated by OCI Generative AI services, and your outcomes may differ from those presented. + +Estimated Lab Time: 30 minutes + +### Objectives + +In this lab, you will: + +* Review how the Seer Retail return authorization app incorporates the use of AI Vector Search, Graph analytics, and other converged database features, all without requiring complex data movement or separate systems. + +### Prerequisites + +This lab assumes you have: + +* An Oracle account to submit your LiveLabs Sandbox reservation. + +## Task 1: Launch the application + +1. To access the demo environment, click **View Login Info** in the top left corner of the page. Click the **Start the Demo** link. + + ![Click the Start Demo Link](./images/start-demo.png =50%x*) + +2. Welcome to Seer Holdings! Select **Retail** as Industry and **Return Authorization Specialist** as role. Enter in a username and click **Login**. + + ![Login](./images/login.png =50%x*) + +3. Welcome to the Seer Retail return authorization application! Congratulations, you are now connected to the demo environment. You can now execute the different tasks for this Lab. + + ![Homepage](./images/app-home.png =50%x*) + +## Task 2: Demo - Customer with medium risk score + +In this first example, you will use the application to authorize a return for a customer with a medium risk score. Select the third user on your to-do list David Williams. + +1. On the Dashboard page, from the pending review list, select the review button for **David Williams**. + + ![Select David Williams](./images/david-williams.png =50%x*) + +2. Opening David William's profile reveals his return authorization details—name, email, request status, loyalty tier, and risk level. + + ![David Williams Details Page](./images/david-williams-details.png =50%x*) + +3. At the bottom of David William’s profile, you will find **AI Guru**—a virtual Return‑Authorization Specialist who guides attendees through every step of the AI‑driven returns portal. AI Guru highlights how AI Vector Search compares each request to millions of past returns, and translates risk scores into plain language. It's friendly tips humanize concepts like graph‑based customer‑lifetime‑value analysis and RAG‑generated policy explanations, so users of any technical level can confidently approve, pend, or deny a return. + + **Copy** the question below into the AI chatbot and press **Enter**. What does AI Guru say? + + ```text + + Has this customer returned similar items before? + + ``` + + ![David Williams chatbot](./images/david-williams-chatbot.png =50%x*) + +>💡 In Oracle AI Database, **AI Vector Search** allows you to combine your business data with a Large Language Model (LLM) to reduce hallucinations and get accurate answers from your data. + +4. Select the **Navigate To Decisions** button. + + ![David Williams Decision](./images/david-williams-decision.png =50%x*) + + After navigating to the decisions page, the AI evaluation runs in the background. Using AI Vector Search, it semantically compares the content against thousands of historical return records—identifying patterns that suggest either legitimate claims or potential abuse. At the same time, Graph Analytics examines the customer’s prior behavior, highlighting unusual return frequency or links to high-risk product categories. For each case, the system assigns a risk score ranging from Low to Very High and generates a clear recommendation—such as “Approved – consistent with customer profile” or “Request More Info – insufficient documentation.” + +5. In the **Select Your Desired Option** section, the approval probability and decision are displayed. Once a decision is made, the analyst finalizes the return. A professionally formatted PDF letter is automatically generated, summarizing the outcome and rationale. The customer receives an email moments later, clearly stating whether their return was approved, denied, or needs more information—along with an explanation grounded in policy and precedent. + + ![David Williams Decisions Page](./images/david-williams-decisions.png =50%x*) + +6. Select the AI-recommended return decision. In this example, that is **Request More Info**. + + >Please note that your results may vary. The information provided is generated by OCI Generative AI services, and your outcomes may differ from those presented. + + ![David Williams Select Request More Info](./images/david-williams-select.png =50%x*) + +7. Set the final return status to **Request Info**, then click **Confirm Decision** to complete the process. + + The return status has been updated to 'Request Info' and saved to the customer profile. + + ![David Williams Save Return Status](./images/david-williams-save.png =50%x*) + +8. Click the **Download Decision as PDF** button. + + ![David Williams Generate PDF](./images/david-williams-generate-pdf.png =50%x*) + +9. Click **Download PDF** + + ![David Williams Download PDF](./images/david-williams-download.png =50%x*) + +10. Display the message the customer would see by opening the downloaded PDF. + + ![Open David Williams PDF](./images/open-david-williams-pdf.png =50%x*) + +11. Click the **Return to Dashboard** button to navigate back to the Dashboard. + + ![Return to Dashboard](./images/david-return-dashboard.png =50%x*) + +12. Expand **View In Progress Customers**. We can see that David Williams has been removed from the **Pending Customers** list and has been added to the **In Progress Customers**. + + ![David Williams In Progress List](./images/david-in-progress.png =50%x*) + +**Task Summary** + +Once you select and save one of the 3 return options recommended by the AI: + +✅ The customer's return status is updated. + +✅ A finalized PDF decision document is generated. + +✅ The dashboard reflects the change in real-time — marking David as In Progress. + +Congratulations, you have just approved your first customer return! Proceed to the next task. + +## Task 3: Demo - Denying a Customer with high risk +In this example, you will navigate the application to review a customer and deny them as part of the exercise. The first user on your to-do list is Alice Smith. + +1. On the Dashboard page, from the pending review list, select the Review Button for **Alice Smith**. + + ![Select Alice Smith](./images/alice-smith.png =50%x*) + +2. Opening Alice Smith’s profile displays her return package details. Within a few seconds, the AI automatically generates recommendations. In this case, the system evaluates a less favorable profile and identifies key risk factors. + + This customer has: + + * A lifetime spend of **$3301.29** + * A transaction detail indicating **damaged item for order 5001** + * A return frequency of **2** + + The AI evaluates the profile and suggests next steps. In this case, it recommends requesting more info—but also provides clear, explanations as to why the customer was put into a high risk category. + + ![Alice Smith AI generated recommendations](./images/alice-smith-ai.png =50%x*) + +3. Select the **Navigate to Customer Decisions** button. + + ![Alice Smith Decision](./images/alice-smith-decision.png =50%x*) + +>⁉️ **What are two reasons that the AI decided to deny this return?** ⁉️ + +4. Expand **Interactive Graph: Customer Return & Risk** to view the graph. + + ![Alice Smith Graph](./images/expand-graph.png =50%x*) + + On the decision page, the return specialist can use **Interactive Graph: Customer Return & Risk** to explore relationships in return authorization scenarios. Built with **Oracle Graph**, this feature visually maps decisions and highlights important features of the request like the customer loyalty status and return reason. + + ![Alice Smith Graph](./images/alice-smith-graph.png =50%x*) + + This graph shows Alice’s return request linked to a policy rule (in-store within 30 days) and the system’s recommendation. By connecting the customer, request, reason, and policy in one view, the Operational Property Graph makes it clear why a return is approved, denied, or flagged. Analysts can instantly explain the decision to the customer, reducing disputes and building trust. + +>💡 In Oracle AI Database, **Property Graph** allows you to treat your data like a network of connected points, where each point (called a node) and each link (called an edge) has its own details or properties. This setup helps you run graph analytics, to find important connections or patterns, directly within the database. + +5. The return status is set to **Denied**. Click the **Confirm Decision** button. + + The return status has been updated to 'Denied' and saved to the customer profile. + + ![Alice Smith Return Status](./images/alice-smith-deny.png =50%x*) + +6. Press the **Download Decision as PDF** button to save the AI responses and proceed to the final return authorization. + + ![Alice-Smith PDF](./images/alice-smith-pdf.png =50%x*) + +7. Click the **Download PDF** button. + + ![Alice Smith Download Recommendation](./images/alice-smith-download.png =50%x*) + +8. Display the message the customer would see by opening the downloaded PDF. + + ![Open Alice Smith PDF](./images/open-alice-smith-pdf.png =50%x*) + +9. Click the **Return to Dashboard** button to navigate back to the Dashboard. + + ![Return to Dashboard](./images/smith-return-dashboard.png =50%x*) + +10. Expand **View Denied Customers**. You will see that Alice Smith has been moved from the **Pending Customer** list to the **Denied Customers** list. + + ![Alice Smith Denied List](./images/smith-denied-list.png =50%x*) + +**Conclusion** + +Congratulations, you have finished reviewing a customer with high fraud risk! Proceed to the next task. + +## Task 4: Demo - Update customer details + +Lastly, lets explore how the system uses JSON Duality Views to handle profile updates. In this task, you will edit a customer’s details. In this example, the customer was asked to submit updated proof of carrier tracking. + +1. On the Dashboard page, from the **Pending Customers** list, select the review button for **Isla Wilson**. + + ![Select Isla Wilson](./images/isla-wilson.png =50%x*) + +2. We will upload a document to update the item's return condition. On the Customer Details page, click the **Upload Document** button. + + ![Upload Document](./images/upload-document.png =50%x*) + +3. The PDF file has been loaded. Click the **Process PDF** button. + + ![Click Process Selected PDF](./images/process-selected-pdf.png =50%x*) + +>💡 **JSON Duality Views** in Oracle AI Database let's you update unstructured data in an easy, high-level format while automatically handling the technical details behind the scenes. This makes it faster and simpler to work with messy data and connect it to structured systems. + +4. The customer profile has been updated. + + ![Customer Profile Updated](./images/profile-updated.png) + +5. Navigate to the customer decisions page and notice that the information has been updated. Thanks to JSON Transform and JSON Duality Views, only the relevant field is modified — leaving the rest of the profile UNTOUCHED. + + ![Customer Profile Updated](./images/return-description-updated.png) + +**Task Summary** + +Once the document is uploaded: + +✅ The system automatically detects the new item condition data. + +✅ Then their profile will be updated for the return description. + +✅ And thanks to JSON Transform and JSON Duality Views, only the relevant field is modified — leaving the rest of the profile UNTOUCHED. + +## Conclusion + +In conclusion, our Return Authorization App was able to leverage Oracle AI Database technologies such as **AI Vector Search, Property Graph and JSON Duality Views** to: + +✅ Automate profile evaluations + +✅ Provide AI-driven return recommendations by using an RAG model powered by a Oracle AI Database's AI Vector Search and OCI Generative AI service + +✅ Enable seamless profile updates with JSON Duality Views + +✅ And empower return analysts with actionable insights through Operational Property Graphs + +By combining these advanced tools, the application enables faster, smarter decisions and delivers clear guidance on how customers can improve their eligibility. + +**Next:** How about learning how the application was implemented in Python? Continue with the next labs and start developing! + +## Learn More + +* [Oracle AI Database Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/23/) + +## Acknowledgements +* **Authors** - Linda Foinding, Francis Regalado +* **Last Updated By/Date** - Linda Foinding, November 2025 \ No newline at end of file diff --git a/dev-ai-app-dev-rel/workshops/sandbox/manifest.json b/dev-ai-app-dev-rel/workshops/sandbox/manifest.json index 986fa2161..22b9135bb 100644 --- a/dev-ai-app-dev-rel/workshops/sandbox/manifest.json +++ b/dev-ai-app-dev-rel/workshops/sandbox/manifest.json @@ -6,29 +6,34 @@ "title": "Introduction", "description": "The Introduction is always first. The title and contents menu title match for the Introduction.", "filename": "../../introduction/introduction.md" + }, + { + "title": "Lab 1: Run the Demo", + "description": "Labs that follow the introduction are numbered, starting with Lab 1", + "filename": "../../user-story/user-story.md" }, { - "title": "Lab 1: Connect to the Development Environment", + "title": "Lab 2: Connect to the Development Environment", "description": "This is a step-by-step guide showcasing how the demo instance is navigated", "filename": "../../connect-to-env/connect-to-env.md" }, { - "title": "Lab 2: Coding Basics on Oracle AI Database", + "title": "Lab 3: Coding Basics on Oracle AI Database", "description": "Some coding examples", "filename": "../../codingbasics/codingbasics.md" }, { - "title": "Lab 3: Step by Step - Implement RAG with Oracle AI Database", + "title": "Lab 4: Step by Step - Implement RAG with Oracle AI Database", "description": "This is a step-by-step guide showcasing how the demo instance is navigated", "filename": "../../build/build.md" }, { - "title": "Lab 4: Build Agentic AI", + "title": "Lab 5: Build Agentic AI", "description": "This is a step-by-step guide showcasing how the demo instance is created", "filename": "../../oraclemcp/oraclemcp.md" }, { - "title": "Quiz", + "title": "Skills Badge Quiz", "description": "Test your knowledge of RAG and agentic applications", "filename": "../../quiz/quiz.md" },