{"id":919,"date":"2025-01-02T07:02:49","date_gmt":"2025-01-02T07:02:49","guid":{"rendered":"https:\/\/mailitics.com\/index.php\/2025\/01\/02\/transforming-data-into-solutions-building-a-smart-app-with-python-and-ai-c258be3b1fc2\/"},"modified":"2025-01-02T07:02:49","modified_gmt":"2025-01-02T07:02:49","slug":"transforming-data-into-solutions-building-a-smart-app-with-python-and-ai-c258be3b1fc2","status":"publish","type":"post","link":"https:\/\/mailitics.com\/index.php\/2025\/01\/02\/transforming-data-into-solutions-building-a-smart-app-with-python-and-ai-c258be3b1fc2\/","title":{"rendered":"Transforming Data into Solutions: Building a Smart App with Python and AI"},"content":{"rendered":"<p>    Transforming Data into Solutions: Building a Smart App with Python and AI<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p>Some financial analysts worry that artificial intelligence may not justify the massive investments being made in the field. While I understand their concerns, I see things differently. I\u2019m neither an AI Boomer nor an AI Doomer\u200a\u2014\u200aI believe AI has the potential to drive innovation, enhance productivity, and deliver measurable business outcomes.<\/p>\n<p>In my last article, I explored how Large Language Models (LLMs) can be used to structure unstructured data. This time, I want to go a step further: demonstrating how the outcome of structuring data with LLMs can serve as the <strong>foundation for building intelligent applications<\/strong>. Thus showing how to integrate AI in a bigger\u00a0picture.<\/p>\n<p>In this article, I\u2019ll share how I used a modern stack to fast-track the development and deployment of Baker\u200a\u2014\u200aa smart app which is the result of transforming a raw recipes dataset into an easy to use solution. This journey highlights more than just technical implementation; it showcases how AI can address practical challenges and deliver tangible value in real-world scenarios.<\/p>\n<h3>Baker: Your Cooking\u00a0Muse<\/h3>\n<p>In <a href=\"https:\/\/towardsdatascience.com\/the-lesser-known-rising-application-of-llms-775834116477\"><strong>The (lesser-known) rising application of LLMs<\/strong><\/a>, I mentioned that I needed a recipes dataset to work on a personal project. Now, it\u2019s time to reveal that\u00a0project.<\/p>\n<figure><img decoding=\"async\" alt=\"A photo showing a woman following a recipe on both a book and a tablet\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1024\/0*a5KBQ814jdQYPYZ8\"><figcaption>Photo by <a href=\"https:\/\/unsplash.com\/@webfactoryltd?utm_source=medium&amp;utm_medium=referral\">WebFactory Ltd<\/a> on\u00a0<a href=\"https:\/\/unsplash.com\/?utm_source=medium&amp;utm_medium=referral\">Unsplash<\/a><\/figcaption><\/figure>\n<p>Managing food has always been a challenge for me. I struggle to find inspiration for meals, and as a result, I often let ingredients go to waste\u200a\u2014\u200asomething I\u2019ve wanted to change for a long time. That\u2019s why I set out to create a recipe recommender system that helps me (and others) use up ingredients before they go stale. The solution? <strong>Baker<\/strong>, my prototype for tackling this issue. This project reflects my passion for leveraging AI to tackle everyday challenges like <strong>food\u00a0waste<\/strong>.<\/p>\n<p>Baker is an open-source web application in its early stages, built almost entirely in Python. The app takes a list of ingredients and their quantities\u200a\u2014\u200amimicking what you might find in your fridge and pantry\u200a\u2014\u200aand suggests recipes you can prepare using those ingredients. It\u2019s designed to simplify meal preparation while encouraging smarter, more sustainable food choices. You can try the app yourself\u00a0here:<\/p>\n<p>\u21d2 <a href=\"https:\/\/mixit-baker.streamlit.app\/\">mixit-baker.streamlit.app<\/a><\/p>\n<p>However, you might want to read the remaining of the article first. In one of the <a href=\"https:\/\/towardsdatascience.com\/#e4df\">next sections<\/a>\u00a0, I\u2019ll walk you through a demo of the application.<\/p>\n<h3>From Idea to POC: Accelerated Development with AI and Modern\u00a0Tools<\/h3>\n<p>After the initial parsing of the dataset, I became busy with other duties and set this side project aside for months \ud83d\ude09. But technology evolves quickly. When I finally returned to it, a series of newer models, techniques, and tools had emerged or matured, providing an opportunity to revisit and enhance the\u00a0project.<\/p>\n<h4><strong>Revisiting Data Extraction with\u00a0GPT-4o<\/strong><\/h4>\n<p>The first step was to revisit my earlier work on data extraction and <a href=\"https:\/\/github.com\/VianneyMI\/baker\/pull\/10\">update the results<\/a>. In my previous iteration, I had used <strong>MistralAI\u2019s open-mixtral-8x7b<\/strong>, which had since been deprecated. This time, I switched to the newer and more advanced <strong>GPT-4o<\/strong>, and the results were remarkable.<\/p>\n<p>To put the improvement into perspective:<\/p>\n<ul>\n<li>In the earlier run, the LLM failed to parse 89 recipes due to inconsistencies in JSON generation.<\/li>\n<li>With GPT-4o, all 360 recipes in the dataset were parsed successfully, achieving <strong>a 100% success\u00a0rate<\/strong>.<\/li>\n<\/ul>\n<p>This milestone reflects how quickly AI capabilities improve. Just months ago, LLMs often struggled to output valid JSON reliably. This iteration demonstrated not only better results but also how adopting newer tools can yield substantial gains.<\/p>\n<h4><strong>Post-Processing Challenges<\/strong><\/h4>\n<p>Even with improved extraction, the raw data required significant post-processing. Recipes featured inconsistent units\u200a\u2014\u200agrams, teaspoons, cups, and more\u200a\u2014\u200amaking comparisons and recommendations challenging. To address this, I adopted a systematic approach:<\/p>\n<ol>\n<li>\n<strong>Standardization:<\/strong> I defined a restricted set of units (e.g., grams for weight, milliliters for\u00a0volume).<\/li>\n<li>\n<strong>Mapping and Conversion:<\/strong> All original units were mapped to this subset, with quantities adjusted accordingly.<\/li>\n<\/ol>\n<p>This normalization step was essential for enabling accurate ingredient filtering and powering the recipe recommendation engine. It also underscored a critical point: AI outputs must be contextually meaningful for their intended application, not just technically correct.<\/p>\n<h4><strong>Building the Engine and Web Application<\/strong><\/h4>\n<p>With the data cleaned, standardized, and ready for use, the next step was to start leveraging the data which I did by <a href=\"https:\/\/github.com\/VianneyMI\/baker\/pull\/18\">building the engine logic and wrapping it in a web\u00a0app<\/a>.<\/p>\n<h4><strong>Quick Prototyping<\/strong><\/h4>\n<p>Throughout Baker\u2019s development, I embraced a quick prototyping philosophy. The goal was less building an app from day one but rather to explore tools and techniques, test ideas and gather feedback.<\/p>\n<p><strong>From Notebooks to a POC\u00a0app:<\/strong><\/p>\n<p>The way I built my data pipeline and the web app using AI illustrate the quick prototyping philosophy.<\/p>\n<ul>\n<li>\n<strong>The Data Pipeline:<\/strong> The entire pipeline for extraction and post-processing resides in Jupyter notebooks. While this setup is \u201cminimal yet functional\u201d compared to a full-fledged ETL pipeline, it provided the speed and flexibility to iterate quickly. Initially, I thought of it as a one-time process, but I\u2019m now planning to <a href=\"https:\/\/github.com\/VianneyMI\/baker\/issues\/22\">transform it<\/a> into something more robust and repeatible.<\/li>\n<li>\n<strong>The Web App:<\/strong> The web app leverages <a href=\"https:\/\/fastapi.tiangolo.com\/\"><strong>FastAPI<\/strong><\/a> for the backend and <a href=\"https:\/\/streamlit.io\/\"><strong>Streamlit<\/strong><\/a> for the frontend. These frameworks are accessible, developer-friendly, and perfect for rapidly prototyping interactive applications.<\/li>\n<li>\n<strong>Accelerated Development with AI:<\/strong> The frontend was generated entirely using <a href=\"https:\/\/www.cursor.com\/\"><strong>Cursor<\/strong><\/a>, an AI-powered development tool. While I had heard of Cursor before, this project allowed me to fully explore its potential. The experience was so enjoyable that I plan to write a dedicated article about\u00a0it.<\/li>\n<\/ul>\n<p>By adopting this approach, I was able to build a working MVP in days rather than weeks or\u00a0months.<\/p>\n<p><strong>Open-Source:<\/strong><\/p>\n<p>A marker of <strong>Baker<\/strong> is its <strong>open-source nature<\/strong>. By sharing the project on GitHub, I hope\u00a0to:<\/p>\n<ul>\n<li>\n<strong>Encourage Collaboration:<\/strong> Enable others to contribute new features, enhance the codebase, or extend the application with additional datasets.<\/li>\n<li>\n<strong>Inspire Learning:<\/strong> Provide a practical resource for those curious about leveraging LLMs, structuring unstructured data, or building recommendation systems.<\/li>\n<\/ul>\n<p>Open-sourcing makes it easier for others to reproduce results, contribute improvements, and exchange ideas. Collaboration not only strengthens <strong>Baker<\/strong> but also fosters collective innovation.<\/p>\n<p><strong>Free Deployment: Accessible and Lightweight<\/strong><\/p>\n<p>To make <strong>Baker<\/strong> accessible, I deployed it using free-tier services:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/streamlit.io\/cloud\"><strong>Streamlit Cloud<\/strong><\/a>: Powers the frontend, delivering an intuitive and interactive user experience.<\/li>\n<li>\n<a href=\"https:\/\/www.koyeb.com\/docs\"><strong>Koyeb<\/strong><\/a>: Supports backend processing and API calls without incurring hosting\u00a0costs.<\/li>\n<\/ul>\n<p>These platforms allowed me to deploy quickly and experiment without the financial or technical barriers of traditional hosting solutions. This deployment strategy highlights how modern tools make it possible to turn creative ideas into accessible applications at little to no\u00a0cost.<\/p>\n<h3><strong>Behind the Scenes: The Technology Powering\u00a0Baker<\/strong><\/h3>\n<p>In this section, I\u2019ll share some implementation details of Baker. Again it is open-source so I invite my technical readers to go check the code on GitHub. Some readers might want to jump to the <a href=\"https:\/\/towardsdatascience.com\/#e4df\">next\u00a0section<\/a>.<\/p>\n<p>The application is minimalist with a simple 3 tier architecture and is built almost entirely in\u00a0Python.<\/p>\n<figure><img data-recalc-dims=\"1\" decoding=\"async\" alt=\"An architecture diagram of the Baker application\" src=\"https:\/\/i0.wp.com\/cdn-images-1.medium.com\/max\/848\/1%2AWb8bqb8ClDw7DDrYlQO3JQ.png?ssl=1\"><figcaption>Photo by\u00a0author<\/figcaption><\/figure>\n<p>It is made of the following components:<\/p>\n<ol>\n<li>\n<strong>Frontend<\/strong>: A <strong>Streamlit<\/strong> interface provides an intuitive platform for users to interact with the system, query recipes, and receive recommendations.<\/li>\n<li>\n<strong>Backend<\/strong>: Built with <strong>FastAPI<\/strong>, the backend serves as the interface for handling user queries and delivering recommendations.<\/li>\n<li>\n<strong>Engine<\/strong>: The engine contains the core logic for finding and filtering recipes, leveraging <a href=\"https:\/\/vianneymi.github.io\/monggregate\/\"><strong>monggregate<\/strong><\/a> as a query\u00a0builder.<\/li>\n<li>\n<strong>Database<\/strong>: The recipes are stored in a <a href=\"https:\/\/www.mongodb.com\/\"><strong>MongoDB<\/strong><\/a> database that processes the aggregation pipelines generated by the\u00a0engine.<\/li>\n<\/ol>\n<h4>Backend Setup<\/h4>\n<p>The backend is initialized in app.py, where FastAPI endpoints are defined. For instance:<\/p>\n<pre>from fastapi import FastAPI<br>from baker.engine.core import find_recipes<br>from baker.models.ingredient import Ingredient<br><br>app = FastAPI()<br>@app.get(\"\/\")<br>def welcome():<br>    return {\"message\": \"Welcome to the Baker API!\"}<br>@app.post(\"\/recipes\")<br>def _find_recipes(ingredients: list[Ingredient], serving_size: int = 1) -&gt; list[dict]:<br>    return find_recipes(ingredients, serving_size)<\/pre>\n<p>The \/recipes endpoint accepts a list of ingredients and a serving size then delegates the processing to the\u00a0engine.<\/p>\n<h4>Recipe Engine\u00a0Logic<\/h4>\n<p>The heart of the application resides in core.py within the engine directory. It manages database connections and query pipelines. Below is an example of the find_recipes function:<\/p>\n<pre># Imports and the get_recipes_collection function are not included<br><br>def find_recipes(ingredients, serving_size=1):<br>    # Get the recipes collection<br>    recipes = get_recipes_collection()<br><br>    # Create the pipeline<br>    pipeline = Pipeline()<br>    pipeline = include_normalization_steps(pipeline, serving_size)<br>    query = generate_match_query(ingredients, serving_size)<br>    print(query)<br>    pipeline.match(query=query).project(<br>        include=[<br>            \"id\",<br>            \"title\",<br>            \"preparation_time\",<br>            \"cooking_time\",<br>            \"original_serving_size\",<br>            \"serving_size\",<br>            \"ingredients\",<br>            \"steps\",<br>        ],<br>        exclude=\"_id\",<br>    )<br><br>    # Find the recipes<br>    result = recipes.aggregate(pipeline.export()).to_list(length=None)<br><br>    return result<br>    <br>def generate_match_query(ingredients: list[Ingredient], serving_size: int = 1) -&gt; dict:<br>    \"\"\"Generate the match query.\"\"\"<br><br>    operands = []<br>    for ingredient in ingredients:<br>        operand = {<br>            \"ingredients.name\": ingredient.name,<br>            \"ingredients.unit\": ingredient.unit,<br>            \"ingredients.quantity\": {\"$gte\": ingredient.quantity \/ serving_size},<br>        }<br>        operands.append(operand)<br><br>    query = {\"$and\": operands}<br><br>    return query<br><br><br>def include_normalization_steps(pipeline: Pipeline, serving_size: int = 1):<br>    \"\"\"Adds steps in a pipeline to normalize the ingredients quantity in the db<br><br>    The steps below normalize the quantities of the ingredients in the recipes in the DB by the recipe serving size.<br><br>    \"\"\"<br><br>    # Unwind the ingredients<br>    pipeline.unwind(path=\"$ingredients\")<br><br>    pipeline.add_fields({\"original_serving_size\": \"$serving_size\"})<br>    # Add the normalized quantity<br>    pipeline.add_fields(<br>        {<br>            # \"orignal_serving_size\": \"$serving_size\",<br>            \"serving_size\": serving_size,<br>            \"ingredients.quantity\": S.multiply(<br>                S.field(\"ingredients.quantity\"),<br>                S.divide(serving_size, S.max([S.field(\"serving_size\"), 1])),<br>            ),<br>        }<br>    )<br><br>    # Group the results<br>    pipeline.group(<br>        by=\"_id\",<br>        query={<br>            \"id\": {\"$first\": \"$id\"},<br>            \"title\": {\"$first\": \"$title\"},<br>            \"original_serving_size\": {\"$first\": \"$original_serving_size\"},<br>            \"serving_size\": {\"$first\": \"$serving_size\"},<br>            \"preparation_time\": {\"$first\": \"$preparation_time\"},<br>            \"cooking_time\": {\"$first\": \"$cooking_time\"},<br>            # \"directions_source_text\": {\"$first\": \"$directions_source_text\"},<br>            \"ingredients\": {\"$addToSet\": \"$ingredients\"},<br>            \"steps\": {\"$first\": \"$steps\"},<br>        },<br>    )<br>    return pipeline<\/pre>\n<p>The core logic of <strong>Baker<\/strong> resides in the find_recipes function.<\/p>\n<p>This function creates a MongoDB aggregation pipeline thanks to monggregate. This aggregation pipeline includes several\u00a0steps.<\/p>\n<p>The first steps are generated by the include_normalization_steps function that is going to dynamically update the quantities of the ingredients in the database to ensure we are comparing apples to apples. This is done by updating the ingredients quantities in the database to the user desired\u00a0serving.<\/p>\n<p>Then the actual matching logic is created by the generate_match_query function. Here we ensure, that the recipes don\u2019t require more than what the user have for the ingredients concerned.<\/p>\n<p>Finally a projection filters out the fields that we don\u2019t need to\u00a0return.<\/p>\n<h3>User Guide: Discovering Recipes with Baker in a Few\u00a0Clicks<\/h3>\n<p><strong>Baker<\/strong> helps you discover a better fate for your ingredients by finding recipes that match what you already have at\u00a0home.<\/p>\n<p>The app features a simple form-based interface. Enter the ingredients you have, specify their quantities, and select the unit of measurement from the available options.<\/p>\n<figure><img data-recalc-dims=\"1\" decoding=\"async\" alt=\"A screenshot showing the Baker interface to enter ingredients\" src=\"https:\/\/i0.wp.com\/cdn-images-1.medium.com\/max\/887\/1%2ANOR7Ivr0WvTTIq3fuKsClg.png?ssl=1\"><figcaption>Photo by\u00a0author<\/figcaption><\/figure>\n<p>In the example above, I\u2019m searching for a recipe for <strong>two servings<\/strong> to use up 4 tomatoes and 2 carrots that have been sitting in my kitchen for a bit too\u00a0long.<\/p>\n<p><strong>Baker<\/strong> found two recipes! Clicking on a recipe lets you view the full\u00a0details.<\/p>\n<figure><img data-recalc-dims=\"1\" decoding=\"async\" alt=\"A screenshot of the Baker interface showing how recipes are displayed\" src=\"https:\/\/i0.wp.com\/cdn-images-1.medium.com\/max\/855\/1%2Atb_d9HrGgftSmTzcKvnYZw.png?ssl=1\"><figcaption>Photo by\u00a0author<\/figcaption><\/figure>\n<p><strong>Baker<\/strong> adapts the quantities in the recipe to match the serving size you\u2019ve set. For example, if you adjust the serving size from two to four people, the app recalculates the ingredient quantities accordingly.<\/p>\n<p>Updating the serving size may also change the recipes that appear. <strong>Baker<\/strong> ensures that the suggested recipes match not only the serving size but also the ingredients and quantities you have on hand. For instance, if you only have 4 tomatoes and 2 carrots for two people, <strong>Baker<\/strong> will avoid recommending recipes that require 4 tomatoes and 4\u00a0carrots.<\/p>\n<h3>The Road Ahead: Scaling Baker for Broader\u00a0Impact<\/h3>\n<p>Baker is a side project developed quickly and pragmatically, a functional prototype rather than a production-ready application.<\/p>\n<p>However, I\u2019d love to see it grow into something more impactful.<\/p>\n<p>There are several areas where the app can expand, both in functionality and sophistication. To move forward, let\u2019s address its current limitations and explore possible enhancements.<\/p>\n<h3>1\u200a\u2014\u200aGrowing the Recipe\u00a0Database<\/h3>\n<p>Baker\u2019s recipes originate from <a href=\"https:\/\/publicdomainrecipes.com\/\">Public Domain Recipes<\/a>, an open-source database of recipes. While this is an amazing project, the number of available recipes is limited. As a result, <strong>Baker<\/strong> only knows 360 recipes for now. To put this into perspective, some dedicated recipe websites claim to have tens of thousands recipes.<\/p>\n<p>To scale, I\u2019ll need to identify additional data sources for\u00a0recipes.<\/p>\n<h3>2\u200a\u2014\u200aImproving the Data Ingestion Pipeline<\/h3>\n<p>At the moment, <strong>data ingestion<\/strong> is handled through Jupyter Notebooks. One of the main technical priorities is to transform these notebooks into robust Python scripts, integrate them into an admin section of <strong>Baker<\/strong>, or even spin them off into a dedicated app.<\/p>\n<p>Additionally, I am convinced that there\u2019s room for improving the parsing process performed by the LLMs to ensure greater consistency and accuracy.<\/p>\n<h3>3\u200a\u2014\u200aAdding Semantic Search &amp; Flexibility<\/h3>\n<p>Currently, recipes are searched by ingredient names through exact string matching. For example, searching for \u201ctomato\u201d will not retrieve recipes that mention \u201ctomatoes.\u201d This can be addressed by <a href=\"https:\/\/vianmixt.notion.site\/Practical-Semantic-Search-with-MongoDB-and-OpenAI-451692801b41465fae1bea5f70238279\">implementing a semantic search approach using vector databases<\/a>. With <strong>semantic search<\/strong>, variations of ingredient names\u200a\u2014\u200awhether due to pluralization, regional differences, or translation\u200a\u2014\u200acan be dynamically mapped to the same\u00a0concept.<\/p>\n<p>Moreover, semantic search would allow users to search in their native language, further broadening accessibility.<\/p>\n<p>I also want to introduce <strong>greater flexibility in the search functionality<\/strong>. For example, if a user searches for recipes with tomatoes, carrots, and bananas but no such combination exists in the database, the search should still return recipes with subsets of the entered ingredients (e.g., tomatoes and carrots, tomatoes and bananas, or carrots and bananas).<\/p>\n<p>From a feature standpoint, this is my top priority.<\/p>\n<h3>Other Enhancements to\u00a0Consider<\/h3>\n<p>While the above are the main focus areas, there are plenty of other topics I\u2019d like to\u00a0address:<\/p>\n<ul>\n<li>UI enhancements<\/li>\n<li>Sorting and ranking of\u00a0recipes<\/li>\n<li>Improved error handling and robustness<\/li>\n<li>Adopting software engineering best practices<\/li>\n<li>Performance optimization<\/li>\n<\/ul>\n<h3>Conclusion<\/h3>\n<p>I hope you\u2019ve enjoyed reading this journey of turning ideas into reality. If you did, <a href=\"https:\/\/buymeacoffee.com\/vianmixt\">consider supporting me on Buy Me a Coffee<\/a> to help fund future developments. Now, let\u2019s summarize the key takeaways.<\/p>\n<p>A few months ago, I wrote an article about how <strong>using LLMs for data structuration and extraction<\/strong> was a promising use case powered by the new Generative AI wave. In this follow-up, I\u2019ve taken the concept further by demonstrating a tangible outcome: using a LLM-generated dataset to power a data-centric smart app,\u00a0<strong>Baker<\/strong>.<\/p>\n<p>Along the way, I aimed to show how this process has become more accessible with modern tools like <strong>Streamlit, FastAPI, Streamlit Cloud, Koyeb, and Cursor.<\/strong> If you want a deep dive on the tools I used, let me know in the comments.<\/p>\n<p>These tools provide the flexibility and accessibility needed to focus on solving real problems rather than being overwhelmed by the complexity of managing multiple aspects\u200a\u2014\u200adata pipelines, backend logic, frontend interfaces, CI\/CD workflows, cloud deployments, testing, and the intricacies of various programming languages.<\/p>\n<p>But this project isn\u2019t just about recipes\u200a\u2014\u200ait\u2019s about unlocking the potential of unstructured data to solve real-world problems. For instance, the same approach used in <strong>Baker<\/strong> could be applied to create a personalized learning platform. By structuring educational content, such as lecture transcripts or articles, into accessible formats and building a recommendation engine, one could help users discover relevant learning materials based on their goals or interests.<\/p>\n<p>Whether for education, product recommendations, or knowledge management, the principles and tools I\u2019ve shared here can inspire countless applications.<\/p>\n<p>As we step into the new year, I encourage you to reflect on your own untapped datasets and ideas. What could you build with the tools and knowledge shared here? With small steps, quick iterations, and a collaborative mindset, you, too, can create <strong>innovative solutions<\/strong> that make a difference.<\/p>\n<p>Here\u2019s to building a smarter, more data-driven future\u200a\u2014\u200atogether.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/medium.com\/_\/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c258be3b1fc2\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<hr>\n<p><a href=\"https:\/\/towardsdatascience.com\/transforming-data-into-solutions-building-a-smart-app-with-python-and-ai-c258be3b1fc2\">Transforming Data into Solutions: Building a Smart App with Python and AI<\/a> was originally published in <a href=\"https:\/\/towardsdatascience.com\/\">Towards Data Science<\/a> on Medium, where people are continuing the conversation by highlighting and responding to this story.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Vianney Mixtur<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/medium.com\/m\/global-identity-2?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Ftransforming-data-into-solutions-building-a-smart-app-with-python-and-ai-c258be3b1fc2\">Go to original source<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Transforming Data into Solutions: Building a Smart App with Python and AI Some financial analysts worry that artificial intelligence may not justify the massive investments being made in the field. While I understand their concerns, I see things differently. I\u2019m neither an AI Boomer nor an AI Doomer\u200a\u2014\u200aI believe AI has the potential to drive [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,69,1064,166,157,297],"tags":[98,84,7],"class_list":["post-919","post","type-post","status-publish","format-standard","hentry","category-aimldsaimlds","category-artificial-intelligence","category-foodtech","category-hands-on-tutorials","category-python","category-streamlit","tag-ai","tag-data","tag-how"],"_links":{"self":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/919"}],"collection":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/comments?post=919"}],"version-history":[{"count":0,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/919\/revisions"}],"wp:attachment":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/media?parent=919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/categories?post=919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/tags?post=919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}