<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ruvimbo Delia Hakata</title>
    <description>The latest articles on Forem by Ruvimbo Delia Hakata (@delia_rue).</description>
    <link>https://forem.com/delia_rue</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3285163%2F7b193974-a483-4728-ba0e-2e7846075bc4.png</url>
      <title>Forem: Ruvimbo Delia Hakata</title>
      <link>https://forem.com/delia_rue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/delia_rue"/>
    <language>en</language>
    <item>
      <title>From HTTPS to UCP: Shopping Is About to Stop Being Your Problem</title>
      <dc:creator>Ruvimbo Delia Hakata</dc:creator>
      <pubDate>Mon, 25 May 2026 06:16:30 +0000</pubDate>
      <link>https://forem.com/delia_rue/from-https-to-ucp-shopping-is-about-to-stop-being-your-problem-3kk5</link>
      <guid>https://forem.com/delia_rue/from-https-to-ucp-shopping-is-about-to-stop-being-your-problem-3kk5</guid>
      <description>&lt;p&gt;The narrative of digital transformation in retail has been remarkably consistent. First, get online. Then build an app. Then optimize checkout. Add loyalty points, push notifications, maybe a chatbot.&lt;/p&gt;

&lt;p&gt;For years, this was the right strategy. It moved retail from physical-only to omnichannel, giving customers access, convenience, and choice.&lt;/p&gt;

&lt;p&gt;But something fundamental shifted at Google I/O 2026.&lt;/p&gt;

&lt;p&gt;The conversation is no longer about getting customers to your storefront—digital or physical. The question retailers must now answer is: &lt;strong&gt;When your customer's agent comes shopping, will your business be ready?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the move from HTTP/HTTPS (where humans browse sites) to the &lt;strong&gt;Universal Commerce Protocol (UCP)&lt;/strong&gt; (where agents &lt;em&gt;act&lt;/em&gt; across platforms). It redefines not just the technology of retail, but the entire relationship between businesses, customers, and shopping itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technology: Where HTTPS Met Its Match
&lt;/h2&gt;

&lt;p&gt;To understand what's happening, it helps to think about HTTP's role in web history. HTTP standardized how browsers and servers communicate, unlocking the web as we know it. Similarly, UCP is designed to standardize how agents—autonomous systems acting on behalf of customers—can understand and transact across different retailers, payment systems, inventory platforms, and fulfillment networks.&lt;/p&gt;

&lt;p&gt;But UCP isn't just a protocol upgrade. It's accompanied by three critical technical announcements that fundamentally change what's possible:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Gemini Spark and Proactive Agent Commerce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Spark is a browser-based agent that doesn't wait for you to ask. It reads your calendar, understands your commitments, and anticipates your needs. This is where shopping transforms from a task you remember into a background process that simply happens.&lt;/p&gt;

&lt;p&gt;For someone like me—juggling data science work, team leadership, community projects, and a dozen other commitments—Spark represents a genuine return of time. When I see on my calendar that I'm on "snack duty" for a weekend game, the agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the context (when, where, how many people)&lt;/li&gt;
&lt;li&gt;Recall my constraints (dietary preferences, budget ranges, previous choices)&lt;/li&gt;
&lt;li&gt;Proactively set up an Instacart order&lt;/li&gt;
&lt;li&gt;Remember to exclude nuts because someone in the group has allergies&lt;/li&gt;
&lt;li&gt;Present the order for approval before checkout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't a recommendation. This is delegation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Agent Payments Protocol (AP2) and Trust Through Guardrails&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With great delegation comes the need for security. AP2 allows customers to set strict, tamper-proof guardrails that agents must follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spending caps per transaction&lt;/li&gt;
&lt;li&gt;Brand whitelists and blacklists&lt;/li&gt;
&lt;li&gt;Category restrictions&lt;/li&gt;
&lt;li&gt;Approval thresholds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every transaction creates a cryptographically secure digital paper trail. The customer maintains full accountability and can revoke agent access instantly.&lt;/p&gt;

