Spaces:
Sleeping
Sleeping
Commit
·
a6a0614
1
Parent(s):
05626fe
updated analytics
Browse files- api/routers/analytics_chatbot.py +3 -3
- api/routers/brainstorm.py +1 -1
- api/routers/context_analysis.py +2 -1
- api/routers/ideation.py +1 -1
- api/routers/orchestration.py +1 -1
- logs/access.log +154 -0
- logs/app.log +6 -0
- src/genai/analytics_chatbot/agent.py +10 -4
- src/genai/analytics_chatbot/utils/nodes.py +90 -7
- src/genai/analytics_chatbot/utils/prompts.py +47 -0
- src/genai/analytics_chatbot/utils/schemas.py +11 -1
- src/genai/analytics_chatbot/utils/state.py +5 -2
- src/genai/analytics_chatbot/utils/tools.py +24 -0
- src/genai/analytics_chatbot/utils/utils.py +39 -2
- src/genai/brainstroming_agent/utils/utils.py +4 -1
- src/genai/context_analysis_agent/agent.py +1 -0
- src/genai/context_analysis_agent/utils/nodes.py +4 -1
- src/genai/context_analysis_agent/utils/utils.py +3 -1
- src/genai/ideation_agent/agent.py +2 -0
- src/genai/ideation_agent/utils/nodes.py +3 -0
- src/genai/orchestration_agent/utils/utils.py +2 -0
- src/genai/utils/data_loader.py +5 -0
- src/genai/utils/ideas/ideas.csv +211 -30
- src/genai/utils/models_loader.py +10 -10
api/routers/analytics_chatbot.py
CHANGED
|
@@ -17,10 +17,10 @@ graph = agent.chatbot_graph()
|
|
| 17 |
|
| 18 |
@router.get("/analytics-chatbot")
|
| 19 |
def get_analytics(msg:str):
|
| 20 |
-
user_query=process_query(msg)
|
| 21 |
-
config={"configurable": {"thread_id": "analytics-chatbot-thread"}}
|
| 22 |
try:
|
| 23 |
-
result=graph.invoke({'messages':
|
| 24 |
return {
|
| 25 |
'response': result['response'],
|
| 26 |
'endpoint': result['endpoint']
|
|
|
|
| 17 |
|
| 18 |
@router.get("/analytics-chatbot")
|
| 19 |
def get_analytics(msg:str):
|
| 20 |
+
# user_query=process_query(msg)
|
| 21 |
+
config={"configurable": {"thread_id": "analytics-chatbot-thread"},"run_name":"analytics-chatbot"}
|
| 22 |
try:
|
| 23 |
+
result=graph.invoke({'messages':msg},config=config)
|
| 24 |
return {
|
| 25 |
'response': result['response'],
|
| 26 |
'endpoint': result['endpoint']
|
api/routers/brainstorm.py
CHANGED
|
@@ -33,7 +33,7 @@ def brainstorming_endpoint(request: BrainstormRequest):
|
|
| 33 |
"latest_preferred_topics": request.preferred_topics,
|
| 34 |
"business_details": stored_data["business_details"],
|
| 35 |
},
|
| 36 |
-
config={"configurable": {"thread_id": request.thread_id}},
|
| 37 |
stream_mode=['messages','values']
|
| 38 |
):
|
| 39 |
stored_data['brainstorming_response'] = chunk if isinstance(chunk, dict) else stored_data.get('brainstorming_response')
|
|
|
|
| 33 |
"latest_preferred_topics": request.preferred_topics,
|
| 34 |
"business_details": stored_data["business_details"],
|
| 35 |
},
|
| 36 |
+
config={"configurable": {"thread_id": request.thread_id},"run_name":"brainstorming"},
|
| 37 |
stream_mode=['messages','values']
|
| 38 |
):
|
| 39 |
stored_data['brainstorming_response'] = chunk if isinstance(chunk, dict) else stored_data.get('brainstorming_response')
|
api/routers/context_analysis.py
CHANGED
|
@@ -17,7 +17,8 @@ context_graph = agent.context_analysis_graph()
|
|
| 17 |
@router.post("/context-analysis")
|
| 18 |
def context_analysis(msg: UserMessage):
|
| 19 |
stored_data['context_analysis_interactions'].append({'role':'human', 'content':msg.message})
|
| 20 |
-
config={"configurable": {"thread_id": "context_analysis_1"}
|
|
|
|
| 21 |
try:
|
| 22 |
result=context_graph.invoke({'messages':msg.message},config=config)
|
| 23 |
stored_data['context_analysis_interactions'].append({'role':'ai', 'content':result['messages'][-1].content})
|
|
|
|
| 17 |
@router.post("/context-analysis")
|
| 18 |
def context_analysis(msg: UserMessage):
|
| 19 |
stored_data['context_analysis_interactions'].append({'role':'human', 'content':msg.message})
|
| 20 |
+
config={"configurable": {"thread_id": "context_analysis_1"},
|
| 21 |
+
"run_name":"context-analysis"}
|
| 22 |
try:
|
| 23 |
result=context_graph.invoke({'messages':msg.message},config=config)
|
| 24 |
stored_data['context_analysis_interactions'].append({'role':'ai', 'content':result['messages'][-1].content})
|
api/routers/ideation.py
CHANGED
|
@@ -15,7 +15,7 @@ idea_graph = agent.ideation_graph()
|
|
| 15 |
|
| 16 |
@router.post("/ideation")
|
| 17 |
def ideation_endpoint(msg:IdeationMessage):
|
| 18 |
-
config={"recursion_limit":25, "configurable": {"thread_id": "ideation_thread123"}}
|
| 19 |
scores=msg.scores.model_dump()
|
| 20 |
try:
|
| 21 |
result = idea_graph.invoke(
|
|
|
|
| 15 |
|
| 16 |
@router.post("/ideation")
|
| 17 |
def ideation_endpoint(msg:IdeationMessage):
|
| 18 |
+
config={"recursion_limit":25, "configurable": {"thread_id": "ideation_thread123"},"run_name":"ideation"}
|
| 19 |
scores=msg.scores.model_dump()
|
| 20 |
try:
|
| 21 |
result = idea_graph.invoke(
|
api/routers/orchestration.py
CHANGED
|
@@ -16,7 +16,7 @@ graph = agent.orchestration_graph()
|
|
| 16 |
@router.post("/orchestration", description="Gives the analytics of influencers.")
|
| 17 |
def orchestration_endpoint(request:OrchestrationRequest):
|
| 18 |
try:
|
| 19 |
-
config={"configurable": {"thread_id": "orchestration-thread"}}
|
| 20 |
result = graph.invoke({'messages':[request.message],
|
| 21 |
'image_base64': request.image_base64}, config=config)
|
| 22 |
print('Result tools:', result['tools'])
|
|
|
|
| 16 |
@router.post("/orchestration", description="Gives the analytics of influencers.")
|
| 17 |
def orchestration_endpoint(request:OrchestrationRequest):
|
| 18 |
try:
|
| 19 |
+
config={"configurable": {"thread_id": "orchestration-thread"},"run_name":"orchestration"}
|
| 20 |
result = graph.invoke({'messages':[request.message],
|
| 21 |
'image_base64': request.image_base64}, config=config)
|
| 22 |
print('Result tools:', result['tools'])
|
logs/access.log
CHANGED
|
@@ -1281,3 +1281,157 @@
|
|
| 1281 |
2025-10-10 15:13:23,414 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1282 |
2025-10-10 15:14:29,401 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=i%20want%20monthly%20not%20weekly
|
| 1283 |
2025-10-10 15:15:31,389 | INFO | access_logger | app.py:21 | Response status: 200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1281 |
2025-10-10 15:13:23,414 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1282 |
2025-10-10 15:14:29,401 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=i%20want%20monthly%20not%20weekly
|
| 1283 |
2025-10-10 15:15:31,389 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1284 |
+
2025-10-13 14:18:15,540 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/
|
| 1285 |
+
2025-10-13 14:18:15,541 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1286 |
+
2025-10-13 14:18:15,667 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/favicon.ico
|
| 1287 |
+
2025-10-13 14:18:15,667 | INFO | access_logger | app.py:21 | Response status: 404
|
| 1288 |
+
2025-10-13 14:18:18,675 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 1289 |
+
2025-10-13 14:18:18,676 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1290 |
+
2025-10-13 14:18:18,798 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 1291 |
+
2025-10-13 14:18:18,809 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1292 |
+
2025-10-13 14:18:33,218 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1293 |
+
2025-10-13 14:18:35,990 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1294 |
+
2025-10-13 14:26:44,751 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1295 |
+
2025-10-13 14:26:47,501 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1296 |
+
2025-10-13 15:24:10,394 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1297 |
+
2025-10-13 15:24:16,819 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1298 |
+
2025-10-14 12:02:20,982 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/
|
| 1299 |
+
2025-10-14 12:02:20,983 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1300 |
+
2025-10-14 12:02:21,453 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/favicon.ico
|
| 1301 |
+
2025-10-14 12:02:21,454 | INFO | access_logger | app.py:21 | Response status: 404
|
| 1302 |
+
2025-10-14 12:02:24,375 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 1303 |
+
2025-10-14 12:02:24,375 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1304 |
+
2025-10-14 12:02:24,477 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 1305 |
+
2025-10-14 12:02:24,485 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1306 |
+
2025-10-14 12:02:36,829 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1307 |
+
2025-10-14 12:02:38,198 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1308 |
+
2025-10-14 12:03:53,745 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1309 |
+
2025-10-14 12:03:55,168 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1310 |
+
2025-10-14 12:04:14,772 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1311 |
+
2025-10-14 12:04:16,324 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1312 |
+
2025-10-14 12:04:39,777 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1313 |
+
2025-10-14 12:04:40,763 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1314 |
+
2025-10-14 12:04:51,194 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1315 |
+
2025-10-14 12:04:51,877 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1316 |
+
2025-10-14 12:05:02,523 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1317 |
+
2025-10-14 12:05:03,312 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1318 |
+
2025-10-14 12:05:50,104 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1319 |
+
2025-10-14 12:05:51,149 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1320 |
+
2025-10-14 12:06:13,056 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1321 |
+
2025-10-14 12:06:14,869 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1322 |
+
2025-10-14 12:06:58,786 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1323 |
+
2025-10-14 12:07:00,184 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1324 |
+
2025-10-14 12:07:29,357 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1325 |
+
2025-10-14 12:07:30,467 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1326 |
+
2025-10-14 12:07:52,124 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1327 |
+
2025-10-14 12:07:53,481 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1328 |
+
2025-10-14 12:08:22,406 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1329 |
+
2025-10-14 12:08:23,690 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1330 |
+
2025-10-14 12:08:41,849 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1331 |
+
2025-10-14 12:08:44,679 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1332 |
+
2025-10-14 12:16:32,613 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1333 |
+
2025-10-14 12:16:34,358 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1334 |
+
2025-10-14 13:07:22,594 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1335 |
+
2025-10-14 13:07:24,821 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1336 |
+
2025-10-14 13:14:19,421 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1337 |
+
2025-10-14 13:14:20,811 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1338 |
+
2025-10-14 13:17:20,775 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1339 |
+
2025-10-14 13:17:23,437 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1340 |
+
2025-10-14 13:21:40,943 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1341 |
+
2025-10-14 13:21:42,704 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1342 |
+
2025-10-14 13:24:26,786 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1343 |
+
2025-10-14 13:24:28,767 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1344 |
+
2025-10-14 13:24:49,417 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 1345 |
+
2025-10-14 13:25:27,180 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1346 |
+
2025-10-14 13:32:14,899 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 1347 |
+
2025-10-14 13:32:48,183 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1348 |
+
2025-10-14 13:35:25,345 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 1349 |
+
2025-10-14 13:36:55,023 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1350 |
+
2025-10-14 13:48:10,484 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1351 |
+
2025-10-14 13:48:13,926 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1352 |
+
2025-10-14 13:49:09,893 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1353 |
+
2025-10-14 13:49:11,939 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1354 |
+
2025-10-14 13:49:26,762 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1355 |
+
2025-10-14 13:49:28,922 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1356 |
+
2025-10-14 13:49:59,979 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1357 |
+
2025-10-14 13:50:02,602 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1358 |
+
2025-10-14 13:53:11,861 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1359 |
+
2025-10-14 13:53:14,230 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1360 |
+
2025-10-14 13:53:46,297 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1361 |
+
2025-10-14 13:53:49,150 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1362 |
+
2025-10-14 13:54:14,680 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1363 |
+
2025-10-14 13:54:17,708 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1364 |
+
2025-10-14 13:54:54,178 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1365 |
+
2025-10-14 13:54:56,735 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1366 |
+
2025-10-14 13:55:36,204 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/context-analysis
|
| 1367 |
+
2025-10-14 13:55:42,001 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1368 |
+
2025-10-14 14:03:00,249 | INFO | access_logger | app.py:19 | Request: POST http://127.0.0.1:8000/api/brainstorm
|
| 1369 |
+
2025-10-14 14:03:00,253 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1370 |
+
2025-10-14 15:50:23,408 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=compare%20the%20analytics%20of%20munachiya%20and%20istu%20karki%20in%20weekly%20basis
|
| 1371 |
+
2025-10-14 15:50:35,565 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1372 |
+
2025-10-15 13:42:48,759 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/
|
| 1373 |
+
2025-10-15 13:42:48,760 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1374 |
+
2025-10-15 13:42:49,261 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/favicon.ico
|
| 1375 |
+
2025-10-15 13:42:49,262 | INFO | access_logger | app.py:21 | Response status: 404
|
| 1376 |
+
2025-10-15 13:42:51,660 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 1377 |
+
2025-10-15 13:42:51,661 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1378 |
+
2025-10-15 13:42:51,792 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 1379 |
+
2025-10-15 13:42:51,799 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1380 |
+
2025-10-15 13:43:10,648 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1381 |
+
2025-10-15 13:43:18,210 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1382 |
+
2025-10-15 13:50:14,570 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1383 |
+
2025-10-15 13:50:14,692 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1384 |
+
2025-10-15 13:52:58,082 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1385 |
+
2025-10-15 13:53:10,743 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1386 |
+
2025-10-15 13:54:58,485 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1387 |
+
2025-10-15 13:55:01,441 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1388 |
+
2025-10-15 13:57:41,695 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1389 |
+
2025-10-15 13:57:44,156 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1390 |
+
2025-10-15 14:00:52,633 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1391 |
+
2025-10-15 14:00:55,239 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1392 |
+
2025-10-15 14:02:37,430 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1393 |
+
2025-10-15 14:02:38,914 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1394 |
+
2025-10-15 14:03:59,065 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1395 |
+
2025-10-15 14:04:00,676 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1396 |
+
2025-10-15 14:05:53,275 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1397 |
+
2025-10-15 14:05:55,350 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1398 |
+
2025-10-15 14:06:07,711 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1399 |
+
2025-10-15 14:06:08,987 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1400 |
+
2025-10-15 14:10:44,027 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1401 |
+
2025-10-15 14:10:46,491 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1402 |
+
2025-10-15 14:18:16,145 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1403 |
+
2025-10-15 14:18:20,639 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1404 |
+
2025-10-15 14:40:44,006 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1405 |
+
2025-10-15 14:40:52,711 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1406 |
+
2025-10-15 14:44:49,407 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1407 |
+
2025-10-15 14:44:57,594 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1408 |
+
2025-10-15 14:47:26,428 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20sentiment%20distribution%20of%20divya%20dhakal
|
| 1409 |
+
2025-10-15 14:47:30,974 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1410 |
+
2025-10-15 14:52:39,905 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20muna%20chiya
|
| 1411 |
+
2025-10-15 14:52:43,213 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1412 |
+
2025-10-15 14:56:14,341 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20munachiya
|
| 1413 |
+
2025-10-15 14:56:18,402 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1414 |
+
2025-10-15 14:56:48,683 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20divya%20dhakal
|
| 1415 |
+
2025-10-15 14:56:51,714 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1416 |
+
2025-10-15 15:09:06,685 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20muna%20chiya
|
| 1417 |
+
2025-10-15 15:09:17,509 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1418 |
+
2025-10-15 15:10:32,317 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20munachiya
|
| 1419 |
+
2025-10-15 15:10:35,747 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1420 |
+
2025-10-15 15:14:03,029 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20muna%20chiya
|
| 1421 |
+
2025-10-15 15:14:06,397 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1422 |
+
2025-10-15 15:14:13,203 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20the%20current%20buzz%20of%20munachiya
|
| 1423 |
+
2025-10-15 15:14:18,248 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1424 |
+
2025-10-15 15:40:30,485 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20to%20compare%20the%20analytics%20of%20muna%20and%20divya%20in%20weekly%20basis
|
| 1425 |
+
2025-10-15 15:40:38,739 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1426 |
+
2025-10-15 15:42:49,310 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20to%20compare%20the%20analytics%20of%20munachiya%20and%20divyadhakal_%20on%20a%20weekly%20basis.
|
| 1427 |
+
2025-10-15 15:42:52,373 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1428 |
+
2025-10-15 16:26:54,690 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20to%20compare%20the%20analytics%20of%20munachiya%20and%20divyadhakal_%20on%20a%20weekly%20basis.
|
| 1429 |
+
2025-10-15 16:26:57,515 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1430 |
+
2025-10-15 16:46:06,571 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=I%20want%20to%20compare%20the%20analytics%20of%20munachiya%20and%20divyadhakal_%20on%20a%20weekly%20basis.
|
| 1431 |
+
2025-10-15 16:46:19,173 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1432 |
+
2025-10-15 16:55:21,757 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=compare%20the%20analytics%20of%20munachiya%20and%20divyadhakal_%20on%20a%20weekly%20basis.
|
| 1433 |
+
2025-10-15 16:55:33,602 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1434 |
+
2025-10-15 16:57:19,291 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=What%20about%20the%20daily%20engagement%20of%20divya%20dhakal%3F
|
| 1435 |
+
2025-10-15 16:57:29,402 | INFO | access_logger | app.py:21 | Response status: 200
|
| 1436 |
+
2025-10-15 17:01:48,682 | INFO | access_logger | app.py:19 | Request: GET http://127.0.0.1:8000/api/analytics-chatbot?msg=compare%20munachiya%20and%20divyadhakal_
|
| 1437 |
+
2025-10-15 17:01:53,796 | INFO | access_logger | app.py:21 | Response status: 200
|
logs/app.log
CHANGED
|
@@ -126,3 +126,9 @@
|
|
| 126 |
2025-09-21 10:35:07,705 | INFO | app_logger | api/routers/orchestration.py:28 | Orchestrator executed
|
| 127 |
2025-10-09 15:07:54,561 | INFO | app_logger | api/routers/show_analytics.py:14 | Influencer Analytics returned by orchestrator.
|
| 128 |
2025-10-09 16:48:20,026 | INFO | app_logger | api/routers/show_analytics.py:14 | Influencer Analytics returned by orchestrator.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
2025-09-21 10:35:07,705 | INFO | app_logger | api/routers/orchestration.py:28 | Orchestrator executed
|
| 127 |
2025-10-09 15:07:54,561 | INFO | app_logger | api/routers/show_analytics.py:14 | Influencer Analytics returned by orchestrator.
|
| 128 |
2025-10-09 16:48:20,026 | INFO | app_logger | api/routers/show_analytics.py:14 | Influencer Analytics returned by orchestrator.
|
| 129 |
+
2025-10-14 12:08:44,677 | INFO | app_logger | api/routers/context_analysis.py:26 | Context Analysis Completed.
|
| 130 |
+
2025-10-14 13:25:27,179 | INFO | app_logger | api/routers/ideation.py:33 | Executed the ideation pipeline.
|
| 131 |
+
2025-10-14 13:32:48,182 | INFO | app_logger | api/routers/ideation.py:33 | Executed the ideation pipeline.
|
| 132 |
+
2025-10-14 13:36:55,021 | INFO | app_logger | api/routers/ideation.py:33 | Executed the ideation pipeline.
|
| 133 |
+
2025-10-14 13:55:41,999 | INFO | app_logger | api/routers/context_analysis.py:27 | Context Analysis Completed.
|
| 134 |
+
2025-10-14 14:03:00,252 | INFO | app_logger | api/routers/brainstorm.py:42 | Executed brainstorming agent.
|
src/genai/analytics_chatbot/agent.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
from langgraph.graph import StateGraph, START, END
|
| 2 |
from langgraph.checkpoint.memory import MemorySaver
|
| 3 |
from .utils.state import State
|
| 4 |
-
from .utils.nodes import ChatbotNode, FetchDataNode
|
| 5 |
|
| 6 |
class ChatbotAgent:
|
| 7 |
def __init__(self):
|
|
@@ -9,11 +9,17 @@ class ChatbotAgent:
|
|
| 9 |
|
| 10 |
def chatbot_graph(self):
|
| 11 |
graph_builder= StateGraph(State)
|
| 12 |
-
graph_builder.add_node("
|
|
|
|
|
|
|
|
|
|
| 13 |
graph_builder.add_node("fetch_data", FetchDataNode().run)
|
| 14 |
|
| 15 |
-
graph_builder.add_edge(START, "
|
| 16 |
-
graph_builder.add_edge("
|
|
|
|
|
|
|
|
|
|
| 17 |
graph_builder.add_edge("fetch_data", END)
|
| 18 |
|
| 19 |
|
|
|
|
| 1 |
from langgraph.graph import StateGraph, START, END
|
| 2 |
from langgraph.checkpoint.memory import MemorySaver
|
| 3 |
from .utils.state import State
|
| 4 |
+
from .utils.nodes import ChatbotNode, FetchDataNode , FetchLastMessage , RetrievePossibleEndpoints , FetchParametersNode , RetrieveExactEndpoint
|
| 5 |
|
| 6 |
class ChatbotAgent:
|
| 7 |
def __init__(self):
|
|
|
|
| 9 |
|
| 10 |
def chatbot_graph(self):
|
| 11 |
graph_builder= StateGraph(State)
|
| 12 |
+
graph_builder.add_node("fetch_last_message", FetchLastMessage().run)
|
| 13 |
+
graph_builder.add_node("retrieve_api_endpoints", RetrievePossibleEndpoints().run)
|
| 14 |
+
graph_builder.add_node("retrieve_exact_endpoint", RetrieveExactEndpoint().run)
|
| 15 |
+
graph_builder.add_node("fetch_parameters", FetchParametersNode().run)
|
| 16 |
graph_builder.add_node("fetch_data", FetchDataNode().run)
|
| 17 |
|
| 18 |
+
graph_builder.add_edge(START, "fetch_last_message")
|
| 19 |
+
graph_builder.add_edge("fetch_last_message", 'retrieve_api_endpoints')
|
| 20 |
+
graph_builder.add_edge("retrieve_api_endpoints", 'retrieve_exact_endpoint')
|
| 21 |
+
graph_builder.add_edge("retrieve_exact_endpoint", 'fetch_parameters')
|
| 22 |
+
graph_builder.add_edge("fetch_parameters", 'fetch_data')
|
| 23 |
graph_builder.add_edge("fetch_data", END)
|
| 24 |
|
| 25 |
|
src/genai/analytics_chatbot/utils/nodes.py
CHANGED
|
@@ -1,10 +1,96 @@
|
|
| 1 |
import requests
|
| 2 |
from langchain_core.messages import SystemMessage , HumanMessage , FunctionMessage
|
| 3 |
from .state import State
|
| 4 |
-
from .schemas import ResponseFormatter , CompareBodyFormatter
|
| 5 |
-
from .prompts import chatbot_prompt , get_body_prompt
|
| 6 |
-
from .utils import generate_api_knowledge
|
| 7 |
from src.genai.utils.models_loader import llm_gpt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
class ChatbotNode:
|
| 10 |
def __init__(self):
|
|
@@ -12,7 +98,6 @@ class ChatbotNode:
|
|
| 12 |
|
| 13 |
def run(self, state:State):
|
| 14 |
print('Message:',state['messages'])
|
| 15 |
-
# state['messages'][-1].content = process_query(state['messages'][-1].content)
|
| 16 |
template = chatbot_prompt()
|
| 17 |
knowledge_base = generate_api_knowledge('https://reveltrends.vercel.app')
|
| 18 |
print('The knowledge base is:', knowledge_base)
|
|
@@ -45,11 +130,9 @@ class FetchDataNode:
|
|
| 45 |
print('Entered to fetch data')
|
| 46 |
url = f'''{self.base_url}{state['endpoint']}'''
|
| 47 |
if state['method'] == 'GET':
|
| 48 |
-
response = requests.get(url, params=state['
|
| 49 |
elif state['endpoint'] == '/api/v1/compare/':
|
| 50 |
print('Condition satisfied')
|
| 51 |
-
human_messages = [msg.content for msg in state['messages'] if isinstance(msg, HumanMessage)]
|
| 52 |
-
print('Human messages:', human_messages)
|
| 53 |
messages = [SystemMessage(content=get_body_prompt()),
|
| 54 |
HumanMessage(content=str(state['messages']))]
|
| 55 |
response=llm_gpt.with_structured_output(CompareBodyFormatter , method='function_calling').invoke(messages)
|
|
|
|
| 1 |
import requests
|
| 2 |
from langchain_core.messages import SystemMessage , HumanMessage , FunctionMessage
|
| 3 |
from .state import State
|
| 4 |
+
from .schemas import ResponseFormatter , CompareBodyFormatter, LatestMessageFormatter, ParameterFormatter, EndpointFormatter
|
| 5 |
+
from .prompts import chatbot_prompt , get_body_prompt , fetch_last_message_prompt , fetch_parameters_prompt, fetch_endpoint_prompt
|
| 6 |
+
from .utils import generate_api_knowledge , process_query, get_endpoint_info
|
| 7 |
from src.genai.utils.models_loader import llm_gpt
|
| 8 |
+
import numpy as np
|
| 9 |
+
from src.genai.utils.data_loader import api_knowledge_df, api_index
|
| 10 |
+
from src.genai.utils.models_loader import embedding_model
|
| 11 |
+
|
| 12 |
+
class FetchLastMessage:
|
| 13 |
+
def __init__(self):
|
| 14 |
+
self.llm = llm_gpt
|
| 15 |
+
|
| 16 |
+
def run (self, state:State):
|
| 17 |
+
print('Message:',state['messages'])
|
| 18 |
+
template = fetch_last_message_prompt
|
| 19 |
+
messages=[SystemMessage(content=template)]+state['messages']
|
| 20 |
+
result = self.llm.with_structured_output(LatestMessageFormatter, method='function_calling').invoke(messages)
|
| 21 |
+
print('Latest Message:', process_query(result.latest_message))
|
| 22 |
+
if len(state['messages'])>11:
|
| 23 |
+
state["messages"] = state["messages"][-9:]
|
| 24 |
+
return {
|
| 25 |
+
'latest_message': process_query(result.latest_message)
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
class RetrievePossibleEndpoints:
|
| 30 |
+
def __init__(self):
|
| 31 |
+
self.df = api_knowledge_df
|
| 32 |
+
self.index = api_index
|
| 33 |
+
self.results = []
|
| 34 |
+
|
| 35 |
+
def run(self,state:State):
|
| 36 |
+
query_embedding = np.array(embedding_model.embed_query(state['latest_message'])).reshape(1, -1).astype('float32')
|
| 37 |
+
distances, indices = self.index.search(query_embedding, 5)
|
| 38 |
+
for idx in indices[0]:
|
| 39 |
+
row = self.df.iloc[idx]
|
| 40 |
+
print('Endpoint:',row['endpoint'])
|
| 41 |
+
self.results.append(row['endpoint'])
|
| 42 |
+
print('The possible endpoints are:', self.results)
|
| 43 |
+
return {
|
| 44 |
+
"possible_endpoints": self.results,
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
class RetrieveExactEndpoint:
|
| 48 |
+
def __init__(self):
|
| 49 |
+
self.llm = llm_gpt
|
| 50 |
+
|
| 51 |
+
def run(self,state:State):
|
| 52 |
+
messages = [SystemMessage(content=fetch_endpoint_prompt),
|
| 53 |
+
FunctionMessage(name='possible_endpoints',content=f'''The possible endpoints are: {state['possible_endpoints']}'''),
|
| 54 |
+
HumanMessage(content=f'''The user query is: {state['latest_message']}''')]
|
| 55 |
+
|
| 56 |
+
result = self.llm.with_structured_output(EndpointFormatter, method='function_calling').invoke(messages)
|
| 57 |
+
print('The exact endpoint is:', result.endpoint)
|
| 58 |
+
endpoint_info=get_endpoint_info(result.endpoint)
|
| 59 |
+
print('The endpoint info is:', endpoint_info)
|
| 60 |
+
|
| 61 |
+
return {
|
| 62 |
+
"messages":[{"role": "assistant", "content": f'''The endpoint is: {result.endpoint}'''}],
|
| 63 |
+
"endpoint": result.endpoint,
|
| 64 |
+
"method": endpoint_info['method'],
|
| 65 |
+
"needed_parameters": endpoint_info["parameters"]
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
class FetchParametersNode:
|
| 70 |
+
def __init__(self):
|
| 71 |
+
self.llm = llm_gpt
|
| 72 |
+
|
| 73 |
+
def run(self , state:State):
|
| 74 |
+
print('Entered to fetch parameters')
|
| 75 |
+
print(state['method'])
|
| 76 |
+
if state['method'] == 'GET':
|
| 77 |
+
print('Condition satisfied')
|
| 78 |
+
template = fetch_parameters_prompt
|
| 79 |
+
messages=[SystemMessage(content=template),
|
| 80 |
+
HumanMessage(content=f'''The query is: {state['latest_message']}\n. The needed parameters: {str(state['needed_parameters'])}''')
|
| 81 |
+
]
|
| 82 |
+
print('messages:', messages)
|
| 83 |
+
result = self.llm.with_structured_output(ParameterFormatter, method='function_calling').invoke(messages)
|
| 84 |
+
print('The parameter values:', result)
|
| 85 |
+
return {
|
| 86 |
+
'parameters_values':result.parameters_values
|
| 87 |
+
}
|
| 88 |
+
else:
|
| 89 |
+
return{
|
| 90 |
+
'parameters_values': {}
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
|
| 94 |
|
| 95 |
class ChatbotNode:
|
| 96 |
def __init__(self):
|
|
|
|
| 98 |
|
| 99 |
def run(self, state:State):
|
| 100 |
print('Message:',state['messages'])
|
|
|
|
| 101 |
template = chatbot_prompt()
|
| 102 |
knowledge_base = generate_api_knowledge('https://reveltrends.vercel.app')
|
| 103 |
print('The knowledge base is:', knowledge_base)
|
|
|
|
| 130 |
print('Entered to fetch data')
|
| 131 |
url = f'''{self.base_url}{state['endpoint']}'''
|
| 132 |
if state['method'] == 'GET':
|
| 133 |
+
response = requests.get(url, params=state['parameters_values'],headers=self.headers)
|
| 134 |
elif state['endpoint'] == '/api/v1/compare/':
|
| 135 |
print('Condition satisfied')
|
|
|
|
|
|
|
| 136 |
messages = [SystemMessage(content=get_body_prompt()),
|
| 137 |
HumanMessage(content=str(state['messages']))]
|
| 138 |
response=llm_gpt.with_structured_output(CompareBodyFormatter , method='function_calling').invoke(messages)
|
src/genai/analytics_chatbot/utils/prompts.py
CHANGED
|
@@ -65,3 +65,50 @@ Then the expected output is:
|
|
| 65 |
}
|
| 66 |
'''
|
| 67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
}
|
| 66 |
'''
|
| 67 |
|
| 68 |
+
fetch_last_message_prompt = '''
|
| 69 |
+
You are a precise text extractor. You are given the entire conversation history between a user and an AI.
|
| 70 |
+
Your task is to identify and return ONLY the user's most recent message, rewritten as a clear, complete sentence.
|
| 71 |
+
Do not include any other part of the conversation.
|
| 72 |
+
If the last message is incomplete or shorthand, infer the intended full meaning in natural language.
|
| 73 |
+
If there is only one message return it as it is.
|
| 74 |
+
Return only the final message as plain text — no explanations or extra text.
|
| 75 |
+
|
| 76 |
+
Example:
|
| 77 |
+
Conversation history:
|
| 78 |
+
User: I want analytics of divya dhakal.
|
| 79 |
+
AI: Sure, here are the analytics for Divya Dhakal.
|
| 80 |
+
User: Now i want of munachiya
|
| 81 |
+
|
| 82 |
+
Output:
|
| 83 |
+
I want analytics of Munachiya.
|
| 84 |
+
|
| 85 |
+
'''
|
| 86 |
+
|
| 87 |
+
fetch_parameters_prompt= '''
|
| 88 |
+
You are an intelligent parameter extractor.
|
| 89 |
+
Given a user query and a list of needed parameters, return a Python dictionary assigning the best value for each parameter.
|
| 90 |
+
Infer values when possible (e.g., “weekly” → frequency).
|
| 91 |
+
Return only a valid Python dictionary — no explanations.
|
| 92 |
+
|
| 93 |
+
Example:
|
| 94 |
+
user_query: I want weekly engagement trend of @john_
|
| 95 |
+
needed_parameters: ['frequency', 'influencer_username']
|
| 96 |
+
parameters_values: {'frequency': 'weekly', 'influencer_username': '@john_'}
|
| 97 |
+
|
| 98 |
+
'''
|
| 99 |
+
|
| 100 |
+
fetch_endpoint_prompt = '''
|
| 101 |
+
You are an intelligent endpoint selector.
|
| 102 |
+
Given a user query in natural language and a list of possible endpoints, select the single most appropriate endpoint from the list.
|
| 103 |
+
|
| 104 |
+
Guidelines:
|
| 105 |
+
- Only choose from the provided list; do not invent endpoints.
|
| 106 |
+
- Consider the intent of the query and the purpose of each endpoint.
|
| 107 |
+
- Return only the endpoint as plain text, no explanations.
|
| 108 |
+
|
| 109 |
+
Example:
|
| 110 |
+
User Query: I want weekly engagement stats of John
|
| 111 |
+
Possible Endpoints: ['/api/v1/overview/buzz_trend', '/api/v1/analytics/engagement', '/api/v1/analytics/followers']
|
| 112 |
+
endpoint: /api/v1/analytics/engagement
|
| 113 |
+
|
| 114 |
+
'''
|
src/genai/analytics_chatbot/utils/schemas.py
CHANGED
|
@@ -11,4 +11,14 @@ class ResponseFormatter(BaseModel):
|
|
| 11 |
|
| 12 |
class CompareBodyFormatter(BaseModel):
|
| 13 |
names: list
|
| 14 |
-
frequency: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
class CompareBodyFormatter(BaseModel):
|
| 13 |
names: list
|
| 14 |
+
frequency: str
|
| 15 |
+
|
| 16 |
+
class LatestMessageFormatter(BaseModel):
|
| 17 |
+
latest_message:str
|
| 18 |
+
|
| 19 |
+
class ParameterFormatter(BaseModel):
|
| 20 |
+
parameters_values:Optional[Dict[str, Optional[Any]]] = Field(None)
|
| 21 |
+
|
| 22 |
+
class EndpointFormatter(BaseModel):
|
| 23 |
+
endpoint: str
|
| 24 |
+
|
src/genai/analytics_chatbot/utils/state.py
CHANGED
|
@@ -4,8 +4,11 @@ from langgraph.graph.message import add_messages
|
|
| 4 |
|
| 5 |
class State(TypedDict):
|
| 6 |
messages: Annotated[list, add_messages]
|
|
|
|
| 7 |
endpoint: str
|
| 8 |
method: str
|
| 9 |
-
|
| 10 |
response:dict
|
| 11 |
-
error_message:str
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
class State(TypedDict):
|
| 6 |
messages: Annotated[list, add_messages]
|
| 7 |
+
possible_endpoints:list
|
| 8 |
endpoint: str
|
| 9 |
method: str
|
| 10 |
+
needed_parameters: dict
|
| 11 |
response:dict
|
| 12 |
+
error_message:str
|
| 13 |
+
latest_message:str
|
| 14 |
+
parameters_values:str
|
src/genai/analytics_chatbot/utils/tools.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import numpy as np
|
| 3 |
+
from src.genai.utils.data_loader import api_knowledge_df, api_index
|
| 4 |
+
from src.genai.utils.models_loader import embedding_model
|
| 5 |
+
|
| 6 |
+
class APIKnowledgeRetrieveTool:
|
| 7 |
+
def __init__(self):
|
| 8 |
+
self.df = api_knowledge_df
|
| 9 |
+
self.index = api_index
|
| 10 |
+
|
| 11 |
+
def retrieve(self,query):
|
| 12 |
+
query_embedding = np.array(embedding_model.embed_query(query)).reshape(1, -1).astype('float32')
|
| 13 |
+
distances, indices = self.index.search(query_embedding, 1)
|
| 14 |
+
row=self.df.iloc[indices[0]]
|
| 15 |
+
data = {'endpoint':row['endpoint'],
|
| 16 |
+
'method':row['method'],
|
| 17 |
+
'parameters':row['parameters']}
|
| 18 |
+
return data
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
|
src/genai/analytics_chatbot/utils/utils.py
CHANGED
|
@@ -2,6 +2,40 @@ import requests
|
|
| 2 |
import json
|
| 3 |
import re
|
| 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
def generate_api_knowledge(base_url: str):
|
| 6 |
"""
|
| 7 |
Fetches FastAPI OpenAPI docs and summarizes endpoints, methods, parameters, and descriptions.
|
|
@@ -41,7 +75,7 @@ def generate_api_knowledge(base_url: str):
|
|
| 41 |
"endpoint": endpoint,
|
| 42 |
"method": method.upper(),
|
| 43 |
"parameters": params,
|
| 44 |
-
"description": description
|
| 45 |
})
|
| 46 |
|
| 47 |
return api_knowledge
|
|
@@ -85,4 +119,7 @@ def process_query(user_query: str) -> str:
|
|
| 85 |
pattern = r"\b" + re.escape(name) + r"\b"
|
| 86 |
processed = re.sub(pattern, expanded[name], processed, flags=re.IGNORECASE)
|
| 87 |
|
| 88 |
-
return processed
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
import json
|
| 3 |
import re
|
| 4 |
|
| 5 |
+
def get_endpoint_info( endpoint:str ,base_url="https://reveltrends.vercel.app/"):
|
| 6 |
+
"""
|
| 7 |
+
Fetches FastAPI OpenAPI docs for a specific endpoint.
|
| 8 |
+
Returns a dictionary with method and parameters.
|
| 9 |
+
"""
|
| 10 |
+
resp = requests.get(f"{base_url}/openapi.json")
|
| 11 |
+
resp.raise_for_status()
|
| 12 |
+
spec = resp.json()
|
| 13 |
+
|
| 14 |
+
if endpoint not in spec["paths"]:
|
| 15 |
+
return {"error": "Endpoint not found"}
|
| 16 |
+
|
| 17 |
+
# Take the first method for the endpoint
|
| 18 |
+
for method, details in spec["paths"][endpoint].items():
|
| 19 |
+
params = []
|
| 20 |
+
|
| 21 |
+
# Collect query/path parameters
|
| 22 |
+
for param in details.get("parameters", []):
|
| 23 |
+
params.append(param.get("name"))
|
| 24 |
+
|
| 25 |
+
# Collect requestBody parameters
|
| 26 |
+
if "requestBody" in details:
|
| 27 |
+
try:
|
| 28 |
+
body_schema = details["requestBody"]["content"]["application/json"]["schema"]
|
| 29 |
+
if "properties" in body_schema:
|
| 30 |
+
params.extend(body_schema["properties"].keys())
|
| 31 |
+
except Exception:
|
| 32 |
+
pass
|
| 33 |
+
|
| 34 |
+
# Return only one method and its parameters
|
| 35 |
+
return {"method": method.upper(), "parameters": params}
|
| 36 |
+
|
| 37 |
+
return {"error": "No method found for endpoint"}
|
| 38 |
+
|
| 39 |
def generate_api_knowledge(base_url: str):
|
| 40 |
"""
|
| 41 |
Fetches FastAPI OpenAPI docs and summarizes endpoints, methods, parameters, and descriptions.
|
|
|
|
| 75 |
"endpoint": endpoint,
|
| 76 |
"method": method.upper(),
|
| 77 |
"parameters": params,
|
| 78 |
+
# "description": description
|
| 79 |
})
|
| 80 |
|
| 81 |
return api_knowledge
|
|
|
|
| 119 |
pattern = r"\b" + re.escape(name) + r"\b"
|
| 120 |
processed = re.sub(pattern, expanded[name], processed, flags=re.IGNORECASE)
|
| 121 |
|
| 122 |
+
return processed
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
|
src/genai/brainstroming_agent/utils/utils.py
CHANGED
|
@@ -10,12 +10,14 @@ from .prompts import story_to_prompt , final_story_prompt
|
|
| 10 |
import os
|
| 11 |
from langgraph.prebuilt import create_react_agent
|
| 12 |
from src.genai.utils.models_loader import llm_gpt, image_generation_model
|
|
|
|
| 13 |
|
| 14 |
class FinalStoryGenenrator:
|
| 15 |
def __init__(self):
|
| 16 |
self.llm = llm_gpt
|
| 17 |
self.agent = create_react_agent(model=llm_gpt,tools=[])
|
| 18 |
-
|
|
|
|
| 19 |
def generate_final_story(self,final_state):
|
| 20 |
if 'preferred_topics' in final_state:
|
| 21 |
if len(final_state['preferred_topics'])>0:
|
|
@@ -53,6 +55,7 @@ class ImageGenerator:
|
|
| 53 |
prompt = self.llm.invoke(messages)
|
| 54 |
return prompt.content
|
| 55 |
|
|
|
|
| 56 |
def generate_image(self,final_story, business_details, refined_ideation):
|
| 57 |
prompt = self.generate_prompt(final_story, business_details, refined_ideation)
|
| 58 |
client = InferenceClient(provider="hf-inference",api_key=os.environ.get('HUGGINGFACEHUB_ACCESS_TOKEN'))
|
|
|
|
| 10 |
import os
|
| 11 |
from langgraph.prebuilt import create_react_agent
|
| 12 |
from src.genai.utils.models_loader import llm_gpt, image_generation_model
|
| 13 |
+
from langsmith import traceable
|
| 14 |
|
| 15 |
class FinalStoryGenenrator:
|
| 16 |
def __init__(self):
|
| 17 |
self.llm = llm_gpt
|
| 18 |
self.agent = create_react_agent(model=llm_gpt,tools=[])
|
| 19 |
+
|
| 20 |
+
@traceable(name="final-story")
|
| 21 |
def generate_final_story(self,final_state):
|
| 22 |
if 'preferred_topics' in final_state:
|
| 23 |
if len(final_state['preferred_topics'])>0:
|
|
|
|
| 55 |
prompt = self.llm.invoke(messages)
|
| 56 |
return prompt.content
|
| 57 |
|
| 58 |
+
@traceable(name="image-generation")
|
| 59 |
def generate_image(self,final_story, business_details, refined_ideation):
|
| 60 |
prompt = self.generate_prompt(final_story, business_details, refined_ideation)
|
| 61 |
client = InferenceClient(provider="hf-inference",api_key=os.environ.get('HUGGINGFACEHUB_ACCESS_TOKEN'))
|
src/genai/context_analysis_agent/agent.py
CHANGED
|
@@ -2,6 +2,7 @@ from langgraph.graph import StateGraph, START, END
|
|
| 2 |
from langgraph.checkpoint.memory import MemorySaver
|
| 3 |
from .utils.state import State
|
| 4 |
from .utils.nodes import IntroductionNode
|
|
|
|
| 5 |
|
| 6 |
|
| 7 |
class ContextAnalysisAgent:
|
|
|
|
| 2 |
from langgraph.checkpoint.memory import MemorySaver
|
| 3 |
from .utils.state import State
|
| 4 |
from .utils.nodes import IntroductionNode
|
| 5 |
+
import os
|
| 6 |
|
| 7 |
|
| 8 |
class ContextAnalysisAgent:
|
src/genai/context_analysis_agent/utils/nodes.py
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
|
|
| 1 |
from langchain_core.messages import SystemMessage
|
| 2 |
from src.genai.utils.models_loader import llm_gpt
|
| 3 |
from .prompts import introduction_prompt
|
| 4 |
from .state import ConversationFormatter, State
|
|
|
|
| 5 |
|
| 6 |
|
| 7 |
class IntroductionNode:
|
| 8 |
def __init__(self):
|
| 9 |
self.llm = llm_gpt
|
| 10 |
-
|
|
|
|
| 11 |
def run(self, state:State):
|
| 12 |
template = introduction_prompt
|
| 13 |
messages = [SystemMessage(content=template)] + state["messages"]
|
|
|
|
| 1 |
+
import os
|
| 2 |
from langchain_core.messages import SystemMessage
|
| 3 |
from src.genai.utils.models_loader import llm_gpt
|
| 4 |
from .prompts import introduction_prompt
|
| 5 |
from .state import ConversationFormatter, State
|
| 6 |
+
from langsmith import traceable
|
| 7 |
|
| 8 |
|
| 9 |
class IntroductionNode:
|
| 10 |
def __init__(self):
|
| 11 |
self.llm = llm_gpt
|
| 12 |
+
|
| 13 |
+
@traceable(name="details collection")
|
| 14 |
def run(self, state:State):
|
| 15 |
template = introduction_prompt
|
| 16 |
messages = [SystemMessage(content=template)] + state["messages"]
|
src/genai/context_analysis_agent/utils/utils.py
CHANGED
|
@@ -4,12 +4,14 @@ from src.genai.utils.models_loader import llm_gpt
|
|
| 4 |
from .prompts import details_extract_prompt
|
| 5 |
from langchain_core.messages import SystemMessage, HumanMessage
|
| 6 |
from .state import DetailsFormatter
|
|
|
|
| 7 |
|
| 8 |
class DetailsExtractorNode:
|
| 9 |
def __init__(self, interactions):
|
| 10 |
self.llm = llm_gpt
|
| 11 |
self.interactions = interactions
|
| 12 |
-
|
|
|
|
| 13 |
def run(self):
|
| 14 |
template = details_extract_prompt()
|
| 15 |
messages = [SystemMessage(content=template), HumanMessage(content=str(self.interactions))]
|
|
|
|
| 4 |
from .prompts import details_extract_prompt
|
| 5 |
from langchain_core.messages import SystemMessage, HumanMessage
|
| 6 |
from .state import DetailsFormatter
|
| 7 |
+
from langsmith import traceable
|
| 8 |
|
| 9 |
class DetailsExtractorNode:
|
| 10 |
def __init__(self, interactions):
|
| 11 |
self.llm = llm_gpt
|
| 12 |
self.interactions = interactions
|
| 13 |
+
|
| 14 |
+
@traceable(name="details extraction")
|
| 15 |
def run(self):
|
| 16 |
template = details_extract_prompt()
|
| 17 |
messages = [SystemMessage(content=template), HumanMessage(content=str(self.interactions))]
|
src/genai/ideation_agent/agent.py
CHANGED
|
@@ -2,6 +2,8 @@ from langgraph.graph import StateGraph, START, END , MessagesState
|
|
| 2 |
from .utils.state import State
|
| 3 |
from .utils.nodes import RetrieverNode, IdeatorNode , ModeratorNode ,NormalizerNode, ValidatorNode , RoutingAfterValidation, JudgeNode1 , JudgeNode2, Aggregrator, SimplifierNode
|
| 4 |
from langgraph.checkpoint.memory import MemorySaver
|
|
|
|
|
|
|
| 5 |
|
| 6 |
class IdeationAgent:
|
| 7 |
def __init__(self):
|
|
|
|
| 2 |
from .utils.state import State
|
| 3 |
from .utils.nodes import RetrieverNode, IdeatorNode , ModeratorNode ,NormalizerNode, ValidatorNode , RoutingAfterValidation, JudgeNode1 , JudgeNode2, Aggregrator, SimplifierNode
|
| 4 |
from langgraph.checkpoint.memory import MemorySaver
|
| 5 |
+
import os
|
| 6 |
+
|
| 7 |
|
| 8 |
class IdeationAgent:
|
| 9 |
def __init__(self):
|
src/genai/ideation_agent/utils/nodes.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
|
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
from .state import State , ValidationFormatter , CriticResponseFormatter
|
| 3 |
from .tools import Retrieval
|
|
@@ -8,6 +10,7 @@ from .prompts import ideator_prompt ,critic_prompt, moderator_prompt , validator
|
|
| 8 |
from .schemas import ideation_json_schema , judge_response_json_schema
|
| 9 |
|
| 10 |
|
|
|
|
| 11 |
class RetrieverNode:
|
| 12 |
def __init__(self):
|
| 13 |
pass
|
|
|
|
| 1 |
+
|
| 2 |
+
import os
|
| 3 |
import pandas as pd
|
| 4 |
from .state import State , ValidationFormatter , CriticResponseFormatter
|
| 5 |
from .tools import Retrieval
|
|
|
|
| 10 |
from .schemas import ideation_json_schema , judge_response_json_schema
|
| 11 |
|
| 12 |
|
| 13 |
+
|
| 14 |
class RetrieverNode:
|
| 15 |
def __init__(self):
|
| 16 |
pass
|
src/genai/orchestration_agent/utils/utils.py
CHANGED
|
@@ -7,6 +7,7 @@ from .prompts import captioning_prompt
|
|
| 7 |
from langchain_core.messages import FunctionMessage , AIMessage
|
| 8 |
from .tools import InfluencerRetrievalTool
|
| 9 |
import re
|
|
|
|
| 10 |
|
| 11 |
class ImageCaptioner:
|
| 12 |
def __init__(self, api_key=os.environ.get('GROQ_API_KEY')):
|
|
@@ -43,6 +44,7 @@ class AnalyticsViewer:
|
|
| 43 |
def __init__(self, business_details):
|
| 44 |
self.business_details = business_details
|
| 45 |
|
|
|
|
| 46 |
def show_analytics(self):
|
| 47 |
tool_response = InfluencerRetrievalTool().retrieve_for_analytics(str(self.business_details))
|
| 48 |
return tool_response
|
|
|
|
| 7 |
from langchain_core.messages import FunctionMessage , AIMessage
|
| 8 |
from .tools import InfluencerRetrievalTool
|
| 9 |
import re
|
| 10 |
+
from langsmith import traceable
|
| 11 |
|
| 12 |
class ImageCaptioner:
|
| 13 |
def __init__(self, api_key=os.environ.get('GROQ_API_KEY')):
|
|
|
|
| 44 |
def __init__(self, business_details):
|
| 45 |
self.business_details = business_details
|
| 46 |
|
| 47 |
+
@traceable(name="influencer_analytics")
|
| 48 |
def show_analytics(self):
|
| 49 |
tool_response = InfluencerRetrievalTool().retrieve_for_analytics(str(self.business_details))
|
| 50 |
return tool_response
|
src/genai/utils/data_loader.py
CHANGED
|
@@ -12,6 +12,7 @@ class DataLoader:
|
|
| 12 |
def __init__(self):
|
| 13 |
self.caption_dataset = load_dataset("DvorakInnovationAI/rt-genai-dataset-v1", revision="openai-embeddings")
|
| 14 |
self.ideas_dataset = load_dataset("DvorakInnovationAI/rt-genai-imdb-ideas-v1", revision='openai-embeddings')
|
|
|
|
| 15 |
|
| 16 |
def _load_vector_index(self , dataset):
|
| 17 |
df = dataset["train"].to_pandas()
|
|
@@ -27,6 +28,9 @@ class DataLoader:
|
|
| 27 |
|
| 28 |
def load_imdb_ideas(self):
|
| 29 |
return self._load_vector_index(self.ideas_dataset)
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
try:
|
| 32 |
data_loader = DataLoader()
|
|
@@ -39,6 +43,7 @@ except Exception as e:
|
|
| 39 |
try:
|
| 40 |
caption_df, caption_embeddings, caption_index = data_loader.load_caption()
|
| 41 |
ideas_df , ideas_embeddings , ideas_index = data_loader.load_imdb_ideas()
|
|
|
|
| 42 |
app_logger.info('Loaded the embeddings.')
|
| 43 |
|
| 44 |
except Exception as e:
|
|
|
|
| 12 |
def __init__(self):
|
| 13 |
self.caption_dataset = load_dataset("DvorakInnovationAI/rt-genai-dataset-v1", revision="openai-embeddings")
|
| 14 |
self.ideas_dataset = load_dataset("DvorakInnovationAI/rt-genai-imdb-ideas-v1", revision='openai-embeddings')
|
| 15 |
+
self.api_knowledge_dataset = load_dataset("subashdvorak/api-kb-analytics", revision="openai-embeddings")
|
| 16 |
|
| 17 |
def _load_vector_index(self , dataset):
|
| 18 |
df = dataset["train"].to_pandas()
|
|
|
|
| 28 |
|
| 29 |
def load_imdb_ideas(self):
|
| 30 |
return self._load_vector_index(self.ideas_dataset)
|
| 31 |
+
|
| 32 |
+
def load_api_knowledge(self):
|
| 33 |
+
return self._load_vector_index(self.api_knowledge_dataset)
|
| 34 |
|
| 35 |
try:
|
| 36 |
data_loader = DataLoader()
|
|
|
|
| 43 |
try:
|
| 44 |
caption_df, caption_embeddings, caption_index = data_loader.load_caption()
|
| 45 |
ideas_df , ideas_embeddings , ideas_index = data_loader.load_imdb_ideas()
|
| 46 |
+
api_knowledge_df , api_embeddings , api_index = data_loader.load_api_knowledge()
|
| 47 |
app_logger.info('Loaded the embeddings.')
|
| 48 |
|
| 49 |
except Exception as e:
|
src/genai/utils/ideas/ideas.csv
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
-
,Unnamed: 0.28,Unnamed: 0.27,Unnamed: 0.26,Unnamed: 0.25,Unnamed: 0.24,Unnamed: 0.23,Unnamed: 0.22,Unnamed: 0.21,Unnamed: 0.20,Unnamed: 0.19,Unnamed: 0.18,Unnamed: 0.17,Unnamed: 0.16,Unnamed: 0.15,Unnamed: 0.14,Unnamed: 0.13,Unnamed: 0.12,Unnamed: 0.11,Unnamed: 0.10,Unnamed: 0.9,Unnamed: 0.8,Unnamed: 0.7,Unnamed: 0.6,Unnamed: 0.5,Unnamed: 0.4,Unnamed: 0.3,Unnamed: 0.2,Unnamed: 0.1,Unnamed: 0,BusinessDetails,Ideas
|
| 2 |
-
0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","[
|
| 3 |
{
|
| 4 |
""title"": ""Room Reveal"",
|
| 5 |
""one_line_description"": ""Plain room, bold sofa, hidden storage pops out in seconds."",
|
|
@@ -57,7 +57,7 @@
|
|
| 57 |
""niche"": ""Families hosting guests in small apartments""
|
| 58 |
}
|
| 59 |
]"
|
| 60 |
-
1,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 61 |
[
|
| 62 |
{
|
| 63 |
""title"": ""Swap Old Furniture"",
|
|
@@ -117,7 +117,7 @@
|
|
| 117 |
}
|
| 118 |
]
|
| 119 |
```"
|
| 120 |
-
2,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 121 |
[
|
| 122 |
{
|
| 123 |
""title"": ""Furniture Makeover"",
|
|
@@ -177,7 +177,7 @@
|
|
| 177 |
}
|
| 178 |
]
|
| 179 |
```"
|
| 180 |
-
3,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 181 |
[
|
| 182 |
{
|
| 183 |
""title"": ""Furniture Flip Challenge"",
|
|
@@ -237,7 +237,7 @@
|
|
| 237 |
}
|
| 238 |
]
|
| 239 |
```"
|
| 240 |
-
4,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 241 |
[
|
| 242 |
{
|
| 243 |
""title"": ""Room Transformation"",
|
|
@@ -297,7 +297,7 @@
|
|
| 297 |
}
|
| 298 |
]
|
| 299 |
```"
|
| 300 |
-
5,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 301 |
[
|
| 302 |
{
|
| 303 |
""title"": ""Flip, Fold, Relax"",
|
|
@@ -357,7 +357,7 @@
|
|
| 357 |
}
|
| 358 |
]
|
| 359 |
```"
|
| 360 |
-
6,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 361 |
[
|
| 362 |
{
|
| 363 |
""title"": ""Room in a Minute"",
|
|
@@ -425,7 +425,7 @@
|
|
| 425 |
}
|
| 426 |
]
|
| 427 |
```"
|
| 428 |
-
7,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 429 |
[
|
| 430 |
{
|
| 431 |
""title"": ""Turn a Room into a Cozy Oasis"",
|
|
@@ -493,7 +493,7 @@
|
|
| 493 |
}
|
| 494 |
]
|
| 495 |
```"
|
| 496 |
-
8,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 497 |
[
|
| 498 |
{
|
| 499 |
""title"": ""Flip & Reveal"",
|
|
@@ -561,7 +561,7 @@
|
|
| 561 |
}
|
| 562 |
]
|
| 563 |
```"
|
| 564 |
-
9,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 565 |
[
|
| 566 |
{
|
| 567 |
""title"": ""Quick Room Makeover"",
|
|
@@ -629,7 +629,7 @@
|
|
| 629 |
}
|
| 630 |
]
|
| 631 |
```"
|
| 632 |
-
10,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,,,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","Here are the 8 unique, creative, and feasible TikTok and Instagram Reels video ideas for the furniture and home appliances store, simplified for easy understanding:
|
| 633 |
|
| 634 |
```json
|
| 635 |
[
|
|
@@ -699,7 +699,7 @@
|
|
| 699 |
}
|
| 700 |
]
|
| 701 |
```"
|
| 702 |
-
11,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 703 |
[
|
| 704 |
{
|
| 705 |
""title"": ""Gear Up Challenge"",
|
|
@@ -767,7 +767,7 @@
|
|
| 767 |
}
|
| 768 |
]
|
| 769 |
```"
|
| 770 |
-
12,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 771 |
[
|
| 772 |
{
|
| 773 |
""title"": ""Get Ready for Adventure"",
|
|
@@ -835,7 +835,7 @@
|
|
| 835 |
}
|
| 836 |
]
|
| 837 |
```"
|
| 838 |
-
13,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 839 |
[
|
| 840 |
{
|
| 841 |
""title"": ""Trek Test"",
|
|
@@ -903,7 +903,7 @@
|
|
| 903 |
}
|
| 904 |
]
|
| 905 |
```"
|
| 906 |
-
14,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 907 |
{
|
| 908 |
""title"": ""Gear Drop Test"",
|
| 909 |
""one_line_description"": ""Drop the backpack from a balcony onto grass and see it stay whole."",
|
|
@@ -969,7 +969,7 @@
|
|
| 969 |
""metaphor"": ""Pocket as a treasure chest.""
|
| 970 |
}
|
| 971 |
]"
|
| 972 |
-
15,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 973 |
{
|
| 974 |
""title"": ""Rain Test"",
|
| 975 |
""one_line_description"": ""Pour a bucket of water on a jacket and shoes, then reveal they stay dry."",
|
|
@@ -1035,7 +1035,7 @@
|
|
| 1035 |
""metaphor"": ""Shoe = a bridge that spans any terrain.""
|
| 1036 |
}
|
| 1037 |
]"
|
| 1038 |
-
16,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1039 |
{
|
| 1040 |
""title"": ""Drop Test"",
|
| 1041 |
""one_line_description"": ""A shoe is dropped onto a rocky edge and stays completely undamaged."",
|
|
@@ -1101,7 +1101,7 @@
|
|
| 1101 |
""metaphor"": ""Gear is an emoji toolbox → each piece shows its own meaning.""
|
| 1102 |
}
|
| 1103 |
]"
|
| 1104 |
-
17,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1105 |
[
|
| 1106 |
{
|
| 1107 |
""title"": ""Rain Test"",
|
|
@@ -1169,7 +1169,7 @@
|
|
| 1169 |
}
|
| 1170 |
]
|
| 1171 |
```"
|
| 1172 |
-
18,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1173 |
{
|
| 1174 |
""title"": ""Rainstorm Reveal"",
|
| 1175 |
""one_line_description"": ""Film a sudden rain burst on the jacket while a drone shows water beading and a hidden rainbow LED strip lighting up."",
|
|
@@ -1227,7 +1227,7 @@
|
|
| 1227 |
""niche"": ""Eco‑conscious hikers and Gen‑Z shoppers who love AR sustainability""
|
| 1228 |
}
|
| 1229 |
]"
|
| 1230 |
-
19,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1231 |
[
|
| 1232 |
{
|
| 1233 |
""title"": ""Wilderness Trek Test"",
|
|
@@ -1287,7 +1287,7 @@
|
|
| 1287 |
}
|
| 1288 |
]
|
| 1289 |
```"
|
| 1290 |
-
20,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1291 |
[
|
| 1292 |
{
|
| 1293 |
""title"": ""Rain-Flip Challenge"",
|
|
@@ -1347,7 +1347,7 @@
|
|
| 1347 |
}
|
| 1348 |
]
|
| 1349 |
```"
|
| 1350 |
-
21,21.0,21.0,21.0,21.0,21.0,21.0,21.0,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1351 |
[
|
| 1352 |
{
|
| 1353 |
""title"": ""Rain Magic Trick"",
|
|
@@ -1407,7 +1407,7 @@
|
|
| 1407 |
}
|
| 1408 |
]
|
| 1409 |
```"
|
| 1410 |
-
22,22.0,22.0,22.0,22.0,22.0,22.0,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1411 |
{
|
| 1412 |
""title"": ""Rain Test"",
|
| 1413 |
""one_line_description"": ""Drop a wet jacket on a rock while a hidden light strip glows, then watch the water drop off and the color change."",
|
|
@@ -1465,7 +1465,7 @@
|
|
| 1465 |
""niche"": ""Travelers who care about the environment, fashion, and reducing waste""
|
| 1466 |
}
|
| 1467 |
]"
|
| 1468 |
-
23,23.0,23.0,23.0,23.0,23.0,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1469 |
{
|
| 1470 |
""title"": ""Gravity Flip Challenge"",
|
| 1471 |
""one_line_description"": ""Attach a small parachute to a backpack, drop it from a drone while a popular sound plays, and show that it survives the fall."",
|
|
@@ -1523,7 +1523,7 @@
|
|
| 1523 |
""niche"": ""People who trek at high altitudes and like visual effects""
|
| 1524 |
}
|
| 1525 |
]"
|
| 1526 |
-
24,24.0,24.0,24.0,24.0,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1527 |
{
|
| 1528 |
""title"": ""Rain VR Flip"",
|
| 1529 |
""one_line_description"": ""Use a special phone filter to turn a sudden rainstorm into a game where we test how well the gear keeps water out in real time."",
|
|
@@ -1581,7 +1581,7 @@
|
|
| 1581 |
""niche"": ""Solo hikers, survival fans, and DIY enthusiasts""
|
| 1582 |
}
|
| 1583 |
]"
|
| 1584 |
-
25,25.0,25.0,25.0,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1585 |
{
|
| 1586 |
""title"": ""Elemental Gear Flip Challenge"",
|
| 1587 |
""one_line_description"": ""Flip a shoe, a tent pole, and a jacket while special effects of fire, water, and earth follow them, showing they can survive in any condition."",
|
|
@@ -1639,7 +1639,7 @@
|
|
| 1639 |
""niche"": ""People who love to travel in groups and take on challenges""
|
| 1640 |
}
|
| 1641 |
]"
|
| 1642 |
-
26,26.0,26.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1643 |
[
|
| 1644 |
{
|
| 1645 |
""title"": ""Storm Sync Challenge"",
|
|
@@ -1699,7 +1699,7 @@
|
|
| 1699 |
}
|
| 1700 |
]
|
| 1701 |
```"
|
| 1702 |
-
27,27.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1703 |
{
|
| 1704 |
""title"": ""Storm-Swap Challenge"",
|
| 1705 |
""one_line_description"": ""Swap a regular hoodie for our waterproof jacket in the middle of the rain using a TikTok transition, then watch the rain roll off like magic."",
|
|
@@ -1757,7 +1757,7 @@
|
|
| 1757 |
""niche"": ""Adventure video bloggers, solo travelers, and eco-travel influencers""
|
| 1758 |
}
|
| 1759 |
]"
|
| 1760 |
-
28,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","{
|
| 1761 |
""title"": ""Packing Challenge"",
|
| 1762 |
""one_line_description"": ""Quickly pack a backpack with hiking essentials in a fast video."",
|
| 1763 |
""hook"": ""See how to pack a backpack in just 10 seconds!"",
|
|
@@ -1813,3 +1813,184 @@
|
|
| 1813 |
""usp"": ""Showing the beauty of hiking with the right gear in stunning time-lapse."",
|
| 1814 |
""niche"": ""Nature lovers wanting immersive outdoor experiences.""
|
| 1815 |
}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
,Unnamed: 0.31,Unnamed: 0.30,Unnamed: 0.29,Unnamed: 0.28,Unnamed: 0.27,Unnamed: 0.26,Unnamed: 0.25,Unnamed: 0.24,Unnamed: 0.23,Unnamed: 0.22,Unnamed: 0.21,Unnamed: 0.20,Unnamed: 0.19,Unnamed: 0.18,Unnamed: 0.17,Unnamed: 0.16,Unnamed: 0.15,Unnamed: 0.14,Unnamed: 0.13,Unnamed: 0.12,Unnamed: 0.11,Unnamed: 0.10,Unnamed: 0.9,Unnamed: 0.8,Unnamed: 0.7,Unnamed: 0.6,Unnamed: 0.5,Unnamed: 0.4,Unnamed: 0.3,Unnamed: 0.2,Unnamed: 0.1,Unnamed: 0,BusinessDetails,Ideas
|
| 2 |
+
0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","[
|
| 3 |
{
|
| 4 |
""title"": ""Room Reveal"",
|
| 5 |
""one_line_description"": ""Plain room, bold sofa, hidden storage pops out in seconds."",
|
|
|
|
| 57 |
""niche"": ""Families hosting guests in small apartments""
|
| 58 |
}
|
| 59 |
]"
|
| 60 |
+
1,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 61 |
[
|
| 62 |
{
|
| 63 |
""title"": ""Swap Old Furniture"",
|
|
|
|
| 117 |
}
|
| 118 |
]
|
| 119 |
```"
|
| 120 |
+
2,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 121 |
[
|
| 122 |
{
|
| 123 |
""title"": ""Furniture Makeover"",
|
|
|
|
| 177 |
}
|
| 178 |
]
|
| 179 |
```"
|
| 180 |
+
3,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 181 |
[
|
| 182 |
{
|
| 183 |
""title"": ""Furniture Flip Challenge"",
|
|
|
|
| 237 |
}
|
| 238 |
]
|
| 239 |
```"
|
| 240 |
+
4,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 241 |
[
|
| 242 |
{
|
| 243 |
""title"": ""Room Transformation"",
|
|
|
|
| 297 |
}
|
| 298 |
]
|
| 299 |
```"
|
| 300 |
+
5,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 301 |
[
|
| 302 |
{
|
| 303 |
""title"": ""Flip, Fold, Relax"",
|
|
|
|
| 357 |
}
|
| 358 |
]
|
| 359 |
```"
|
| 360 |
+
6,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 361 |
[
|
| 362 |
{
|
| 363 |
""title"": ""Room in a Minute"",
|
|
|
|
| 425 |
}
|
| 426 |
]
|
| 427 |
```"
|
| 428 |
+
7,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 429 |
[
|
| 430 |
{
|
| 431 |
""title"": ""Turn a Room into a Cozy Oasis"",
|
|
|
|
| 493 |
}
|
| 494 |
]
|
| 495 |
```"
|
| 496 |
+
8,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 497 |
[
|
| 498 |
{
|
| 499 |
""title"": ""Flip & Reveal"",
|
|
|
|
| 561 |
}
|
| 562 |
]
|
| 563 |
```"
|
| 564 |
+
9,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","```json
|
| 565 |
[
|
| 566 |
{
|
| 567 |
""title"": ""Quick Room Makeover"",
|
|
|
|
| 629 |
}
|
| 630 |
]
|
| 631 |
```"
|
| 632 |
+
10,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,,,,,,,,,,,,"{'business_type': 'furniture and home appliances store', 'platform': 'Instagram, TikTok', 'target_audience': 'homeowners, renters, and interior enthusiasts (ages 25–50) who are looking to furnish or upgrade their living spaces.', 'business_goals': 'to build a trusted home furnishing brand, increase product sales, and attract attention with visually appealing and informative video content.', 'offerings': 'sofas, beds, dining tables, chairs, wardrobes, kitchen appliances, lighting solutions, and home décor items', 'Challenges_faced': 'standing out in a competitive home furnishing market, showcasing quality and style of products effectively, and creating engaging, practical marketing videos', 'device_used': 'only phone. (iPhone 11)', 'additional_details': 'My budget is limited. I want creative and feasible ideas that can be captured using only a mobile phone.'}","Here are the 8 unique, creative, and feasible TikTok and Instagram Reels video ideas for the furniture and home appliances store, simplified for easy understanding:
|
| 633 |
|
| 634 |
```json
|
| 635 |
[
|
|
|
|
| 699 |
}
|
| 700 |
]
|
| 701 |
```"
|
| 702 |
+
11,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 703 |
[
|
| 704 |
{
|
| 705 |
""title"": ""Gear Up Challenge"",
|
|
|
|
| 767 |
}
|
| 768 |
]
|
| 769 |
```"
|
| 770 |
+
12,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,12.0,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 771 |
[
|
| 772 |
{
|
| 773 |
""title"": ""Get Ready for Adventure"",
|
|
|
|
| 835 |
}
|
| 836 |
]
|
| 837 |
```"
|
| 838 |
+
13,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,13.0,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 839 |
[
|
| 840 |
{
|
| 841 |
""title"": ""Trek Test"",
|
|
|
|
| 903 |
}
|
| 904 |
]
|
| 905 |
```"
|
| 906 |
+
14,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,14.0,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 907 |
{
|
| 908 |
""title"": ""Gear Drop Test"",
|
| 909 |
""one_line_description"": ""Drop the backpack from a balcony onto grass and see it stay whole."",
|
|
|
|
| 969 |
""metaphor"": ""Pocket as a treasure chest.""
|
| 970 |
}
|
| 971 |
]"
|
| 972 |
+
15,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 973 |
{
|
| 974 |
""title"": ""Rain Test"",
|
| 975 |
""one_line_description"": ""Pour a bucket of water on a jacket and shoes, then reveal they stay dry."",
|
|
|
|
| 1035 |
""metaphor"": ""Shoe = a bridge that spans any terrain.""
|
| 1036 |
}
|
| 1037 |
]"
|
| 1038 |
+
16,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,16.0,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1039 |
{
|
| 1040 |
""title"": ""Drop Test"",
|
| 1041 |
""one_line_description"": ""A shoe is dropped onto a rocky edge and stays completely undamaged."",
|
|
|
|
| 1101 |
""metaphor"": ""Gear is an emoji toolbox → each piece shows its own meaning.""
|
| 1102 |
}
|
| 1103 |
]"
|
| 1104 |
+
17,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1105 |
[
|
| 1106 |
{
|
| 1107 |
""title"": ""Rain Test"",
|
|
|
|
| 1169 |
}
|
| 1170 |
]
|
| 1171 |
```"
|
| 1172 |
+
18,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,18.0,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1173 |
{
|
| 1174 |
""title"": ""Rainstorm Reveal"",
|
| 1175 |
""one_line_description"": ""Film a sudden rain burst on the jacket while a drone shows water beading and a hidden rainbow LED strip lighting up."",
|
|
|
|
| 1227 |
""niche"": ""Eco‑conscious hikers and Gen‑Z shoppers who love AR sustainability""
|
| 1228 |
}
|
| 1229 |
]"
|
| 1230 |
+
19,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,19.0,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1231 |
[
|
| 1232 |
{
|
| 1233 |
""title"": ""Wilderness Trek Test"",
|
|
|
|
| 1287 |
}
|
| 1288 |
]
|
| 1289 |
```"
|
| 1290 |
+
20,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1291 |
[
|
| 1292 |
{
|
| 1293 |
""title"": ""Rain-Flip Challenge"",
|
|
|
|
| 1347 |
}
|
| 1348 |
]
|
| 1349 |
```"
|
| 1350 |
+
21,21.0,21.0,21.0,21.0,21.0,21.0,21.0,21.0,21.0,21.0,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1351 |
[
|
| 1352 |
{
|
| 1353 |
""title"": ""Rain Magic Trick"",
|
|
|
|
| 1407 |
}
|
| 1408 |
]
|
| 1409 |
```"
|
| 1410 |
+
22,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1411 |
{
|
| 1412 |
""title"": ""Rain Test"",
|
| 1413 |
""one_line_description"": ""Drop a wet jacket on a rock while a hidden light strip glows, then watch the water drop off and the color change."",
|
|
|
|
| 1465 |
""niche"": ""Travelers who care about the environment, fashion, and reducing waste""
|
| 1466 |
}
|
| 1467 |
]"
|
| 1468 |
+
23,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1469 |
{
|
| 1470 |
""title"": ""Gravity Flip Challenge"",
|
| 1471 |
""one_line_description"": ""Attach a small parachute to a backpack, drop it from a drone while a popular sound plays, and show that it survives the fall."",
|
|
|
|
| 1523 |
""niche"": ""People who trek at high altitudes and like visual effects""
|
| 1524 |
}
|
| 1525 |
]"
|
| 1526 |
+
24,24.0,24.0,24.0,24.0,24.0,24.0,24.0,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1527 |
{
|
| 1528 |
""title"": ""Rain VR Flip"",
|
| 1529 |
""one_line_description"": ""Use a special phone filter to turn a sudden rainstorm into a game where we test how well the gear keeps water out in real time."",
|
|
|
|
| 1581 |
""niche"": ""Solo hikers, survival fans, and DIY enthusiasts""
|
| 1582 |
}
|
| 1583 |
]"
|
| 1584 |
+
25,25.0,25.0,25.0,25.0,25.0,25.0,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1585 |
{
|
| 1586 |
""title"": ""Elemental Gear Flip Challenge"",
|
| 1587 |
""one_line_description"": ""Flip a shoe, a tent pole, and a jacket while special effects of fire, water, and earth follow them, showing they can survive in any condition."",
|
|
|
|
| 1639 |
""niche"": ""People who love to travel in groups and take on challenges""
|
| 1640 |
}
|
| 1641 |
]"
|
| 1642 |
+
26,26.0,26.0,26.0,26.0,26.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1643 |
[
|
| 1644 |
{
|
| 1645 |
""title"": ""Storm Sync Challenge"",
|
|
|
|
| 1699 |
}
|
| 1700 |
]
|
| 1701 |
```"
|
| 1702 |
+
27,27.0,27.0,27.0,27.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","[
|
| 1703 |
{
|
| 1704 |
""title"": ""Storm-Swap Challenge"",
|
| 1705 |
""one_line_description"": ""Swap a regular hoodie for our waterproof jacket in the middle of the rain using a TikTok transition, then watch the rain roll off like magic."",
|
|
|
|
| 1757 |
""niche"": ""Adventure video bloggers, solo travelers, and eco-travel influencers""
|
| 1758 |
}
|
| 1759 |
]"
|
| 1760 |
+
28,28.0,28.0,28.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","{
|
| 1761 |
""title"": ""Packing Challenge"",
|
| 1762 |
""one_line_description"": ""Quickly pack a backpack with hiking essentials in a fast video."",
|
| 1763 |
""hook"": ""See how to pack a backpack in just 10 seconds!"",
|
|
|
|
| 1813 |
""usp"": ""Showing the beauty of hiking with the right gear in stunning time-lapse."",
|
| 1814 |
""niche"": ""Nature lovers wanting immersive outdoor experiences.""
|
| 1815 |
}"
|
| 1816 |
+
29,29.0,29.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","{
|
| 1817 |
+
""title"": ""Exciting Outdoor Video Ideas"",
|
| 1818 |
+
""one_line_description"": ""Refined video ideas for outdoor enthusiasts with a focus on gear and adventure transformations."",
|
| 1819 |
+
""hook"": ""Ideas to make fun and engaging videos for people who love outdoor activities and gear."",
|
| 1820 |
+
""usp"": ""Highlighting the best features of the brand's gear and how it enhances outdoor experiences."",
|
| 1821 |
+
""niche"": ""Targeting specific groups of outdoor enthusiasts who value quality, style, and functionality in their gear."",
|
| 1822 |
+
""ideas"": [
|
| 1823 |
+
{
|
| 1824 |
+
""title"": ""Gear Up Challenge"",
|
| 1825 |
+
""description"": ""Quickly pack a trekking kit in under a minute."",
|
| 1826 |
+
""hook"": ""Feel the excitement of getting ready for an adventure in just 30 seconds!"",
|
| 1827 |
+
""usp"": ""Showcasing the brand's efficient and high-quality gear."",
|
| 1828 |
+
""niche"": ""For adventure lovers who want fast and efficient gear setup.""
|
| 1829 |
+
},
|
| 1830 |
+
{
|
| 1831 |
+
""title"": ""Trail Transformation"",
|
| 1832 |
+
""description"": ""Change from city wear to trekking gear instantly."",
|
| 1833 |
+
""hook"": ""See a quick switch from city to outdoor explorer!"",
|
| 1834 |
+
""usp"": ""Highlighting the brand's versatile and stylish clothing."",
|
| 1835 |
+
""niche"": ""For trendy trekkers who seek functional and fashionable gear.""
|
| 1836 |
+
},
|
| 1837 |
+
{
|
| 1838 |
+
""title"": ""Shoe Swap Magic"",
|
| 1839 |
+
""description"": ""Watch shoes change color with each step on a trail."",
|
| 1840 |
+
""hook"": ""Experience color-changing shoes for every terrain!"",
|
| 1841 |
+
""usp"": ""Showcasing the brand's innovative and durable footwear."",
|
| 1842 |
+
""niche"": ""For shoe enthusiasts looking for reliable and creative trekking shoes.""
|
| 1843 |
+
},
|
| 1844 |
+
{
|
| 1845 |
+
""title"": ""Adventure Avatar"",
|
| 1846 |
+
""description"": ""Transform into a trekking avatar instantly."",
|
| 1847 |
+
""hook"": ""Go from ordinary to adventure-ready in a snap!"",
|
| 1848 |
+
""usp"": ""Enhancing outdoor experiences for enthusiasts."",
|
| 1849 |
+
""niche"": ""For travelers who want a quick and stylish outdoor change.""
|
| 1850 |
+
},
|
| 1851 |
+
{
|
| 1852 |
+
""title"": ""Tent Time-lapse"",
|
| 1853 |
+
""description"": ""Set up a tent in 15 seconds with a twist."",
|
| 1854 |
+
""hook"": ""Experience quick tent magic for easy camping adventures!"",
|
| 1855 |
+
""usp"": ""Showcasing easy-to-use and efficient camping gear."",
|
| 1856 |
+
""niche"": ""For campers seeking convenient and reliable tent solutions.""
|
| 1857 |
+
},
|
| 1858 |
+
{
|
| 1859 |
+
""title"": ""Backpack Blitz"",
|
| 1860 |
+
""description"": ""Unpack a backpack to reveal trekking essentials."",
|
| 1861 |
+
""hook"": ""Discover endless surprises in a backpack!"",
|
| 1862 |
+
""usp"": ""Highlighting a wide range of essential trekking gear."",
|
| 1863 |
+
""niche"": ""For adventure enthusiasts in need of reliable and well-equipped backpacks.""
|
| 1864 |
+
},
|
| 1865 |
+
{
|
| 1866 |
+
""title"": ""Mountain Mirror"",
|
| 1867 |
+
""description"": ""See a trekker's reflection in a mountain lake revealing gear."",
|
| 1868 |
+
""hook"": ""Explore gear through nature's reflection in the mountains!"",
|
| 1869 |
+
""usp"": ""Integrating the brand's products with the natural environment."",
|
| 1870 |
+
""niche"": ""For nature-loving trekkers who appreciate gear blending with the wilderness.""
|
| 1871 |
+
},
|
| 1872 |
+
{
|
| 1873 |
+
""title"": ""Epic Expedition Edit"",
|
| 1874 |
+
""description"": ""Create a montage of trekking adventures with gear changes."",
|
| 1875 |
+
""hook"": ""Watch gear evolve in thrilling trekking moments!"",
|
| 1876 |
+
""usp"": ""Showcasing gear durability and adaptability in real outdoor situations."",
|
| 1877 |
+
""niche"": ""For adventure enthusiasts needing gear that can handle tough terrains and challenges.""
|
| 1878 |
+
}
|
| 1879 |
+
]
|
| 1880 |
+
}"
|
| 1881 |
+
30,30.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","{
|
| 1882 |
+
""title"": ""Clothing Swap"",
|
| 1883 |
+
""one_line_description"": ""Change your outfit quickly for outdoor adventures."",
|
| 1884 |
+
""hook"": ""Have a fast and fun outfit change for your next trip."",
|
| 1885 |
+
""usp"": ""Easily switch between everyday clothes and outdoor gear."",
|
| 1886 |
+
""niche"": ""People who like fashion and the outdoors and want versatile clothing.""
|
| 1887 |
+
},
|
| 1888 |
+
{
|
| 1889 |
+
""title"": ""Time-lapse Trekking"",
|
| 1890 |
+
""one_line_description"": ""Watch a beautiful trekking journey from day to night in seconds."",
|
| 1891 |
+
""hook"": ""See a whole trek in a cool fast-forward video."",
|
| 1892 |
+
""usp"": ""Showing the beauty and endurance of the trek through fast video storytelling."",
|
| 1893 |
+
""niche"": ""People who love nature and adventures and are interested in fast videos.""
|
| 1894 |
+
},
|
| 1895 |
+
{
|
| 1896 |
+
""title"": ""Gear History"",
|
| 1897 |
+
""one_line_description"": ""Learn about the evolution of trekking gear over time."",
|
| 1898 |
+
""hook"": ""See how trekking essentials have changed from old to new."",
|
| 1899 |
+
""usp"": ""Showing how the brand's gear has improved over the years."",
|
| 1900 |
+
""niche"": ""History buffs and gear fans who like seeing how gear has progressed.""
|
| 1901 |
+
},
|
| 1902 |
+
{
|
| 1903 |
+
""title"": ""Outdoor Fashion Show"",
|
| 1904 |
+
""one_line_description"": ""Show off stylish outdoor gear for any adventure."",
|
| 1905 |
+
""hook"": ""Mix fancy fashion with tough outdoor clothes for a special show."",
|
| 1906 |
+
""usp"": ""Combining fashion and function in outdoor clothing."",
|
| 1907 |
+
""niche"": ""Fashionable adventurers who want trendy and practical outdoor clothes.""
|
| 1908 |
+
},
|
| 1909 |
+
{
|
| 1910 |
+
""title"": ""Gear Test"",
|
| 1911 |
+
""one_line_description"": ""Try out and review the latest trekking gear in real conditions."",
|
| 1912 |
+
""hook"": ""See real reactions to new gear's durability and features."",
|
| 1913 |
+
""usp"": ""Honest reviews from active trekkers testing gear outdoors."",
|
| 1914 |
+
""niche"": ""Outdoor gear fans and review lovers.""
|
| 1915 |
+
},
|
| 1916 |
+
{
|
| 1917 |
+
""title"": ""Adventure Makeover"",
|
| 1918 |
+
""one_line_description"": ""See the amazing change when gearing up for an adventure."",
|
| 1919 |
+
""hook"": ""Watch the visual impact of getting ready for a trip through gear."",
|
| 1920 |
+
""usp"": ""Highlighting the benefits of gearing up for outdoor fun."",
|
| 1921 |
+
""niche"": ""Fans of visual stories and transformations who like change.""
|
| 1922 |
+
},
|
| 1923 |
+
{
|
| 1924 |
+
""title"": ""Gear Tips"",
|
| 1925 |
+
""one_line_description"": ""Learn smart ways to use trekking gear beyond the trail."",
|
| 1926 |
+
""hook"": ""Find creative ways to use trekking gear in daily life."",
|
| 1927 |
+
""usp"": ""Offering unique tips for using gear in different ways."",
|
| 1928 |
+
""niche"": ""People who like DIY projects and outdoor gear innovation.""
|
| 1929 |
+
},
|
| 1930 |
+
{
|
| 1931 |
+
""title"": ""Trekking Must-Haves"",
|
| 1932 |
+
""one_line_description"": ""Get a quick guide to essential trekking gear in 15 seconds."",
|
| 1933 |
+
""hook"": ""See must-have gear for a smooth trekking experience in a flash."",
|
| 1934 |
+
""usp"": ""Making gear selection easy for beginners going on treks."",
|
| 1935 |
+
""niche"": ""Beginner trekkers looking for guidance on essential gear.""
|
| 1936 |
+
}"
|
| 1937 |
+
31,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'business_type': 'trekking clothes, shoes and equipment selling brand', 'platform': 'Instagram, TikTok', 'target_audience': 'adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.', 'business_goals': 'to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.', 'offerings': 'durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment', 'Challenges_faced': 'standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos', 'device_used': 'only phone. (Iphone 11)', 'additional_details': 'My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only.'}","```json
|
| 1938 |
+
[
|
| 1939 |
+
{
|
| 1940 |
+
""title"": ""Rain Proof"",
|
| 1941 |
+
""one_line_description"": ""Watch water roll off a trekking jacket in just a few seconds."",
|
| 1942 |
+
""hook"": ""Will it stay dry in a heavy rain? Let’s find out!"",
|
| 1943 |
+
""usp"": ""See the waterproof shell with quick-bead technology for dependable protection."",
|
| 1944 |
+
""niche"": ""Monsoon trekkers""
|
| 1945 |
+
},
|
| 1946 |
+
{
|
| 1947 |
+
""title"": ""Night Glow"",
|
| 1948 |
+
""one_line_description"": ""Reflective seams shine under streetlights, helping you see your way."",
|
| 1949 |
+
""hook"": ""Watch your path light up without any batteries—how cool is that?"",
|
| 1950 |
+
""usp"": ""Stay safe with highly reflective gear made for night trekkers."",
|
| 1951 |
+
""niche"": ""Night hikers and early-morning climbers""
|
| 1952 |
+
},
|
| 1953 |
+
{
|
| 1954 |
+
""title"": ""Pack Five"",
|
| 1955 |
+
""one_line_description"": ""A 20L backpack holds a full day’s gear in seconds—check out the pocket reveal trick."",
|
| 1956 |
+
""hook"": ""5 essentials in one bag—watch how it all fits!"",
|
| 1957 |
+
""usp"": ""Find smart pockets and a flexible design for very light trips."",
|
| 1958 |
+
""niche"": ""Lightweight trekkers and weekend warriors""
|
| 1959 |
+
},
|
| 1960 |
+
{
|
| 1961 |
+
""title"": ""Grippy Step"",
|
| 1962 |
+
""one_line_description"": ""Soles made to grip wet rocks and mud—no slipping here."",
|
| 1963 |
+
""hook"": ""Grip you can trust on every trail—let’s test it out!"",
|
| 1964 |
+
""usp"": ""Experience trail-tested outsoles with great grip."",
|
| 1965 |
+
""niche"": ""Rocky terrain hikers and beginners in scrambling""
|
| 1966 |
+
},
|
| 1967 |
+
{
|
| 1968 |
+
""title"": ""Layer Flip"",
|
| 1969 |
+
""one_line_description"": ""One jacket, three styles: sleeves zip off for warmth, wind protection, and light use."",
|
| 1970 |
+
""hook"": ""Three weather types, one jacket—let’s see how it works!"",
|
| 1971 |
+
""usp"": ""Enjoy a flexible layering system for sudden weather changes."",
|
| 1972 |
+
""niche"": ""Seasonal trekkers and travelers""
|
| 1973 |
+
},
|
| 1974 |
+
{
|
| 1975 |
+
""title"": ""Tent Sprint"",
|
| 1976 |
+
""one_line_description"": ""Turn your bag into a shelter in under a minute with just one shake."",
|
| 1977 |
+
""hook"": ""60 seconds to a cozy shelter—can it really be that fast?"",
|
| 1978 |
+
""usp"": ""Experience quick-setup tents perfect for one person or small groups."",
|
| 1979 |
+
""niche"": ""Budget campers and solo trekkers""
|
| 1980 |
+
},
|
| 1981 |
+
{
|
| 1982 |
+
""title"": ""Value Beast"",
|
| 1983 |
+
""one_line_description"": ""We test price vs performance on a tough trail—wait until you see the results."",
|
| 1984 |
+
""hook"": ""Big value, serious gear—can it really do better than its price?"",
|
| 1985 |
+
""usp"": ""Find high-value gear that goes beyond expectations."",
|
| 1986 |
+
""niche"": ""Budget-conscious hikers""
|
| 1987 |
+
},
|
| 1988 |
+
{
|
| 1989 |
+
""title"": ""Nepal Trails"",
|
| 1990 |
+
""one_line_description"": ""Real trekkers share their stories on famous Nepali trails in short clips."",
|
| 1991 |
+
""hook"": ""Locals and travelers trust this gear on Himalaya trails—let’s hear their stories!"",
|
| 1992 |
+
""usp"": ""Nepal-tested, guide-approved gear for tough trails."",
|
| 1993 |
+
""niche"": ""Nepalese trekkers and international Himalayan hikers""
|
| 1994 |
+
}
|
| 1995 |
+
]
|
| 1996 |
+
```"
|
src/genai/utils/models_loader.py
CHANGED
|
@@ -20,23 +20,23 @@ llm_gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
|
|
| 20 |
llm_groq_openai = ChatGroq(model="openai/gpt-oss-120b",temperature=0.7)
|
| 21 |
llm_groq = ChatGroq(model="llama-3.3-70b-versatile",temperature=0)
|
| 22 |
|
| 23 |
-
llm_gpt_small = ChatOpenAI(model="gpt-
|
| 24 |
-
llm_gpt = ChatOpenAI(model="gpt-
|
| 25 |
-
llm_gpt_high = ChatOpenAI(model="gpt-
|
| 26 |
encoding_model = tiktoken.encoding_for_model('gpt-4o-mini')
|
| 27 |
|
| 28 |
|
| 29 |
captioning_model = "meta-llama/llama-4-scout-17b-16e-instruct"
|
| 30 |
image_generation_model = "black-forest-labs/FLUX.1-schnell"
|
| 31 |
|
| 32 |
-
ideator_llm =
|
| 33 |
-
moderator_llm =
|
| 34 |
-
critic_llm =
|
| 35 |
-
simplifier_llm =
|
| 36 |
-
normalizer_llm =
|
| 37 |
validator_llm = llm_gpt_small
|
| 38 |
-
judge1_llm =
|
| 39 |
-
judge2_llm =
|
| 40 |
|
| 41 |
|
| 42 |
|
|
|
|
| 20 |
llm_groq_openai = ChatGroq(model="openai/gpt-oss-120b",temperature=0.7)
|
| 21 |
llm_groq = ChatGroq(model="llama-3.3-70b-versatile",temperature=0)
|
| 22 |
|
| 23 |
+
llm_gpt_small = ChatOpenAI(model="gpt-3.5-turbo",temperature=0.3)
|
| 24 |
+
llm_gpt = ChatOpenAI(model="gpt-3.5-turbo",temperature=0.3)
|
| 25 |
+
llm_gpt_high = ChatOpenAI(model="gpt-5-nano",temperature=0.5)
|
| 26 |
encoding_model = tiktoken.encoding_for_model('gpt-4o-mini')
|
| 27 |
|
| 28 |
|
| 29 |
captioning_model = "meta-llama/llama-4-scout-17b-16e-instruct"
|
| 30 |
image_generation_model = "black-forest-labs/FLUX.1-schnell"
|
| 31 |
|
| 32 |
+
ideator_llm = llm_gpt_high
|
| 33 |
+
moderator_llm = llm_gpt
|
| 34 |
+
critic_llm = llm_gpt
|
| 35 |
+
simplifier_llm = llm_gpt
|
| 36 |
+
normalizer_llm = llm_gpt
|
| 37 |
validator_llm = llm_gpt_small
|
| 38 |
+
judge1_llm = llm_gpt
|
| 39 |
+
judge2_llm = llm_gpt
|
| 40 |
|
| 41 |
|
| 42 |
|