- label: 'STEP 1: Refine Initial Description'
type: group
steps:
- type: ask
param: description
message: 'Please provide a brief description of the software you want to design:'
- label: REFINE DESCRIPTION ITERATIVELY
steps:
- type: gpt
prompt: >
Refine the description: "{{description}}" and consider these user
comments: "{{userComments}}". Output a more structured and clear
description. Limit the response to 500 words unless requested
otherwise.
param: refinedDescription
- message: >
Refined Description:
{{refinedDescription}}
Provide comments or fragments to refine the description. If you're
satisfied, type **Done**.
param: userComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{userComments}} != done'
type: jump
to: REFINE DESCRIPTION ITERATIVELY
type: group
- label: FINALIZE REFINED DESCRIPTION
type: calc
func: set
param: finalDescription
value: '{{refinedDescription}}'
format: ''
- type: say
message: 'finalDescription: {{finalDescription}}'
- label: 'STEP 2: GENERATE NAMES'
steps:
- prompt: >-
Based on this description: "{{finalDescription}}", generate 5 creative
and eye-catching software names as a JSON array.
- Respond with a JSON array consisting of five strings.
- Write nothing other than the JSON.
- Wrap your JSON response in a code block.
JSON:
param: nameList
silent: true
type: gpt
isolated: true
- type: calc
func: extract-json
to: nameList
param: nameList
index: ''
- param: selectedIndex
message: >
The AI generated the following names:
{{nameList}}
Please enter the number corresponding to your preferred name (e.g., 1
for the first name, 2 for the second, etc.):
options:
- label: 1️⃣
value: '0'
- label: 2️⃣
value: '1'
- label: 3️⃣
value: '2'
- label: 4️⃣
value: '3'
- label: 5️⃣
value: '4'
- $custom
default: '1'
vision:
enabled: false
mode: area
hint: ''
send: true
type: ask
optionsInvalid: false
- type: group
steps:
- type: ask
param: chosenName
message: Please provide a custom name
options: null
default: ''
vision:
enabled: false
mode: area
hint: ''
send: true
condition: '{{selectedIndex-option}} = $custom'
label: CUSTOM NAME
- type: calc
func: set
param: chosenName
format: ''
value: '{{nameList.{{selectedIndex}}}}'
condition: '{{selectedIndex-option}} != $custom'
type: group
- label: 'STEP 3: Define User Personas'
steps:
- prompt: >
Using the software description "{{finalDescription}}" and the name
"{{chosenName}}", draft user personas for the software. Keep each
persona concise and no longer than 1000 words unless requested
otherwise.
param: userPersonas
type: gpt
- label: REFINE PERSONAS ITERATIVELY
steps:
- message: >
User Personas:
{{userPersonas}}
Provide comments to refine the personas. If you're satisfied, type
**Done**.
param: personaComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{personaComments}} != done'
prompt: >
Refine the user personas: "{{userPersonas}}" based on these
comments: "{{personaComments}}".
type: gpt
param: userPersonas
- condition: '{{personaComments}} != done'
type: jump
to: REFINE PERSONAS ITERATIVELY
type: group
- label: FINALIZE PERSONAS
param: finalPersonas
value: '{{userPersonas}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 4: Conduct Market and Competitive Analysis'
steps:
- prompt: >
Perform a market and competitive analysis for the software named
"{{chosenName}}" targeting these user personas: "{{finalPersonas}}". The
analysis should include key insights about competitors and market
trends.
param: marketAnalysis
type: gpt
- label: REFINE MARKET ANALYSIS ITERATIVELY
steps:
- message: >
Market Analysis:
{{marketAnalysis}}
Provide comments to refine the analysis. If you're satisfied, type
**Done**.
param: marketComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{marketComments}} != done'
prompt: >
Refine the market analysis: "{{marketAnalysis}}" based on these
comments: "{{marketComments}}".
type: gpt
param: marketAnalysis
- condition: '{{marketComments}} != done'
type: jump
to: REFINE MARKET ANALYSIS ITERATIVELY
type: group
- label: FINALIZE MARKET ANALYSIS
param: finalMarketAnalysis
value: '{{marketAnalysis}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 5: Create Pitch Deck'
steps:
- prompt: >
Create an outline for a pitch deck based on the description
"{{finalDescription}}", personas "{{finalPersonas}}", and analysis
"{{finalMarketAnalysis}}". Limit the response to key bullet points.
param: pitchDeck
type: gpt
- label: REFINE PITCH DECK ITERATIVELY
steps:
- message: >
Pitch Deck Outline:
{{pitchDeck}}
Provide comments to refine the pitch deck. If you're satisfied, type
**Done**.
param: pitchDeckComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{pitchDeckComments}} != done'
prompt: >
Refine the pitch deck outline: "{{pitchDeck}}" based on these
comments: "{{pitchDeckComments}}".
type: gpt
param: pitchDeck
- condition: '{{pitchDeckComments}} != done'
type: jump
to: REFINE PITCH DECK ITERATIVELY
type: group
- label: FINALIZE PITCH DECK
param: finalPitchDeck
value: '{{pitchDeck}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 6: Outline User Flows'
steps:
- prompt: >
Based on the personas "{{finalPersonas}}" and the description
"{{finalDescription}}", outline user flows for the software.
param: userFlows
type: gpt
- label: REFINE USER FLOWS ITERATIVELY
steps:
- message: >
User Flows:
{{userFlows}}
Provide comments to refine the flows. If you're satisfied, type
**Done**.
param: flowComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{flowComments}} != done'
prompt: >
Refine the user flows: "{{userFlows}}" based on these comments:
"{{flowComments}}".
type: gpt
param: userFlows
- condition: '{{flowComments}} != done'
type: jump
to: REFINE USER FLOWS ITERATIVELY
type: group
- label: FINALIZE USER FLOWS
param: finalUserFlows
value: '{{userFlows}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 7: Develop Storyboards'
steps:
- prompt: |
Create detailed storyboards for the user flows: "{{finalUserFlows}}".
param: storyboards
type: gpt
- label: REFINE STORYBOARDS ITERATIVELY
steps:
- message: >
Storyboards:
{{storyboards}}
Provide comments to refine the storyboards. If you're satisfied,
type **Done**.
param: storyboardComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{storyboardComments}} != done'
prompt: >
Refine the storyboards: "{{storyboards}}" based on these comments:
"{{storyboardComments}}".
type: gpt
param: storyboards
- condition: '{{storyboardComments}} != done'
type: jump
to: REFINE STORYBOARDS ITERATIVELY
type: group
- label: FINALIZE STORYBOARDS
param: finalStoryboards
value: '{{storyboards}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 8: Define System Functions and Pages'
steps:
- prompt: >
Generate a detailed list of system functions and pages based on the
storyboards "{{finalStoryboards}}".
param: systemFunctions
type: gpt
- label: REFINE SYSTEM FUNCTIONS ITERATIVELY
steps:
- message: >
System Functions:
{{systemFunctions}}
Provide comments to refine the functions. If you're satisfied, type
**Done**.
param: functionComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{functionComments}} != done'
prompt: >
Refine the system functions: "{{systemFunctions}}" based on these
comments: "{{functionComments}}".
type: gpt
param: systemFunctions
- condition: '{{functionComments}} != done'
type: jump
to: REFINE SYSTEM FUNCTIONS ITERATIVELY
type: group
- label: FINALIZE SYSTEM FUNCTIONS
param: finalSystemFunctions
value: '{{systemFunctions}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 9: Plan Development Sprints'
steps:
- prompt: >
Plan development sprints with 10 phases based on the system functions
"{{finalSystemFunctions}}".
param: sprintPlan
type: gpt
- label: REFINE SPRINT PLAN ITERATIVELY
steps:
- message: >
Sprint Plan:
{{sprintPlan}}
Provide comments to refine the plan. If you're satisfied, type
**Done**.
param: sprintComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{sprintComments}} != done'
prompt: >
Refine the sprint plan: "{{sprintPlan}}" based on these comments:
"{{sprintComments}}".
type: gpt
param: sprintPlan
- condition: '{{sprintComments}} != done'
type: jump
to: REFINE SPRINT PLAN ITERATIVELY
type: group
- label: FINALIZE SPRINT PLAN
param: finalSprintPlan
value: '{{sprintPlan}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 9A: ARCH AND COMPONENTS'
steps:
- prompt: >
Recommend SPA/GUI layout and component architecture based on the system
functions "{{finalSystemFunctions}}" and Sprint plan
{{finalSprintPlan}}.
param: archPlan
type: gpt
- label: REFINE ARCH PLAN ITERATIVELY
steps:
- message: >
System Architecture Plan:
{{archPlan}}
Provide comments to refine the plan. If you're satisfied, type
**Done**.
param: archComments
options:
- label: Done
value: done
- $custom
type: ask
- condition: '{{archComments}} != done'
prompt: >
Refine the sprint plan: "{{archPlan}}" based on these comments:
"{{archComments}}".
type: gpt
param: sprintPlan
- condition: '{{sprintComments}} != done'
type: jump
to: REFINE ARCH PLAN ITERATIVELY
type: group
- label: FINALIZE ARCH PLAN
param: finalArchPlan
value: '{{archPlan}}'
type: calc
func: set
format: ''
type: group
- label: 'STEP 10: Finalize Workflow'
steps:
- message: >-
🎉 Your software design workflow is complete! Below are the final
outputs:
- **Refined Description**:
{{finalDescription}}
- **Chosen Name**:
{{chosenName}}
- **User Personas**:
{{finalPersonas}}
- **Market and Competitive Analysis**:
{{finalMarketAnalysis}}
- **Pitch Deck Outline**:
{{finalPitchDeck}}
- **User Flows**:
{{finalUserFlows}}
- **Storyboards**:
{{finalStoryboards}}
- **System Functions and Pages**:
{{finalSystemFunctions}}
- **Development Sprint Plan**:
{{finalSprintPlan}}
- **System Architecture and GUI":
{{finalArchPlan}}
type: say
- message: >
Do you want to save this output for future use? Select **Yes** to export
as a file or **No** to finish.
options:
- label: 'Yes'
value: export
- label: 'No'
value: done
param: saveDecision
type: ask
- type: calc
func: set
param: final
format: ''
value: >-
🎉 Your software design workflow is complete! Below are the final
outputs:
- **Refined Description**:
{{finalDescription}}
- **Chosen Name**:
{{chosenName}}
- **User Personas**:
{{finalPersonas}}
- **Market and Competitive Analysis**:
{{finalMarketAnalysis}}
- **Pitch Deck Outline**:
{{finalPitchDeck}}
- **User Flows**:
{{finalUserFlows}}
- **Storyboards**:
{{finalStoryboards}}
- **System Functions and Pages**:
{{finalSystemFunctions}}
- **Development Sprint Plan**:
{{finalSprintPlan}}
- **System Architecture and GUI":
{{finalArchPlan}}
- condition: '{{saveDecision}} = export'
format: markdown
content: |
## Software Design Workflow Outputs
### Refined Description
{{finalDescription}}
### Chosen Name
{{chosenName}}
### User Personas
{{finalPersonas}}
### Market and Competitive Analysis
{{finalMarketAnalysis}}
### Pitch Deck Outline
{{finalPitchDeck}}
### User Flows
{{finalUserFlows}}
### Storyboards
{{finalStoryboards}}
### System Functions and Pages
{{finalSystemFunctions}}
### Development Sprint Plan
{{finalSprintPlan}}
filename: software_design_workflow_output.md
type: export
what: param
param: final
- message: >-
Thank you for using the Software Design Workflow! Your outputs have been
saved. 🚀
type: say
type: group
This automation command is created by a community member. HARPA AI team does not audit community commands.
Please review the command carefully and only install if you trust the creator.
All rights reserved © HARPA AI TECHNOLOGIES LLC, 2021 — 2025
Designed and engineered in Finland 🇫🇮