&lt;p&gt;This solves what traditional fintech couldn't: How do you let an autonomous system handle money on your behalf &lt;em&gt;while maintaining control&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Gemini Nano and Offline-First Shopping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The final piece is perhaps the most underrated: Gemini Nano 4, an on-device model powerful enough to run complex reasoning entirely locally—in airplane mode, with no internet connection.&lt;/p&gt;

&lt;p&gt;This matters because shopping doesn't always happen online. Sometimes you're in a mall with spotty WiFi, trying to make style decisions for formal wear, and you need product information, sizing guides, or virtual try-on capabilities &lt;em&gt;without relying on the network&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;With Nano, a custom retail app can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store product catalogues locally&lt;/li&gt;
&lt;li&gt;Run visual recognition for style matching&lt;/li&gt;
&lt;li&gt;Provide detailed product comparisons&lt;/li&gt;
&lt;li&gt;Offer sizing guidance&lt;/li&gt;
&lt;li&gt;Create virtual try-ons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All without a data connection. The technology disappears, and you get back to what actually matters: the decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters Personally (And Why It's Bigger Than Me)
&lt;/h2&gt;

&lt;p&gt;For years, I've approached shopping the same way I approach most of life: pragmatically. I don't have time for multiple apps, price comparisons, or decision paralysis. I have outcomes I need.&lt;/p&gt;

&lt;p&gt;The problem is that retail was built assuming everyone wants to browse, compare, and feel in control of the process. But that's not universal. People shop differently based on their constraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For the time-poor (me):&lt;/strong&gt; The best shopping experience isn't browsing. It's delegation. Spark handles the thinking; I handle the approval.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For the efficiency-focused:&lt;/strong&gt; It's not about the most beautiful app. It's about an agent that understands your priorities—best deals, minimal time, trusted brands—and orchestrates the entire journey. Tools like &lt;strong&gt;Antigravity 2.0&lt;/strong&gt;, Google's agent-first development platform, allow retailers to build custom agents that act as mission control. These agents can map optimal routes across stores, identify real-time deals, research product quality, and even execute purchases under strict conditions using AP2. For someone who refuses to waste time but won't sacrifice value, this is transformative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For the expert shoppers (like my cousin with formal wear):&lt;/strong&gt; It's about augmentation. Having an on-device assistant that knows her style preferences, past purchases, and body measurements while she's physically shopping—even offline—amplifies her decision-making without replacing it.&lt;/p&gt;

&lt;p&gt;The retail insight here is stark: &lt;strong&gt;Customers aren't losing interest in shopping. They're losing patience for friction.&lt;/strong&gt; They're not abandoning carts because the prices are too high; they're abandoning because the decision-making burden is too heavy, the process too fragmented, the experience too disconnected from how they actually live.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Business Case: Capturing the Opportunity Cost
&lt;/h2&gt;

&lt;p&gt;Most retailers think about lost sales in terms of price, stock, marketing budget, or abandoned carts.&lt;/p&gt;

&lt;p&gt;But there's another category that deserves attention: &lt;strong&gt;sales lost because shopping didn't fit into the customer's life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A customer doesn't buy because they're busy. Another delays because they're overwhelmed by options. Another avoids the store because the trip feels exhausting. Another abandons the cart because comparing offers is too much work.&lt;/p&gt;

&lt;p&gt;This is opportunity cost—and it's enormous.&lt;/p&gt;

&lt;p&gt;Agentic retail has the potential to recover this by helping customers shop &lt;em&gt;around&lt;/em&gt; their actual constraints, not just their preferences.&lt;/p&gt;

&lt;p&gt;The business question shifts from: &lt;em&gt;"What does this customer want?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To: &lt;em&gt;"What is making this purchase harder than it needs to be?"&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Retailers Need to Get Agent-Ready Now
&lt;/h2&gt;

&lt;p&gt;Here's where the strategic opportunity lies for retailers, especially those looking to compete globally.&lt;/p&gt;

&lt;p&gt;UCP is open-source and protocol-based, which means it's not controlled by any single platform. But adoption requires retailers to think beyond their website or app. The backend systems—product data, inventory accuracy, pricing consistency, return policies, loyalty rules, payment flows—must be reliable enough for agents to understand and trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A traditional digital transformation question:&lt;/strong&gt; "How do we get customers to our website or app?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An agentic commerce question:&lt;/strong&gt; "Are our systems clean, accurate, and trustworthy enough for an autonomous agent to recommend us?"&lt;/p&gt;

&lt;p&gt;This sounds subtle, but it's profound. A beautiful website helps humans decide. Clean, consistent, machine-readable data helps agents &lt;em&gt;recommend&lt;/em&gt; you.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Universal Cart&lt;/strong&gt;, which works across Search, YouTube, and Gmail, is an example of this in action. It can even apply intelligent reasoning—flagging when a processor selected in one cart isn't compatible with a motherboard in another, catching errors before purchase.&lt;/p&gt;

&lt;p&gt;For retailers, this means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Invest in data infrastructure.&lt;/strong&gt; Product catalogues, stock positions, pricing feeds, and policy documentation must be accurate and machine-readable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Think about agent-first UX.&lt;/strong&gt; Not every customer needs a beautiful storefront anymore; some need to be easily found and trusted by an agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build for transparency.&lt;/strong&gt; Agents will explain why they recommended your product over a competitor's. Can your systems support that narrative?&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Intelligence Question—And Why It Matters for Trust
&lt;/h2&gt;

&lt;p&gt;Here's where this gets complex.&lt;/p&gt;

&lt;p&gt;Traditional retail systems mostly see what you bought. An agentic system understands what you &lt;em&gt;intended&lt;/em&gt; to buy, what you compared, what you rejected, what mattered most, and what constraint shaped the final decision.&lt;/p&gt;

&lt;p&gt;That intelligence is valuable. It could improve demand planning, reduce waste, enable better promotions, and help retailers understand market behavior with real nuance.&lt;/p&gt;

&lt;p&gt;But it also raises uncomfortable questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who owns intent data?&lt;/strong&gt; If an agent learns that you're willing to spend more on sustainable products, or that you're price-sensitive, who controls that insight?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does real consent look like?&lt;/strong&gt; A checkbox saying "I agree to share shopping data" isn't consent; it's legal cover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you see what your agent shared?&lt;/strong&gt; Transparency has to flow both ways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you revoke access?&lt;/strong&gt; Consent must be revocable, not permanent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why was this recommended over that?&lt;/strong&gt; The agent's reasoning should be explainable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't just a technical problem to solve; it's a governance conversation.&lt;/p&gt;

&lt;p&gt;The retailers who build agentic commerce &lt;em&gt;responsibly&lt;/em&gt;—with transparent data handling, genuine consent, and customer control—will win trust. Those who treat it as an opportunity to extract data quietly in the background will eventually face backlash.&lt;/p&gt;

&lt;p&gt;The strongest competitive advantage in agentic retail won't come from having the best algorithms. It will come from being the brand customers trust their agents with.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;The shift from HTTP to UCP represents more than a technology transition. It's a redefinition of what retail is for.&lt;/p&gt;

&lt;p&gt;Shopping in the age of agents isn't about having more options. It's about removing the friction that keeps people from getting what they need.&lt;/p&gt;

&lt;p&gt;For me, that means delegating the thinking.&lt;br&gt;
For others, it means efficiency.&lt;br&gt;
For some, it means confidence in a decision.&lt;/p&gt;

&lt;p&gt;The retailer—and the technology platform—that understands this will thrive.&lt;/p&gt;

&lt;p&gt;But understanding it means asking better questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What's making this purchase harder than it needs to be?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are our systems ready for agents to trust us?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are we building this responsibly?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the questions that will separate retail leaders from everyone else in the agentic era.&lt;/p&gt;

&lt;p&gt;The question is no longer: "Does your retail business have an app?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The question is: When your customer's agent comes shopping, will your business be ready?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And more importantly: &lt;em&gt;Will your customer trust you with their agent?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
      <category>automation</category>
    </item>
    <item>
      <title>Cooking an AI Campaign in 5 Minutes with Google Cloud AI APIs</title>
      <dc:creator>Ruvimbo Delia Hakata</dc:creator>
      <pubDate>Sat, 23 May 2026 13:41:45 +0000</pubDate>
      <link>https://forem.com/delia_rue/cooking-an-ai-campaign-in-5-minutes-with-google-cloud-ai-apis-383i</link>
      <guid>https://forem.com/delia_rue/cooking-an-ai-campaign-in-5-minutes-with-google-cloud-ai-apis-383i</guid>
      <description>&lt;p&gt;About a month or so ago, during the Build with AI season, Google Developer Groups Johannesburg in South Africa hosted a build-a-thon with a concept I genuinely loved.&lt;/p&gt;

&lt;p&gt;The whole concept was structured like a kitchen lab, with a key focus on local small businesses . Small to medium sized businesses dominate Southern Africa, so when I first read and saw the post i could instantly relate. &lt;/p&gt;

&lt;p&gt;I loved the idea of turning code into usable business tools and a buildathon where we could be cooking up ideas together.&lt;/p&gt;

&lt;p&gt;Different ingredients. Different flavours. Different tools. Immense impact! &lt;/p&gt;

&lt;p&gt;I was excited to share the tutorial before the buildathon, but life and timing happened. So instead of letting the project sit in a notebook, I decided to turn it into an article anyone can follow, as they experiment with AI-powered marketing workflows. &lt;/p&gt;

&lt;p&gt;But before we get technical, let me explain why I chose to build a multilingual marketing pipeline using Google Cloud AI tools.&lt;/p&gt;

&lt;p&gt;There is a bigger vision here. This isn't just about generating automated ads. It’s about creating systems where entrepreneurs can describe what they sell, define their audience, click a few buttons, and instantly receive dynamic, multilingual marketing assets they can actually use for one of the biggest advertising platforms, Radio, hence the audio content in local languages. &lt;/p&gt;

&lt;p&gt;This project is simply the appetizer, a baseline and starting point for builders.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If AI can help market sneakers in multiple South African languages, what stops a small business from doing the same for lipstick, skincare, jewellery, furniture, or handmade products?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Recipe: One Prompt, Multilingual Radio Copy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://colab.research.google.com/gist/DeliaRudy/7e989ab921036166acdc43289022941a/business_story_telling.ipynb" rel="noopener noreferrer"&gt;Colab Notebook Link&lt;/a&gt;: &lt;a href="https://colab.research.google.com/gist/DeliaRudy/7e989ab921036166acdc43289022941a/business_story_telling.ipynb" rel="noopener noreferrer"&gt;https://colab.research.google.com/gist/DeliaRudy/7e989ab921036166acdc43289022941a/business_story_telling.ipynb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The lab focuses on a simple workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user describes their product or campaign idea.&lt;/li&gt;
&lt;li&gt;Gemini refines the marketing message.&lt;/li&gt;
&lt;li&gt;Google Text-to-Speech converts it into audio.&lt;/li&gt;
&lt;li&gt;Translation tools localise the campaign into multiple languages.&lt;/li&gt;
&lt;li&gt;Additional models extend multilingual support even further. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of creating separate campaigns manually, the system helps generate a full multilingual experience from a single idea.&lt;/p&gt;

&lt;p&gt;And honestly, this is where things became exciting for me.&lt;/p&gt;

&lt;p&gt;Because many SMEs struggle with one major thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Creating consistent marketing content repeatedly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not because they lack creativity.&lt;/p&gt;

&lt;p&gt;But because content creation takes time, resources, voiceovers, editing, localisation, and strategy.&lt;/p&gt;

&lt;p&gt;AI changes that workflow dramatically without hurting their bottomline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: The Prep Work (Gemini as the Brain)
&lt;/h3&gt;

&lt;p&gt;Every campaign starts with an idea. We start by taking a simple user input (e.g., &lt;em&gt;"Takkies Ad for tech girlies with puns on tech"&lt;/em&gt;) and passing it to Gemini on Vertex AI to act as our creative partner.&lt;/p&gt;

&lt;p&gt;We use &lt;code&gt;gemini-2.5-flash&lt;/code&gt; to structure this raw idea into a professional 15-second radio script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;vertexai&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;vertexai.generative_models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GenerativeModel&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize Vertex AI (assume PROJECT_ID and LOCATION are set)
&lt;/span&gt;&lt;span class="n"&gt;vertexai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;LOCATION&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx59jwf2h16ovk2t75q79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx59jwf2h16ovk2t75q79.png" alt=" " width="799" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: The Flavor Profile (Translation with Context)
&lt;/h3&gt;

&lt;p&gt;For radio advertisemnets, language matters deeply. People connect differently when they hear something in a language that feels familiar to them. For this lab, we focused on English, Afrikaans, isiZulu, and isiXhosa.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; use the standard Cloud Translation API for bulk text or use an LLM like Gemini. The notebook highlights these as option A and B. In my opinion using Gemini allows for more context-aware, creative translations that preserve the "vibe and energy" of the ad.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# @title Translation using the Cloud Translation API - Option A
&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.cloud&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;translate_v2&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;

&lt;span class="n"&gt;translate_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;languages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;af&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Afrikaans&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;zu&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Zulu&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;xh&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Xhosa&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;llm_translations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;lang_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lang_name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Translate the following marketing script into &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;lang_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;. Keep the tone professional yet catchy for a South African audience: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;english_script&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;llm_translations&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;lang_code&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--- &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;lang_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (Gemini) ---&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

   &lt;span class="c1"&gt;# @title Translation using Gemini (Vertex AI) - Option B
&lt;/span&gt;
&lt;span class="n"&gt;llm_translations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;lang_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lang_name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Translate the following marketing script into &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;lang_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;. Keep the tone professional yet catchy for a South African audience: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;english_script&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; output should be just plain text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;llm_translations&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;lang_code&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--- &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;lang_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (Gemini) ---&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknhm994zushvfqod6h27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknhm994zushvfqod6h27.png" alt=" " width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: The Presentation (Text-to-Speech)
&lt;/h3&gt;

&lt;p&gt;Now we need to plate the dish. We use the Google Cloud Text-to-Speech API to convert our generated scripts into high-quality, natural-sounding audio files.&lt;/p&gt;

&lt;p&gt;Here is how you generate the Afrikaans version. You can wrap this in a function to loop through your translated scripts, swapping out the &lt;code&gt;language_code&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt; (e.g., using &lt;code&gt;af-ZA-Standard-A&lt;/code&gt; for Afrikaans).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.cloud&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;texttospeech&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;synthesize_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;language_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;voice_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output_filename&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texttospeech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TextToSpeechClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;synthesis_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texttospeech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SynthesisInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Select the voice parameters
&lt;/span&gt;    &lt;span class="n"&gt;voice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texttospeech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;VoiceSelectionParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;language_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;language_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;voice_name&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;audio_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texttospeech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AudioConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;audio_encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;texttospeech&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AudioEncoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MP3&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Generate the audio
&lt;/span&gt;    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;synthesize_speech&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;synthesis_input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;voice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;audio_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;audio_config&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output_filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;audio_content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Audio content written to file &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;output_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# @title Synthesizing Afrikaans Audio
# Using the standard Cloud TTS API for Afrikaans
&lt;/span&gt;&lt;span class="nf"&gt;synthesize_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;llm_translations&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;af&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;af-ZA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;af-ZA-Standard-A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ad_afrikaans.mp3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif1h69lkw1l48p9bvget.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif1h69lkw1l48p9bvget.png" alt=" " width="800" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Going Beyond the Basics: Vertex AI Model Garden
&lt;/h3&gt;

&lt;p&gt;Whilst working on completing the lab, I ran into an interesting architectural challenge. While the standard TTS API is constantly expanding, it doesn't currently offer a native voice for Xhosa (&lt;code&gt;xh-ZA&lt;/code&gt;) and Zulu (&lt;code&gt;zu-ZA&lt;/code&gt;). Think of a radio advert in South Africa excluding these two languages, would it fare well in Kwazulu Natal or part of the Eastern Cape?&lt;/p&gt;

&lt;p&gt;This is where Vertex AI’s &lt;em&gt;Model Garden&lt;/em&gt; shines, going beyond calling the gemini models and looking for open models that support text-to-speech. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did you know: You can deploy specialized open-source models (like SeamlessM4T, which supports over 100 languages including Zulu and Xhosa) directly to an endpoint and route your specific language requests there.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What Comes Next?
&lt;/h3&gt;

&lt;p&gt;Right now, this pipeline demonstrates the mechanics: prompting, refining scripts, translating content with context, and generating multilingual voiceovers.&lt;/p&gt;

&lt;p&gt;The goal of sharing this isn't to replace human creativity. It’s to show how easily developers can reduce the barriers that stop small businesses from showing up consistently online. Sometimes innovation doesn’t start with massive enterprise infrastructure—sometimes it starts with a build-a-thon, a simple Python script, and a community willing to experiment together in the kitchen.&lt;/p&gt;

&lt;p&gt;Share your feedback in the comments/questions. I would love to hear what you think of this lab.&lt;/p&gt;

</description>
      <category>vertexai</category>
      <category>googlecloud</category>
      <category>cloudai</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Prototyping Real-time Social Sentiment with Python</title>
      <dc:creator>Ruvimbo Delia Hakata</dc:creator>
      <pubDate>Sat, 11 Oct 2025 21:50:54 +0000</pubDate>
      <link>https://forem.com/delia_rue/prototyping-real-time-social-sentiment-with-python-4ldj</link>
      <guid>https://forem.com/delia_rue/prototyping-real-time-social-sentiment-with-python-4ldj</guid>
      <description>&lt;p&gt;I recently spoke at PyCon Africa 2025 about "Prototyping Custom AI Enterprise Solutions." My talk was all about helping businesses understand what people are saying about them online, in real-time, using AI. It's a big problem because there's so much social media data, and most old-school tools can't keep up. This often leaves companies reacting to problems instead of being ready for them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: The "Enterprise Gap" in Social Data
&lt;/h2&gt;

&lt;p&gt;Imagine a brand manager needing to know, right now, the sentiment around a new product launch or an influencer campaign. The sheer volume and velocity of social data (think millions of tweets, comments, reviews) make manual classification impossible. Worse, traditional rule-based systems often lack the nuance to accurately interpret human language, especially across different contexts or regional dialects. This creates a critical "enterprise gap" where valuable insights are lost, leading to reactive decision-making and missed opportunities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our "Ticket": An AI-Powered Sentiment Monitor
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;To address this, we defined a prototype with the following technical requirements (a simplified "ticket" for our internal dev team):
Feature: Real-time Social Media Sentiment Analysis
Input: Stream of raw social media posts (e.g., from Twitter, Reddit, etc.)
Output: Classified sentiment (Positive, Neutral, Negative) per post.
Aggregates: Daily sentiment breakdown charts, themed WordClouds, and PDF summaries.
Key Challenge: Must be able to handle diverse language, slang, and evolving social media discourse efficiently.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Prototyping is Key for Enterprise AI
&lt;/h2&gt;

&lt;p&gt;Python, with its rich ecosystem, was the obvious choice for rapid prototyping.This isn't just about building a throwaway model. Rapid prototyping in Python allows us to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validate hypotheses quickly: Does this approach actually deliver value for the brand team?&lt;/li&gt;
&lt;li&gt;Iterate fast: Get feedback from stakeholders and pivot without heavy refactoring.&lt;/li&gt;
&lt;li&gt;Demonstrate ROI: Show tangible results to secure buy-in for full-scale production.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Resources &amp;amp; Further Exploration:&lt;br&gt;
 GitHub Repo: &lt;a href="https://github.com/DeliaRudy/Brand-Sentiment-Monitor" rel="noopener noreferrer"&gt;https://github.com/DeliaRudy/Brand-Sentiment-Monitor&lt;/a&gt;] (Feel free to fork, experiment, and provide feedback!)&lt;/p&gt;

&lt;p&gt;I'm keen to hear your thoughts. What frameworks or models have you found most effective for sentiment analysis in real-world scenarios? What challenges have you faced with scaling similar solutions?&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>socialmedia</category>
      <category>startup</category>
    </item>
    <item>
      <title>Building GenAI Apps in Java</title>
      <dc:creator>Ruvimbo Delia Hakata</dc:creator>
      <pubDate>Mon, 22 Sep 2025 04:38:28 +0000</pubDate>
      <link>https://forem.com/delia_rue/building-genai-apps-in-java-47fh</link>
      <guid>https://forem.com/delia_rue/building-genai-apps-in-java-47fh</guid>
      <description>&lt;p&gt;This article is a summation of the lessons from my demo/talk titled: Building Production-Ready GenAI Apps in Java with Vertex AI.When I was prepared to deliver this session online session earlier, I had one clear goal: &lt;strong&gt;to move past the hype&lt;/strong&gt;. Too often, conversations about generative AI get stuck at “look what this model can do.” I wanted to take it further to show how we can actually &lt;strong&gt;deliver business-ready applications&lt;/strong&gt; that solve real problems inside organizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Java?
&lt;/h2&gt;

&lt;p&gt;For this demo, I went with Java. I know it might raise eyebrows since Python dominates most AI conversations. But here’s the thing: across enterprise environments, especially in Africa, &lt;strong&gt;Java is still the backbone&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It powers banks, mobile apps, and core business systems. Python is great for rapid experiments, but when it comes to &lt;strong&gt;scalability, integration, and long-term maintainability&lt;/strong&gt;, Java quietly does the heavy lifting.&lt;/p&gt;

&lt;p&gt;By choosing Java, I wanted to make a point: if AI is going to bring real business value, it needs to live where the business already lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Business Problem I Framed
&lt;/h2&gt;

&lt;p&gt;I anchored the demo in a gaming scenario. Picture this: a mobile game with thousands of active players. The company is swimming in data demographics, session times, devices, revenue per user. But raw data doesn’t drive growth.&lt;/p&gt;

&lt;p&gt;The marketing team doesn’t want CSVs. They want to know &lt;em&gt;how to reach their players&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, I built a &lt;strong&gt;persona generator&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data ingestion&lt;/strong&gt;: demographics + behavior from &lt;strong&gt;GA4 API&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context enrichment&lt;/strong&gt;: a &lt;strong&gt;RAG pipeline&lt;/strong&gt; that blends analytics with internal data (support tickets, logs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persona creation&lt;/strong&gt;: &lt;strong&gt;Vertex AI&lt;/strong&gt; generating customer personas linked to business goals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output? Not just charts but stories, pain points, and strategies. That’s the jump from numbers to business clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Toolchain
&lt;/h2&gt;

&lt;p&gt;The stack was simple but effective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GA4 API&lt;/strong&gt; →customer behavior data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Java service layer&lt;/strong&gt; → prompt orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertex AI (Gemini models)&lt;/strong&gt; → persona generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run&lt;/strong&gt; → deployment with one command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few things I had to emphasize in the session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data quality drives output quality.&lt;/strong&gt; I had a value a big “97%” bold on a slide for this reason.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompts = business logic.&lt;/strong&gt; Phrase them wrong, and you’ll get fluff. Phrase them right, and you’ll get insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI without responsibility is reckless.&lt;/strong&gt; Deploying without safety, governance, and monitoring is like shipping code without testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical Guidance
&lt;/h2&gt;

&lt;p&gt;If you want to try something similar: &lt;strong&gt;start with a real business problem.&lt;/strong&gt; My demo solved customer personas generation deadlocks, but the same setup could power sentiment tracking for PR, financial event assistants, or multilingual copy for marketing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;Generative AI is not a lab experiment anymore. It’s becoming embedded in business processes—funding is flowing, adoption is increasing, and teams using it daily are experiencing productivity boosts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production-ready AI isn’t about the model. It’s about pipelines, integration, and responsibility.&lt;/strong&gt; That’s what separates flashy demos from real business impact.&lt;/p&gt;

&lt;p&gt;The companies that win with AI won’t just use it—they’ll integrate it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>java</category>
      <category>cloud</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
