Spaces:
Running
Running
import streamlit as st | |
from typing import Dict, List | |
from datetime import datetime | |
class BrainstormManager: | |
def __init__(self): | |
if 'products' not in st.session_state: | |
st.session_state.products = {} | |
def generate_product_form(self) -> tuple: | |
with st.form("product_form"): | |
basic_info = { | |
"name": st.text_input("Product Name"), | |
"category": st.selectbox("Category", ["Digital", "Physical", "Service"]), | |
"description": st.text_area("Description"), | |
"target_audience": st.multiselect("Target Audience", | |
["Students", "Professionals", "Businesses", "Seniors", "Youth"]), | |
"price_range": st.slider("Price Range ($)", 0, 1000, (50, 200)), | |
"launch_date": st.date_input("Expected Launch Date") | |
} | |
st.subheader("Market Analysis") | |
market_analysis = { | |
"competitors": st.text_area("Main Competitors (one per line)"), | |
"unique_features": st.text_area("Unique Selling Points"), | |
"market_size": st.selectbox("Market Size", | |
["Small", "Medium", "Large", "Enterprise"]), | |
"growth_potential": st.slider("Growth Potential", 1, 10) | |
} | |
submitted = st.form_submit_button("Save Product") | |
return basic_info, market_analysis, submitted | |
def analyze_product(self, product_data: Dict) -> Dict: | |
insights = { | |
"market_opportunity": self._calculate_opportunity_score(product_data), | |
"suggested_price": self._suggest_price(product_data), | |
"risk_factors": self._identify_risks(product_data), | |
"next_steps": self._generate_next_steps(product_data) | |
} | |
return insights | |
def _calculate_opportunity_score(self, data: Dict) -> int: | |
score = 0 | |
if data.get("market_size") == "Large": | |
score += 3 | |
if len(data.get("target_audience", [])) >= 2: | |
score += 2 | |
if data.get("growth_potential", 0) > 7: | |
score += 2 | |
return min(score, 10) | |
def _suggest_price(self, data: Dict) -> float: | |
base_price = sum(data.get("price_range", (0, 0))) / 2 | |
if data.get("market_size") == "Enterprise": | |
base_price *= 1.5 | |
return round(base_price, 2) | |
def _identify_risks(self, data: Dict) -> List[str]: | |
risks = [] | |
if data.get("competitors"): | |
risks.append("Competitive market - differentiation crucial") | |
if len(data.get("target_audience", [])) < 2: | |
risks.append("Narrow target audience - consider expansion") | |
return risks | |
def _generate_next_steps(self, data: Dict) -> List[str]: | |
steps = [ | |
"Create detailed product specification", | |
"Develop MVP timeline", | |
"Plan marketing strategy" | |
] | |
if data.get("market_size") == "Enterprise": | |
steps.append("Prepare enterprise sales strategy") | |
return steps |