Spaces:
Runtime error
Runtime error
ICAS03 commited on
Commit ·
0872dd8
1
Parent(s): af6f39f
- fix step 2
Browse files- fix calculate mandays
- Project.py +80 -59
- common_functions_v4.py +24 -25
- event_handler.py +26 -10
- prompt_configs.py +565 -642
- sample_permutations.py +3 -0
Project.py
CHANGED
|
@@ -519,12 +519,6 @@ class Project:
|
|
| 519 |
yield f"Error in {function_name}: {str(e)}", results
|
| 520 |
continue
|
| 521 |
|
| 522 |
-
# Add the revised_mvp_estimates to the results
|
| 523 |
-
results.append({
|
| 524 |
-
"function_name": "revised_mandays_estimates",
|
| 525 |
-
"result": revised_mvp_estimates
|
| 526 |
-
})
|
| 527 |
-
|
| 528 |
yield "Components analysis completed!", results
|
| 529 |
|
| 530 |
except Exception as e:
|
|
@@ -569,7 +563,7 @@ class Project:
|
|
| 569 |
input_vars = {}
|
| 570 |
prompt_config = PROMPTS[function_name]
|
| 571 |
for input_name in prompt_config.inputs:
|
| 572 |
-
for prev_result in state.generation_results.get('
|
| 573 |
if prev_result['function_name'] == input_name:
|
| 574 |
ui_config = PROMPTS[input_name].ui
|
| 575 |
dataframe_output_key = next(
|
|
@@ -594,46 +588,45 @@ class Project:
|
|
| 594 |
|
| 595 |
yield f"Successfully completed {function_name}", results
|
| 596 |
|
| 597 |
-
|
| 598 |
except Exception as e:
|
| 599 |
print(f"Error executing {function_name}: {str(e)}")
|
| 600 |
yield f"Error in {function_name}: {str(e)}", results
|
| 601 |
continue
|
| 602 |
|
| 603 |
-
yield "MVP Mandays
|
| 604 |
|
| 605 |
except Exception as e:
|
| 606 |
-
print(f"Error in
|
| 607 |
-
yield f"Error in
|
| 608 |
|
| 609 |
def generate_mvp_mandays(self, progress=gr.Progress()):
|
| 610 |
"""Generate MVP Mandays"""
|
| 611 |
results = []
|
| 612 |
|
| 613 |
-
yield "Generating MVP Mandays...", results
|
| 614 |
|
| 615 |
try:
|
| 616 |
if not hasattr(self, 'config'):
|
| 617 |
-
yield "Configuration not found.", []
|
| 618 |
return
|
| 619 |
|
| 620 |
config = self.config
|
| 621 |
configuration_type = config[0]["configuration_type"]
|
| 622 |
|
| 623 |
-
yield f"Configuration type detected: {configuration_type}", []
|
| 624 |
|
| 625 |
# Map configuration type to enum
|
| 626 |
try:
|
| 627 |
config_enum = ConfigurationType(configuration_type)
|
| 628 |
except ValueError:
|
| 629 |
-
yield f"Unsupported configuration type: {configuration_type}", []
|
| 630 |
return
|
| 631 |
|
| 632 |
# Get functions to execute based on configuration type
|
| 633 |
functions_to_execute = GENERATE_MVP_MANDAYS_FUNCTIONS.get(config_enum, [])
|
| 634 |
|
| 635 |
if not functions_to_execute:
|
| 636 |
-
yield f"No functions defined for configuration type: {configuration_type}", []
|
| 637 |
return
|
| 638 |
|
| 639 |
for function_name in functions_to_execute:
|
|
@@ -643,42 +636,48 @@ class Project:
|
|
| 643 |
# Get the required input variables from the previous generation results
|
| 644 |
input_vars = {}
|
| 645 |
prompt_config = PROMPTS[function_name]
|
|
|
|
| 646 |
for input_name in prompt_config.inputs:
|
| 647 |
-
|
| 648 |
-
|
| 649 |
-
|
| 650 |
-
|
| 651 |
-
|
| 652 |
-
|
| 653 |
-
|
| 654 |
-
|
| 655 |
-
|
| 656 |
-
|
| 657 |
-
|
| 658 |
-
|
| 659 |
|
| 660 |
# Execute the prompt with gathered input variables
|
| 661 |
result = self.execute_prompt(function_name, input_vars)
|
| 662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 663 |
# Process CSV sections
|
| 664 |
sections = result.split("---SECTION BREAK---")
|
| 665 |
processed_result = {}
|
| 666 |
|
| 667 |
if len(sections) >= 2:
|
| 668 |
plan_test_csv = StringIO(sections[0].strip())
|
| 669 |
-
plan_test_df = pd.read_csv(plan_test_csv)
|
| 670 |
-
processed_result['mvp_plan_test_dataframe'] = plan_test_df
|
| 671 |
|
| 672 |
-
# Process Development Components
|
| 673 |
dev_csv = StringIO(sections[1].strip())
|
| 674 |
-
dev_df = pd.read_csv(dev_csv)
|
| 675 |
-
processed_result['mvp_dev_dataframe'] = dev_df
|
| 676 |
|
| 677 |
if len(sections) >= 3 and 'generate_engage_MVP_mandays' in function_name:
|
| 678 |
# Process MVP Intents for Engage projects
|
| 679 |
intents_csv = StringIO(sections[2].strip())
|
| 680 |
-
intents_df = pd.read_csv(intents_csv)
|
| 681 |
-
processed_result['mvp_intents_dataframe'] = intents_df
|
| 682 |
|
| 683 |
# Format and store results
|
| 684 |
formatted_result = {
|
|
@@ -687,28 +686,32 @@ class Project:
|
|
| 687 |
}
|
| 688 |
results.append(formatted_result)
|
| 689 |
|
| 690 |
-
yield f"Successfully completed {function_name}", results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 691 |
|
| 692 |
except Exception as e:
|
| 693 |
print(f"Error executing {function_name}: {str(e)}")
|
| 694 |
-
yield f"Error in {function_name}: {str(e)}", results
|
| 695 |
continue
|
| 696 |
-
|
| 697 |
-
|
| 698 |
-
total_mvp_mandays, total_mvp_cost, estimated_mvp_months = calculate_mvp_mandays_and_costs(results)
|
| 699 |
-
mvp_cost_summary = f"""Original Estimate:
|
| 700 |
-
Total Mandays: {total_mvp_mandays:.2f}
|
| 701 |
-
Total Cost: ${total_mvp_cost:,.2f}
|
| 702 |
-
({estimated_mvp_months:.2f} months)"""
|
| 703 |
-
|
| 704 |
-
combined_cost_summary = f"""{self.general_cost_summary}
|
| 705 |
-
{mvp_cost_summary}"""
|
| 706 |
-
|
| 707 |
-
yield "MVP Mandays generation completed!", results , combined_cost_summary
|
| 708 |
|
| 709 |
except Exception as e:
|
| 710 |
print(f"Error in generating MVP mandays: {str(e)}")
|
| 711 |
-
yield f"Error in generating MVP mandays: {str(e)}", []
|
| 712 |
|
| 713 |
## Generate Final Documentation ##
|
| 714 |
def generate_final_documentation(self, progress=gr.Progress()):
|
|
@@ -717,7 +720,7 @@ class Project:
|
|
| 717 |
|
| 718 |
try:
|
| 719 |
if not hasattr(self, 'config'):
|
| 720 |
-
yield "Configuration not found.
|
| 721 |
return
|
| 722 |
|
| 723 |
config = self.config
|
|
@@ -746,16 +749,34 @@ class Project:
|
|
| 746 |
# Get the required input variables from the previous generation results
|
| 747 |
input_vars = {}
|
| 748 |
prompt_config = PROMPTS[function_name]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 749 |
for input_name in prompt_config.inputs:
|
| 750 |
-
for prev_result in state.generation_results.get('
|
| 751 |
if prev_result['function_name'] == input_name:
|
| 752 |
ui_config = PROMPTS[input_name].ui
|
| 753 |
-
|
| 754 |
-
(key for key in ui_config if key.endswith('
|
| 755 |
None
|
| 756 |
)
|
| 757 |
-
if
|
| 758 |
-
input_vars[input_name] = prev_result['result'][
|
| 759 |
else:
|
| 760 |
input_vars[input_name] = prev_result['result']
|
| 761 |
break
|
|
@@ -778,11 +799,11 @@ class Project:
|
|
| 778 |
yield f"Error in {function_name}: {str(e)}", results
|
| 779 |
continue
|
| 780 |
|
| 781 |
-
yield "
|
| 782 |
|
| 783 |
except Exception as e:
|
| 784 |
-
print(f"Error in generating
|
| 785 |
-
yield f"Error in generating
|
| 786 |
|
| 787 |
|
| 788 |
|
|
|
|
| 519 |
yield f"Error in {function_name}: {str(e)}", results
|
| 520 |
continue
|
| 521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 522 |
yield "Components analysis completed!", results
|
| 523 |
|
| 524 |
except Exception as e:
|
|
|
|
| 563 |
input_vars = {}
|
| 564 |
prompt_config = PROMPTS[function_name]
|
| 565 |
for input_name in prompt_config.inputs:
|
| 566 |
+
for prev_result in state.generation_results.get('step_2_b', [])[-1]:
|
| 567 |
if prev_result['function_name'] == input_name:
|
| 568 |
ui_config = PROMPTS[input_name].ui
|
| 569 |
dataframe_output_key = next(
|
|
|
|
| 588 |
|
| 589 |
yield f"Successfully completed {function_name}", results
|
| 590 |
|
|
|
|
| 591 |
except Exception as e:
|
| 592 |
print(f"Error executing {function_name}: {str(e)}")
|
| 593 |
yield f"Error in {function_name}: {str(e)}", results
|
| 594 |
continue
|
| 595 |
|
| 596 |
+
yield "MVP Mandays recalculation completed!", results
|
| 597 |
|
| 598 |
except Exception as e:
|
| 599 |
+
print(f"Error in recalculating MVP mandays: {str(e)}")
|
| 600 |
+
yield f"Error in recalculating MVP mandays: {str(e)}", []
|
| 601 |
|
| 602 |
def generate_mvp_mandays(self, progress=gr.Progress()):
|
| 603 |
"""Generate MVP Mandays"""
|
| 604 |
results = []
|
| 605 |
|
| 606 |
+
yield "Generating MVP Mandays...", results, None
|
| 607 |
|
| 608 |
try:
|
| 609 |
if not hasattr(self, 'config'):
|
| 610 |
+
yield "Configuration not found.", [], None
|
| 611 |
return
|
| 612 |
|
| 613 |
config = self.config
|
| 614 |
configuration_type = config[0]["configuration_type"]
|
| 615 |
|
| 616 |
+
yield f"Configuration type detected: {configuration_type}", [], None
|
| 617 |
|
| 618 |
# Map configuration type to enum
|
| 619 |
try:
|
| 620 |
config_enum = ConfigurationType(configuration_type)
|
| 621 |
except ValueError:
|
| 622 |
+
yield f"Unsupported configuration type: {configuration_type}", [], None
|
| 623 |
return
|
| 624 |
|
| 625 |
# Get functions to execute based on configuration type
|
| 626 |
functions_to_execute = GENERATE_MVP_MANDAYS_FUNCTIONS.get(config_enum, [])
|
| 627 |
|
| 628 |
if not functions_to_execute:
|
| 629 |
+
yield f"No functions defined for configuration type: {configuration_type}", [], None
|
| 630 |
return
|
| 631 |
|
| 632 |
for function_name in functions_to_execute:
|
|
|
|
| 636 |
# Get the required input variables from the previous generation results
|
| 637 |
input_vars = {}
|
| 638 |
prompt_config = PROMPTS[function_name]
|
| 639 |
+
|
| 640 |
for input_name in prompt_config.inputs:
|
| 641 |
+
for prev_result in state.generation_results.get('step_2_c', [])[-1]:
|
| 642 |
+
if prev_result['function_name'] == input_name:
|
| 643 |
+
ui_config = PROMPTS[input_name].ui
|
| 644 |
+
text_output_key = next(
|
| 645 |
+
(key for key in ui_config if key.endswith('_text')),
|
| 646 |
+
None
|
| 647 |
+
)
|
| 648 |
+
if text_output_key:
|
| 649 |
+
input_vars[input_name] = prev_result['result'][text_output_key]
|
| 650 |
+
else:
|
| 651 |
+
input_vars[input_name] = prev_result['result']
|
| 652 |
+
break
|
| 653 |
|
| 654 |
# Execute the prompt with gathered input variables
|
| 655 |
result = self.execute_prompt(function_name, input_vars)
|
| 656 |
|
| 657 |
+
# Clean up the result by removing CSV markers and any other formatting
|
| 658 |
+
result = (result.replace("```csv", "")
|
| 659 |
+
.replace("```", "")
|
| 660 |
+
.strip())
|
| 661 |
+
|
| 662 |
# Process CSV sections
|
| 663 |
sections = result.split("---SECTION BREAK---")
|
| 664 |
processed_result = {}
|
| 665 |
|
| 666 |
if len(sections) >= 2:
|
| 667 |
plan_test_csv = StringIO(sections[0].strip())
|
| 668 |
+
plan_test_df = pd.read_csv(plan_test_csv, keep_default_na=False)
|
| 669 |
+
processed_result['mvp_plan_test_dataframe'] = plan_test_df.to_dict('records')
|
| 670 |
|
| 671 |
+
# Process Development Components - ensure all columns are preserved
|
| 672 |
dev_csv = StringIO(sections[1].strip())
|
| 673 |
+
dev_df = pd.read_csv(dev_csv, keep_default_na=False)
|
| 674 |
+
processed_result['mvp_dev_dataframe'] = dev_df.to_dict('records')
|
| 675 |
|
| 676 |
if len(sections) >= 3 and 'generate_engage_MVP_mandays' in function_name:
|
| 677 |
# Process MVP Intents for Engage projects
|
| 678 |
intents_csv = StringIO(sections[2].strip())
|
| 679 |
+
intents_df = pd.read_csv(intents_csv, keep_default_na=False)
|
| 680 |
+
processed_result['mvp_intents_dataframe'] = intents_df.to_dict('records')
|
| 681 |
|
| 682 |
# Format and store results
|
| 683 |
formatted_result = {
|
|
|
|
| 686 |
}
|
| 687 |
results.append(formatted_result)
|
| 688 |
|
| 689 |
+
yield f"Successfully completed {function_name}", results, None
|
| 690 |
+
|
| 691 |
+
# Calculate MVP Mandays
|
| 692 |
+
total_mvp_mandays, total_mvp_cost, estimated_mvp_months = calculate_mvp_mandays_and_costs(results)
|
| 693 |
+
mvp_cost_summary = f"""MVP Estimate:
|
| 694 |
+
Total Mandays: {total_mvp_mandays:.2f}
|
| 695 |
+
Total Cost: ${total_mvp_cost:,.2f}
|
| 696 |
+
({estimated_mvp_months:.2f} months)"""
|
| 697 |
+
|
| 698 |
+
# Initialize combined_cost_summary if general_cost_summary doesn't exist
|
| 699 |
+
if hasattr(self, 'general_cost_summary'):
|
| 700 |
+
self.combined_cost_summary = f"""{self.general_cost_summary}
|
| 701 |
+
{mvp_cost_summary}"""
|
| 702 |
+
else:
|
| 703 |
+
self.combined_cost_summary = mvp_cost_summary
|
| 704 |
|
| 705 |
except Exception as e:
|
| 706 |
print(f"Error executing {function_name}: {str(e)}")
|
| 707 |
+
yield f"Error in {function_name}: {str(e)}", results, None
|
| 708 |
continue
|
| 709 |
+
|
| 710 |
+
yield "MVP Mandays generation completed!", results, self.combined_cost_summary
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 711 |
|
| 712 |
except Exception as e:
|
| 713 |
print(f"Error in generating MVP mandays: {str(e)}")
|
| 714 |
+
yield f"Error in generating MVP mandays: {str(e)}", [], None
|
| 715 |
|
| 716 |
## Generate Final Documentation ##
|
| 717 |
def generate_final_documentation(self, progress=gr.Progress()):
|
|
|
|
| 720 |
|
| 721 |
try:
|
| 722 |
if not hasattr(self, 'config'):
|
| 723 |
+
yield "Configuration not found.", []
|
| 724 |
return
|
| 725 |
|
| 726 |
config = self.config
|
|
|
|
| 749 |
# Get the required input variables from the previous generation results
|
| 750 |
input_vars = {}
|
| 751 |
prompt_config = PROMPTS[function_name]
|
| 752 |
+
if hasattr(self, 'combined_cost_summary'):
|
| 753 |
+
input_vars['quotation_cost'] = self.combined_cost_summary
|
| 754 |
+
else:
|
| 755 |
+
input_vars['quotation_cost'] = None
|
| 756 |
+
|
| 757 |
+
for prev_result in state.generation_results.get('step_2_d', [])[-1]:
|
| 758 |
+
if prev_result['function_name'] == input_name:
|
| 759 |
+
ui_config = PROMPTS[input_name].ui
|
| 760 |
+
dataframe_output_key = next(
|
| 761 |
+
(key for key in ui_config if key.endswith('_dataframe')),
|
| 762 |
+
None
|
| 763 |
+
)
|
| 764 |
+
if dataframe_output_key:
|
| 765 |
+
input_vars[input_name] = prev_result['result'][dataframe_output_key]
|
| 766 |
+
else:
|
| 767 |
+
input_vars[input_name] = prev_result['result']
|
| 768 |
+
break
|
| 769 |
+
|
| 770 |
for input_name in prompt_config.inputs:
|
| 771 |
+
for prev_result in state.generation_results.get('step_1', [])[-1]:
|
| 772 |
if prev_result['function_name'] == input_name:
|
| 773 |
ui_config = PROMPTS[input_name].ui
|
| 774 |
+
text_output_key = next(
|
| 775 |
+
(key for key in ui_config if key.endswith('_text')),
|
| 776 |
None
|
| 777 |
)
|
| 778 |
+
if text_output_key:
|
| 779 |
+
input_vars[input_name] = prev_result['result'][text_output_key]
|
| 780 |
else:
|
| 781 |
input_vars[input_name] = prev_result['result']
|
| 782 |
break
|
|
|
|
| 799 |
yield f"Error in {function_name}: {str(e)}", results
|
| 800 |
continue
|
| 801 |
|
| 802 |
+
yield "Final Documentation Generation completed!", results
|
| 803 |
|
| 804 |
except Exception as e:
|
| 805 |
+
print(f"Error in generating Final Documentation: {str(e)}")
|
| 806 |
+
yield f"Error in generating Final Documentation: {str(e)}", []
|
| 807 |
|
| 808 |
|
| 809 |
|
common_functions_v4.py
CHANGED
|
@@ -206,44 +206,43 @@ def calculate_mandays_and_costs(generated_results=None):
|
|
| 206 |
print(f"Error calculating mandays and costs: {str(e)}")
|
| 207 |
return tuple([None] * 3)
|
| 208 |
|
| 209 |
-
def calculate_mvp_mandays_and_costs(
|
| 210 |
try:
|
| 211 |
total_mvp_mandays = 0
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
try:
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
# Check if 'mandays' column exists (case-insensitive)
|
| 223 |
-
mandays_col = next((col for col in df.columns if col.lower() == 'mandays'), None)
|
| 224 |
-
if mandays_col:
|
| 225 |
-
total_mvp_mandays += df[mandays_col].astype(float).sum()
|
| 226 |
-
print(f"Added {df[mandays_col].sum()} mandays from {result.get('function_name', 'unknown')}")
|
| 227 |
-
|
| 228 |
-
except Exception as e:
|
| 229 |
-
print(f"Error parsing CSV: {str(e)}")
|
| 230 |
-
continue
|
| 231 |
-
# Handle dictionary format (keeping for backward compatibility)
|
| 232 |
-
elif isinstance(result_content, dict) and 'mandays' in result_content:
|
| 233 |
-
total_mvp_mandays += float(result_content['mandays'])
|
| 234 |
|
| 235 |
# Calculate costs based on total mandays
|
| 236 |
total_mvp_cost = 1500 * total_mvp_mandays
|
| 237 |
-
estimated_mvp_months = total_mvp_mandays/30
|
| 238 |
|
| 239 |
return (
|
| 240 |
total_mvp_mandays,
|
| 241 |
total_mvp_cost,
|
| 242 |
estimated_mvp_months
|
| 243 |
)
|
|
|
|
| 244 |
except Exception as e:
|
| 245 |
-
print(f"Error calculating mandays and costs: {str(e)}")
|
| 246 |
-
return
|
| 247 |
|
| 248 |
def create_new_session():
|
| 249 |
"""Create a new session in the database and return the session_id"""
|
|
|
|
| 206 |
print(f"Error calculating mandays and costs: {str(e)}")
|
| 207 |
return tuple([None] * 3)
|
| 208 |
|
| 209 |
+
def calculate_mvp_mandays_and_costs(generated_mvp_results):
|
| 210 |
try:
|
| 211 |
total_mvp_mandays = 0
|
| 212 |
+
|
| 213 |
+
# Process results from each function
|
| 214 |
+
for result in generated_mvp_results:
|
| 215 |
+
if not result.get('result'):
|
| 216 |
+
continue
|
| 217 |
+
|
| 218 |
+
# Process all dataframes in the result that end with '_dataframe'
|
| 219 |
+
for key, data in result['result'].items():
|
| 220 |
+
if not key.endswith('_dataframe') or not isinstance(data, list):
|
| 221 |
+
continue
|
| 222 |
+
|
| 223 |
+
# Sum mandays from each item in the dataframe
|
| 224 |
+
for item in data:
|
| 225 |
+
manday_key = next((k for k in item.keys()
|
| 226 |
+
if 'manday' in k.lower()), None)
|
| 227 |
+
if manday_key:
|
| 228 |
try:
|
| 229 |
+
total_mvp_mandays += float(item[manday_key])
|
| 230 |
+
except (ValueError, TypeError):
|
| 231 |
+
print(f"Warning: Invalid mandays value: {item[manday_key]}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 232 |
|
| 233 |
# Calculate costs based on total mandays
|
| 234 |
total_mvp_cost = 1500 * total_mvp_mandays
|
| 235 |
+
estimated_mvp_months = total_mvp_mandays / 30
|
| 236 |
|
| 237 |
return (
|
| 238 |
total_mvp_mandays,
|
| 239 |
total_mvp_cost,
|
| 240 |
estimated_mvp_months
|
| 241 |
)
|
| 242 |
+
|
| 243 |
except Exception as e:
|
| 244 |
+
print(f"Error calculating MVP mandays and costs: {str(e)}")
|
| 245 |
+
return 0, 0, 0
|
| 246 |
|
| 247 |
def create_new_session():
|
| 248 |
"""Create a new session in the database and return the session_id"""
|
event_handler.py
CHANGED
|
@@ -75,21 +75,21 @@ def generate_step_2_c(progress=gr.Progress()) -> Generator[Tuple[str, list], Any
|
|
| 75 |
print(f"Error during generation: {str(e)}")
|
| 76 |
yield f"Error during generation: {str(e)}", []
|
| 77 |
|
| 78 |
-
def generate_step_2_d(progress=gr.Progress()) -> Generator[Tuple[str, list], Any, None]:
|
| 79 |
"""Generate content using the Project instance"""
|
| 80 |
try:
|
| 81 |
# Initialize results for this step
|
| 82 |
step_results = []
|
| 83 |
|
| 84 |
# Generate mandays estimate, yielding results as they're generated
|
| 85 |
-
for status_msg, result in state.quotation_project.
|
| 86 |
step_results.append(result)
|
| 87 |
state.generation_results['step_2_d'] = step_results
|
| 88 |
-
yield status_msg, step_results
|
| 89 |
|
| 90 |
except Exception as e:
|
| 91 |
print(f"Error during generation: {str(e)}")
|
| 92 |
-
yield f"Error during generation: {str(e)}", []
|
| 93 |
|
| 94 |
def generate_step_3(progress=gr.Progress()) -> Generator[Tuple[str, list], Any, None]:
|
| 95 |
"""Generate content using the Project instance"""
|
|
@@ -204,7 +204,6 @@ def upload_to_gdrive(folder_name, generation_result, progress=gr.Progress()):
|
|
| 204 |
return f"Failed to upload files. Error: {e}"
|
| 205 |
|
| 206 |
|
| 207 |
-
|
| 208 |
def setup_all_handlers(step_buttons, all_components, progress_update, quotation_cost=None, recalc_btn=None, upload_drive_btn=None, upload_notion_btn=None, project_name=None, generation_results=None):
|
| 209 |
"""Set up all step handlers with the provided UI components"""
|
| 210 |
# Modified button click chain
|
|
@@ -235,6 +234,12 @@ def setup_all_handlers(step_buttons, all_components, progress_update, quotation_
|
|
| 235 |
|
| 236 |
step_buttons['Step 2.4 : Generate MVP Mandays'].click(
|
| 237 |
fn=generate_step_2_d,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
outputs=[progress_update, generation_results],
|
| 239 |
queue=True
|
| 240 |
)
|
|
@@ -267,8 +272,8 @@ def create_render_results(step, generation_results):
|
|
| 267 |
step_to_state_key = {
|
| 268 |
"Step 2.1 : Generate Mandays": "step_2_a",
|
| 269 |
"Step 2.2 : Analyze MVP Components": "step_2_b",
|
| 270 |
-
"Step 2.3 :
|
| 271 |
-
"Step 2.4 :
|
| 272 |
}
|
| 273 |
|
| 274 |
# Get the relevant results based on the step
|
|
@@ -313,10 +318,21 @@ def create_render_results(step, generation_results):
|
|
| 313 |
|
| 314 |
# Special handling for Step 2 results
|
| 315 |
if step.startswith("Step 2"):
|
| 316 |
-
with gr.Accordion(f"{description}", open=
|
| 317 |
-
if isinstance(result,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 318 |
try:
|
| 319 |
-
# Convert markdown table to dataframe
|
| 320 |
df = pd.read_csv(
|
| 321 |
StringIO(result.replace('|', ',').replace('\n\n', '\n')),
|
| 322 |
sep=',',
|
|
|
|
| 75 |
print(f"Error during generation: {str(e)}")
|
| 76 |
yield f"Error during generation: {str(e)}", []
|
| 77 |
|
| 78 |
+
def generate_step_2_d(progress=gr.Progress()) -> Generator[Tuple[str, list, str], Any, None]:
|
| 79 |
"""Generate content using the Project instance"""
|
| 80 |
try:
|
| 81 |
# Initialize results for this step
|
| 82 |
step_results = []
|
| 83 |
|
| 84 |
# Generate mandays estimate, yielding results as they're generated
|
| 85 |
+
for status_msg, result , quotation_cost in state.quotation_project.generate_mvp_mandays(progress):
|
| 86 |
step_results.append(result)
|
| 87 |
state.generation_results['step_2_d'] = step_results
|
| 88 |
+
yield status_msg, step_results , quotation_cost
|
| 89 |
|
| 90 |
except Exception as e:
|
| 91 |
print(f"Error during generation: {str(e)}")
|
| 92 |
+
yield f"Error during generation: {str(e)}", [] , None
|
| 93 |
|
| 94 |
def generate_step_3(progress=gr.Progress()) -> Generator[Tuple[str, list], Any, None]:
|
| 95 |
"""Generate content using the Project instance"""
|
|
|
|
| 204 |
return f"Failed to upload files. Error: {e}"
|
| 205 |
|
| 206 |
|
|
|
|
| 207 |
def setup_all_handlers(step_buttons, all_components, progress_update, quotation_cost=None, recalc_btn=None, upload_drive_btn=None, upload_notion_btn=None, project_name=None, generation_results=None):
|
| 208 |
"""Set up all step handlers with the provided UI components"""
|
| 209 |
# Modified button click chain
|
|
|
|
| 234 |
|
| 235 |
step_buttons['Step 2.4 : Generate MVP Mandays'].click(
|
| 236 |
fn=generate_step_2_d,
|
| 237 |
+
outputs=[progress_update, generation_results , quotation_cost],
|
| 238 |
+
queue=True
|
| 239 |
+
)
|
| 240 |
+
|
| 241 |
+
step_buttons['Step 3 : Final Documentation'].click(
|
| 242 |
+
fn=generate_step_3,
|
| 243 |
outputs=[progress_update, generation_results],
|
| 244 |
queue=True
|
| 245 |
)
|
|
|
|
| 272 |
step_to_state_key = {
|
| 273 |
"Step 2.1 : Generate Mandays": "step_2_a",
|
| 274 |
"Step 2.2 : Analyze MVP Components": "step_2_b",
|
| 275 |
+
"Step 2.3 : Recalculate MVP Mandays": "step_2_c",
|
| 276 |
+
"Step 2.4 : Generate MVP Mandays": "step_2_d",
|
| 277 |
}
|
| 278 |
|
| 279 |
# Get the relevant results based on the step
|
|
|
|
| 318 |
|
| 319 |
# Special handling for Step 2 results
|
| 320 |
if step.startswith("Step 2"):
|
| 321 |
+
with gr.Accordion(f"{description}", open=False):
|
| 322 |
+
if isinstance(result, dict) and any(key.endswith('_dataframe') for key in result.keys()):
|
| 323 |
+
# Handle multiple dataframes
|
| 324 |
+
for key, data in result.items():
|
| 325 |
+
if key.endswith('_dataframe'):
|
| 326 |
+
df = pd.DataFrame(data)
|
| 327 |
+
result_components.append(
|
| 328 |
+
gr.Dataframe(
|
| 329 |
+
value=df,
|
| 330 |
+
label=key.replace('_dataframe', '').replace('_', ' ').title(),
|
| 331 |
+
interactive=False
|
| 332 |
+
)
|
| 333 |
+
)
|
| 334 |
+
elif isinstance(result, str):
|
| 335 |
try:
|
|
|
|
| 336 |
df = pd.read_csv(
|
| 337 |
StringIO(result.replace('|', ',').replace('\n\n', '\n')),
|
| 338 |
sep=',',
|
prompt_configs.py
CHANGED
|
@@ -1124,867 +1124,790 @@ PROMPTS = {
|
|
| 1124 |
)
|
| 1125 |
}
|
| 1126 |
),
|
| 1127 |
-
|
| 1128 |
-
"
|
| 1129 |
prompt=
|
| 1130 |
"""
|
| 1131 |
-
|
| 1132 |
-
1. **General PRD Guidelines**: Use the provided general PRD as a framework for structure, tone, and level of detail. This includes sections like Introduction, Scope, Functional Requirements, Non-Functional Requirements, Technical Architecture, Workflow, Testing, Deployment, and Appendices.
|
| 1133 |
-
2. **Revised Mandays Estimates**: Incorporate the specific MVP components, including their descriptions, mandays estimates, and functionalities, into the relevant sections of the PRD. Ensure all details are accurately reflected.
|
| 1134 |
|
| 1135 |
-
|
| 1136 |
-
|
| 1137 |
-
- Pay special attention to the time constraint for building the MVP, as outlined in the inputs.
|
| 1138 |
-
- Do not add any context or assumptions beyond the provided inputs.
|
| 1139 |
-
- Do not exclude any details from the inputs.
|
| 1140 |
-
- Structure the document to ensure clarity, logical flow, and readability and use tabular format whenever possible.
|
| 1141 |
-
- Use the title "Project Requirements" for the document.
|
| 1142 |
|
| 1143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1144 |
""",
|
| 1145 |
-
inputs=["
|
| 1146 |
-
outputs=["
|
| 1147 |
model=ModelType.O1_MINI,
|
| 1148 |
-
description="Step
|
| 1149 |
-
step=
|
|
|
|
| 1150 |
ui={
|
| 1151 |
-
"
|
| 1152 |
component_type=UIComponentType.TEXTBOX,
|
| 1153 |
-
label="MVP
|
| 1154 |
lines=20,
|
| 1155 |
interactive=True
|
| 1156 |
),
|
| 1157 |
-
"
|
| 1158 |
-
component_type=UIComponentType.
|
| 1159 |
-
label="MVP
|
| 1160 |
lines=20,
|
| 1161 |
-
|
| 1162 |
-
),
|
| 1163 |
-
"generated_mvp_prd_markdown": UIConfig(
|
| 1164 |
-
component_type=UIComponentType.MARKDOWN,
|
| 1165 |
-
label="MVP PRD Output",
|
| 1166 |
-
visible=True,
|
| 1167 |
-
show_copy_button=True
|
| 1168 |
)
|
| 1169 |
}
|
| 1170 |
),
|
| 1171 |
|
| 1172 |
-
"
|
| 1173 |
prompt=
|
| 1174 |
"""
|
| 1175 |
-
|
| 1176 |
-
1. **General PRD Guidelines**: Use the provided general PRD as a framework for structure, tone, and level of detail. This includes sections like Introduction, Scope, Functional Requirements, Non-Functional Requirements, Technical Architecture, Workflow, Testing, Deployment, and Appendices.
|
| 1177 |
-
2. **Revised Mandays Estimates**: Incorporate the specific MVP components & intents, including their descriptions, mandays estimates, and functionalities, into the relevant sections of the PRD. Ensure all details are accurately reflected.
|
| 1178 |
|
| 1179 |
-
|
| 1180 |
-
-
|
| 1181 |
-
-
|
| 1182 |
-
-
|
| 1183 |
-
-
|
| 1184 |
-
-
|
| 1185 |
-
- Use the title "Project Requirements" for the document.
|
| 1186 |
|
| 1187 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1188 |
""",
|
| 1189 |
-
inputs=["
|
| 1190 |
-
outputs=["
|
| 1191 |
model=ModelType.O1_MINI,
|
| 1192 |
-
description="Step
|
| 1193 |
-
step="Step
|
|
|
|
| 1194 |
ui={
|
| 1195 |
-
"
|
| 1196 |
component_type=UIComponentType.TEXTBOX,
|
| 1197 |
-
label="MVP
|
| 1198 |
lines=20,
|
| 1199 |
interactive=True
|
| 1200 |
),
|
| 1201 |
-
"
|
| 1202 |
-
component_type=UIComponentType.
|
| 1203 |
-
label="MVP
|
| 1204 |
lines=20,
|
| 1205 |
-
|
| 1206 |
-
),
|
| 1207 |
-
"generated_mvp_prd_markdown": UIConfig(
|
| 1208 |
-
component_type=UIComponentType.MARKDOWN,
|
| 1209 |
-
label="MVP PRD Output",
|
| 1210 |
-
visible=True,
|
| 1211 |
-
show_copy_button=True
|
| 1212 |
)
|
| 1213 |
}
|
| 1214 |
),
|
| 1215 |
-
|
| 1216 |
-
"
|
| 1217 |
prompt=
|
| 1218 |
"""
|
| 1219 |
-
|
| 1220 |
-
|
| 1221 |
-
### **Scope of Work (SOW)**
|
| 1222 |
-
|
| 1223 |
-
#### **1. Project Background**
|
| 1224 |
-
- Provide a brief overview of the project, including the context, problem statement, and why the project is being initiated.
|
| 1225 |
-
- Break down key challenges (in bullet point) the company currently facing, quantifying the impacts where possible (e.g., lost revenue, downtime).
|
| 1226 |
-
- Close this section with industry trends or other relevant background information, emphasizing risks of inaction leading to the project, in 2-3 sentences.
|
| 1227 |
-
|
| 1228 |
-
#### **2. Project Objective**
|
| 1229 |
-
- Clearly define the project's primary goals and what constitutes success, using the following structure:
|
| 1230 |
-
- Goals: List specific, measurable goals (e.g., reduce processing time by 20%).
|
| 1231 |
-
- Outcomes: Describe tangible deliverables and metrics for success.
|
| 1232 |
-
|
| 1233 |
-
#### **3. Project Buyers & Stakeholders**
|
| 1234 |
-
- List key stakeholders involved in the project, e.g. buyers, end-users, and decision-makers.
|
| 1235 |
-
- Identify their name and roles in the project, using a table.
|
| 1236 |
-
|
| 1237 |
-
#### **4. System Flow**
|
| 1238 |
-
- Provide description of how the system components interact, describing what each module does and how it works.
|
| 1239 |
-
- Use one of the following:
|
| 1240 |
-
- Visual Representation: Diagram illustrating workflows or data flows between modules.
|
| 1241 |
-
- Textual Description: Detailed explanation of the processes and transitions
|
| 1242 |
-
- Use bullet point, ensure simplicity and avoid overly technical language.
|
| 1243 |
-
|
| 1244 |
-
#### **5. Modules and Functional Requirements Breakdown**
|
| 1245 |
-
- LEAVE THIS BLANK
|
| 1246 |
-
|
| 1247 |
-
#### **6. Acceptance Criteria**
|
| 1248 |
-
- Define conditions to be met, including specific, measurable criteria for project completion:
|
| 1249 |
-
- Link each deliverable/module to its validation or testing process (e.g., UAT).
|
| 1250 |
-
- Table format with the following column:
|
| 1251 |
-
- Deliverable (e.g. Field Matching Automation module)
|
| 1252 |
-
- Criteria, starting with "able to" (e.g. able to extract, match, and change the case status accordingly)
|
| 1253 |
-
|
| 1254 |
-
#### **7. Assumptions and Pre-requisites**
|
| 1255 |
-
- List all planning-phase assumptions and pre-requisites, grouped into:
|
| 1256 |
-
- Assumptions: Detailed, scenario-based assumptions that the project relies on. Each assumption should:
|
| 1257 |
-
- Reference specific stakeholders (e.g., PWT staff, Mindhive).
|
| 1258 |
-
- Describe specific conditions or expectations (e.g., document quality, workflow stability).
|
| 1259 |
-
- Be written in clear, concise language.
|
| 1260 |
-
- Pre-requisites or dependencies: Conditions that must be met before the project can proceed. Each pre-requisite should:
|
| 1261 |
-
- Be specific and actionable.
|
| 1262 |
-
- Reference who is responsible and what needs to be done.
|
| 1263 |
|
| 1264 |
-
|
| 1265 |
-
-
|
| 1266 |
-
-
|
| 1267 |
-
-
|
| 1268 |
-
-
|
| 1269 |
-
-
|
| 1270 |
-
- Ensure the output are clean, organized, and easy to read.
|
| 1271 |
|
| 1272 |
-
|
| 1273 |
-
|
| 1274 |
-
- Development Fee: Create a table summarizing the costs for development, including the product, technical work supporting, or other additional services provided
|
| 1275 |
-
- Subscription Fee: If applicable, create a table summarizing subscription fees for system usage.
|
| 1276 |
-
- Payment Terms: Include a text description of payment terms:
|
| 1277 |
-
- Milestones: Specify at which stages payments are due
|
| 1278 |
-
- Invoicing: Define invoicing intervals (e.g., monthly, quarterly) and payment deadlines
|
| 1279 |
-
- Other Terms: Mention late payment fees or additional terms, if applicable
|
| 1280 |
-
- Output Format for tables: {Service}, {Fee} (leave amount blank)
|
| 1281 |
|
| 1282 |
-
|
| 1283 |
-
-
|
| 1284 |
-
-
|
| 1285 |
-
-
|
| 1286 |
-
- Signature
|
| 1287 |
-
- Name
|
| 1288 |
-
- Position
|
| 1289 |
-
- Date
|
| 1290 |
|
| 1291 |
-
|
| 1292 |
-
|
| 1293 |
-
- Keep descriptions concise and client-friendly; avoid technical jargon unless necessary.
|
| 1294 |
-
- Maintain structured sections and tables for readability.
|
| 1295 |
|
| 1296 |
-
|
|
|
|
|
|
|
|
|
|
| 1297 |
""",
|
| 1298 |
-
inputs=[
|
| 1299 |
-
|
| 1300 |
-
"generated_plan_test_components",
|
| 1301 |
-
"reformatted_dev_components",
|
| 1302 |
-
"quotation_cost"
|
| 1303 |
-
],
|
| 1304 |
-
outputs=["generated_BD_SOW"],
|
| 1305 |
model=ModelType.O1_MINI,
|
| 1306 |
-
description="Step
|
| 1307 |
-
step=
|
|
|
|
| 1308 |
ui={
|
| 1309 |
-
"
|
| 1310 |
component_type=UIComponentType.TEXTBOX,
|
| 1311 |
-
label="
|
| 1312 |
lines=20,
|
| 1313 |
interactive=True
|
| 1314 |
),
|
| 1315 |
-
"
|
| 1316 |
-
component_type=UIComponentType.
|
| 1317 |
-
label="
|
| 1318 |
lines=20,
|
| 1319 |
-
|
| 1320 |
-
),
|
| 1321 |
-
"generated_BD_SOW_markdown": UIConfig(
|
| 1322 |
-
component_type=UIComponentType.MARKDOWN,
|
| 1323 |
-
label="BD SOW",
|
| 1324 |
-
visible=True,
|
| 1325 |
-
show_copy_button=True
|
| 1326 |
)
|
| 1327 |
}
|
| 1328 |
),
|
| 1329 |
|
| 1330 |
-
"
|
| 1331 |
prompt=
|
| 1332 |
"""
|
| 1333 |
-
|
| 1334 |
|
| 1335 |
-
|
|
|
|
| 1336 |
|
| 1337 |
-
|
| 1338 |
-
|
| 1339 |
-
-
|
| 1340 |
-
-
|
| 1341 |
-
|
| 1342 |
-
|
| 1343 |
-
|
| 1344 |
-
|
| 1345 |
-
-
|
| 1346 |
-
|
| 1347 |
-
|
| 1348 |
-
|
| 1349 |
-
|
| 1350 |
-
|
| 1351 |
-
|
| 1352 |
-
- Provide description of how the system components interact, describing what each module does and how it works.
|
| 1353 |
-
- Use one of the following:
|
| 1354 |
-
- Visual Representation: Diagram illustrating workflows or data flows between modules.
|
| 1355 |
-
- Textual Description: Detailed explanation of the processes and transitions
|
| 1356 |
-
- Use bullet point, ensure simplicity and avoid overly technical language.
|
| 1357 |
-
|
| 1358 |
-
#### **5. Modules and Functional Requirements Breakdown**
|
| 1359 |
-
- LEAVE THIS BLANK
|
| 1360 |
-
|
| 1361 |
-
#### **6. Acceptance Criteria**
|
| 1362 |
-
- Define conditions to be met, including specific, measurable criteria for project completion:
|
| 1363 |
-
- Link each deliverable/module to its validation or testing process (e.g., UAT).
|
| 1364 |
-
- Table format with the following column:
|
| 1365 |
-
- Deliverable (e.g. Field Matching Automation module)
|
| 1366 |
-
- Criteria, starting with "able to" (e.g. able to extract, match, and change the case status accordingly)
|
| 1367 |
-
|
| 1368 |
-
#### **7. Assumptions and Pre-requisites**
|
| 1369 |
-
- List all planning-phase assumptions and pre-requisites, grouped into:
|
| 1370 |
-
- Assumptions: Detailed, scenario-based assumptions that the project relies on. Each assumption should:
|
| 1371 |
-
- Reference specific stakeholders (e.g., PWT staff, Mindhive).
|
| 1372 |
-
- Describe specific conditions or expectations (e.g., document quality, workflow stability).
|
| 1373 |
-
- Be written in clear, concise language.
|
| 1374 |
-
- Pre-requisites or dependencies: Conditions that must be met before the project can proceed. Each pre-requisite should:
|
| 1375 |
-
- Be specific and actionable.
|
| 1376 |
-
- Reference who is responsible and what needs to be done.
|
| 1377 |
-
|
| 1378 |
-
#### **8. Proposed Timeline**
|
| 1379 |
-
- Provide a project timeline, including:
|
| 1380 |
-
- Milestone
|
| 1381 |
-
- Expected Date/Duration
|
| 1382 |
-
- Outcome/Deliverable
|
| 1383 |
-
- Use a Gantt chart or table to visualize the timeline.
|
| 1384 |
-
- Ensure the output are clean, organized, and easy to read.
|
| 1385 |
-
|
| 1386 |
-
#### **9. Commercial**
|
| 1387 |
-
Summarize the project's commercial details in the following subsections:
|
| 1388 |
-
- Development Fee: Create a table summarizing the costs for development, including the product, technical work supporting, or other additional services provided
|
| 1389 |
-
- Subscription Fee: If applicable, create a table summarizing subscription fees for system usage.
|
| 1390 |
-
- Payment Terms: Include a text description of payment terms:
|
| 1391 |
-
- Milestones: Specify at which stages payments are due
|
| 1392 |
-
- Invoicing: Define invoicing intervals (e.g., monthly, quarterly) and payment deadlines
|
| 1393 |
-
- Other Terms: Mention late payment fees or additional terms, if applicable
|
| 1394 |
-
- Output Format for tables: {Service}, {Fee} (leave amount blank)
|
| 1395 |
-
|
| 1396 |
-
#### **10. Sign-Off**
|
| 1397 |
-
- Create a professional and formal Sign-Off section to acknowledge and approve the SOW.
|
| 1398 |
-
- Include an statement to clearly communicate that both parties have reviewed and agreed to the SOW.
|
| 1399 |
-
- Provide placeholder for each party (Company):
|
| 1400 |
-
- Signature
|
| 1401 |
-
- Name
|
| 1402 |
-
- Position
|
| 1403 |
-
- Date
|
| 1404 |
|
| 1405 |
-
|
| 1406 |
-
-
|
| 1407 |
-
-
|
| 1408 |
-
-
|
|
|
|
| 1409 |
|
| 1410 |
-
|
|
|
|
|
|
|
| 1411 |
""",
|
| 1412 |
-
inputs=[
|
| 1413 |
-
|
| 1414 |
-
"generated_plan_test_components",
|
| 1415 |
-
"reformatted_dev_components",
|
| 1416 |
-
"generated_intent_list",
|
| 1417 |
-
"quotation_cost"
|
| 1418 |
-
],
|
| 1419 |
-
outputs=["generated_BD_SOW"],
|
| 1420 |
model=ModelType.O1_MINI,
|
| 1421 |
-
description="Step
|
| 1422 |
-
step="Step
|
|
|
|
| 1423 |
ui={
|
| 1424 |
-
"
|
| 1425 |
component_type=UIComponentType.TEXTBOX,
|
| 1426 |
-
label="
|
| 1427 |
lines=20,
|
| 1428 |
interactive=True
|
| 1429 |
),
|
| 1430 |
-
"
|
| 1431 |
component_type=UIComponentType.TEXTBOX,
|
| 1432 |
-
label="
|
| 1433 |
-
|
| 1434 |
visible=True
|
| 1435 |
),
|
| 1436 |
-
"
|
| 1437 |
component_type=UIComponentType.MARKDOWN,
|
| 1438 |
-
label="
|
| 1439 |
-
|
| 1440 |
-
show_copy_button=True
|
| 1441 |
-
)
|
| 1442 |
-
}
|
| 1443 |
-
),
|
| 1444 |
-
|
| 1445 |
-
"generate_Tech_SOW": PromptConfig(
|
| 1446 |
-
prompt=
|
| 1447 |
-
"""
|
| 1448 |
-
As an experienced project manager with over 20 years of expertise, you are tasked to create a detailed Scope of Work (SOW) document in JSON format. The JSON output should contain markdown-formatted strings as values for each section of the SOW. Analyze the provided project component list and scope document to generate the following sections:
|
| 1449 |
-
|
| 1450 |
-
### **Scope of Work (SOW)**
|
| 1451 |
-
|
| 1452 |
-
#### **1. Scope Summary**
|
| 1453 |
-
- Provide a concise, high-level overview of the project scope. Divide it into three subsections:
|
| 1454 |
-
- In Scope:
|
| 1455 |
-
- List all deliverables, functionalities, and modules included in the project.
|
| 1456 |
-
- Be specific about what will be developed, implemented, or delivered.
|
| 1457 |
-
- Include MVP components (e.g., basic features, functionality, UI, document processing).
|
| 1458 |
-
- Assumptions:
|
| 1459 |
-
- Highlight key project-specific assumptions that the project relies on.
|
| 1460 |
-
- Dependencies:
|
| 1461 |
-
- List all internal and external dependencies required for the project's success.
|
| 1462 |
-
- Include any third-party integrations, resources, or timelines that the project depends on.
|
| 1463 |
-
|
| 1464 |
-
#### **2. Modules and Functional Requirements Breakdown**
|
| 1465 |
-
- Break down the project into modules or components.
|
| 1466 |
-
- Prsent the details in a succinct and client-friendly table with the following column:
|
| 1467 |
-
- Module
|
| 1468 |
-
ii. Functionalities/Features
|
| 1469 |
-
iii. Notes for any special considerations or constraints (e.g., 'Supports files up to 100MB').
|
| 1470 |
-
- Use clear, concise, non-technical language. (e.g., 'Drag-and-drop support for PDFs, Excel, CSV; progress indicators'). Avoid excessive detail.
|
| 1471 |
-
- Include MVP components as part of the breakdown and provide clear functionalities related to those (e.g., basic document upload, UI features, data processing).
|
| 1472 |
-
|
| 1473 |
-
#### **3. Out of Scope**
|
| 1474 |
-
- Explicitly define what is excluded from the project's scope. This may include any functionalities, tasks, or deliverables.
|
| 1475 |
-
- Ensure clarity to prevent future misunderstandings.
|
| 1476 |
-
|
| 1477 |
-
#### **4. System Flow**
|
| 1478 |
-
- Provide a detailed, step-by-step description of how the system components interact.
|
| 1479 |
-
- For each component or module:
|
| 1480 |
-
- Describe what it does and how it works, including both success and unsuccessful scenarios
|
| 1481 |
-
- Explain how it interacts with other components
|
| 1482 |
-
- Include MVP-related components in the system flow, describing their function and interaction within the MVP's framework.
|
| 1483 |
-
|
| 1484 |
-
Output Requirements:
|
| 1485 |
-
Just return the json object and nothing else, omit code guards ```, where each key represents a section of the SOW, and the value is a markdown-formatted string for that section.
|
| 1486 |
-
Use clear, concise, and client-friendly language. Avoid excessive technical jargon unless necessary.
|
| 1487 |
-
Example JSON Output:
|
| 1488 |
-
{
|
| 1489 |
-
"scope_summary": <markdown content>,
|
| 1490 |
-
"modules_and_functional_requirements": <markdown content>,
|
| 1491 |
-
"out_of_scope": <markdown content>,
|
| 1492 |
-
"system_flow": <markdown content>
|
| 1493 |
-
}
|
| 1494 |
-
""",
|
| 1495 |
-
inputs=["generated_plan_test_components","reformatted_dev_components","revised_mandays_estimates"],
|
| 1496 |
-
outputs=["generated_Tech_SOW"],
|
| 1497 |
-
model=ModelType.O1_MINI,
|
| 1498 |
-
description="Step 3.3 : Generate Technical SOW",
|
| 1499 |
-
step="Step 3 : Final Documentation",
|
| 1500 |
-
ui={
|
| 1501 |
-
"Tech_SOW_prompt_editor": UIConfig(
|
| 1502 |
-
component_type=UIComponentType.TEXTBOX,
|
| 1503 |
-
label="Technical SOW Generator Prompt",
|
| 1504 |
-
lines=20,
|
| 1505 |
-
interactive=True
|
| 1506 |
-
),
|
| 1507 |
-
"generated_Tech_SOW_text": UIConfig(
|
| 1508 |
-
component_type=UIComponentType.TEXTBOX,
|
| 1509 |
-
label="Technical SOW",
|
| 1510 |
-
lines=20,
|
| 1511 |
visible=True
|
| 1512 |
-
),
|
| 1513 |
-
"generated_Tech_SOW_markdown": UIConfig(
|
| 1514 |
-
component_type=UIComponentType.MARKDOWN,
|
| 1515 |
-
label="Technical SOW",
|
| 1516 |
-
visible=True,
|
| 1517 |
-
show_copy_button=True
|
| 1518 |
)
|
| 1519 |
}
|
| 1520 |
),
|
| 1521 |
|
| 1522 |
-
"
|
| 1523 |
prompt=
|
| 1524 |
"""
|
| 1525 |
-
|
| 1526 |
-
|
| 1527 |
-
### **Scope of Work (SOW)**
|
| 1528 |
-
|
| 1529 |
-
#### **1. Scope Summary**
|
| 1530 |
-
- Provide a concise, high-level overview of the project scope. Divide it into three subsections:
|
| 1531 |
-
- In Scope:
|
| 1532 |
-
- List all deliverables, functionalities, and modules included in the project.
|
| 1533 |
-
- Be specific about what will be developed, implemented, or delivered.
|
| 1534 |
-
- Include MVP components (e.g., basic features, functionality, UI, document processing).
|
| 1535 |
-
- Assumptions:
|
| 1536 |
-
- Highlight key project-specific assumptions that the project relies on.
|
| 1537 |
-
- Dependencies:
|
| 1538 |
-
- List all internal and external dependencies required for the project's success.
|
| 1539 |
-
- Include any third-party integrations, resources, or timelines that the project depends on.
|
| 1540 |
|
| 1541 |
-
|
| 1542 |
-
|
| 1543 |
-
- Prsent the details in a succinct and client-friendly table with the following column:
|
| 1544 |
-
- Module
|
| 1545 |
-
ii. Functionalities/Features
|
| 1546 |
-
iii. Notes for any special considerations or constraints (e.g., 'Supports files up to 100MB').
|
| 1547 |
-
- Use clear, concise, non-technical language. (e.g., 'Drag-and-drop support for PDFs, Excel, CSV; progress indicators'). Avoid excessive detail.
|
| 1548 |
-
- Include MVP components as part of the breakdown and provide clear functionalities related to those (e.g., basic document upload, UI features, data processing).
|
| 1549 |
|
| 1550 |
-
|
| 1551 |
-
|
| 1552 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1553 |
|
| 1554 |
-
|
| 1555 |
-
- Provide a
|
| 1556 |
-
-
|
| 1557 |
-
-
|
| 1558 |
-
-
|
| 1559 |
-
-
|
| 1560 |
|
| 1561 |
-
|
| 1562 |
-
|
| 1563 |
-
|
| 1564 |
-
Example JSON Output:
|
| 1565 |
-
{
|
| 1566 |
-
"scope_summary": <markdown content>,
|
| 1567 |
-
"modules_and_functional_requirements": <markdown content>,
|
| 1568 |
-
"out_of_scope": <markdown content>,
|
| 1569 |
-
"system_flow": <markdown content>
|
| 1570 |
-
}
|
| 1571 |
""",
|
| 1572 |
-
inputs=["
|
| 1573 |
-
outputs=["
|
| 1574 |
model=ModelType.O1_MINI,
|
| 1575 |
-
description="Step
|
| 1576 |
-
step="Step
|
|
|
|
| 1577 |
ui={
|
| 1578 |
-
"
|
| 1579 |
component_type=UIComponentType.TEXTBOX,
|
| 1580 |
-
label="
|
| 1581 |
lines=20,
|
| 1582 |
interactive=True
|
| 1583 |
),
|
| 1584 |
-
"
|
| 1585 |
component_type=UIComponentType.TEXTBOX,
|
| 1586 |
-
label="
|
| 1587 |
-
|
| 1588 |
visible=True
|
| 1589 |
),
|
| 1590 |
-
"
|
| 1591 |
component_type=UIComponentType.MARKDOWN,
|
| 1592 |
-
label="
|
| 1593 |
-
|
| 1594 |
-
|
| 1595 |
)
|
| 1596 |
}
|
| 1597 |
),
|
| 1598 |
|
| 1599 |
-
"
|
| 1600 |
prompt=
|
| 1601 |
"""
|
| 1602 |
-
|
| 1603 |
|
| 1604 |
Objective:
|
| 1605 |
-
|
| 1606 |
-
|
| 1607 |
-
Key Guidelines:
|
| 1608 |
-
- Focus on Core Functionality: Only include components that are essential for the MVP to function and deliver immediate value to users.
|
| 1609 |
-
- Exclude Non-Critical Components: Do not include components related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is not absolutely necessary for the MVP.
|
| 1610 |
-
- Prioritize Business Value: Ensure the selected components align with the business's core objectives and deliver measurable value.
|
| 1611 |
-
- Minimalistic Approach: Focus on the least effort required to deliver the most value.
|
| 1612 |
|
| 1613 |
Output Format Requirements:
|
| 1614 |
-
-
|
| 1615 |
-
|
| 1616 |
-
|
| 1617 |
-
- Text values must be enclosed in double quotes
|
| 1618 |
-
- No empty rows or missing values
|
| 1619 |
|
| 1620 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1621 |
""",
|
| 1622 |
-
inputs=["
|
| 1623 |
-
outputs=["
|
| 1624 |
model=ModelType.O1_MINI,
|
| 1625 |
-
description="Step 2.
|
| 1626 |
-
step=
|
| 1627 |
-
sub_step="Step 2.
|
| 1628 |
ui={
|
| 1629 |
-
"
|
| 1630 |
component_type=UIComponentType.TEXTBOX,
|
| 1631 |
-
label="MVP
|
| 1632 |
lines=20,
|
| 1633 |
interactive=True
|
| 1634 |
),
|
| 1635 |
-
"
|
| 1636 |
component_type=UIComponentType.DATAFRAME,
|
| 1637 |
-
label="MVP
|
| 1638 |
-
|
| 1639 |
-
interactive=True
|
| 1640 |
)
|
| 1641 |
}
|
| 1642 |
),
|
| 1643 |
-
|
| 1644 |
-
"
|
| 1645 |
prompt=
|
| 1646 |
"""
|
| 1647 |
-
|
| 1648 |
-
|
| 1649 |
-
Key Guidelines:
|
| 1650 |
-
- **Focus on Core Functionality:** Assign priority levels based on how essential each component is for the MVP to function and deliver immediate value to users.
|
| 1651 |
-
- **Exclude Non-Critical Considerations:** Do not label components related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is **NOT** absolutely necessary for the MVP as "high" priority.
|
| 1652 |
-
- **Prioritize Business Value:** Ensure the priority levels align with the business's core objectives and deliver measurable value.
|
| 1653 |
-
- **Minimalistic Approach:** Focus on the least effort required to deliver the most value when assigning priority levels.
|
| 1654 |
-
- **Assign Priority Levels:** Label each development component as "high," "medium," or "low" priority based on its importance to the MVP's core functionality and business value.
|
| 1655 |
|
| 1656 |
Objective:
|
| 1657 |
-
|
| 1658 |
|
| 1659 |
-
Important Notes:
|
| 1660 |
-
- If a component is not directly tied to the core functionality or can be deferred to a later phase, assign it a lower priority ("medium" or "low").
|
| 1661 |
-
- Do not exclude any components from the list, even if they are low priority.
|
| 1662 |
-
- Only assign "high" priority to components that are absolutely necessary for the MVP to function.
|
| 1663 |
-
|
| 1664 |
Output Format Requirements:
|
| 1665 |
-
|
|
|
|
|
|
|
| 1666 |
|
| 1667 |
-
|
| 1668 |
-
|
| 1669 |
-
|
| 1670 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1671 |
""",
|
| 1672 |
-
inputs=["
|
| 1673 |
-
outputs=["
|
| 1674 |
model=ModelType.O1_MINI,
|
| 1675 |
-
description="Step 2.
|
| 1676 |
step="Step 2 : Mandays & Quotation",
|
| 1677 |
-
sub_step="Step 2.
|
| 1678 |
ui={
|
| 1679 |
-
"
|
| 1680 |
component_type=UIComponentType.TEXTBOX,
|
| 1681 |
-
label="MVP
|
| 1682 |
lines=20,
|
| 1683 |
interactive=True
|
| 1684 |
),
|
| 1685 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1686 |
component_type=UIComponentType.DATAFRAME,
|
| 1687 |
-
label="MVP
|
| 1688 |
-
|
| 1689 |
-
|
| 1690 |
)
|
| 1691 |
}
|
| 1692 |
),
|
| 1693 |
-
|
| 1694 |
-
"
|
| 1695 |
prompt=
|
| 1696 |
"""
|
| 1697 |
-
|
| 1698 |
-
|
| 1699 |
-
|
| 1700 |
-
- **Focus on Core Functionality:** Assign priority levels based on how essential each intents is for the MVP to function and deliver immediate value to users.
|
| 1701 |
-
- **Exclude Non-Critical Considerations:** Do not label intents related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is **NOT** absolutely necessary for the MVP as "high" priority.
|
| 1702 |
-
- **Prioritize Business Value:** Ensure the priority levels align with the business's core objectives and deliver measurable value.
|
| 1703 |
-
- **Minimalistic Approach:** Focus on the least effort required to deliver the most value when assigning priority levels.
|
| 1704 |
-
- **Assign Priority Levels:** Label each development intents as "high," "medium," or "low" priority based on its importance to the MVP's core functionality and business value.
|
| 1705 |
-
|
| 1706 |
-
Objective:
|
| 1707 |
-
Assign a priority level ("high," "medium," or "low") to each development intents , ensuring the output reflects the importance to the MVP's core functionality and business value. Retain all original components in the list.
|
| 1708 |
-
|
| 1709 |
-
Important Notes:
|
| 1710 |
-
- If a component is not directly tied to the core functionality or can be deferred to a later phase, assign it a lower priority ("medium" or "low").
|
| 1711 |
-
- Do not exclude any intents rom the list, even if they are low priority.
|
| 1712 |
-
- Only assign "high" priority to intents that are absolutely necessary for the MVP to function.
|
| 1713 |
|
| 1714 |
-
|
| 1715 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1716 |
|
| 1717 |
-
|
| 1718 |
-
Retain numeric values as-is, without any quotes.
|
| 1719 |
-
Ensure the CSV string is formatted correctly, with commas separating the values and each row represented on a new line.
|
| 1720 |
-
Your response must include every row and correctly reflect the structure and content of the intent list. Just return the CSV text and nothing else. Omit any code guards ```.
|
| 1721 |
""",
|
| 1722 |
-
inputs=["
|
| 1723 |
-
outputs=["
|
| 1724 |
model=ModelType.O1_MINI,
|
| 1725 |
-
description="Step
|
| 1726 |
-
step=
|
| 1727 |
-
sub_step="Step 2.2 : Analyze MVP Components",
|
| 1728 |
ui={
|
| 1729 |
-
"
|
| 1730 |
component_type=UIComponentType.TEXTBOX,
|
| 1731 |
-
label="MVP
|
| 1732 |
lines=20,
|
| 1733 |
interactive=True
|
| 1734 |
),
|
| 1735 |
-
"
|
| 1736 |
-
component_type=UIComponentType.
|
| 1737 |
-
label="MVP
|
| 1738 |
lines=20,
|
| 1739 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1740 |
)
|
| 1741 |
}
|
| 1742 |
),
|
| 1743 |
|
| 1744 |
-
"
|
| 1745 |
prompt=
|
| 1746 |
"""
|
| 1747 |
-
|
| 1748 |
-
|
| 1749 |
-
|
| 1750 |
-
Reread the entire PRD to identify the timelimit of the MVP, then Recalculate the manday estimates for the identified priority development components to ensure they fit within the timeline specified in the Project Requirement Document (PRD) to build the MVP. Adjust development mandays while maintaining feasibility and ensuring core functionality delivery.
|
| 1751 |
-
|
| 1752 |
-
Key Guidelines:
|
| 1753 |
-
1. Convert Time Estimates: Convert all time estimates into raw mandays:
|
| 1754 |
-
- 1 week = 7 mandays
|
| 1755 |
-
- 1 month = 28-31 mandays
|
| 1756 |
-
- If input is in days, use as is.
|
| 1757 |
-
- If input is a range (e.g., 1-2 weeks), use the average (1.5 weeks = 7.5 mandays).
|
| 1758 |
-
2. **Preserve All Components:** Do not remove any components from the list, even if they are low priority.
|
| 1759 |
-
3. **Adjust Mandays Based on Priority:**
|
| 1760 |
-
- For **high priority components**, allocate the majority of mandays (eg: 1-3) to ensure critical functionalities are minimally viable. However , components such as authentication , security , etc. can be set to 0.
|
| 1761 |
-
- For **medium priority components**, allocate minimal mandays (eg: 1-2) or set them to 0, as these can be deferred without impacting core functionalities.
|
| 1762 |
-
- For **low priority components**, set mandays to 0, as these are not essential for the MVP.
|
| 1763 |
-
4. Retain Planning/Testing Components: All identified planning and testing components must be retained in the list but have their mandays set to 0. Do not remove them.
|
| 1764 |
-
5. **Iterative Adjustment:** If the total mandays for the development components still exceed the MVP timeline after the first adjustment, further reduce or set the mandays to 0 on high and medium priority components if necessary until the total fits within the timeline.
|
| 1765 |
-
- **MVP Timeline Constraint:** Ensure the final total mandays do not exceed the MVP timeline.
|
| 1766 |
-
6. Justify Adjustments: Provide a brief explanation for any adjustments made to the mandays, ensuring they align with the timeline and maintain the MVP's core functionality.
|
| 1767 |
|
| 1768 |
-
|
| 1769 |
-
-
|
| 1770 |
-
-
|
| 1771 |
-
-
|
| 1772 |
-
-
|
|
|
|
|
|
|
| 1773 |
|
| 1774 |
-
|
| 1775 |
-
- If the total mandays still exceed the timeline after adjustments, prioritize further reductions in medium priority components while keeping high priority components as intact as possible.
|
| 1776 |
-
- Do not remove any components from the list, even if their mandays are reduced to 0.
|
| 1777 |
""",
|
| 1778 |
-
inputs=["
|
| 1779 |
-
outputs=["
|
| 1780 |
model=ModelType.O1_MINI,
|
| 1781 |
-
description="Step
|
| 1782 |
-
step="Step
|
| 1783 |
-
sub_step="Step 2.3 : Recalculate MVP Mandays",
|
| 1784 |
ui={
|
| 1785 |
-
"
|
| 1786 |
component_type=UIComponentType.TEXTBOX,
|
| 1787 |
-
label="MVP
|
| 1788 |
lines=20,
|
| 1789 |
interactive=True
|
| 1790 |
),
|
| 1791 |
-
"
|
| 1792 |
component_type=UIComponentType.TEXTBOX,
|
| 1793 |
-
label="MVP
|
| 1794 |
-
|
| 1795 |
visible=True
|
| 1796 |
),
|
| 1797 |
-
"
|
| 1798 |
component_type=UIComponentType.MARKDOWN,
|
| 1799 |
-
label="MVP
|
| 1800 |
-
|
| 1801 |
-
|
| 1802 |
)
|
| 1803 |
}
|
| 1804 |
),
|
| 1805 |
-
|
| 1806 |
-
"
|
| 1807 |
prompt=
|
| 1808 |
"""
|
| 1809 |
-
|
| 1810 |
|
| 1811 |
-
|
| 1812 |
-
Read the entire PRD and identify the time constraint ; Recalculate the manday estimates for both development components and intents to ensure the total combined mandays fit within the MVP timeline specified in the Project Requirement Document (PRD). Adjust mandays while maintaining feasibility and ensuring core functionality delivery. Retain all components and intents in the list, even if their mandays are set to 0.
|
| 1813 |
|
| 1814 |
-
|
| 1815 |
-
|
| 1816 |
-
|
| 1817 |
-
|
| 1818 |
-
Total Combined Mandays = Development Components Mandays + Intents Mandays ≤ MVP timeline.
|
| 1819 |
-
Convert Time Estimates:
|
| 1820 |
-
Convert all time estimates into raw mandays:
|
| 1821 |
-
- 1 week = 7 mandays
|
| 1822 |
-
- 1 month = 28-31 mandays
|
| 1823 |
-
- If input is in days, use as is.
|
| 1824 |
-
- If input is a range (e.g., 1-2 weeks), use the average (1.5 weeks = 7.5 mandays).
|
| 1825 |
-
2. Preserve All Components and Intents:
|
| 1826 |
-
3. Do not remove any components or intents from the list, even if their mandays are set to 0.
|
| 1827 |
-
4. Retain all planning and testing components but set their mandays to 0.
|
| 1828 |
-
5. Adjust Mandays Based on Priority:
|
| 1829 |
-
- For high priority, allocate the majority of mandays to ensure critical functionalities are minimally viable. Significant reductions may be necessary for non-core features (e.g., authentication, security).
|
| 1830 |
-
- For medium priority, allocate minimal mandays or set them to 0, as these can be deferred without impacting core functionalities.
|
| 1831 |
-
- For low priority, set mandays to 0, as these are not essential for the MVP.
|
| 1832 |
-
6. Iterative Adjustment:
|
| 1833 |
-
- If the total combined mandays still exceed the MVP timeline after the first adjustment, further reduce mandays for both high and medium priority components and intents until the total fits within the timeline.
|
| 1834 |
-
- Set mandays to 0 for non-essential components and intents if necessary, but do not remove them from the list.
|
| 1835 |
-
7. Strict Calculation for Intents:
|
| 1836 |
-
Properly calculate the total mandays for development components and MVP intents. Ensure the total combined mandays for both development components and MVP intents DO NOT exceed the MVP timeline.
|
| 1837 |
-
8. Justify Adjustments:
|
| 1838 |
-
- Provide a brief explanation for any adjustments made to the mandays, ensuring they align with the timeline and maintain the MVP's core functionality.
|
| 1839 |
|
| 1840 |
-
|
| 1841 |
-
-
|
| 1842 |
-
-
|
| 1843 |
-
-
|
| 1844 |
-
- Retain all components and intents in the list, even if their mandays are set to 0.
|
| 1845 |
-
- Ensure the output is concise and actionable.
|
| 1846 |
|
| 1847 |
-
|
| 1848 |
-
-
|
| 1849 |
-
-
|
| 1850 |
-
|
| 1851 |
-
|
| 1852 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1853 |
model=ModelType.O1_MINI,
|
| 1854 |
-
description="Step
|
| 1855 |
-
step="Step
|
| 1856 |
-
sub_step="Step 2.3 : Recalculate MVP Mandays",
|
| 1857 |
ui={
|
| 1858 |
-
"
|
| 1859 |
component_type=UIComponentType.TEXTBOX,
|
| 1860 |
-
label="
|
| 1861 |
lines=20,
|
| 1862 |
interactive=True
|
| 1863 |
),
|
| 1864 |
-
"
|
| 1865 |
component_type=UIComponentType.TEXTBOX,
|
| 1866 |
-
label="
|
| 1867 |
-
|
| 1868 |
visible=True
|
| 1869 |
),
|
| 1870 |
-
"
|
| 1871 |
component_type=UIComponentType.MARKDOWN,
|
| 1872 |
-
label="
|
| 1873 |
-
|
| 1874 |
-
|
| 1875 |
)
|
| 1876 |
}
|
| 1877 |
),
|
| 1878 |
|
| 1879 |
-
"
|
| 1880 |
prompt=
|
| 1881 |
"""
|
| 1882 |
-
|
| 1883 |
|
| 1884 |
-
|
| 1885 |
-
Structure the output to clearly delineate the two sections while maintaining the original column structure.
|
| 1886 |
|
| 1887 |
-
|
| 1888 |
-
-
|
| 1889 |
-
|
| 1890 |
-
|
| 1891 |
|
| 1892 |
-
|
| 1893 |
-
|
| 1894 |
-
|
|
|
|
| 1895 |
|
| 1896 |
-
|
| 1897 |
-
-
|
| 1898 |
-
-
|
| 1899 |
-
- Include ALL components and NOT change anything.
|
| 1900 |
-
- No empty rows or missing values.
|
| 1901 |
-
- Text values must be in double quotes.
|
| 1902 |
-
- Numbers must not be in quotes.
|
| 1903 |
|
| 1904 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1905 |
""",
|
| 1906 |
-
inputs=[
|
| 1907 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1908 |
model=ModelType.O1_MINI,
|
| 1909 |
-
description="Step
|
| 1910 |
-
step="Step
|
| 1911 |
-
sub_step="Step 2.4 : Generate MVP Mandays",
|
| 1912 |
ui={
|
| 1913 |
-
"
|
| 1914 |
component_type=UIComponentType.TEXTBOX,
|
| 1915 |
-
label="
|
| 1916 |
lines=20,
|
| 1917 |
interactive=True
|
| 1918 |
),
|
| 1919 |
-
"
|
| 1920 |
-
component_type=UIComponentType.
|
| 1921 |
-
label="
|
| 1922 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1923 |
)
|
| 1924 |
}
|
| 1925 |
),
|
| 1926 |
|
| 1927 |
-
"
|
| 1928 |
prompt=
|
| 1929 |
"""
|
| 1930 |
-
|
| 1931 |
|
| 1932 |
-
|
| 1933 |
-
Structure the output to clearly delineate the three sections while maintaining the original column structure.
|
| 1934 |
|
| 1935 |
-
|
| 1936 |
-
-
|
| 1937 |
-
|
| 1938 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1939 |
|
| 1940 |
-
|
| 1941 |
-
|
| 1942 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1943 |
|
| 1944 |
-
|
| 1945 |
-
|
| 1946 |
-
|
| 1947 |
|
| 1948 |
-
|
| 1949 |
-
-
|
| 1950 |
-
-
|
| 1951 |
-
-
|
| 1952 |
-
-
|
| 1953 |
-
-
|
| 1954 |
-
- Numbers must not be in quotes.
|
| 1955 |
|
| 1956 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1957 |
""",
|
| 1958 |
-
inputs=["
|
| 1959 |
-
outputs=["
|
| 1960 |
model=ModelType.O1_MINI,
|
| 1961 |
-
description="Step
|
| 1962 |
-
step="Step
|
| 1963 |
-
sub_step="Step 2.4 : Generate MVP Mandays",
|
| 1964 |
ui={
|
| 1965 |
-
"
|
| 1966 |
component_type=UIComponentType.TEXTBOX,
|
| 1967 |
-
label="
|
| 1968 |
lines=20,
|
| 1969 |
interactive=True
|
| 1970 |
),
|
| 1971 |
-
"
|
| 1972 |
-
component_type=UIComponentType.
|
| 1973 |
-
label="
|
| 1974 |
-
|
| 1975 |
-
visible=True
|
| 1976 |
-
),
|
| 1977 |
-
"mvp_dev_dataframe": UIConfig(
|
| 1978 |
-
component_type=UIComponentType.DATAFRAME,
|
| 1979 |
-
label="MVP Development Components",
|
| 1980 |
-
interactive=True,
|
| 1981 |
visible=True
|
| 1982 |
),
|
| 1983 |
-
"
|
| 1984 |
-
component_type=UIComponentType.
|
| 1985 |
-
label="
|
| 1986 |
-
|
| 1987 |
-
|
| 1988 |
)
|
| 1989 |
}
|
| 1990 |
),
|
|
|
|
| 1124 |
)
|
| 1125 |
}
|
| 1126 |
),
|
| 1127 |
+
|
| 1128 |
+
"analyze_planning_testing_mandays": PromptConfig(
|
| 1129 |
prompt=
|
| 1130 |
"""
|
| 1131 |
+
You are an experienced project manager tasked with analyzing the provided planning and testing mandays estimates. Your goal is to identify the highest priority components that must be completed to build the MVP. Focus on components that deliver **immediate value to users** and are **critical for the core functionality** of the product.
|
|
|
|
|
|
|
| 1132 |
|
| 1133 |
+
Objective:
|
| 1134 |
+
Identify the highest priority planning and testing components that are critical for the MVP's core functionality and deliver immediate value to the business. Exclude all non-critical components that do not directly contribute to the MVP's primary functionality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1135 |
|
| 1136 |
+
Key Guidelines:
|
| 1137 |
+
- Focus on Core Functionality: Only include components that are essential for the MVP to function and deliver immediate value to users.
|
| 1138 |
+
- Exclude Non-Critical Components: Do not include components related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is not absolutely necessary for the MVP.
|
| 1139 |
+
- Prioritize Business Value: Ensure the selected components align with the business's core objectives and deliver measurable value.
|
| 1140 |
+
- Minimalistic Approach: Focus on the least effort required to deliver the most value.
|
| 1141 |
+
|
| 1142 |
+
Output Format Requirements:
|
| 1143 |
+
- Generate a CSV with EXACTLY these column headers: "component,mandays,description"
|
| 1144 |
+
- Each row must have all three columns filled
|
| 1145 |
+
- Numeric values should not be quoted
|
| 1146 |
+
- Text values must be enclosed in double quotes
|
| 1147 |
+
- No empty rows or missing values
|
| 1148 |
+
|
| 1149 |
+
Return only the CSV content, no code blocks or additional text.
|
| 1150 |
""",
|
| 1151 |
+
inputs=["generated_plan_test_mandays"],
|
| 1152 |
+
outputs=["identified_planning_testing_components"],
|
| 1153 |
model=ModelType.O1_MINI,
|
| 1154 |
+
description="Step 2.2 : MVP Plan_Test Analysis",
|
| 1155 |
+
step='Step 2 : Mandays & Quotation',
|
| 1156 |
+
sub_step="Step 2.2 : Analyze MVP Components",
|
| 1157 |
ui={
|
| 1158 |
+
"mvp_planning_testing_prompt_editor": UIConfig(
|
| 1159 |
component_type=UIComponentType.TEXTBOX,
|
| 1160 |
+
label="MVP Plan_Test Analysis Prompt",
|
| 1161 |
lines=20,
|
| 1162 |
interactive=True
|
| 1163 |
),
|
| 1164 |
+
"mvp_planning_testing_dataframe": UIConfig(
|
| 1165 |
+
component_type=UIComponentType.DATAFRAME,
|
| 1166 |
+
label="MVP Plan_Test Analysis Components",
|
| 1167 |
lines=20,
|
| 1168 |
+
interactive=True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1169 |
)
|
| 1170 |
}
|
| 1171 |
),
|
| 1172 |
|
| 1173 |
+
"analyze_development_mandays": PromptConfig(
|
| 1174 |
prompt=
|
| 1175 |
"""
|
| 1176 |
+
You are an experienced project manager tasked with analyzing the provided development mandays estimates. Your goal is to assign a priority level to each development component based on its importance to the MVP's core functionality and business value. Focus exclusively on components that deliver immediate value to users and are critical for the core functionality of the product.
|
|
|
|
|
|
|
| 1177 |
|
| 1178 |
+
Key Guidelines:
|
| 1179 |
+
- **Focus on Core Functionality:** Assign priority levels based on how essential each component is for the MVP to function and deliver immediate value to users.
|
| 1180 |
+
- **Exclude Non-Critical Considerations:** Do not label components related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is **NOT** absolutely necessary for the MVP as "high" priority.
|
| 1181 |
+
- **Prioritize Business Value:** Ensure the priority levels align with the business's core objectives and deliver measurable value.
|
| 1182 |
+
- **Minimalistic Approach:** Focus on the least effort required to deliver the most value when assigning priority levels.
|
| 1183 |
+
- **Assign Priority Levels:** Label each development component as "high," "medium," or "low" priority based on its importance to the MVP's core functionality and business value.
|
|
|
|
| 1184 |
|
| 1185 |
+
Objective:
|
| 1186 |
+
Assign a priority level ("high," "medium," or "low") to each development component, ensuring the output reflects the importance of each component to the MVP's core functionality and business value. Retain all original components in the list.
|
| 1187 |
+
|
| 1188 |
+
Important Notes:
|
| 1189 |
+
- If a component is not directly tied to the core functionality or can be deferred to a later phase, assign it a lower priority ("medium" or "low").
|
| 1190 |
+
- Do not exclude any components from the list, even if they are low priority.
|
| 1191 |
+
- Only assign "high" priority to components that are absolutely necessary for the MVP to function.
|
| 1192 |
+
|
| 1193 |
+
Output Format Requirements:
|
| 1194 |
+
Convert the entire list into a CSV string, ensuring that all rows from the list are included without omission. The CSV should contain the following columns: "component","subcomponent","mandays","description". Follow these rules:
|
| 1195 |
+
|
| 1196 |
+
Enclose all text values, including the column headers, in double quotes ("").
|
| 1197 |
+
Retain numeric values as-is, without any quotes.
|
| 1198 |
+
Ensure the CSV string is formatted correctly, with commas separating the values and each row represented on a new line.
|
| 1199 |
+
Your response must include every row and correctly reflect the structure and content of the intent list. Just return the CSV text and nothing else. Omit any code guards ```.
|
| 1200 |
""",
|
| 1201 |
+
inputs=["generated_dev_mandays"],
|
| 1202 |
+
outputs=["identified_development_components"],
|
| 1203 |
model=ModelType.O1_MINI,
|
| 1204 |
+
description="Step 2.2 : MVP Development Analysis",
|
| 1205 |
+
step="Step 2 : Mandays & Quotation",
|
| 1206 |
+
sub_step="Step 2.2 : Analyze MVP Components",
|
| 1207 |
ui={
|
| 1208 |
+
"mvp_development_prompt_editor": UIConfig(
|
| 1209 |
component_type=UIComponentType.TEXTBOX,
|
| 1210 |
+
label="MVP Development Analysis Prompt",
|
| 1211 |
lines=20,
|
| 1212 |
interactive=True
|
| 1213 |
),
|
| 1214 |
+
"mvp_development_dataframe": UIConfig(
|
| 1215 |
+
component_type=UIComponentType.DATAFRAME,
|
| 1216 |
+
label="MVP Development Analysis Components",
|
| 1217 |
lines=20,
|
| 1218 |
+
interactive=True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1219 |
)
|
| 1220 |
}
|
| 1221 |
),
|
| 1222 |
+
|
| 1223 |
+
"analyze_MVP_intents": PromptConfig(
|
| 1224 |
prompt=
|
| 1225 |
"""
|
| 1226 |
+
You are an experienced project manager tasked with analyzing the provided intents mandays estimates. Your goal is to assign a priority level to each intents based on its importance to the MVP's core functionality and business value. Focus exclusively on intents that deliver immediate value to users and are critical for the core functionality of the product.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1227 |
|
| 1228 |
+
Key Guidelines:
|
| 1229 |
+
- **Focus on Core Functionality:** Assign priority levels based on how essential each intents is for the MVP to function and deliver immediate value to users.
|
| 1230 |
+
- **Exclude Non-Critical Considerations:** Do not label intents related to advanced security, compliance, scalability, authentication, fallback mechanisms, or any feature that is **NOT** absolutely necessary for the MVP as "high" priority.
|
| 1231 |
+
- **Prioritize Business Value:** Ensure the priority levels align with the business's core objectives and deliver measurable value.
|
| 1232 |
+
- **Minimalistic Approach:** Focus on the least effort required to deliver the most value when assigning priority levels.
|
| 1233 |
+
- **Assign Priority Levels:** Label each development intents as "high," "medium," or "low" priority based on its importance to the MVP's core functionality and business value.
|
|
|
|
| 1234 |
|
| 1235 |
+
Objective:
|
| 1236 |
+
Assign a priority level ("high," "medium," or "low") to each development intents , ensuring the output reflects the importance to the MVP's core functionality and business value. Retain all original components in the list.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1237 |
|
| 1238 |
+
Important Notes:
|
| 1239 |
+
- If a component is not directly tied to the core functionality or can be deferred to a later phase, assign it a lower priority ("medium" or "low").
|
| 1240 |
+
- Do not exclude any intents rom the list, even if they are low priority.
|
| 1241 |
+
- Only assign "high" priority to intents that are absolutely necessary for the MVP to function.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1242 |
|
| 1243 |
+
Output Format Requirements:
|
| 1244 |
+
Convert the entire list into a CSV string, ensuring that all rows from the list are included without omission. The CSV should contain the following columns: "intent_type", "intent", and "workflow". Follow these rules:
|
|
|
|
|
|
|
| 1245 |
|
| 1246 |
+
Enclose all text values, including the column headers, in double quotes ("").
|
| 1247 |
+
Retain numeric values as-is, without any quotes.
|
| 1248 |
+
Ensure the CSV string is formatted correctly, with commas separating the values and each row represented on a new line.
|
| 1249 |
+
Your response must include every row and correctly reflect the structure and content of the intent list. Just return the CSV text and nothing else. Omit any code guards ```.
|
| 1250 |
""",
|
| 1251 |
+
inputs=["generated_intent_list"],
|
| 1252 |
+
outputs=["identified_mvp_intents"],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1253 |
model=ModelType.O1_MINI,
|
| 1254 |
+
description="Step 2.2 : MVP Intent Analysis",
|
| 1255 |
+
step='Step 2 : Mandays & Quotation',
|
| 1256 |
+
sub_step="Step 2.2 : Analyze MVP Components",
|
| 1257 |
ui={
|
| 1258 |
+
"mvp_intents_prompt_editor": UIConfig(
|
| 1259 |
component_type=UIComponentType.TEXTBOX,
|
| 1260 |
+
label="MVP Intent Analysis Prompt",
|
| 1261 |
lines=20,
|
| 1262 |
interactive=True
|
| 1263 |
),
|
| 1264 |
+
"mvp_intents_dataframe": UIConfig(
|
| 1265 |
+
component_type=UIComponentType.DATAFRAME,
|
| 1266 |
+
label="MVP Intent Analysis Components",
|
| 1267 |
lines=20,
|
| 1268 |
+
interactive=True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1269 |
)
|
| 1270 |
}
|
| 1271 |
),
|
| 1272 |
|
| 1273 |
+
"recalculate_page_MVP_mandays": PromptConfig(
|
| 1274 |
prompt=
|
| 1275 |
"""
|
| 1276 |
+
Based on the identified priority components from the previous analysis, your task is to recalculate the mandays estimates to ensure they fit within the time given (e.g., days or weeks) in building the MVP mentioned in the Project Requirement Document (PRD).
|
| 1277 |
|
| 1278 |
+
Objective:
|
| 1279 |
+
Reread the entire PRD to identify the timelimit of the MVP, then Recalculate the manday estimates for the identified priority development components to ensure they fit within the timeline specified in the Project Requirement Document (PRD) to build the MVP. Adjust development mandays while maintaining feasibility and ensuring core functionality delivery.
|
| 1280 |
|
| 1281 |
+
Key Guidelines:
|
| 1282 |
+
1. Convert Time Estimates: Convert all time estimates into raw mandays:
|
| 1283 |
+
- 1 week = 7 mandays
|
| 1284 |
+
- 1 month = 28-31 mandays
|
| 1285 |
+
- If input is in days, use as is.
|
| 1286 |
+
- If input is a range (e.g., 1-2 weeks), use the average (1.5 weeks = 7.5 mandays).
|
| 1287 |
+
2. **Preserve All Components:** Do not remove any components from the list, even if they are low priority.
|
| 1288 |
+
3. **Adjust Mandays Based on Priority:**
|
| 1289 |
+
- For **high priority components**, allocate the majority of mandays (eg: 1-3) to ensure critical functionalities are minimally viable. However , components such as authentication , security , etc. can be set to 0.
|
| 1290 |
+
- For **medium priority components**, allocate minimal mandays (eg: 1-2) or set them to 0, as these can be deferred without impacting core functionalities.
|
| 1291 |
+
- For **low priority components**, set mandays to 0, as these are not essential for the MVP.
|
| 1292 |
+
4. Retain Planning/Testing Components: All identified planning and testing components must be retained in the list but have their mandays set to 0. Do not remove them.
|
| 1293 |
+
5. **Iterative Adjustment:** If the total mandays for the development components still exceed the MVP timeline after the first adjustment, further reduce or set the mandays to 0 on high and medium priority components if necessary until the total fits within the timeline.
|
| 1294 |
+
- **MVP Timeline Constraint:** Ensure the final total mandays do not exceed the MVP timeline.
|
| 1295 |
+
6. Justify Adjustments: Provide a brief explanation for any adjustments made to the mandays, ensuring they align with the timeline and maintain the MVP's core functionality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1296 |
|
| 1297 |
+
Output Format Requirements:
|
| 1298 |
+
- Provide a revised list of development components with updated mandays estimates.
|
| 1299 |
+
- Include the "Priority" column for reference.
|
| 1300 |
+
- Include the total mandays for the revised plan and confirm whether it fits within the MVP timeline.
|
| 1301 |
+
- Ensure the output is concise and actionable.
|
| 1302 |
|
| 1303 |
+
Important Notes:
|
| 1304 |
+
- If the total mandays still exceed the timeline after adjustments, prioritize further reductions in medium priority components while keeping high priority components as intact as possible.
|
| 1305 |
+
- Do not remove any components from the list, even if their mandays are reduced to 0.
|
| 1306 |
""",
|
| 1307 |
+
inputs=["identified_planning_testing_components", "identified_development_components" , "generated_prd"],
|
| 1308 |
+
outputs=["revised_mandays_estimates"],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1309 |
model=ModelType.O1_MINI,
|
| 1310 |
+
description="Step 2.3 : MVP Mandays Recalculation",
|
| 1311 |
+
step="Step 2 : Mandays & Quotation",
|
| 1312 |
+
sub_step="Step 2.3 : Recalculate MVP Mandays",
|
| 1313 |
ui={
|
| 1314 |
+
"mandays_recalculation_prompt_editor": UIConfig(
|
| 1315 |
component_type=UIComponentType.TEXTBOX,
|
| 1316 |
+
label="MVP Mandays Recalculation Prompt",
|
| 1317 |
lines=20,
|
| 1318 |
interactive=True
|
| 1319 |
),
|
| 1320 |
+
"page_mandays_recalculation_text": UIConfig(
|
| 1321 |
component_type=UIComponentType.TEXTBOX,
|
| 1322 |
+
label="MVP Mandays Recalculation",
|
| 1323 |
+
interactive=True,
|
| 1324 |
visible=True
|
| 1325 |
),
|
| 1326 |
+
"page_mandays_recalculation_markdown": UIConfig(
|
| 1327 |
component_type=UIComponentType.MARKDOWN,
|
| 1328 |
+
label="MVP Mandays Recalculation",
|
| 1329 |
+
interactive=True,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1330 |
visible=True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1331 |
)
|
| 1332 |
}
|
| 1333 |
),
|
| 1334 |
|
| 1335 |
+
"recalculate_engage_MVP_mandays": PromptConfig(
|
| 1336 |
prompt=
|
| 1337 |
"""
|
| 1338 |
+
Based on the identified priority components and the identified priority intent list from the previous analysis , your task is to recalculate the mandays estimates to ensure they fit within the time given (e.g., days or weeks) in building the MVP mentioned in the Project Requirement Document (PRD).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1339 |
|
| 1340 |
+
Objective:
|
| 1341 |
+
Read the entire PRD and identify the time constraint ; Recalculate the manday estimates for both development components and intents to ensure the total combined mandays fit within the MVP timeline specified in the Project Requirement Document (PRD). Adjust mandays while maintaining feasibility and ensuring core functionality delivery. Retain all components and intents in the list, even if their mandays are set to 0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1342 |
|
| 1343 |
+
Key Guidelines:
|
| 1344 |
+
1. Total Combined Mandays Constraint:
|
| 1345 |
+
The combined total mandays for development components and intents must not exceed MVP timeline.
|
| 1346 |
+
Ensure the total is calculated as:
|
| 1347 |
+
Total Combined Mandays = Development Components Mandays + Intents Mandays ≤ MVP timeline.
|
| 1348 |
+
Convert Time Estimates:
|
| 1349 |
+
Convert all time estimates into raw mandays:
|
| 1350 |
+
- 1 week = 7 mandays
|
| 1351 |
+
- 1 month = 28-31 mandays
|
| 1352 |
+
- If input is in days, use as is.
|
| 1353 |
+
- If input is a range (e.g., 1-2 weeks), use the average (1.5 weeks = 7.5 mandays).
|
| 1354 |
+
2. Preserve All Components and Intents:
|
| 1355 |
+
3. Do not remove any components or intents from the list, even if their mandays are set to 0.
|
| 1356 |
+
4. Retain all planning and testing components but set their mandays to 0.
|
| 1357 |
+
5. Adjust Mandays Based on Priority:
|
| 1358 |
+
- For high priority, allocate the majority of mandays to ensure critical functionalities are minimally viable. Significant reductions may be necessary for non-core features (e.g., authentication, security).
|
| 1359 |
+
- For medium priority, allocate minimal mandays or set them to 0, as these can be deferred without impacting core functionalities.
|
| 1360 |
+
- For low priority, set mandays to 0, as these are not essential for the MVP.
|
| 1361 |
+
6. Iterative Adjustment:
|
| 1362 |
+
- If the total combined mandays still exceed the MVP timeline after the first adjustment, further reduce mandays for both high and medium priority components and intents until the total fits within the timeline.
|
| 1363 |
+
- Set mandays to 0 for non-essential components and intents if necessary, but do not remove them from the list.
|
| 1364 |
+
7. Strict Calculation for Intents:
|
| 1365 |
+
Properly calculate the total mandays for development components and MVP intents. Ensure the total combined mandays for both development components and MVP intents DO NOT exceed the MVP timeline.
|
| 1366 |
+
8. Justify Adjustments:
|
| 1367 |
+
- Provide a brief explanation for any adjustments made to the mandays, ensuring they align with the timeline and maintain the MVP's core functionality.
|
| 1368 |
|
| 1369 |
+
Output Format Requirements:
|
| 1370 |
+
- Provide a revised list of development components and intents with updated mandays estimates.
|
| 1371 |
+
- Include the "Priority" column for reference.
|
| 1372 |
+
- Include the total mandays for the revised plan and confirm whether it fits within the MVP timeline.
|
| 1373 |
+
- Retain all components and intents in the list, even if their mandays are set to 0.
|
| 1374 |
+
- Ensure the output is concise and actionable.
|
| 1375 |
|
| 1376 |
+
Important Notes:
|
| 1377 |
+
- If the total mandays still exceed the timeline after adjustments, prioritize further reductions in medium priority components and intents while keeping high priority components as intact as possible.
|
| 1378 |
+
- Do not remove any components or intents from the list, even if their mandays are reduced to 0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1379 |
""",
|
| 1380 |
+
inputs=["identified_planning_testing_components", "identified_development_components", "identified_mvp_intents", "generated_prd"],
|
| 1381 |
+
outputs=["revised_mandays_estimates"],
|
| 1382 |
model=ModelType.O1_MINI,
|
| 1383 |
+
description="Step 2.3 : MVP Mandays Recalculation",
|
| 1384 |
+
step="Step 2 : Mandays & Quotation",
|
| 1385 |
+
sub_step="Step 2.3 : Recalculate MVP Mandays",
|
| 1386 |
ui={
|
| 1387 |
+
"mandays_recalculation_prompt_editor": UIConfig(
|
| 1388 |
component_type=UIComponentType.TEXTBOX,
|
| 1389 |
+
label="MVP Mandays Recalculation Prompt",
|
| 1390 |
lines=20,
|
| 1391 |
interactive=True
|
| 1392 |
),
|
| 1393 |
+
"engage_mandays_recalculation_text": UIConfig(
|
| 1394 |
component_type=UIComponentType.TEXTBOX,
|
| 1395 |
+
label="MVP Mandays Recalculation",
|
| 1396 |
+
interactive=True,
|
| 1397 |
visible=True
|
| 1398 |
),
|
| 1399 |
+
"engage_mandays_recalculation_markdown": UIConfig(
|
| 1400 |
component_type=UIComponentType.MARKDOWN,
|
| 1401 |
+
label="MVP Mandays Recalculation",
|
| 1402 |
+
interactive=True,
|
| 1403 |
+
visible=True
|
| 1404 |
)
|
| 1405 |
}
|
| 1406 |
),
|
| 1407 |
|
| 1408 |
+
"generate_page_MVP_mandays": PromptConfig(
|
| 1409 |
prompt=
|
| 1410 |
"""
|
| 1411 |
+
Using the revised mandays estimates from the previous step, format the output into two clearly separated CSV sections: one for Planning/Testing Components and another for Development Components.
|
| 1412 |
|
| 1413 |
Objective:
|
| 1414 |
+
Structure the output to clearly delineate the two sections while maintaining the original column structure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1415 |
|
| 1416 |
Output Format Requirements:
|
| 1417 |
+
- First Section - Planning & Testing Components:
|
| 1418 |
+
component,mandays,description
|
| 1419 |
+
"Requirements Analysis",0,"Critical user requirements and system specifications"
|
|
|
|
|
|
|
| 1420 |
|
| 1421 |
+
- Second Section - Development Components:
|
| 1422 |
+
component,subcomponent,mandays,description
|
| 1423 |
+
"Backend","Core API Development",3,"Essential API endpoints for basic functionality"
|
| 1424 |
+
|
| 1425 |
+
Important:
|
| 1426 |
+
- Each section must maintain its original column structure.
|
| 1427 |
+
- Sections MUST be separated by the marker: "---SECTION BREAK---".
|
| 1428 |
+
- Include ALL components and NOT change anything.
|
| 1429 |
+
- No empty rows or missing values.
|
| 1430 |
+
- Text values must be in double quotes.
|
| 1431 |
+
- Numbers must not be in quotes.
|
| 1432 |
+
|
| 1433 |
+
Return only the CSV content with the section break, no additional text or explanations.
|
| 1434 |
""",
|
| 1435 |
+
inputs=["revised_mandays_estimates"],
|
| 1436 |
+
outputs=["generated_MVP_mandays"],
|
| 1437 |
model=ModelType.O1_MINI,
|
| 1438 |
+
description="Step 2.4 : Generate MVP Mandays",
|
| 1439 |
+
step="Step 2 : Mandays & Quotation",
|
| 1440 |
+
sub_step="Step 2.4 : Generate MVP Mandays",
|
| 1441 |
ui={
|
| 1442 |
+
"generated_MVP_mandays_prompt_editor": UIConfig(
|
| 1443 |
component_type=UIComponentType.TEXTBOX,
|
| 1444 |
+
label="MVP Mandays Formatting System Prompt",
|
| 1445 |
lines=20,
|
| 1446 |
interactive=True
|
| 1447 |
),
|
| 1448 |
+
"generated_MVP_mandays_dataframe": UIConfig(
|
| 1449 |
component_type=UIComponentType.DATAFRAME,
|
| 1450 |
+
label="Formatted MVP Mandays",
|
| 1451 |
+
interactive=True,
|
|
|
|
| 1452 |
)
|
| 1453 |
}
|
| 1454 |
),
|
| 1455 |
+
|
| 1456 |
+
"generate_engage_MVP_mandays": PromptConfig(
|
| 1457 |
prompt=
|
| 1458 |
"""
|
| 1459 |
+
Using the revised mandays estimates from the previous step, format the output into three clearly separated CSV sections: one for Planning/Testing Components, one for Development Components, and another for MVP Intents.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1460 |
|
| 1461 |
Objective:
|
| 1462 |
+
Structure the output to clearly delineate the three sections while maintaining the original column structure.
|
| 1463 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1464 |
Output Format Requirements:
|
| 1465 |
+
- First Section - Planning & Testing Components:
|
| 1466 |
+
component,mandays,description
|
| 1467 |
+
"Requirements Analysis",0,"Critical user requirements and system specifications"
|
| 1468 |
|
| 1469 |
+
- Second Section - Development Components:
|
| 1470 |
+
component,subcomponent,mandays,description
|
| 1471 |
+
"Backend","Core API Development",3,"Essential API endpoints for basic functionality"
|
| 1472 |
+
|
| 1473 |
+
- Third Section - MVP Intents:
|
| 1474 |
+
intent_type,intent,workflow,mandays
|
| 1475 |
+
"Single-Step","Create New Order","1. User initiates order creation → 2. Extract order details from user input → 3. Save order to database → 4. Confirm creation to user",0.3
|
| 1476 |
+
|
| 1477 |
+
Important:
|
| 1478 |
+
- Each section must maintain its original column structure.
|
| 1479 |
+
- Sections MUST be separated by the marker: "---SECTION BREAK---".
|
| 1480 |
+
- Include ALL the components and intents.
|
| 1481 |
+
- No empty rows or missing values.
|
| 1482 |
+
- Text values must be in double quotes.
|
| 1483 |
+
- Numbers must not be in quotes.
|
| 1484 |
+
|
| 1485 |
+
Return only the CSV content with the section break, no additional text or explanations.
|
| 1486 |
""",
|
| 1487 |
+
inputs=["revised_mandays_estimates"],
|
| 1488 |
+
outputs=["generated_MVP_mandays"],
|
| 1489 |
model=ModelType.O1_MINI,
|
| 1490 |
+
description="Step 2.4 : Generate MVP Mandays",
|
| 1491 |
step="Step 2 : Mandays & Quotation",
|
| 1492 |
+
sub_step="Step 2.4 : Generate MVP Mandays",
|
| 1493 |
ui={
|
| 1494 |
+
"generated_MVP_mandays_prompt_editor": UIConfig(
|
| 1495 |
component_type=UIComponentType.TEXTBOX,
|
| 1496 |
+
label="MVP Mandays Formatting System Prompt",
|
| 1497 |
lines=20,
|
| 1498 |
interactive=True
|
| 1499 |
),
|
| 1500 |
+
"mvp_plan_test_dataframe": UIConfig(
|
| 1501 |
+
component_type=UIComponentType.DATAFRAME,
|
| 1502 |
+
label="MVP Planning & Testing Components",
|
| 1503 |
+
interactive=True,
|
| 1504 |
+
visible=True
|
| 1505 |
+
),
|
| 1506 |
+
"mvp_dev_dataframe": UIConfig(
|
| 1507 |
+
component_type=UIComponentType.DATAFRAME,
|
| 1508 |
+
label="MVP Development Components",
|
| 1509 |
+
interactive=True,
|
| 1510 |
+
visible=True
|
| 1511 |
+
),
|
| 1512 |
+
"mvp_intents_dataframe": UIConfig(
|
| 1513 |
component_type=UIComponentType.DATAFRAME,
|
| 1514 |
+
label="MVP Intents",
|
| 1515 |
+
interactive=True,
|
| 1516 |
+
visible=True
|
| 1517 |
)
|
| 1518 |
}
|
| 1519 |
),
|
| 1520 |
+
|
| 1521 |
+
"generate_page_MVP_prd": PromptConfig(
|
| 1522 |
prompt=
|
| 1523 |
"""
|
| 1524 |
+
Generate a comprehensive and structured Project Requirement Document (PRD) for a Minimum Viable Product (MVP) using the following inputs:
|
| 1525 |
+
1. **General PRD Guidelines**: Use the provided general PRD as a framework for structure, tone, and level of detail. This includes sections like Introduction, Scope, Functional Requirements, Non-Functional Requirements, Technical Architecture, Workflow, Testing, Deployment, and Appendices.
|
| 1526 |
+
2. **Revised Mandays Estimates**: Incorporate the specific MVP components, including their descriptions, mandays estimates, and functionalities, into the relevant sections of the PRD. Ensure all details are accurately reflected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1527 |
|
| 1528 |
+
Follow these instructions:
|
| 1529 |
+
- Retain ALL specific details, metrics, and constraints from both the general PRD and MVP components.
|
| 1530 |
+
- Pay special attention to the time constraint for building the MVP, as outlined in the inputs.
|
| 1531 |
+
- Do not add any context or assumptions beyond the provided inputs.
|
| 1532 |
+
- Do not exclude any details from the inputs.
|
| 1533 |
+
- Structure the document to ensure clarity, logical flow, and readability and use tabular format whenever possible.
|
| 1534 |
+
- Use the title "Project Requirements" for the document.
|
| 1535 |
|
| 1536 |
+
The output should be a well-organized PRD that combines the general PRD guidelines with the specific MVP components, ensuring alignment with the project's goals and constraints.
|
|
|
|
|
|
|
|
|
|
| 1537 |
""",
|
| 1538 |
+
inputs=["generated_prd" , "generated_MVP_mandays"],
|
| 1539 |
+
outputs=["generated_mvp_prd"],
|
| 1540 |
model=ModelType.O1_MINI,
|
| 1541 |
+
description="Step 3.1 : Generate MVP PRD",
|
| 1542 |
+
step="Step 3 : Final Documentation",
|
|
|
|
| 1543 |
ui={
|
| 1544 |
+
"mvp_prd_prompt_editor": UIConfig(
|
| 1545 |
component_type=UIComponentType.TEXTBOX,
|
| 1546 |
+
label="MVP PRD System Prompt",
|
| 1547 |
lines=20,
|
| 1548 |
interactive=True
|
| 1549 |
),
|
| 1550 |
+
"generated_mvp_prd_text": UIConfig(
|
| 1551 |
+
component_type=UIComponentType.TEXTBOX,
|
| 1552 |
+
label="MVP PRD Output",
|
| 1553 |
lines=20,
|
| 1554 |
+
visible=True
|
| 1555 |
+
),
|
| 1556 |
+
"generated_mvp_prd_markdown": UIConfig(
|
| 1557 |
+
component_type=UIComponentType.MARKDOWN,
|
| 1558 |
+
label="MVP PRD Output",
|
| 1559 |
+
visible=True,
|
| 1560 |
+
show_copy_button=True
|
| 1561 |
)
|
| 1562 |
}
|
| 1563 |
),
|
| 1564 |
|
| 1565 |
+
"generate_engage_MVP_prd": PromptConfig(
|
| 1566 |
prompt=
|
| 1567 |
"""
|
| 1568 |
+
Generate a comprehensive and structured Project Requirement Document (PRD) for a Minimum Viable Product (MVP) using the following inputs:
|
| 1569 |
+
1. **General PRD Guidelines**: Use the provided general PRD as a framework for structure, tone, and level of detail. This includes sections like Introduction, Scope, Functional Requirements, Non-Functional Requirements, Technical Architecture, Workflow, Testing, Deployment, and Appendices.
|
| 1570 |
+
2. **Revised Mandays Estimates**: Incorporate the specific MVP components & intents, including their descriptions, mandays estimates, and functionalities, into the relevant sections of the PRD. Ensure all details are accurately reflected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1571 |
|
| 1572 |
+
Follow these instructions:
|
| 1573 |
+
- Retain ALL specific details, metrics, and constraints from both the general PRD and MVP components.
|
| 1574 |
+
- Pay special attention to the time constraint for building the MVP, as outlined in the inputs.
|
| 1575 |
+
- Do not add any context or assumptions beyond the provided inputs.
|
| 1576 |
+
- Do not exclude any details from the inputs.
|
| 1577 |
+
- Structure the document to ensure clarity, logical flow, and readability and structure tabular format if necessary.
|
| 1578 |
+
- Use the title "Project Requirements" for the document.
|
| 1579 |
|
| 1580 |
+
The output should be a well-organized PRD that combines the general PRD guidelines with the specific MVP components, ensuring alignment with the project's goals and constraints.
|
|
|
|
|
|
|
| 1581 |
""",
|
| 1582 |
+
inputs=["generated_prd" , "generated_MVP_mandays"],
|
| 1583 |
+
outputs=["generated_mvp_prd"],
|
| 1584 |
model=ModelType.O1_MINI,
|
| 1585 |
+
description="Step 3.1 : Generate MVP PRD",
|
| 1586 |
+
step="Step 3 : Final Documentation",
|
|
|
|
| 1587 |
ui={
|
| 1588 |
+
"mvp_prd_prompt_editor": UIConfig(
|
| 1589 |
component_type=UIComponentType.TEXTBOX,
|
| 1590 |
+
label="MVP PRD System Prompt",
|
| 1591 |
lines=20,
|
| 1592 |
interactive=True
|
| 1593 |
),
|
| 1594 |
+
"generated_mvp_prd_text": UIConfig(
|
| 1595 |
component_type=UIComponentType.TEXTBOX,
|
| 1596 |
+
label="MVP PRD Output",
|
| 1597 |
+
lines=20,
|
| 1598 |
visible=True
|
| 1599 |
),
|
| 1600 |
+
"generated_mvp_prd_markdown": UIConfig(
|
| 1601 |
component_type=UIComponentType.MARKDOWN,
|
| 1602 |
+
label="MVP PRD Output",
|
| 1603 |
+
visible=True,
|
| 1604 |
+
show_copy_button=True
|
| 1605 |
)
|
| 1606 |
}
|
| 1607 |
),
|
| 1608 |
+
|
| 1609 |
+
"generate_page_BD_SOW": PromptConfig(
|
| 1610 |
prompt=
|
| 1611 |
"""
|
| 1612 |
+
As an project manager with 20+ years of experience, you are tasked to create a detailed Scope of Work (SOW) document. Analyze the provided project component list and scope document to generate the following sections. Follow the guidelines below to ensure a professional, structured, and client-ready output:
|
| 1613 |
|
| 1614 |
+
### **Scope of Work (SOW)**
|
|
|
|
| 1615 |
|
| 1616 |
+
#### **1. Project Background**
|
| 1617 |
+
- Provide a brief overview of the project, including the context, problem statement, and why the project is being initiated.
|
| 1618 |
+
- Break down key challenges (in bullet point) the company currently facing, quantifying the impacts where possible (e.g., lost revenue, downtime).
|
| 1619 |
+
- Close this section with industry trends or other relevant background information, emphasizing risks of inaction leading to the project, in 2-3 sentences.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1620 |
|
| 1621 |
+
#### **2. Project Objective**
|
| 1622 |
+
- Clearly define the project's primary goals and what constitutes success, using the following structure:
|
| 1623 |
+
- Goals: List specific, measurable goals (e.g., reduce processing time by 20%).
|
| 1624 |
+
- Outcomes: Describe tangible deliverables and metrics for success.
|
|
|
|
|
|
|
| 1625 |
|
| 1626 |
+
#### **3. Project Buyers & Stakeholders**
|
| 1627 |
+
- List key stakeholders involved in the project, e.g. buyers, end-users, and decision-makers.
|
| 1628 |
+
- Identify their name and roles in the project, using a table.
|
| 1629 |
+
|
| 1630 |
+
#### **4. System Flow**
|
| 1631 |
+
- Provide description of how the system components interact, describing what each module does and how it works.
|
| 1632 |
+
- Use one of the following:
|
| 1633 |
+
- Visual Representation: Diagram illustrating workflows or data flows between modules.
|
| 1634 |
+
- Textual Description: Detailed explanation of the processes and transitions
|
| 1635 |
+
- Use bullet point, ensure simplicity and avoid overly technical language.
|
| 1636 |
+
|
| 1637 |
+
#### **5. Modules and Functional Requirements Breakdown**
|
| 1638 |
+
- LEAVE THIS BLANK
|
| 1639 |
+
|
| 1640 |
+
#### **6. Acceptance Criteria**
|
| 1641 |
+
- Define conditions to be met, including specific, measurable criteria for project completion:
|
| 1642 |
+
- Link each deliverable/module to its validation or testing process (e.g., UAT).
|
| 1643 |
+
- Table format with the following column:
|
| 1644 |
+
- Deliverable (e.g. Field Matching Automation module)
|
| 1645 |
+
- Criteria, starting with "able to" (e.g. able to extract, match, and change the case status accordingly)
|
| 1646 |
+
|
| 1647 |
+
#### **7. Assumptions and Pre-requisites**
|
| 1648 |
+
- List all planning-phase assumptions and pre-requisites, grouped into:
|
| 1649 |
+
- Assumptions: Detailed, scenario-based assumptions that the project relies on. Each assumption should:
|
| 1650 |
+
- Reference specific stakeholders (e.g., PWT staff, Mindhive).
|
| 1651 |
+
- Describe specific conditions or expectations (e.g., document quality, workflow stability).
|
| 1652 |
+
- Be written in clear, concise language.
|
| 1653 |
+
- Pre-requisites or dependencies: Conditions that must be met before the project can proceed. Each pre-requisite should:
|
| 1654 |
+
- Be specific and actionable.
|
| 1655 |
+
- Reference who is responsible and what needs to be done.
|
| 1656 |
+
|
| 1657 |
+
#### **8. Proposed Timeline**
|
| 1658 |
+
- Provide a project timeline, including:
|
| 1659 |
+
- Milestone
|
| 1660 |
+
- Expected Date/Duration
|
| 1661 |
+
- Outcome/Deliverable
|
| 1662 |
+
- Use a Gantt chart or table to visualize the timeline.
|
| 1663 |
+
- Ensure the output are clean, organized, and easy to read.
|
| 1664 |
+
|
| 1665 |
+
#### **9. Commercial**
|
| 1666 |
+
Summarize the project's commercial details in the following subsections:
|
| 1667 |
+
- Development Fee: Create a table summarizing the costs for development, including the product, technical work supporting, or other additional services provided
|
| 1668 |
+
- Subscription Fee: If applicable, create a table summarizing subscription fees for system usage.
|
| 1669 |
+
- Payment Terms: Include a text description of payment terms:
|
| 1670 |
+
- Milestones: Specify at which stages payments are due
|
| 1671 |
+
- Invoicing: Define invoicing intervals (e.g., monthly, quarterly) and payment deadlines
|
| 1672 |
+
- Other Terms: Mention late payment fees or additional terms, if applicable
|
| 1673 |
+
- Output Format for tables: {Service}, {Fee} (leave amount blank)
|
| 1674 |
+
|
| 1675 |
+
#### **10. Sign-Off**
|
| 1676 |
+
- Create a professional and formal Sign-Off section to acknowledge and approve the SOW.
|
| 1677 |
+
- Include an statement to clearly communicate that both parties have reviewed and agreed to the SOW.
|
| 1678 |
+
- Provide placeholder for each party (Company):
|
| 1679 |
+
- Signature
|
| 1680 |
+
- Name
|
| 1681 |
+
- Position
|
| 1682 |
+
- Date
|
| 1683 |
+
|
| 1684 |
+
#### **Guidelines**
|
| 1685 |
+
- Use bullet points for clarity.
|
| 1686 |
+
- Keep descriptions concise and client-friendly; avoid technical jargon unless necessary.
|
| 1687 |
+
- Maintain structured sections and tables for readability.
|
| 1688 |
+
|
| 1689 |
+
Expected output should be professional, well-structured, and designed to help clients and stakeholders clearly understand the project scope. I'm going to tip you for a better outcome!
|
| 1690 |
+
""",
|
| 1691 |
+
inputs=[
|
| 1692 |
+
"generated_prd",
|
| 1693 |
+
"generated_plan_test_components",
|
| 1694 |
+
"reformatted_dev_components",
|
| 1695 |
+
"quotation_cost"
|
| 1696 |
+
],
|
| 1697 |
+
outputs=["generated_BD_SOW"],
|
| 1698 |
model=ModelType.O1_MINI,
|
| 1699 |
+
description="Step 3.2 : Generate Business Development SOW",
|
| 1700 |
+
step="Step 3 : Final Documentation",
|
|
|
|
| 1701 |
ui={
|
| 1702 |
+
"BD_SOW_prompt_editor": UIConfig(
|
| 1703 |
component_type=UIComponentType.TEXTBOX,
|
| 1704 |
+
label="BD SOW Generator Prompt",
|
| 1705 |
lines=20,
|
| 1706 |
interactive=True
|
| 1707 |
),
|
| 1708 |
+
"generated_BD_SOW_text": UIConfig(
|
| 1709 |
component_type=UIComponentType.TEXTBOX,
|
| 1710 |
+
label="BD SOW",
|
| 1711 |
+
lines=20,
|
| 1712 |
visible=True
|
| 1713 |
),
|
| 1714 |
+
"generated_BD_SOW_markdown": UIConfig(
|
| 1715 |
component_type=UIComponentType.MARKDOWN,
|
| 1716 |
+
label="BD SOW",
|
| 1717 |
+
visible=True,
|
| 1718 |
+
show_copy_button=True
|
| 1719 |
)
|
| 1720 |
}
|
| 1721 |
),
|
| 1722 |
|
| 1723 |
+
"generate_engage_BD_SOW": PromptConfig(
|
| 1724 |
prompt=
|
| 1725 |
"""
|
| 1726 |
+
As an project manager with 20+ years of experience, you are tasked to create a detailed Scope of Work (SOW) document. Analyze the provided project component list and scope document to generate the following sections. Follow the guidelines below to ensure a professional, structured, and client-ready output:
|
| 1727 |
|
| 1728 |
+
### **Scope of Work (SOW)**
|
|
|
|
| 1729 |
|
| 1730 |
+
#### **1. Project Background**
|
| 1731 |
+
- Provide a brief overview of the project, including the context, problem statement, and why the project is being initiated.
|
| 1732 |
+
- Break down key challenges (in bullet point) the company currently facing, quantifying the impacts where possible (e.g., lost revenue, downtime).
|
| 1733 |
+
- Close this section with industry trends or other relevant background information, emphasizing risks of inaction leading to the project, in 2-3 sentences.
|
| 1734 |
|
| 1735 |
+
#### **2. Project Objective**
|
| 1736 |
+
- Clearly define the project's primary goals and what constitutes success, using the following structure:
|
| 1737 |
+
- Goals: List specific, measurable goals (e.g., reduce processing time by 20%).
|
| 1738 |
+
- Outcomes: Describe tangible deliverables and metrics for success.
|
| 1739 |
|
| 1740 |
+
#### **3. Project Buyers & Stakeholders**
|
| 1741 |
+
- List key stakeholders involved in the project, e.g. buyers, end-users, and decision-makers.
|
| 1742 |
+
- Identify their name and roles in the project, using a table.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1743 |
|
| 1744 |
+
#### **4. System Flow**
|
| 1745 |
+
- Provide description of how the system components interact, describing what each module does and how it works.
|
| 1746 |
+
- Use one of the following:
|
| 1747 |
+
- Visual Representation: Diagram illustrating workflows or data flows between modules.
|
| 1748 |
+
- Textual Description: Detailed explanation of the processes and transitions
|
| 1749 |
+
- Use bullet point, ensure simplicity and avoid overly technical language.
|
| 1750 |
+
|
| 1751 |
+
#### **5. Modules and Functional Requirements Breakdown**
|
| 1752 |
+
- LEAVE THIS BLANK
|
| 1753 |
+
|
| 1754 |
+
#### **6. Acceptance Criteria**
|
| 1755 |
+
- Define conditions to be met, including specific, measurable criteria for project completion:
|
| 1756 |
+
- Link each deliverable/module to its validation or testing process (e.g., UAT).
|
| 1757 |
+
- Table format with the following column:
|
| 1758 |
+
- Deliverable (e.g. Field Matching Automation module)
|
| 1759 |
+
- Criteria, starting with "able to" (e.g. able to extract, match, and change the case status accordingly)
|
| 1760 |
+
|
| 1761 |
+
#### **7. Assumptions and Pre-requisites**
|
| 1762 |
+
- List all planning-phase assumptions and pre-requisites, grouped into:
|
| 1763 |
+
- Assumptions: Detailed, scenario-based assumptions that the project relies on. Each assumption should:
|
| 1764 |
+
- Reference specific stakeholders (e.g., PWT staff, Mindhive).
|
| 1765 |
+
- Describe specific conditions or expectations (e.g., document quality, workflow stability).
|
| 1766 |
+
- Be written in clear, concise language.
|
| 1767 |
+
- Pre-requisites or dependencies: Conditions that must be met before the project can proceed. Each pre-requisite should:
|
| 1768 |
+
- Be specific and actionable.
|
| 1769 |
+
- Reference who is responsible and what needs to be done.
|
| 1770 |
+
|
| 1771 |
+
#### **8. Proposed Timeline**
|
| 1772 |
+
- Provide a project timeline, including:
|
| 1773 |
+
- Milestone
|
| 1774 |
+
- Expected Date/Duration
|
| 1775 |
+
- Outcome/Deliverable
|
| 1776 |
+
- Use a Gantt chart or table to visualize the timeline.
|
| 1777 |
+
- Ensure the output are clean, organized, and easy to read.
|
| 1778 |
+
|
| 1779 |
+
#### **9. Commercial**
|
| 1780 |
+
Summarize the project's commercial details in the following subsections:
|
| 1781 |
+
- Development Fee: Create a table summarizing the costs for development, including the product, technical work supporting, or other additional services provided
|
| 1782 |
+
- Subscription Fee: If applicable, create a table summarizing subscription fees for system usage.
|
| 1783 |
+
- Payment Terms: Include a text description of payment terms:
|
| 1784 |
+
- Milestones: Specify at which stages payments are due
|
| 1785 |
+
- Invoicing: Define invoicing intervals (e.g., monthly, quarterly) and payment deadlines
|
| 1786 |
+
- Other Terms: Mention late payment fees or additional terms, if applicable
|
| 1787 |
+
- Output Format for tables: {Service}, {Fee} (leave amount blank)
|
| 1788 |
+
|
| 1789 |
+
#### **10. Sign-Off**
|
| 1790 |
+
- Create a professional and formal Sign-Off section to acknowledge and approve the SOW.
|
| 1791 |
+
- Include an statement to clearly communicate that both parties have reviewed and agreed to the SOW.
|
| 1792 |
+
- Provide placeholder for each party (Company):
|
| 1793 |
+
- Signature
|
| 1794 |
+
- Name
|
| 1795 |
+
- Position
|
| 1796 |
+
- Date
|
| 1797 |
+
|
| 1798 |
+
#### **Guidelines**
|
| 1799 |
+
- Use bullet points for clarity.
|
| 1800 |
+
- Keep descriptions concise and client-friendly; avoid technical jargon unless necessary.
|
| 1801 |
+
- Maintain structured sections and tables for readability.
|
| 1802 |
+
|
| 1803 |
+
Expected output should be professional, well-structured, and designed to help clients and stakeholders clearly understand the project scope. I'm going to tip you for a better outcome!
|
| 1804 |
""",
|
| 1805 |
+
inputs=[
|
| 1806 |
+
"generated_prd",
|
| 1807 |
+
"generated_plan_test_components",
|
| 1808 |
+
"reformatted_dev_components",
|
| 1809 |
+
"generated_intent_list",
|
| 1810 |
+
"quotation_cost"
|
| 1811 |
+
],
|
| 1812 |
+
outputs=["generated_BD_SOW"],
|
| 1813 |
model=ModelType.O1_MINI,
|
| 1814 |
+
description="Step 3.2 : Generate Business Development SOW",
|
| 1815 |
+
step="Step 3 : Final Documentation",
|
|
|
|
| 1816 |
ui={
|
| 1817 |
+
"BD_SOW_prompt_editor": UIConfig(
|
| 1818 |
component_type=UIComponentType.TEXTBOX,
|
| 1819 |
+
label="BD SOW Generator Prompt",
|
| 1820 |
lines=20,
|
| 1821 |
interactive=True
|
| 1822 |
),
|
| 1823 |
+
"generated_BD_SOW_text": UIConfig(
|
| 1824 |
+
component_type=UIComponentType.TEXTBOX,
|
| 1825 |
+
label="BD SOW",
|
| 1826 |
+
lines=20,
|
| 1827 |
+
visible=True
|
| 1828 |
+
),
|
| 1829 |
+
"generated_BD_SOW_markdown": UIConfig(
|
| 1830 |
+
component_type=UIComponentType.MARKDOWN,
|
| 1831 |
+
label="BD SOW",
|
| 1832 |
+
visible=True,
|
| 1833 |
+
show_copy_button=True
|
| 1834 |
)
|
| 1835 |
}
|
| 1836 |
),
|
| 1837 |
|
| 1838 |
+
"generate_Tech_SOW": PromptConfig(
|
| 1839 |
prompt=
|
| 1840 |
"""
|
| 1841 |
+
As an experienced project manager with over 20 years of expertise, you are tasked to create a detailed Scope of Work (SOW) document in JSON format. The JSON output should contain markdown-formatted strings as values for each section of the SOW. Analyze the provided project component list and scope document to generate the following sections:
|
| 1842 |
|
| 1843 |
+
### **Scope of Work (SOW)**
|
|
|
|
| 1844 |
|
| 1845 |
+
#### **1. Scope Summary**
|
| 1846 |
+
- Provide a concise, high-level overview of the project scope. Divide it into three subsections:
|
| 1847 |
+
- In Scope:
|
| 1848 |
+
- List all deliverables, functionalities, and modules included in the project.
|
| 1849 |
+
- Be specific about what will be developed, implemented, or delivered.
|
| 1850 |
+
- Include MVP components (e.g., basic features, functionality, UI, document processing).
|
| 1851 |
+
- Assumptions:
|
| 1852 |
+
- Highlight key project-specific assumptions that the project relies on.
|
| 1853 |
+
- Dependencies:
|
| 1854 |
+
- List all internal and external dependencies required for the project's success.
|
| 1855 |
+
- Include any third-party integrations, resources, or timelines that the project depends on.
|
| 1856 |
|
| 1857 |
+
#### **2. Modules and Functional Requirements Breakdown**
|
| 1858 |
+
- Break down the project into modules or components.
|
| 1859 |
+
- Prsent the details in a succinct and client-friendly table with the following column:
|
| 1860 |
+
- Module
|
| 1861 |
+
ii. Functionalities/Features
|
| 1862 |
+
iii. Notes for any special considerations or constraints (e.g., 'Supports files up to 100MB').
|
| 1863 |
+
- Use clear, concise, non-technical language. (e.g., 'Drag-and-drop support for PDFs, Excel, CSV; progress indicators'). Avoid excessive detail.
|
| 1864 |
+
- Include MVP components as part of the breakdown and provide clear functionalities related to those (e.g., basic document upload, UI features, data processing).
|
| 1865 |
|
| 1866 |
+
#### **3. Out of Scope**
|
| 1867 |
+
- Explicitly define what is excluded from the project's scope. This may include any functionalities, tasks, or deliverables.
|
| 1868 |
+
- Ensure clarity to prevent future misunderstandings.
|
| 1869 |
|
| 1870 |
+
#### **4. System Flow**
|
| 1871 |
+
- Provide a detailed, step-by-step description of how the system components interact.
|
| 1872 |
+
- For each component or module:
|
| 1873 |
+
- Describe what it does and how it works, including both success and unsuccessful scenarios
|
| 1874 |
+
- Explain how it interacts with other components
|
| 1875 |
+
- Include MVP-related components in the system flow, describing their function and interaction within the MVP's framework.
|
|
|
|
| 1876 |
|
| 1877 |
+
Output Requirements:
|
| 1878 |
+
Just return the json object and nothing else, omit code guards ```, where each key represents a section of the SOW, and the value is a markdown-formatted string for that section.
|
| 1879 |
+
Use clear, concise, and client-friendly language. Avoid excessive technical jargon unless necessary.
|
| 1880 |
+
Example JSON Output:
|
| 1881 |
+
{
|
| 1882 |
+
"scope_summary": <markdown content>,
|
| 1883 |
+
"modules_and_functional_requirements": <markdown content>,
|
| 1884 |
+
"out_of_scope": <markdown content>,
|
| 1885 |
+
"system_flow": <markdown content>
|
| 1886 |
+
}
|
| 1887 |
""",
|
| 1888 |
+
inputs=["generated_plan_test_components","reformatted_dev_components","generated_MVP_mandays"],
|
| 1889 |
+
outputs=["generated_Tech_SOW"],
|
| 1890 |
model=ModelType.O1_MINI,
|
| 1891 |
+
description="Step 3.3 : Generate Technical SOW",
|
| 1892 |
+
step="Step 3 : Final Documentation",
|
|
|
|
| 1893 |
ui={
|
| 1894 |
+
"Tech_SOW_prompt_editor": UIConfig(
|
| 1895 |
component_type=UIComponentType.TEXTBOX,
|
| 1896 |
+
label="Technical SOW Generator Prompt",
|
| 1897 |
lines=20,
|
| 1898 |
interactive=True
|
| 1899 |
),
|
| 1900 |
+
"generated_Tech_SOW_text": UIConfig(
|
| 1901 |
+
component_type=UIComponentType.TEXTBOX,
|
| 1902 |
+
label="Technical SOW",
|
| 1903 |
+
lines=20,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1904 |
visible=True
|
| 1905 |
),
|
| 1906 |
+
"generated_Tech_SOW_markdown": UIConfig(
|
| 1907 |
+
component_type=UIComponentType.MARKDOWN,
|
| 1908 |
+
label="Technical SOW",
|
| 1909 |
+
visible=True,
|
| 1910 |
+
show_copy_button=True
|
| 1911 |
)
|
| 1912 |
}
|
| 1913 |
),
|
sample_permutations.py
CHANGED
|
@@ -66,14 +66,17 @@ GENERATE_MVP_MANDAYS_FUNCTIONS = {
|
|
| 66 |
|
| 67 |
GENERATE_FINAL_DOCUMENT_FUNCTIONS = {
|
| 68 |
ConfigurationType.CHATBOT: [
|
|
|
|
| 69 |
"generate_engage_BD_SOW",
|
| 70 |
"generate_Tech_SOW"
|
| 71 |
],
|
| 72 |
ConfigurationType.DOCUMENT_EXTRACTION: [
|
|
|
|
| 73 |
"generate_page_BD_SOW",
|
| 74 |
"generate_Tech_SOW"
|
| 75 |
],
|
| 76 |
ConfigurationType.CHATBOT_AND_DOC: [
|
|
|
|
| 77 |
"generate_engage_BD_SOW",
|
| 78 |
"generate_Tech_SOW"
|
| 79 |
]
|
|
|
|
| 66 |
|
| 67 |
GENERATE_FINAL_DOCUMENT_FUNCTIONS = {
|
| 68 |
ConfigurationType.CHATBOT: [
|
| 69 |
+
"generate_engage_MVP_prd",
|
| 70 |
"generate_engage_BD_SOW",
|
| 71 |
"generate_Tech_SOW"
|
| 72 |
],
|
| 73 |
ConfigurationType.DOCUMENT_EXTRACTION: [
|
| 74 |
+
"generate_page_MVP_prd",
|
| 75 |
"generate_page_BD_SOW",
|
| 76 |
"generate_Tech_SOW"
|
| 77 |
],
|
| 78 |
ConfigurationType.CHATBOT_AND_DOC: [
|
| 79 |
+
"generate_engage_MVP_prd",
|
| 80 |
"generate_engage_BD_SOW",
|
| 81 |
"generate_Tech_SOW"
|
| 82 |
]
|