Spaces:
Runtime error
Runtime error
Sami Halawa
Claude
commited on
Commit
Β·
807c6c7
1
Parent(s):
e122c85
Transform to AutoStartup.ai - AI-powered startup idea generator
Browse files- Convert research idea generator to startup-focused tool
- Update UI labels and prompts for business/startup context
- Change evaluation criteria to market viability metrics
- Enhance README with startup-specific features and usage
- Maintain core functionality while pivoting to entrepreneurship
π€ Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
README.md
CHANGED
@@ -1,12 +1,34 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
11 |
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# π AutoStartup.ai - AI-Powered Startup Idea Generator
|
2 |
+
|
3 |
+
Transform market problems into viable startup opportunities using AI-driven analysis and evaluation.
|
4 |
+
|
5 |
+
## Features
|
6 |
+
|
7 |
+
- **Market-Driven Generation**: Input market problems or industry focus areas to generate targeted startup ideas
|
8 |
+
- **AI Evaluation**: Ideas are scored on Market Potential, Technical Feasibility, Scalability, and Competitive Advantage
|
9 |
+
- **Idea Tracking**: Save viable ideas and filter out non-viable ones
|
10 |
+
- **Business Plan Export**: Download structured business plan templates for your best ideas
|
11 |
+
|
12 |
+
## Usage
|
13 |
|
14 |
+
1. Enter a market problem or industry focus in the text area
|
15 |
+
2. Click "π Generate Startup Ideas" to get AI-generated, ranked startup concepts
|
16 |
+
3. Review and rate ideas using the π‘ and β buttons
|
17 |
+
4. Download business plan templates for promising ideas
|
18 |
+
|
19 |
+
## Installation
|
20 |
+
|
21 |
+
```bash
|
22 |
+
pip install -r requirements.txt
|
23 |
+
python app.py
|
24 |
+
```
|
25 |
+
|
26 |
+
## Technology Stack
|
27 |
+
|
28 |
+
- **Frontend**: Gradio for interactive web interface
|
29 |
+
- **AI Engine**: OpenAI GPT models for idea generation and evaluation
|
30 |
+
- **Data Processing**: Pandas for results management
|
31 |
+
- **Export**: Excel/XLSX business plan templates
|
32 |
+
|
33 |
+
---
|
34 |
+
*Transform your entrepreneurial vision into reality with AI-powered startup ideation.*
|
app.py
CHANGED
@@ -67,10 +67,10 @@ def generate_and_evaluate(query, ideas_count, random_seed, progress=gr.Progress(
|
|
67 |
|
68 |
display_data.append({
|
69 |
"Rank": i + 1,
|
70 |
-
"Idea": idea_description,
|
71 |
"Score": display_score,
|
72 |
-
"Source
|
73 |
-
"Details": evaluation_raw,
|
74 |
})
|
75 |
|
76 |
# Displaying results in the first table
|
@@ -103,10 +103,10 @@ def generate_and_evaluate(query, ideas_count, random_seed, progress=gr.Progress(
|
|
103 |
|
104 |
comparison_display_data.append({
|
105 |
"Rank": i + 1,
|
106 |
-
"Idea": idea_description,
|
107 |
"Score": display_score,
|
108 |
-
"Source
|
109 |
-
"Details": experiment_text,
|
110 |
})
|
111 |
|
112 |
comparison_results_df = pd.DataFrame(comparison_display_data)
|
@@ -125,7 +125,7 @@ def like_idea(row_number, ranked_ideas):
|
|
125 |
idea_info = ranked_ideas[idx]
|
126 |
with open(GOOD_IDEAS_FILE, "a", encoding="utf-8") as f:
|
127 |
f.write(json.dumps(idea_info, ensure_ascii=False) + "\n")
|
128 |
-
return f"the {row_number}-th idea has been recorded as
|
129 |
|
130 |
def dislike_idea(row_number, ranked_ideas):
|
131 |
idx = int(row_number) - 1
|
@@ -134,7 +134,7 @@ def dislike_idea(row_number, ranked_ideas):
|
|
134 |
idea_info = ranked_ideas[idx]
|
135 |
with open(BAD_IDEAS_FILE, "a", encoding="utf-8") as f:
|
136 |
f.write(json.dumps(idea_info, ensure_ascii=False) + "\n")
|
137 |
-
return f"the {row_number}-th idea has been recorded as
|
138 |
|
139 |
def export_xlsx(ranked_ideas):
|
140 |
if not ranked_ideas:
|
@@ -174,30 +174,31 @@ def export_xlsx(ranked_ideas):
|
|
174 |
with gr.Blocks(theme=gr.themes.Soft(), css_paths=['./gradio.css']) as demo:
|
175 |
gr.Markdown(
|
176 |
"""
|
177 |
-
# π
|
178 |
-
Enter a
|
179 |
-
then evaluate and rank them based on
|
|
|
180 |
"""
|
181 |
)
|
182 |
|
183 |
with gr.Row():
|
184 |
with gr.Column(scale=2):
|
185 |
query_input = gr.Textbox(
|
186 |
-
label="
|
187 |
-
placeholder='''e.g.
|
188 |
|
189 |
-
To address
|
190 |
lines=6
|
191 |
)
|
192 |
-
submit_button = gr.Button("Generate Ideas", variant="primary")
|
193 |
gr.Markdown("---")
|
194 |
gr.Markdown("### Like / Dislike")
|
195 |
with gr.Row():
|
196 |
row_input = gr.Number(label="rank", value=1, precision=0)
|
197 |
status_box = gr.Textbox(label="status", interactive=False)
|
198 |
with gr.Column(scale=1):
|
199 |
-
like_button = gr.Button("
|
200 |
-
dislike_button = gr.Button("
|
201 |
with gr.Column(scale=1):
|
202 |
cost_output = gr.Textbox(label="Estimated Cost", interactive=False, value="$0.00")
|
203 |
ideas_count_input = gr.Number(
|
@@ -213,22 +214,22 @@ To address issues related to long texts (such as long-text comprehension, long-t
|
|
213 |
status_output = gr.Textbox(label="Status", interactive=False, value="Idle")
|
214 |
|
215 |
gr.Markdown("---")
|
216 |
-
gr.Markdown("## Ranked Ideas")
|
217 |
results_output = gr.DataFrame(
|
218 |
-
headers=["Rank", "Idea", "Score", "Source
|
219 |
datatype=["number", "str", "number", "str", "str"],
|
220 |
-
label="
|
221 |
elem_id="results-dataframe",
|
222 |
row_count=(10, "dynamic"),
|
223 |
wrap=True
|
224 |
)
|
225 |
gr.Markdown("---")
|
226 |
-
gr.Markdown("##
|
227 |
# New comparison results table
|
228 |
comparison_results_output = gr.DataFrame(
|
229 |
-
headers=["Rank", "Idea", "Score", "Source
|
230 |
datatype=["number", "str", "number", "str", "str"],
|
231 |
-
label="
|
232 |
elem_id="comparison-results-dataframe",
|
233 |
row_count=(10, "dynamic"),
|
234 |
wrap=True
|
@@ -237,7 +238,7 @@ To address issues related to long texts (such as long-text comprehension, long-t
|
|
237 |
results_state = gr.State()
|
238 |
|
239 |
download_button = gr.DownloadButton(
|
240 |
-
label="
|
241 |
value=export_xlsx,
|
242 |
inputs=[results_state]
|
243 |
)
|
|
|
67 |
|
68 |
display_data.append({
|
69 |
"Rank": i + 1,
|
70 |
+
"Startup Idea": idea_description,
|
71 |
"Score": display_score,
|
72 |
+
"Market Research Source": idea_info.get('paper_title', 'N/A').split('/')[-1],
|
73 |
+
"Business Details": evaluation_raw,
|
74 |
})
|
75 |
|
76 |
# Displaying results in the first table
|
|
|
103 |
|
104 |
comparison_display_data.append({
|
105 |
"Rank": i + 1,
|
106 |
+
"Startup Idea": idea_description,
|
107 |
"Score": display_score,
|
108 |
+
"Market Research Source": idea_info.get('paper_title', 'N/A').split('/')[-1],
|
109 |
+
"Business Details": experiment_text,
|
110 |
})
|
111 |
|
112 |
comparison_results_df = pd.DataFrame(comparison_display_data)
|
|
|
125 |
idea_info = ranked_ideas[idx]
|
126 |
with open(GOOD_IDEAS_FILE, "a", encoding="utf-8") as f:
|
127 |
f.write(json.dumps(idea_info, ensure_ascii=False) + "\n")
|
128 |
+
return f"the {row_number}-th startup idea has been recorded as viable"
|
129 |
|
130 |
def dislike_idea(row_number, ranked_ideas):
|
131 |
idx = int(row_number) - 1
|
|
|
134 |
idea_info = ranked_ideas[idx]
|
135 |
with open(BAD_IDEAS_FILE, "a", encoding="utf-8") as f:
|
136 |
f.write(json.dumps(idea_info, ensure_ascii=False) + "\n")
|
137 |
+
return f"the {row_number}-th startup idea has been recorded as not viable"
|
138 |
|
139 |
def export_xlsx(ranked_ideas):
|
140 |
if not ranked_ideas:
|
|
|
174 |
with gr.Blocks(theme=gr.themes.Soft(), css_paths=['./gradio.css']) as demo:
|
175 |
gr.Markdown(
|
176 |
"""
|
177 |
+
# π AutoStartup.ai - Startup Idea Generator π
|
178 |
+
Enter a market problem or industry focus, and this tool will generate innovative startup ideas
|
179 |
+
based on market research and trends, then evaluate and rank them based on Market Potential,
|
180 |
+
Technical Feasibility, Scalability, and Competitive Advantage.
|
181 |
"""
|
182 |
)
|
183 |
|
184 |
with gr.Row():
|
185 |
with gr.Column(scale=2):
|
186 |
query_input = gr.Textbox(
|
187 |
+
label="Market Problem or Industry Focus",
|
188 |
+
placeholder='''e.g. Remote work has fundamentally changed how people collaborate, but current tools still suffer from poor user experience, lack of seamless integration, and difficulty maintaining team culture. Many professionals struggle with productivity in distributed teams, effective asynchronous communication, and maintaining work-life balance.
|
189 |
|
190 |
+
To address challenges in remote work collaboration (such as team productivity, communication gaps, cultural disconnect, etc), you should come up with an innovative and scalable startup idea.''',
|
191 |
lines=6
|
192 |
)
|
193 |
+
submit_button = gr.Button("π Generate Startup Ideas", variant="primary")
|
194 |
gr.Markdown("---")
|
195 |
gr.Markdown("### Like / Dislike")
|
196 |
with gr.Row():
|
197 |
row_input = gr.Number(label="rank", value=1, precision=0)
|
198 |
status_box = gr.Textbox(label="status", interactive=False)
|
199 |
with gr.Column(scale=1):
|
200 |
+
like_button = gr.Button("π‘ Great Startup Idea!")
|
201 |
+
dislike_button = gr.Button("β Not Viable")
|
202 |
with gr.Column(scale=1):
|
203 |
cost_output = gr.Textbox(label="Estimated Cost", interactive=False, value="$0.00")
|
204 |
ideas_count_input = gr.Number(
|
|
|
214 |
status_output = gr.Textbox(label="Status", interactive=False, value="Idle")
|
215 |
|
216 |
gr.Markdown("---")
|
217 |
+
gr.Markdown("## π Ranked Startup Ideas")
|
218 |
results_output = gr.DataFrame(
|
219 |
+
headers=["Rank", "Startup Idea", "Score", "Market Research Source", "Business Details"],
|
220 |
datatype=["number", "str", "number", "str", "str"],
|
221 |
+
label="Market-Validated Ideas",
|
222 |
elem_id="results-dataframe",
|
223 |
row_count=(10, "dynamic"),
|
224 |
wrap=True
|
225 |
)
|
226 |
gr.Markdown("---")
|
227 |
+
gr.Markdown("## π Alternative Generation Results")
|
228 |
# New comparison results table
|
229 |
comparison_results_output = gr.DataFrame(
|
230 |
+
headers=["Rank", "Startup Idea", "Score", "Market Research Source", "Business Details"],
|
231 |
datatype=["number", "str", "number", "str", "str"],
|
232 |
+
label="Alternative Approach Results",
|
233 |
elem_id="comparison-results-dataframe",
|
234 |
row_count=(10, "dynamic"),
|
235 |
wrap=True
|
|
|
238 |
results_state = gr.State()
|
239 |
|
240 |
download_button = gr.DownloadButton(
|
241 |
+
label="π Download Business Plan Template",
|
242 |
value=export_xlsx,
|
243 |
inputs=[results_state]
|
244 |
)
|