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()