5 UI with Streamlit NoLogo ReEdit
This tutorial builds a Streamlit UI for a Madison agent, connects it to an n8n workflow through a webhook, and deploys the finished tool publicly on Streamlit Community Cloud.
A working automation buried behind a terminal command is only useful to the person who built it. If a brand manager or marketer needs to run that same analysis, a n8n workflow triggered manually isn't going to cut it. This tutorial, part of a Madison framework UI series, walks through turning a technical n8n workflow into something a non-technical user can actually click and use, with Streamlit as the bridge.
Why Streamlit for this job
The case for Streamlit is practical rather than aesthetic. You can build a full interface using just Python, with no JavaScript, HTML, or CSS required, which matters for a data-focused tool like a Madison marketing agent where the team's strength is Python, not frontend development. Streamlit is also free to host through Streamlit Community Cloud, which removes the infrastructure question entirely for a small project. Put together, that makes it a good fit for making a Madison tool accessible to non-technical users, marketers or brand managers, without getting bogged down in web development.
Getting Streamlit installed and running
The setup is a single terminal command: pip install streamlit. Once the dependencies are installed, the next step is creating a Python file, in this case named for the Madison app, with basic starter code. Running it is another single command, streamlit run followed by the file name, which launches a local web application in the browser immediately. That's the whole barrier to entry: one install command and one run command before you have a working local app.
Designing inputs and outputs
Before wiring up real functionality, it's worth identifying the project's core input and output shape. For input, options include a text input field or dropdown menus, depending on what the underlying workflow expects. Output is where there's real room for creativity: rather than dumping raw data, you can use charts or tables to visualize results, with essentially complete creative freedom in how the output is presented.
Connecting the UI to n8n with a webhook
The concrete example here is a brand analysis workflow originally built in n8n, continued from an earlier video in the series. The n8n workflow's manual trigger was replaced with a webhook node, using a POST HTTP method, which gives it a URL that can be called from outside n8n. That webhook URL gets pasted directly into the Streamlit Python file, and the Python code uses the requests library to build the bridge: when a user enters a brand name, such as OpenAI, into the Streamlit interface, Python sends that data to the local n8n server through the webhook URL. Once n8n finishes gathering the data and returns a response from its HTTP node, the Streamlit code unpacks that result into a structured format.
Turning raw results into a usable interface
Pandas does the heavy lifting for presentation, transforming the raw response into an interactive table and metric cards inside the Streamlit UI. In the working demo, entering a brand name and clicking a run analysis button triggers the whole pipeline, returning a structured table of Reddit posts, including post title and the number of upvotes, plus a deeper-dive section for more detail. The output layout is flexible: charts, tables, or a mix, arranged however makes sense for what the tool is analyzing.
Deploying with Streamlit Cloud
Getting the tool in front of other people means deploying it, and the path here runs through Streamlit Community Cloud. The prerequisites are a GitHub repository containing the app code, kept up to date with the current backend or Streamlit code, and a requirements.txt file listing every dependency the app needs. From there, creating a free account at Streamlit's sharing site and clicking "create app" starts the deployment flow: choose to deploy a public app from GitHub, paste the repository URL, select the specific Python file, and choose a domain name for the project, which becomes the public streamlit.app URL. Clicking deploy finishes the process in a matter of seconds, producing a public URL anyone on the internet can use.
Keep it functional, not fancy
The closing guidance is the 80/20 rule applied to UI work: focus on making the interface functional and clear rather than beautiful. For this kind of internal tool, what matters most is that a brand manager or marketer can understand and use it without any technical background, not that it wins a design award.
Key takeaways
- Streamlit lets you build a full interface in pure Python, with no JavaScript, HTML, or CSS required.
- Setup is two commands: pip install streamlit to install it, and streamlit run followed by your file name to launch it locally.
- Replace an n8n workflow's manual trigger with a webhook node (POST method) to expose it to an external app.
- The Python requests library sends user input from the Streamlit UI to n8n's webhook URL, and pandas structures the response for display as tables and metric cards.
- Deploying requires a GitHub repo with a requirements.txt file; Streamlit Community Cloud turns that repo into a public streamlit.app URL in seconds.
- Prioritize a functional, clear interface over a polished one, especially for internal tools meant for non-technical users.
Who this is for
This tutorial is for anyone building a Madison marketing agent, or any n8n-based automation, who needs a simple way to hand it off to non-technical teammates. It assumes basic Python familiarity and an existing n8n workflow, and it's part of a broader Madison framework UI tutorial series that continues with an alternative approach in the next video.
Full transcript(auto-generated, with timestamps)
[0:00]Everyone, welcome to our Madison framework UI tutorial series. I'm Kiti and today we are learning how to create a simple user interface for your Madison agent using Streamlit. Here you will transform your technical nit workflow into something nontechnical users can interact with. And before we dive in, let's talk about why we are using Streamlit. With Streamlit, you can create user interface with just Python. No prior knowledge of JavaScript or HTML CSS required. So this is perfect for data focused applications like your Madison agent. Streamlit is also free free to host with Streamlit Cloud. All these points make Streamlit perfect for your Madison agent. The goal here is to make
[0:45]Your Madison tool accessible to non-technical users like marketeteers or brand managers. And Streamlit lets you do this quickly without getting bogged down in web development. Let's get Streamlit installed and set up. Open your terminal and type this command pip install streamlit. And let me also give a demonstration on how to do it. So I have my terminal open and pip install streamllet. Yes. So you can see all the dependencies are installed and the streamllet is now installed. Next, I'm opening my Visual Studio and creating a Python file called Madison app. Here I'm using the same repository that I used in my previous video. This is the
[1:24]Continuation of it as I'm creating a user interface to my project and in my Python file I'm adding a basic starter code. This is my code and let me run it. Now I'm going to run this Python file with this command streamlick run and my file name Madison app and run. So now my application is running locally and yeah I can see a basic web application in my browser. Now let's connect this simple UI to your Madison agents functionality and these are the steps that you need to do or keep in mind. So first for your project identify your core input and output and for input UI you can use
[2:08]Either a text input or drop downs and for output you can actually be creative. You can be innovative and use a chart or tables to visualize your data. You have your complete creative freedom here. And let me just implement a simple brand analysis and give a demo. So my project that I was I'm continuing from the previous video is a brand analysis for OpenAI using Reddit data. So this is my NA10. So it is very similar from my previous video but I had a manual trigger. I have replaced that with web hook this web hook node. It's a post HTTP method request and this is my URL.
[2:45]And I'm using this web hook or this web hook URL in my Python file. So I just updated this Madison app python file and this is my URL which I have pasted here. So in this code I'm using this request library to create a bridge between my UI and NAN and when a user enters a brand name which is open AI in my case. So Python sends that data to um our local NAN server using this web hook URL. Okay. And once NAN finds the all the edit data the response from that HTTP node in NAN this code further unpacks that result into a structured format.
[3:22]And for that we are using pandas pandas library to instantly transform all that raw data into interactive table and metrics metric cards that you can see in the UI. Let me just run run this. And I'm running it with the same command streamllet run. Let's go to my NA10 and execute this workflow. Now going to my UI here. I'm just going to click on this run analysis and yes this is my output. I have a table format all my response which is that I'm collecting some of the Reddit uh posts. So I have the structure has my post title, the number of uploads posted by which user and there's also a deep
[4:09]Dive section that I've added. You can be creative with your UI. You can, you know, arrange it. You can have a chart or you can use the visualizations however you want. Next, you need to deploy your UI so others can access it. For that, let's use Streamlit Cloud. These are the steps to achieve it and let's do it one by one. Create a GitHub repository with your app code. And if you already have a repository, update your repo with your updated Python code or the all the back end or the Streamlit code. And if you have any dependencies, don't forget to add a requirements.txt file where you are
[4:51]Listing all your dependencies. Next step is let's go to uh this URL share.stream.io io and create your free account. You can loging in. You can sign up. Create your free account. [clears throat] You can sign up for a free account. And this is how it's going to look once you're logged in. And to host or deploy your Madison project, click on the create app button on the top right corner. Yes. Click on this deploy a public app from GitHub. I'm going to be choosing a paste GitHub URL. Go to your updated GitHub. Click on this Python file Madison Python file and copy the URL. Come back to this Streamlit UI
[5:35]And paste the same Python file link. And yes, this is the important part. You need to choose a domain for your project. Mine is going to be um my project name, the brand analysis that I'm doing for OpenAI. So the URL is going to be this domain name.stream.app. Yes, this will be my project's public URL. And this domain is available. And yes, click on deploy. Yes, my UI is ready. It barely took few seconds. And now I have a public URL anybody on the internet can use. That's it. This is how you deploy your app. You have now created a simple user interface for your Madison agent using Streamlit.
[6:19]This transforms your technical and workflow into a tool that nontechnical users can actually use. Remember the 80/20 rule. Focus on making your interface functional and clear rather than beautiful. What matters most is that brand managers and marketeers can understand and use your tool without technical knowledge. In our next video, we will explore an alternative approach using radio. That's it for this video. Thank you so much for watching. I hope this was helpful.
More videos
2:08Bridging the Pixel Gap in Browser Automation.
2:23How One Narrow Safety Rule Can Make an AI Less Safe Everywhere Else.
2:04Why splitting a chunk from its document makes it retrieve for the wrong question
4:20Three You Can Take Back. One You Can't.
2:21Why a 50-turn agent pays for the same screenshot 35 times unless it caches the pixels
1:53