# app.py (Fast + Enhanced) import gradio as gr from duckduckgo_search import DDGS from transformers import pipeline import requests from bs4 import BeautifulSoup from concurrent.futures import ThreadPoolExecutor # Load faster summarizer summarizer = pipeline("summarization", model="philschmid/bart-large-cnn-samsum") # Web search def search_web(query, num_results=3): with DDGS() as ddgs: results = [r for r in ddgs.text(query, max_results=num_results)] return results # Scrape and summarize def fetch_summary(url): try: res = requests.get(url, timeout=5) soup = BeautifulSoup(res.text, 'html.parser') paragraphs = soup.find_all('p') text = ' '.join([p.get_text() for p in paragraphs]) text = text.strip().replace('\n', ' ')[:1500] # Limit to 1500 characters if len(text) < 100: return None, None summary = summarizer(text, max_length=100, min_length=30, do_sample=False) return summary[0]['summary_text'], url except: return None, None # Use-case generation def generate_use_cases(insights, company, industry): prompt = f"Based on these insights about {company} in the {industry} sector, list 3 practical AI use cases:\n\n{insights}" summary = summarizer(prompt, max_length=120, min_length=40, do_sample=False) return summary[0]['summary_text'] # Main pipeline def process(company, industry): query = f"{company} {industry} 2025 trends" results = search_web(query, num_results=3) # Parallel scrape/summarize with ThreadPoolExecutor(max_workers=3) as executor: summaries = list(executor.map(lambda r: fetch_summary(r['href']), results)) valid = [(s, u) for s, u in summaries if s and u] all_summaries = '\n'.join([s for s, _ in valid]) references = '\n'.join([f"- [{u}]({u})" for _, u in valid]) use_cases = generate_use_cases(all_summaries, company, industry) return all_summaries.strip(), use_cases.strip(), references.strip() # Gradio UI demo = gr.Interface( fn=process, inputs=[gr.Textbox(label="Company Name"), gr.Textbox(label="Industry")], outputs=[ gr.Textbox(label="Summarized Insights"), gr.Textbox(label="AI Use Cases"), gr.Markdown(label="Reference Links") ], title="⚡ AI Insight Generator (Fast & Free)", description="Enter a company and industry to get real-time insights and AI business use cases—faster and without API keys!" ) if __name__ == "__main__": demo.launch()