Google Form -> EDSL
This notebook provides example EDSL code for converting a non-EDSL survey into in an EDSL survey. This can be useful for accessing EDSL’s built-in methods for analyzing survey data, and extending it with responses simulated with AI agents and diverse large language models.
EDSL is an open-source library for simulating surveys, experiments and other research with AI agents and large language models. Before running the code below, please ensure that you have installed the EDSL library and either activated remote inference from your Coop account or stored API keys for the language models that you want to use with EDSL. Please also see our documentation page for tips and tutorials on getting started using EDSL.
Designing the task as an EDSL survey
We design the task as an EDSL survey about the survey to be converted: a series of questions prompting a language model to read and reformat the contents of a given survey. The formatted responses of the language model are readily usable components of a new EDSL survey that can be administered to AI agents and/or human audiences.
Creating a meta-survey
We start by selecting appropriate question types for reformatting the contents of a given survey. EDSL comes with many common question types that we can choose from based on the form of the response that we want to get back from a model: multiple choice, checkbox, free text, linear scale, etc.
Here we use QuestionList
to return information about all the questions in the survey at once, as a list. We create a sequence of questions, using the response to one question as an input to the next question. This step-wise approach can improve performance by allowing a model to focus on distinct tasks, and also allow us to pinpoint modifications to instructions as needed (some models will perform better and need fewer instructions than others). Note that we use a {{ placeholder }}
for
the text of the survey to be reformatted that we want to add to the initial question, which allows us to reuse it with other content (e.g., another survey):
[1]:
from edsl import QuestionList
First we ask the model to return just the questions from the survey:
[2]:
q1 = QuestionList(
question_name="q_text",
question_text="""
You are being asked to extract questions from the text of a survey.
Read the text and then return a list of all the questions in the
order that you find them. Return only the list of questions.
Survey: {{ text }}
"""
)
Next we ask the model to format the questions as dictionaries, and specify the question text and type:
[3]:
q2 = QuestionList(
question_name="q_type",
question_text="""
Now create a dictionary for each question, using keys 'question_text' and 'question_type'.
The value for 'question_text' is the question text you already identified.
The value for 'question_type' should be the most appropriate of the following types:
'multiple_choice', 'checkbox', 'linear_scale' or 'free_text'.
Return only the list of dictionaries you have created, with the 2 key/value pairs for each question.
"""
)
Next we ask the model to add the question options (if any):
[4]:
q3 = QuestionList(
question_name="q_options",
question_text="""
Now add a key 'question_options' to each dictionary for all questions that are not free text,
with a value that is a list of the answer options for the question.
Preserve any integer options as integers, not strings.
If there are labels for linear scale answer options then add another key 'option_labels'
with a value that is a dictionary: the keys are the relevant integers and the values are the labels.
Return only the list of dictionaries you have created with all relevant key/value pairs for each question.
"""
)
Finally, we ask the model to give each question a name:
[5]:
q4 = QuestionList(
question_name="q_name",
question_text="""
Now add a key 'question_name' to each dictionary.
The value should be a unique short pythonic string.
Return only the list of dictionaries that you have created,
with all the key/value pairs for each question.
"""
)
Next we combine the questions into a Survey
in order to administer them together. We add a “memory” of each prior question in the survey so that the model will have the context and its answers on hand when answering each successive question:
[6]:
from edsl import Survey
[7]:
survey = Survey(questions = [q1, q2, q3, q4]).set_full_memory_mode()
Adding content to questions
Next we create a Scenario
object for the contents of a (non-EDSL) survey to be inserted in the first question. This allows us to reuse the questions with other content. Learn more about using scenarios to scale data labeling and other tasks.
Here we create a scenario for a Google Form (a customer feedback survey) that we have stored as a publicly-accessible PDF at the Coop.
Code for posting a PDF to the Coop (rerun with your own file):
[8]:
from edsl import FileStore
fs = FileStore("customer_feedback_survey.pdf") # file type is automatically inferred
info = fs.push()
info
[8]:
{'description': 'File: customer_feedback_survey.pdf',
'object_type': 'scenario',
'url': 'https://www.expectedparrot.com/content/eeb73f0d-c6fd-4e4f-8551-f6ead6d5750d',
'uuid': 'eeb73f0d-c6fd-4e4f-8551-f6ead6d5750d',
'version': '0.1.39.dev2',
'visibility': 'unlisted'}
Retrieving a file (replace with UUID of any desired object at Coop):
[9]:
pdf_file = FileStore.pull(info["uuid"])
Creating a scenario for the content:
[10]:
from edsl import Scenario
[11]:
s = Scenario({"text":pdf_file})
Selecting language models
EDSL works with many popular language models that we can select to use in generating survey responses. You can provide your own API keys for models or activate remote inference to run surveys at the Expected Parrot server with any available models. Learn more about working with language models and using remote inference.
[12]:
from edsl import ModelList, Model
To see a list of all available models:
[13]:
# Model.available()
Here we select several models to compare their responses:
[14]:
models = ModelList(
Model(m) for m in ["gemini-1.5-flash", "gpt-4o", "claude-3-5-sonnet-20240620"]
)
Running a survey
Next we add the scenario and models to the survey and run it. This generates a dataset of Results
that we can access with built-in methods for analysis. Learn more about working with results.
[15]:
results = survey.by(s).by(models).run()
Job UUID | 634ad26d-dd10-4d9b-bbbb-3917ec94771b |
Progress Bar URL | https://www.expectedparrot.com/home/remote-job-progress/634ad26d-dd10-4d9b-bbbb-3917ec94771b |
Error Report URL | https://www.expectedparrot.com/home/remote-inference/error/8d776101-4b08-460f-8826-8ccab571ffc4 |
Results UUID | dc50baae-a147-4213-abcb-78fab8dea081 |
Results URL | None |
To see a list of all the components of the results that have been generated:
[16]:
results.columns
[16]:
0 | |
---|---|
0 | agent.agent_instruction |
1 | agent.agent_name |
2 | answer.q_name |
3 | answer.q_options |
4 | answer.q_text |
5 | answer.q_type |
6 | comment.q_name_comment |
7 | comment.q_options_comment |
8 | comment.q_text_comment |
9 | comment.q_type_comment |
10 | generated_tokens.q_name_generated_tokens |
11 | generated_tokens.q_options_generated_tokens |
12 | generated_tokens.q_text_generated_tokens |
13 | generated_tokens.q_type_generated_tokens |
14 | iteration.iteration |
15 | model.frequency_penalty |
16 | model.logprobs |
17 | model.maxOutputTokens |
18 | model.max_tokens |
19 | model.model |
20 | model.presence_penalty |
21 | model.stopSequences |
22 | model.temperature |
23 | model.topK |
24 | model.topP |
25 | model.top_logprobs |
26 | model.top_p |
27 | prompt.q_name_system_prompt |
28 | prompt.q_name_user_prompt |
29 | prompt.q_options_system_prompt |
30 | prompt.q_options_user_prompt |
31 | prompt.q_text_system_prompt |
32 | prompt.q_text_user_prompt |
33 | prompt.q_type_system_prompt |
34 | prompt.q_type_user_prompt |
35 | question_options.q_name_question_options |
36 | question_options.q_options_question_options |
37 | question_options.q_text_question_options |
38 | question_options.q_type_question_options |
39 | question_text.q_name_question_text |
40 | question_text.q_options_question_text |
41 | question_text.q_text_question_text |
42 | question_text.q_type_question_text |
43 | question_type.q_name_question_type |
44 | question_type.q_options_question_type |
45 | question_type.q_text_question_type |
46 | question_type.q_type_question_type |
47 | raw_model_response.q_name_cost |
48 | raw_model_response.q_name_one_usd_buys |
49 | raw_model_response.q_name_raw_model_response |
50 | raw_model_response.q_options_cost |
51 | raw_model_response.q_options_one_usd_buys |
52 | raw_model_response.q_options_raw_model_response |
53 | raw_model_response.q_text_cost |
54 | raw_model_response.q_text_one_usd_buys |
55 | raw_model_response.q_text_raw_model_response |
56 | raw_model_response.q_type_cost |
57 | raw_model_response.q_type_one_usd_buys |
58 | raw_model_response.q_type_raw_model_response |
59 | scenario.text |
We can filter, sort, select and print components in a table:
[17]:
(
results
.sort_by("model")
.select("model", "q_name") #"q_text", "q_type", "q_options", "q_name")
)
[17]:
model.model | answer.q_name | |
---|---|---|
0 | claude-3-5-sonnet-20240620 | [{'question_text': 'How many times have you visited our website in the past month?', 'question_type': 'multiple_choice', 'question_options': [0, 1, 2, 3, 4, '5 or more'], 'question_name': 'visit_frequency'}, {'question_text': 'How easy was it to find the information you were looking for?', 'question_type': 'linear_scale', 'question_options': [1, 2, 3, 4, 5], 'option_labels': {'1': 'Very difficult', '5': 'Very easy'}, 'question_name': 'info_findability'}, {'question_text': 'How would you rate the overall design and layout of our website?', 'question_type': 'linear_scale', 'question_options': [1, 2, 3, 4, 5], 'option_labels': {'1': 'Poor', '5': 'Excellent'}, 'question_name': 'design_rating'}, {'question_text': 'Did you encounter any technical issues while using our website?', 'question_type': 'multiple_choice', 'question_options': ['Yes', 'No'], 'question_name': 'technical_issues'}, {'question_text': 'How likely are you to recommend our website to others?', 'question_type': 'linear_scale', 'question_options': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'option_labels': {'0': 'Not at all likely', '10': 'Extremely likely'}, 'question_name': 'recommendation_likelihood'}, {'question_text': 'What is your primary reason for visiting our website?', 'question_type': 'multiple_choice', 'question_options': ['Information seeking', 'Product purchase', 'Customer support', 'General browsing', 'Other'], 'question_name': 'visit_reason'}, {'question_text': 'How satisfied are you with the content available on our website?', 'question_type': 'linear_scale', 'question_options': [1, 2, 3, 4, 5], 'option_labels': {'1': 'Very dissatisfied', '5': 'Very satisfied'}, 'question_name': 'content_satisfaction'}, {'question_text': "How does our website compare to similar websites you've used?", 'question_type': 'multiple_choice', 'question_options': ['Much worse', 'Somewhat worse', 'About the same', 'Somewhat better', 'Much better'], 'question_name': 'website_comparison'}, {'question_text': 'What additional features or information would you like to see on our website?', 'question_type': 'free_text', 'question_name': 'desired_features'}, {'question_text': 'Do you have any other comments or suggestions for improving our website?', 'question_type': 'free_text', 'question_name': 'additional_feedback'}] |
1 | gemini-1.5-flash | [{'question_text': 'Email', 'question_type': 'free_text', 'question_name': 'email'}, {'question_text': 'How did you first hear about our company?', 'question_type': 'free_text', 'question_name': 'hear_about'}, {'question_text': 'Which of the following services have you used?', 'question_type': 'checkbox', 'question_options': ['service1', 'service2', 'service3'], 'question_name': 'used_services'}, {'question_text': 'On a scale from 1 to 5, how satisfied are you with our customer service?', 'question_type': 'linear_scale', 'question_options': [1, 2, 3, 4, 5], 'option_labels': {'1': 'Very dissatisfied', '2': 'Dissatisfied', '3': 'Neutral', '4': 'Satisfied', '5': 'Very satisfied'}, 'question_name': 'customer_satisfaction'}, {'question_text': 'How many times have you purchased from us in the past year?', 'question_type': 'free_text', 'question_name': 'purchase_frequency'}, {'question_text': 'Please provide any additional comments or suggestions you have.', 'question_type': 'free_text', 'question_name': 'comments'}] |
2 | gpt-4o | nan |
Creating a new EDSL survey
Now we can construct a new EDSL survey with the reformatted components of the original survey. This is done by creating Question
objects with the question components, passing them to a new Survey
, and then optionally designing and assigning AI agents to answer the survey.
Here we select one of the model’s responses to use:
[18]:
from edsl import Question
[19]:
questions_list = results.filter("model.model == 'claude-3-5-sonnet-20240620'").select("q_name").to_list()[0]
questions_list
[19]:
[{'question_text': 'How many times have you visited our website in the past month?',
'question_type': 'multiple_choice',
'question_options': [0, 1, 2, 3, 4, '5 or more'],
'question_name': 'visit_frequency'},
{'question_text': 'How easy was it to find the information you were looking for?',
'question_type': 'linear_scale',
'question_options': [1, 2, 3, 4, 5],
'option_labels': {'1': 'Very difficult', '5': 'Very easy'},
'question_name': 'info_findability'},
{'question_text': 'How would you rate the overall design and layout of our website?',
'question_type': 'linear_scale',
'question_options': [1, 2, 3, 4, 5],
'option_labels': {'1': 'Poor', '5': 'Excellent'},
'question_name': 'design_rating'},
{'question_text': 'Did you encounter any technical issues while using our website?',
'question_type': 'multiple_choice',
'question_options': ['Yes', 'No'],
'question_name': 'technical_issues'},
{'question_text': 'How likely are you to recommend our website to others?',
'question_type': 'linear_scale',
'question_options': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'option_labels': {'0': 'Not at all likely', '10': 'Extremely likely'},
'question_name': 'recommendation_likelihood'},
{'question_text': 'What is your primary reason for visiting our website?',
'question_type': 'multiple_choice',
'question_options': ['Information seeking',
'Product purchase',
'Customer support',
'General browsing',
'Other'],
'question_name': 'visit_reason'},
{'question_text': 'How satisfied are you with the content available on our website?',
'question_type': 'linear_scale',
'question_options': [1, 2, 3, 4, 5],
'option_labels': {'1': 'Very dissatisfied', '5': 'Very satisfied'},
'question_name': 'content_satisfaction'},
{'question_text': "How does our website compare to similar websites you've used?",
'question_type': 'multiple_choice',
'question_options': ['Much worse',
'Somewhat worse',
'About the same',
'Somewhat better',
'Much better'],
'question_name': 'website_comparison'},
{'question_text': 'What additional features or information would you like to see on our website?',
'question_type': 'free_text',
'question_name': 'desired_features'},
{'question_text': 'Do you have any other comments or suggestions for improving our website?',
'question_type': 'free_text',
'question_name': 'additional_feedback'}]
[20]:
edsl_questions = [Question(**q) for q in questions_list]
edsl_questions
[20]:
[Question('multiple_choice', question_name = """visit_frequency""", question_text = """How many times have you visited our website in the past month?""", question_options = [0, 1, 2, 3, 4, '5 or more']),
Question('linear_scale', question_name = """info_findability""", question_text = """How easy was it to find the information you were looking for?""", question_options = [1, 2, 3, 4, 5], option_labels = {1: 'Very difficult', 5: 'Very easy'}),
Question('linear_scale', question_name = """design_rating""", question_text = """How would you rate the overall design and layout of our website?""", question_options = [1, 2, 3, 4, 5], option_labels = {1: 'Poor', 5: 'Excellent'}),
Question('multiple_choice', question_name = """technical_issues""", question_text = """Did you encounter any technical issues while using our website?""", question_options = ['Yes', 'No']),
Question('linear_scale', question_name = """recommendation_likelihood""", question_text = """How likely are you to recommend our website to others?""", question_options = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], option_labels = {0: 'Not at all likely', 10: 'Extremely likely'}),
Question('multiple_choice', question_name = """visit_reason""", question_text = """What is your primary reason for visiting our website?""", question_options = ['Information seeking', 'Product purchase', 'Customer support', 'General browsing', 'Other']),
Question('linear_scale', question_name = """content_satisfaction""", question_text = """How satisfied are you with the content available on our website?""", question_options = [1, 2, 3, 4, 5], option_labels = {1: 'Very dissatisfied', 5: 'Very satisfied'}),
Question('multiple_choice', question_name = """website_comparison""", question_text = """How does our website compare to similar websites you've used?""", question_options = ['Much worse', 'Somewhat worse', 'About the same', 'Somewhat better', 'Much better']),
Question('free_text', question_name = """desired_features""", question_text = """What additional features or information would you like to see on our website?"""),
Question('free_text', question_name = """additional_feedback""", question_text = """Do you have any other comments or suggestions for improving our website?""")]
[21]:
new_survey = Survey(edsl_questions)
We can inspect the survey that has been created:
[22]:
new_survey
[22]:
Survey # questions: 10; question_name list: ['visit_frequency', 'info_findability', 'design_rating', 'technical_issues', 'recommendation_likelihood', 'visit_reason', 'content_satisfaction', 'website_comparison', 'desired_features', 'additional_feedback'];
option_labels | question_type | question_name | question_text | question_options | |
---|---|---|---|---|---|
0 | nan | multiple_choice | visit_frequency | How many times have you visited our website in the past month? | [0, 1, 2, 3, 4, '5 or more'] |
1 | {1: 'Very difficult', 5: 'Very easy'} | linear_scale | info_findability | How easy was it to find the information you were looking for? | [1, 2, 3, 4, 5] |
2 | {1: 'Poor', 5: 'Excellent'} | linear_scale | design_rating | How would you rate the overall design and layout of our website? | [1, 2, 3, 4, 5] |
3 | nan | multiple_choice | technical_issues | Did you encounter any technical issues while using our website? | ['Yes', 'No'] |
4 | {0: 'Not at all likely', 10: 'Extremely likely'} | linear_scale | recommendation_likelihood | How likely are you to recommend our website to others? | [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
5 | nan | multiple_choice | visit_reason | What is your primary reason for visiting our website? | ['Information seeking', 'Product purchase', 'Customer support', 'General browsing', 'Other'] |
6 | {1: 'Very dissatisfied', 5: 'Very satisfied'} | linear_scale | content_satisfaction | How satisfied are you with the content available on our website? | [1, 2, 3, 4, 5] |
7 | nan | multiple_choice | website_comparison | How does our website compare to similar websites you've used? | ['Much worse', 'Somewhat worse', 'About the same', 'Somewhat better', 'Much better'] |
8 | nan | free_text | desired_features | What additional features or information would you like to see on our website? | nan |
9 | nan | free_text | additional_feedback | Do you have any other comments or suggestions for improving our website? | nan |
Designing AI agents
EDSL comes with methods for designing AI agent personas for language models to use in answering questions. An Agent
is created by passing a dictionary of relevant traits
. It can then be assigned to a survey using the by()
method when the survey is run (the same as we do with scenarios and models).
We can import existing data to create agents representing audiences of interest, or use EDSL to generate personas:
[23]:
q_personas = QuestionList(
question_name="personas",
question_text="Draft 5 diverse personas for customers of a landscape business in New England capable of answering a feedback survey."
)
If we do not specify a model to use in running the question, the default model GPT 4 preview is used:
[24]:
personas = q_personas.run().select("personas").to_list()[0]
personas
Job UUID | 924b27e8-246f-4150-aad6-fe330babfb51 |
Progress Bar URL | https://www.expectedparrot.com/home/remote-job-progress/924b27e8-246f-4150-aad6-fe330babfb51 |
Error Report URL | None |
Results UUID | c932353c-a2e8-45e5-9b76-f3b1c48476c9 |
Results URL | None |
[24]:
['Retired couple looking to enhance their garden for leisure',
'Young family seeking a safe play area for children',
'Eco-conscious homeowner interested in sustainable landscaping',
'Busy professional wanting low-maintenance yard solutions',
'Small business owner needing attractive commercial property landscaping']
Note that the personas can be (much) longer and include key/value pairs for any desired traits; we keep it simple here for demonstration purposes. Here we pass the personas to a list of agents and have them answer the survey:
[25]:
from edsl import AgentList, Agent
[26]:
agents = AgentList(
Agent(
traits = {"persona":p},
instruction = """
You are answering a customer feedback survey for a landscaping business that you have engaged in the past.
Your answers are completely confidential.
"""
)
for p in personas
)
[27]:
new_results = new_survey.by(agents).by(models).run()
Job UUID | 076e2692-53da-4493-83fa-53ef51e6ea8a |
Progress Bar URL | https://www.expectedparrot.com/home/remote-job-progress/076e2692-53da-4493-83fa-53ef51e6ea8a |
Error Report URL | None |
Results UUID | 24f26640-029f-4d02-ab61-3fd7fa3db457 |
Results URL | None |
[28]:
(
new_results
.sort_by("model", "persona")
.select("model", "persona", "answer.*")
)
[28]:
model.model | agent.persona | answer.technical_issues | answer.visit_reason | answer.recommendation_likelihood | answer.website_comparison | answer.info_findability | answer.visit_frequency | answer.desired_features | answer.additional_feedback | answer.design_rating | answer.content_satisfaction | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | claude-3-5-sonnet-20240620 | Busy professional wanting low-maintenance yard solutions | No | Information seeking | 7 | Somewhat better | 4 | 1 | As a busy professional looking for low-maintenance yard solutions, I would appreciate seeing the following additional features or information on your website: 1. A dedicated section for low-maintenance landscaping options and designs. 2. Detailed information about drought-resistant and native plants that require minimal care. 3. Time estimates for various services, so I can better plan around my busy schedule. 4. A gallery of before-and-after photos showcasing low-maintenance yard transformations. 5. Maintenance schedules and tips for different types of low-maintenance landscapes. 6. Information about automated irrigation systems and smart landscaping technology. 7. A blog with quick, easy yard care tips for busy homeowners. 8. Pricing guides or packages specifically tailored for low-maintenance options. 9. Customer testimonials from other busy professionals who have used your services. 10. An easy-to-use online booking system for consultations or services. | As a busy professional, I appreciate websites that are streamlined and easy to navigate. I would suggest making sure your site has clear sections for different services, especially highlighting low-maintenance options. It would be great to see a gallery of before/after photos to quickly visualize potential results. Also, an online scheduling tool for consultations would be very convenient for those of us with packed schedules. Lastly, perhaps include some tips or a blog section about maintaining a beautiful yard with minimal time investment - that kind of content would be really valuable for someone in my position. | 3 | 4 |
1 | claude-3-5-sonnet-20240620 | Eco-conscious homeowner interested in sustainable landscaping | No | Information seeking | 8 | Somewhat better | 4 | 2 | As an eco-conscious homeowner interested in sustainable landscaping, I would love to see the following additional features or information on your website: 1. A dedicated section on sustainable landscaping practices and how your company implements them. 2. Information about native plant species you use and their benefits for local ecosystems. 3. Details on water-saving techniques and drought-resistant landscaping options. 4. A showcase of eco-friendly materials used in hardscaping, such as permeable pavers or recycled materials. 5. Information on organic lawn care and pest management methods you employ. 6. Case studies or before-and-after examples of sustainable landscaping projects you've completed. 7. A blog or resources section with tips for homeowners on maintaining an eco-friendly landscape. 8. Information about any certifications or partnerships your company has related to environmental stewardship. 9. Details on how you minimize waste and practice responsible disposal methods. 10. A calculator or tool to help estimate the environmental impact and potential savings of sustainable landscaping choices. | As an eco-conscious homeowner interested in sustainable landscaping, I would suggest adding more content and resources related to environmentally-friendly landscaping practices. It would be great to see: 1. A dedicated section on sustainable landscaping techniques, such as xeriscaping, native plant gardening, and water conservation methods. 2. Information about organic lawn care and pesticide-free gardening alternatives. 3. A guide to selecting native plants that support local ecosystems and require less maintenance. 4. Tips for creating wildlife-friendly gardens that attract pollinators and birds. 5. Resources on composting and natural soil improvement techniques. 6. Showcase examples of successful sustainable landscaping projects you've completed for other clients. 7. Information about any eco-friendly certifications or partnerships your company has. 8. A blog or articles section with regular updates on sustainable landscaping trends and tips. 9. Clear labeling of eco-friendly products and services you offer. 10. A calculator or tool to help homeowners estimate water savings or environmental impact of different landscaping choices. | 3 | 3 |
2 | claude-3-5-sonnet-20240620 | Retired couple looking to enhance their garden for leisure | No | Information seeking | 8 | About the same | 4 | 1 | As a retired couple interested in enhancing our garden for leisure, we would appreciate seeing the following additional features or information on your website: 1. A gallery of garden designs specifically tailored for retirees or seniors, focusing on low-maintenance options and accessible layouts. 2. Information about plants that are easy to care for and suitable for older gardeners who may have limited mobility or energy. 3. Tips and advice for creating relaxing seating areas or peaceful nooks within the garden. 4. Details about services you offer that cater to older clients, such as raised bed installations or ergonomic tool recommendations. 5. Case studies or testimonials from other retired clients, showcasing how you've helped transform their gardens. 6. A section on how to attract wildlife like birds and butterflies to create a more vibrant and enjoyable outdoor space. 7. Information about water features that are both aesthetically pleasing and low-maintenance. 8. Guidance on creating shade in the garden for comfortable outdoor relaxation during warmer months. 9. A blog or resources section with articles on gardening for health and well-being, particularly for seniors. 10. Clear pricing information or the option to request a quote tailored for retirees' budgets and needs. | As a retired couple interested in enhancing our garden, we found your website to be quite informative overall. However, we do have a few suggestions that might make it even more useful for customers like us: 1. It would be helpful to have a section specifically tailored to low-maintenance gardening ideas for seniors or retirees. We're looking for beautiful outdoor spaces that don't require too much physical effort to maintain. 2. Perhaps you could include more before-and-after photos of garden transformations. This would give us a better idea of what's possible for our own space. 3. A FAQ section addressing common concerns for older homeowners (like accessibility, safety features in garden design, etc.) would be appreciated. 4. It might be nice to have a blog or articles section with seasonal gardening tips, especially for our climate zone. 5. Lastly, we'd love to see some examples of garden designs that incorporate areas for relaxation and entertaining, as we enjoy spending time outdoors with our friends and family. | 4 | 3 |
3 | claude-3-5-sonnet-20240620 | Small business owner needing attractive commercial property landscaping | No | Information seeking | 8 | Somewhat better | 4 | 1 | As a small business owner looking for commercial property landscaping, I would appreciate seeing the following additional features or information on your website: 1. A dedicated section for commercial landscaping services, separate from residential offerings. 2. A portfolio or gallery showcasing your previous commercial landscaping projects, ideally categorized by business type (e.g., retail, office parks, industrial). 3. Information about sustainable and low-maintenance landscaping options that could help reduce long-term costs. 4. Details about your maintenance services and packages for ongoing care of commercial properties. 5. Case studies or testimonials specifically from other small business owners or commercial property managers. 6. A guide or FAQ section addressing common concerns and questions related to commercial landscaping. 7. Information about any eco-friendly practices or certifications your company has. 8. An easy-to-use quote request form specifically for commercial projects. 9. Details about your licensing, insurance, and any relevant certifications for commercial work. 10. A blog or resources section with tips for maintaining curb appeal for businesses and the benefits of professional landscaping for commercial properties. | As a small business owner focused on maintaining an attractive commercial property, I would suggest adding a section to your website specifically tailored to commercial landscaping services. It would be helpful to see examples of your work on other business properties, information about maintenance contracts, and details on how you can enhance curb appeal for commercial clients. Additionally, including case studies or testimonials from other business owners could be valuable. Perhaps you could also add a feature that allows potential clients to easily request a quote or consultation for commercial landscaping projects directly through the website. | 4 | 3 |
4 | claude-3-5-sonnet-20240620 | Young family seeking a safe play area for children | No | Information seeking | 8 | Somewhat better | 4 | 2 | As a young family looking for a safe play area for our children, I would love to see more information on your website about child-friendly landscaping options. Some suggestions: 1. A dedicated section on creating safe play areas in yards, including recommended materials for ground cover (like rubber mulch or artificial turf) and safe plant choices. 2. Examples or case studies of family-friendly landscape designs you've completed, with before and after photos. 3. Information about fencing options to create secure play spaces. 4. Details on low-maintenance lawn alternatives that can withstand active play. 5. Tips for incorporating fun, natural play elements like stepping stones, small hills, or child-sized hideaways into landscaping. 6. A guide on poisonous plants to avoid in family yards. 7. Ideas for edible landscaping that's safe for kids, like berry bushes or herb gardens. 8. Information on eco-friendly pest control methods safe for children and pets. 9. A blog with seasonal tips for maintaining a family-friendly yard. 10. A gallery showcasing play equipment integration into landscaping designs. | As a young family looking for a safe play area for our children, I think it would be really helpful if your website had a section specifically focused on child-friendly landscaping options. Maybe you could include photos and descriptions of play areas you've designed, with information about safe materials and plants to use around kids. It would also be great to see some testimonials from other families about how your landscaping has enhanced their outdoor space for children. Additionally, having an easy way to schedule a consultation specifically to discuss child-safe yard designs would be appreciated. | 4 | 4 |
5 | gemini-1.5-flash | Busy professional wanting low-maintenance yard solutions | No | Information seeking | 7 | Somewhat better | 4 | 1 | I'd appreciate seeing more examples of low-maintenance landscaping designs. Specifically, I'd like to see photos and descriptions of xeriscaping options, drought-tolerant plants suitable for my region (please specify region options!), and hardscaping ideas that minimize upkeep. A section dedicated to explaining the long-term cost savings associated with low-maintenance landscaping would also be very helpful. Finally, a clearer outline of your service packages and pricing, especially those tailored to low-maintenance solutions, would be beneficial. | The website is generally easy to navigate. However, for a busy professional like myself, I'd appreciate a more prominent section showcasing low-maintenance landscaping options. Perhaps a dedicated page or filterable options within the services section highlighting drought-tolerant plants, artificial turf, or other solutions requiring minimal upkeep. A quick visual comparison of these options would also be helpful. | 4 | 3 |
6 | gemini-1.5-flash | Eco-conscious homeowner interested in sustainable landscaping | No | Information seeking | 8 | Somewhat better | 4 | 2 | I'd love to see more information on your sustainable landscaping practices. Specifically, details on the types of native plants you use, your water conservation strategies (e.g., drought-tolerant landscaping, greywater systems), and your commitment to reducing pesticide and herbicide use. Perhaps a case study or photo gallery showcasing completed projects that highlight these eco-friendly aspects would be beneficial. Also, information on your sourcing of materials – are they locally sourced and sustainably harvested? Finally, a section dedicated to explaining the long-term environmental benefits of choosing your landscaping services would be very helpful. | Yes, I do. While the website is visually appealing, I'd love to see more emphasis on your sustainable and eco-friendly practices. Perhaps a dedicated section showcasing your use of native plants, water-wise landscaping techniques, and commitment to reducing your carbon footprint. Including case studies or before-and-after photos of projects highlighting these aspects would be very persuasive. Also, a list of the specific certifications or affiliations you hold related to sustainable landscaping would build trust and credibility. Finally, a blog or resource section with articles on water conservation in landscaping, native plant benefits, or composting would be a great way to engage potential clients who share my values. | 4 | 4 |
7 | gemini-1.5-flash | Retired couple looking to enhance their garden for leisure | No | Information seeking | 7 | Somewhat better | 4 | 2 | We really enjoyed browsing your website, but a few additions would make it even better for us. As retired folks, we're particularly interested in: * **More detailed before & after photos:** Larger, higher-resolution images showing the transformation of different garden styles would be fantastic. We'd love to see examples of projects similar in scale to ours (perhaps smaller, manageable gardens). * **Client testimonials specifically focused on leisure/relaxation aspects:** While we appreciate general testimonials, seeing comments from other retirees about how the landscaping improved their enjoyment of their garden would be very persuasive. Things like "easy maintenance," "perfect for relaxing," or "great for entertaining grandchildren" would be particularly relevant. * **A clearer explanation of different maintenance packages:** We're looking for low-maintenance options, so a breakdown of what's included in each maintenance plan (watering, weeding, pruning frequency, etc.) would be helpful. Perhaps a visual guide showing the level of maintenance associated with different plant choices. * **A dedicated section on senior-friendly design features:** This could include information about ergonomic considerations (e.g., comfortable seating areas, accessible pathways), low-maintenance plant selections, and water-wise options. | The website is generally easy to navigate, but I think a dedicated "Before & After" gallery showcasing completed projects would be very appealing. We're retired and spend a lot of time thinking about our garden, so seeing the transformation of similar-sized gardens would be incredibly helpful in visualizing the potential of our own space. Perhaps even categorizing the galleries by garden style (e.g., cottage garden, modern, etc.) would be beneficial. | 4 | 3 |
8 | gemini-1.5-flash | Small business owner needing attractive commercial property landscaping | No | Information seeking | 7 | Somewhat better | 3 | 1 | I'd appreciate seeing more detailed examples of commercial landscaping projects, specifically focusing on smaller businesses like mine. A portfolio with photos showcasing before & after shots, along with a brief description of the client's needs and the solutions implemented would be very helpful. Also, a section detailing different maintenance packages and their pricing tiers would be beneficial for budgeting purposes. Finally, client testimonials specifically from other small business owners would add a lot of credibility. | While the website is generally easy to navigate, I think adding a dedicated portfolio section showcasing *commercial* landscaping projects would be beneficial. Many of the images currently seem residential. Seeing examples of work similar to what I need (landscaping for a small business) would be very persuasive. Perhaps categorizing projects by business type (e.g., retail, office, restaurant) would also be helpful. | 4 | 3 |
9 | gemini-1.5-flash | Young family seeking a safe play area for children | No | Information seeking | 7 | Somewhat better | 3 | 1 | It would be great to see more photos and videos showcasing completed projects, especially those that highlight safe play areas for children. Things like examples of soft landscaping (to avoid hard falls), clearly defined play zones separate from other areas, and features like small, contained vegetable gardens that kids could help with would be really appealing. Maybe even a section with testimonials from families with young children about their positive experiences. Finally, a clearer breakdown of pricing options and packages tailored to creating child-friendly outdoor spaces would be very helpful. | While the website is easy to navigate, it would be helpful to have a section dedicated to showcasing projects specifically designed with children's safety in mind. Perhaps a gallery of play areas, with features highlighted like soft surfaces, age-appropriate equipment, and secure fencing. This would really help families like ours visualize the possibilities and feel confident in choosing a landscaper who understands our needs. | 3 | 3 |
10 | gpt-4o | Busy professional wanting low-maintenance yard solutions | No | Information seeking | 8 | Somewhat better | 4 | 1 | As a busy professional looking for low-maintenance yard solutions, I would appreciate seeing more information on your website about low-maintenance landscaping options. It would be helpful to have detailed descriptions of services like drought-resistant plants, automated irrigation systems, and easy-care landscaping designs. Additionally, having a section with estimated costs and maintenance time for different types of projects would be beneficial. A blog or resource section with tips on maintaining a low-maintenance yard would also be a great addition. Lastly, an online tool or quiz to help determine the best low-maintenance options based on my specific needs and environment would be very useful. | I appreciate the overall design of your website, but I think it could be more user-friendly for someone like me who is always on the go. It would be helpful to have a dedicated section for low-maintenance yard solutions, possibly with examples or packages that cater specifically to busy professionals. Additionally, a streamlined process for booking consultations or services online would be great, as it would save me time. A clear FAQ section focused on maintenance tips and service expectations would also be beneficial. | 4 | 4 |
11 | gpt-4o | Eco-conscious homeowner interested in sustainable landscaping | No | Information seeking | 8 | Somewhat better | 4 | 2 | I would appreciate more information on sustainable landscaping practices and how your services align with those principles. It would be great to see detailed case studies or examples of eco-friendly projects you've completed. Additionally, having a section that highlights native plants and their benefits would be helpful. A blog or resource center with tips on how to maintain a sustainable garden would also be a valuable addition. Finally, a tool or guide for calculating the environmental impact or benefits of different landscaping options could be very informative. | I appreciate the focus on sustainability in your landscaping services, but I think the website could highlight this aspect more prominently. It would be great to see more detailed information about your eco-friendly practices and any certifications or partnerships you have related to sustainable landscaping. Additionally, including a blog or resources section with tips on sustainable gardening and landscaping would be beneficial. This could help customers like me who are interested in eco-conscious practices to make informed decisions. Lastly, ensuring that the website is easy to navigate and mobile-friendly would enhance the overall user experience. | 4 | 4 |
12 | gpt-4o | Retired couple looking to enhance their garden for leisure | No | Information seeking | 9 | Somewhat better | 4 | 1 | As a retired couple focused on enhancing our garden for leisure, we would appreciate seeing more detailed information on plant care and maintenance tips tailored for different seasons. Additionally, it would be helpful to have a section dedicated to garden design ideas specifically for creating relaxing and leisurely spaces. Virtual garden planning tools or a gallery showcasing before-and-after transformations could also inspire us. Lastly, including a blog or video series featuring expert advice on gardening for retirees would be a wonderful addition. | Overall, we found your website quite user-friendly, but there are a few areas where it could be improved to better cater to customers like us. It would be helpful to have more detailed descriptions and visual examples of the different landscaping styles and services you offer. A section dedicated to garden ideas for leisure, perhaps with tips for retired individuals or those looking to create a relaxing outdoor space, would be a wonderful addition. Additionally, an easy-to-navigate gallery with before-and-after photos of past projects could provide inspiration and confidence in your work. Lastly, ensuring that contact information and service areas are prominently displayed would make it easier for potential clients to reach out. | 4 | 4 |
13 | gpt-4o | Small business owner needing attractive commercial property landscaping | No | Information seeking | 8 | Somewhat better | 4 | 1 | As a small business owner, I would appreciate seeing more detailed portfolios of past projects, especially those similar to commercial properties. It would also be helpful to have a section dedicated to the types of businesses you've worked with and any specific landscaping solutions tailored for commercial needs. Additionally, a cost estimator tool or a clear breakdown of pricing options would be beneficial for budgeting purposes. Lastly, testimonials from other business clients and a FAQ section addressing common commercial landscaping concerns would be valuable. | I found your website to be quite informative, but there are a few areas where it could be improved for a better user experience. Firstly, having a portfolio section with before-and-after photos of your completed projects would be very helpful to visualize the quality of your work. Additionally, incorporating client testimonials or case studies could provide more insight into the experience and satisfaction of past clients. It would also be beneficial to have a dedicated section that outlines the specific services you offer for commercial properties, as this would help me quickly identify if you cater to my business needs. Lastly, ensuring that the website is mobile-friendly would make it easier to browse on-the-go. Overall, these enhancements could make the website more engaging and informative for potential clients like myself. | 4 | 4 |
14 | gpt-4o | Young family seeking a safe play area for children | No | Information seeking | 8 | Somewhat better | 4 | 1 | As a young family interested in creating a safe play area for our children, it would be great to see more information on child-friendly landscaping options. Some features that would be helpful include: 1. **Safety Tips**: Guidelines on creating safe play areas, including surface materials and plant choices. 2. **Design Ideas**: Inspiration galleries specifically for family-friendly yards. 3. **Plant Recommendations**: Information on non-toxic plants and trees that are safe for children. 4. **Maintenance Advice**: Tips on maintaining a yard that is safe and enjoyable for kids. 5. **Interactive Tools**: Virtual design tools to help visualize play areas or garden layouts. 6. **Testimonials**: Stories or reviews from other families who have created similar spaces. 7. **Expert Blog**: Articles or videos from experts on landscaping for families with young children. | I found your website quite user-friendly, but having a section dedicated to family-friendly landscaping ideas or safety tips for play areas would be really helpful. It would make it easier for families like ours to find relevant information and get inspired for our own projects. Additionally, including more visuals or videos showcasing completed projects could give a better sense of what to expect. | 4 | 4 |
Posting to the Coop
The Coop is a platform for creating, storing and sharing LLM-based research. It is fully integrated with EDSL and accessible from your workspace or Coop account page. Learn more about creating an account and using the Coop.
Here we demonstrate how to post this notebook:
[29]:
from edsl import Notebook
[30]:
n = Notebook(path = "google_form_to_edsl.ipynb")
[31]:
info = n.push(description = "Example code for using EDSL to convert a non-EDSL survey into EDSL", visibility = "public")
info
[31]:
{'description': 'Example code for using EDSL to convert a non-EDSL survey into EDSL',
'object_type': 'notebook',
'url': 'https://www.expectedparrot.com/content/3de426ce-e5a4-4434-ad01-3d91eb0e183b',
'uuid': '3de426ce-e5a4-4434-ad01-3d91eb0e183b',
'version': '0.1.39.dev2',
'visibility': 'public'}
Updating an opject at the Coop:
[32]:
n = Notebook(path = "google_form_to_edsl.ipynb") # resave
[33]:
n.patch(uuid = info["uuid"], value = n)
[33]:
{'status': 'success'}