Building a Audience Analyzer using Lyzr SDK
Published: 2024-06-09 08:48:03

In the fast-paced world of marketing, understanding your audience is key to success. However, crafting tailored strategies that resonate with your target demographic can be a daunting task. Enter **Audience Navigator**, a groundbreaking app powered by **Lyzr Automata**, designed to revolutionize the way marketing strategies are developed.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7r2u1ui9fi56fuxpw8es.png)

**Audience Navigator** harnesses the power of AI to analyze input about a company’s core values, goals, and target audience. By leveraging advanced natural language processing algorithms, the app generates tailored marketing strategies and actionable steps in minutes, saving marketers valuable time and resources.

Using Lyzr Automata’s Agent technology, Audience Navigator emulates the expertise of a **seasoned copywriter** and **market researcher**. Upon receiving input about the company, the app prompts the AI to conduct in-depth analysis and research, identifying key demographics, pain points, and preferred social media platforms of the target audience.

**Why use Lyzr SDK’s?**

With **Lyzr SDKs**, crafting your own **GenAI** application is a breeze, requiring only a few lines of code to get up and running swiftly.

[Checkout the Lyzr SDK’s](https://docs.lyzr.ai/homepage)

**Lets get Started!**

Create an **app.py** file

```
import streamlit as st
from lyzr_automata.ai_models.openai import OpenAIModel
from lyzr_automata import Agent, Task
from lyzr_automata.pipelines.linear_sync_pipeline import LinearSyncPipeline
from PIL import Image
from lyzr_automata.tasks.task_literals import InputType, OutputType
import os
```
This Python code utilizes **Streamlit** to create a web application integrating Lyzr Automata’s AI capabilities for generating customized marketing strategies. It imports necessary libraries, sets up environment variables for **OpenAI** access, and defines UI elements including a text input field and a button.

The core function utilizes Lyzr Automata’s **Agent** and **Task** classes to generate strategies based on user input. Additionally, an expandable section provides app information and links. This succinctly orchestrates an AI-driven marketing strategy generator within a streamlined web interface.


```
# Set the OpenAI API key
os.environ["OPENAI_API_KEY"] = st.secrets["apikey"]
```
This line sets the **OpenAI API key** as an environment variable, retrieving it securely from Streamlit’s secrets for authentication.

```
input = st.text_input("Welcome to Audience Navigator, powered by Lyzr Automata! Simply input your company's name, core values, and goals to receive tailored marketing strategies and actionable steps, designed to resonate with your target audience and achieve your marketing objectives. Let's navigate your audience together!",placeholder=f"""Type here""")
```

This line of code creates a text input field using **Streamlit**. It prompts users to input their company’s name, core values, and goals, emphasizing the app’s purpose of providing tailored marketing strategies. The placeholder text “Type here” offers guidance on the expected input.

```
open_ai_text_completion_model = OpenAIModel(
    api_key=st.secrets["apikey"],
    parameters={
        "model": "gpt-4-turbo-preview",
        "temperature": 0.2,
        "max_tokens": 1500,
    },
)
```
This code initializes an instance of the **OpenAIModel** class, which serves as the text completion model for generating marketing strategies. It requires an API key obtained from Streamlit’s secrets manager to access OpenAI’s services securely.

Parameters for the **text generation model** are specified, including the model version (“gpt-4-turbo-preview”), temperature (controlling randomness), and maximum number of tokens to generate (limiting the length of the output).

```
def generation(input):
    generator_agent = Agent(
        role=" COPYWRITER expert",
        prompt_persona=f"  Your task is to utilize the PROVIDED COMPANY INFORMATION and its goals to thoroughly understand the TARGET AUDIENCE, including DEMOGRAPHICS, INTERESTS, PAIN POINTS, and PREFERRED SOCIAL MEDIA PLATFORMS. You MUST also deliver TAILORED MARKETING STRATEGIES and ACTIONABLE STEPS.")

    prompt = f"""
You are an Expert COPYWRITER with a focus on MARKET RESEARCH and STRATEGY DEVELOPMENT. Your task is to utilize the PROVIDED COMPANY INFORMATION and its goals to thoroughly understand the TARGET AUDIENCE, including DEMOGRAPHICS, INTERESTS, PAIN POINTS, and PREFERRED SOCIAL MEDIA PLATFORMS. You MUST also deliver TAILORED MARKETING STRATEGIES and ACTIONABLE STEPS.
[Prompts here]
 """
```
This function, named `generation`, is designed to generate tailored marketing strategies based on user input. It defines an instance of the `Agent` class, representing an expert copywriter tasked with market research and strategy development. The agent is provided with a persona, outlining its role and responsibilities, including utilizing company information to understand the target audience and deliver tailored marketing strategies.

```
    generator_agent_task = Task(
        name="Generation",
        model=open_ai_text_completion_model,
        agent=generator_agent,
        instructions=prompt,
        default_input=input,
        output_type=OutputType.TEXT,
        input_type=InputType.TEXT,
    ).execute()

    return generator_agent_task 
```
The provided Python script defines and executes a text generation task using a task management framework. The `Task` class is instantiated with several parameters. The `name` parameter sets the task’s name to “Generation”. 

The `model` parameter specifies the use of a text completion model from OpenAI, referred to as `open_ai_text_completion_model`. The `agent` parameter assigns `generator_agent` as the responsible entity for executing the task. The `instructions` parameter provides a prompt or set of instructions for guiding the text generation, labeled as `prompt`.

The `default_input` parameter sets the default input for the task, called `input`. The `output_type` parameter indicates that the expected output type is text, specified as `OutputType.TEXT`, and the `input_type` parameter indicates that the input type is also text, specified as `InputType.TEXT`.

The `execute` method is called on the instantiated `Task` object, named `generator_agent_task`, which runs the task. Finally, the result of this task execution is returned. This code is part of a larger system that manages multiple tasks and agents, likely for applications involving natural language processing, such as automated content generation.

```
if st.button("Ok"):
    solution = generation(input)
    st.markdown(solution)
```
The code snippet is part of a S**treamlit** app. When the “Ok” button is clicked, it triggers the `generation` function with `input` as the argument. The result of this function, stored in the variable `solution`, is then displayed in the app as Markdown using `st.markdown(solution)`.

In a world where understanding your audience is paramount, **Audience Navigator** emerges as an essential tool for businesses and marketers alike. By harnessing the power of advanced AI through the Lyzr Automata platform, it delivers personalized, actionable marketing strategies tailored to your unique business needs.

Whether you’re looking to refine your approach or make significant strides in audience engagement, **Audience Navigator** offers the insights and guidance necessary to achieve your goals. Embrace this innovative solution to navigate your audience more effectively and drive your marketing success.

**App link**: https://audience-analyzer-lyzr.streamlit.app/

**Source Code**: https://github.com/isakshay007/Audience_Analyzer

For any inquiries or issues, please contact Lyzr. You can learn more about Lyzr and their offerings through the following links:

**Website**: [Lyzr.ai](https://www.lyzr.ai/)
**Book a Demo**: [Book a Demo](https://www.lyzr.ai/)
**Discord**: [Join our Discord community](https://discord.com/invite/nm7zSyEFA2)
**Slack**: [Join our Slack channel](https://anybodycanai.slack.com/join/shared_invite/zt-2a7fr38f7-_QDOY1W1WSlSiYNAEncLGw#/shared-invite/email)