Visionary_Ai_2 / app.py
GiantAnalytics's picture
Updating Info Feature
b38d13a verified
import streamlit as st
import pandas as pd
import os
from phase1_agents import search_company, scrape_website, process_company_description
from phase2_agents import get_industry_trends
from phase3_agents import generate_ai_strategy, identify_revenue_opportunities, generate_report
from bni_agent import get_bni_benefits
from rag_agent import recommend_bni_connections
from datasets import load_dataset, Dataset
from huggingface_hub import HfApi
# Hugging Face Dataset Name
HF_DATASET_NAME = "GiantAnalytics/visionary-ai-user-data"
# Function to Save Data to Hugging Face Dataset
def save_data_hf(data):
try:
dataset = load_dataset(HF_DATASET_NAME)
df = pd.DataFrame(dataset["train"])
new_df = pd.DataFrame([data])
df = pd.concat([df, new_df], ignore_index=True)
new_dataset = Dataset.from_pandas(df)
new_dataset.push_to_hub(HF_DATASET_NAME, split="train")
print("βœ… Data saved successfully to Hugging Face Dataset")
except Exception as e:
print(f"❌ Failed to save data: {e}")
# Streamlit UI
def main():
st.title("πŸš€ Visionary AI - AI Strategy Generator")
st.write("πŸ“Š This tool provides an AI-driven business strategy report tailored for your company.")
st.write("πŸ” Powered by **State-of-the-Art Reasoning Models** for AI integration insights.")
# Initialize Session State Variables
session_keys = [
"company_data", "industry_trends", "ai_strategy",
"revenue_opportunities", "bni_benefits", "bni_connections"
]
for key in session_keys:
if key not in st.session_state:
st.session_state[key] = None
# Collect User Information
name = st.text_input("πŸ‘€ Your Name")
email = st.text_input("πŸ“§ Email")
mobile = st.text_input("πŸ“± Mobile Number")
company_name = st.text_input("🏒 Company Name")
company_industry = st.text_input("πŸ’Ό Industry (e.g., Healthcare, Finance, IT)")
# Select Company Data Input Method
st.subheader("🌐 Provide Company Information")
input_method = st.radio("Choose a method to provide company details:",
["Company Website", "Web Search", "Manual Description"])
progress_bar = st.progress(0)
# Handle Company Data Input
if input_method == "Company Website":
website_url = st.text_input("πŸ”— Enter Company Website URL")
if st.button("πŸ” Scrape Website"):
st.info("We are scraping the website, please wait...")
st.session_state.company_data = scrape_website(website_url)
progress_bar.progress(20)
elif input_method == "Web Search":
if st.button("πŸ” Search Company Online"):
st.info("We are searching the company details online, please wait...")
st.session_state.company_data = search_company(company_name)
progress_bar.progress(20)
elif input_method == "Manual Description":
company_description = st.text_area("πŸ“ Enter Company Description")
if st.button("βœ” Process Description"):
st.info("We are processing the description, please wait...")
st.session_state.company_data = process_company_description(company_description)
progress_bar.progress(20)
# **Execute All Phases Automatically After Company Data is Available**
if st.session_state.company_data:
st.subheader("βœ… Company Information Extracted")
st.write(st.session_state.company_data)
progress_bar.progress(40)
# **BNI Benefits & Recommendations** (Moved before AI)
try:
st.session_state.bni_benefits = get_bni_benefits(st.session_state.company_data)
# Call the RAG agent here:
st.session_state.bni_connections = recommend_bni_connections(st.session_state.company_data)
progress_bar.progress(60) # Updated progress position
except Exception as e:
print(f"❌ Error fetching BNI data: {e}")
st.session_state.bni_benefits = "No BNI data available."
st.session_state.bni_connections = "No relevant BNI connections found."
if st.session_state.bni_benefits:
st.subheader("🌍 BNI Membership Benefits for Your Business")
st.write(st.session_state.bni_benefits)
if st.session_state.bni_connections:
st.subheader("🀝 Recommended BNI Pearl Chapter Connections")
st.write(st.session_state.bni_connections)
progress_bar.progress(75) # Updated progress position
# Industry Analysis (Hidden from Frontend, but required for AI Strategy)
st.session_state.industry_trends = get_industry_trends(company_industry)
# AI Strategy & Implementation (Comes after BNI)
st.session_state.ai_strategy = generate_ai_strategy(
st.session_state.company_data, st.session_state.industry_trends)
# Revenue Opportunities
st.session_state.revenue_opportunities = identify_revenue_opportunities(
st.session_state.company_data, st.session_state.ai_strategy)
progress_bar.progress(90)
if st.session_state.ai_strategy:
st.subheader("πŸš€ AI Strategy & Revenue Opportunities")
st.write(st.session_state.ai_strategy)
st.write(st.session_state.revenue_opportunities)
progress_bar.progress(95)
# Generate Final Report (Including BNI Data)
progress_bar.progress(99)
report_filename = generate_report(
company_name,
st.session_state.company_data,
st.session_state.ai_strategy,
st.session_state.revenue_opportunities,
st.session_state.bni_benefits,
st.session_state.bni_connections
)
st.success(f"πŸ“‚ Report Generated: **{report_filename}**")
# Provide download button for the generated PDF
with open(report_filename, "rb") as pdf_file:
PDFbyte = pdf_file.read()
st.download_button(
label="πŸ“₯ Download AI Strategy Report (PDF)",
data=PDFbyte,
file_name=report_filename,
mime='application/octet-stream'
)
progress_bar.progress(100)
# Save Data to Hugging Face
if st.session_state.company_data and st.session_state.ai_strategy:
user_data = {
"name": name, "email": email, "mobile": mobile, "company_name": company_name,
"industry": company_industry, "input_method": input_method, "company_data": st.session_state.company_data,
"ai_strategy": st.session_state.ai_strategy,
"revenue_opportunities": st.session_state.revenue_opportunities,
"bni_benefits": st.session_state.bni_benefits,
"bni_connections": st.session_state.bni_connections # βž• add this
}
save_data_hf(user_data)
# Footer
st.markdown("---")
st.markdown("πŸš€ **Powered by Giant Analytics | Contact Us: (+91) 96533 20500**")
if __name__ == "__main__":
main()