Evaluating job posts
This notebook provides sample code for conducting a text analysis using EDSL, an open-source library for simulating surveys, experiments and other research with AI agents and large language models.
Using a dataset of job posts as an example, we demonstrate how to:
Import data into EDSL
Create questions about the data
Design an AI agent to answer the questions
Select a language model to generate responses
Analyze results as a formatted dataset
Technical setup
Before running the code below please ensure that you have completed setup:
Create a Coop account and activate remote inference OR store your own API Keys for language models that you want to use.
Our Starter Tutorial also provides examples of EDSL basic components.
Selecting data for review
First we identify some data for review. Data can be created using the EDSL tools or imported from other sources. For purposes of this demo we import a set of job posts:
[1]:
job_posts = [
"Oversee daily operations, manage staff, and ensure customer satisfaction in a fast-paced retail environment.",
"Craft engaging and informative blog posts on health and wellness topics to boost website traffic and engage readers.",
"Analyze sales data using statistical tools to identify trends and provide actionable insights to the marketing team.",
"Prepare gourmet dishes that comply with restaurant standards and delight customers with unique flavor combinations.",
"Design creative visual content for marketing materials, including brochures, banners, and digital ads, using Adobe Creative Suite.",
"Develop, test, and maintain robust software solutions to improve business processes using Python and Java.",
"Craft coffee drinks and manage the coffee station while providing excellent customer service in a busy café.",
"Manage recruitment processes, conduct interviews, and oversee employee benefit programs to ensure a motivated workforce.",
"Assist veterinarians by preparing animals for surgery, administering injections, and providing post-operative care.",
"Design aesthetic and practical outdoor spaces for clients, from residential gardens to public parks.",
"Install and repair residential plumbing systems, including water heaters, pipes, and fixtures to ensure proper functionality.",
"Develop comprehensive marketing strategies that align with company goals, including digital campaigns and branding efforts.",
"Install, maintain, and repair electrical wiring, equipment, and fixtures to ensure safe and effective operation.",
"Provide personalized fitness programs and conduct group fitness classes to help clients achieve their health goals.",
"Diagnose and repair automotive issues, perform routine maintenance, and ensure vehicles meet safety standards.",
"Lead creative campaigns, from concept through execution, coordinating with graphic designers and content creators.",
"Educate students in mathematics using innovative teaching strategies to enhance understanding and interest in the subject.",
"Drive sales through engaging customer interactions, understanding client needs, and providing product solutions.",
"Fold dough into pretzel shapes ensuring each is uniformly twisted and perfectly salted before baking.",
"Address customer inquiries and issues via phone and email, ensuring high levels of satisfaction and timely resolution.",
]
Constructing questions about the data
Next we create some questions about the data. EDSL provides a variety of question types that we can choose from based on the form of the response that we want to get back from the model (multiple choice, free text, checkbox, linear scale, etc.). Learn more about question types.
Note that we use a {{ placeholder }}
in each question text in order to parameterize the questions with the individual job posts in the next step:
[2]:
from edsl import (
QuestionList,
QuestionLinearScale,
QuestionMultipleChoice,
QuestionYesNo,
QuestionFreeText,
)
q1 = QuestionList(
question_name="category_list",
question_text="Draft a list of increasingly specific categories for the following job post: {{ job_post }}",
max_list_items=3, # optional
)
q2 = QuestionLinearScale(
question_name="specific_scale",
question_text="How specific is this job post: {{ job_post }}",
question_options=[0, 1, 2, 3, 4, 5],
option_labels={0: "Unclear", 1: "Not at all specific", 5: "Highly specific"},
)
q3 = QuestionMultipleChoice(
question_name="skill_choice",
question_text="What is the skill level required for this job: {{ job_post }}",
question_options=["Entry level", "Intermediate", "Advanced", "Expert"],
)
q4 = QuestionYesNo(
question_name="technical_yn",
question_text="Is this a technical job? Job post: {{ job_post }}",
)
q5 = QuestionFreeText(
question_name="rewrite_text",
question_text="""Draft an improved version of the following job post: {{ job_post }}""",
)
Building a survey
We combine the questions into a survey in order to administer them together:
[3]:
from edsl import Survey
questions = [q1, q2, q3, q4, q5]
survey = Survey(questions)
If we want the agent/model to have information about prior questions in the survey we can add targeted or full memories (learn more about adding survey rules/logic):
[4]:
# Memory of a specific question is presented with another question:
# survey = survey.add_targeted_memory(q2, q1)
# Full memory of all prior questions is presented with each question (token-intensive):
# survey = survey.set_full_memory_mode()
Adding data to the questions
We add the contents of each ticket into each question as an independent “scenario” for review. This allows us to create versions of the questions for each job post and deliver them to the model all at once. EDSL provides many methods for generating scenarios from different data sources (PDFs, CSVs, docs, images, tables, dicts, etc.). Here we import the list from above:
[5]:
from edsl import ScenarioList, Scenario
scenarios = ScenarioList.from_list("job_post", job_posts)
Designing AI agents
A key feature of EDSL is the ability to create personas for AI agents that the language models are prompted to use in generating responses to the questions. This is done by passing a dictionary of traits to Agent objects:
[6]:
from edsl import AgentList, Agent
agent = Agent(traits={"persona":"You are a labor economist."})
Selecting language models
EDSL allows us to select the language models to use in generating results. To see all available models:
[7]:
from edsl import ModelList, Model
Model.available()
/Users/a16174/edsl/edsl/inference_services/AvailableModelFetcher.py:139: UserWarning: No models found for service ollama
warnings.warn(f"No models found for service {service_name}")
[7]:
Model Name | Service Name | |
---|---|---|
0 | Austism/chronos-hermes-13b-v2 | deep_infra |
1 | Gryphe/MythoMax-L2-13b | deep_infra |
2 | Qwen/Qwen2-72B-Instruct | deep_infra |
3 | Qwen/Qwen2-7B-Instruct | deep_infra |
4 | Qwen/Qwen2.5-72B-Instruct | deep_infra |
5 | Sao10K/L3-70B-Euryale-v2.1 | deep_infra |
6 | Sao10K/L3.1-70B-Euryale-v2.2 | deep_infra |
7 | google/gemma-2-27b-it | deep_infra |
8 | google/gemma-2-9b-it | deep_infra |
9 | lizpreciatior/lzlv_70b_fp16_hf | deep_infra |
10 | meta-llama/Meta-Llama-3-70B-Instruct | deep_infra |
11 | meta-llama/Meta-Llama-3-8B-Instruct | deep_infra |
12 | meta-llama/Meta-Llama-3.1-405B-Instruct | deep_infra |
13 | meta-llama/Meta-Llama-3.1-70B-Instruct | deep_infra |
14 | meta-llama/Meta-Llama-3.1-8B-Instruct | deep_infra |
15 | mistralai/Mistral-7B-Instruct-v0.3 | deep_infra |
16 | microsoft/Phi-3-medium-4k-instruct | deep_infra |
17 | microsoft/WizardLM-2-7B | deep_infra |
18 | microsoft/WizardLM-2-8x22B | deep_infra |
19 | mistralai/Mistral-Nemo-Instruct-2407 | deep_infra |
20 | mistralai/Mixtral-8x7B-Instruct-v0.1 | deep_infra |
21 | openbmb/MiniCPM-Llama3-V-2_5 | deep_infra |
22 | openchat/openchat_3.5 | deep_infra |
23 | amazon.titan-text-express-v1 | bedrock |
24 | amazon.titan-text-lite-v1 | bedrock |
25 | anthropic.claude-3-5-sonnet-20240620-v1:0 | bedrock |
26 | anthropic.claude-3-haiku-20240307-v1:0 | bedrock |
27 | anthropic.claude-3-opus-20240229-v1:0 | bedrock |
28 | anthropic.claude-3-sonnet-20240229-v1:0 | bedrock |
29 | anthropic.claude-instant-v1 | bedrock |
30 | anthropic.claude-v2 | bedrock |
31 | anthropic.claude-v2:1 | bedrock |
32 | cohere.command-light-text-v14 | bedrock |
33 | cohere.command-r-plus-v1:0 | bedrock |
34 | cohere.command-r-v1:0 | bedrock |
35 | cohere.command-text-v14 | bedrock |
36 | meta.llama3-1-405b-instruct-v1:0 | bedrock |
37 | meta.llama3-1-70b-instruct-v1:0 | bedrock |
38 | meta.llama3-1-8b-instruct-v1:0 | bedrock |
39 | meta.llama3-70b-instruct-v1:0 | bedrock |
40 | meta.llama3-8b-instruct-v1:0 | bedrock |
41 | mistral.mistral-7b-instruct-v0:2 | bedrock |
42 | mistral.mistral-large-2402-v1:0 | bedrock |
43 | mistral.mixtral-8x7b-instruct-v0:1 | bedrock |
44 | claude-3-5-sonnet-20240620 | anthropic |
45 | claude-3-opus-20240229 | anthropic |
46 | claude-3-sonnet-20240229 | anthropic |
47 | claude-3-haiku-20240307 | anthropic |
48 | gemma-7b-it | groq |
49 | gemma2-9b-it | groq |
50 | llama-3.1-70b-versatile | groq |
51 | llama-3.1-8b-instant | groq |
52 | llama-guard-3-8b | groq |
53 | llama3-70b-8192 | groq |
54 | llama3-8b-8192 | groq |
55 | llama3-groq-70b-8192-tool-use-preview | groq |
56 | llama3-groq-8b-8192-tool-use-preview | groq |
57 | mixtral-8x7b-32768 | groq |
58 | meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo | together |
59 | mistralai/Mixtral-8x22B-Instruct-v0.1 | together |
60 | meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo | together |
61 | meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo | together |
62 | Gryphe/MythoMax-L2-13b-Lite | together |
63 | Salesforce/Llama-Rank-V1 | together |
64 | meta-llama/Meta-Llama-Guard-3-8B | together |
65 | meta-llama/Meta-Llama-3-70B-Instruct-Turbo | together |
66 | meta-llama/Meta-Llama-3-70B-Instruct-Lite | together |
67 | meta-llama/Meta-Llama-3-8B-Instruct-Lite | together |
68 | meta-llama/Meta-Llama-3-8B-Instruct-Turbo | together |
69 | meta-llama/Llama-3-70b-chat-hf | together |
70 | meta-llama/Llama-3-8b-chat-hf | together |
71 | Qwen/Qwen2-72B-Instruct | together |
72 | google/gemma-2-27b-it | together |
73 | google/gemma-2-9b-it | together |
74 | mistralai/Mistral-7B-Instruct-v0.3 | together |
75 | Qwen/Qwen1.5-110B-Chat | together |
76 | meta-llama/LlamaGuard-2-8b | together |
77 | microsoft/WizardLM-2-8x22B | together |
78 | togethercomputer/StripedHyena-Nous-7B | together |
79 | databricks/dbrx-instruct | together |
80 | deepseek-ai/deepseek-llm-67b-chat | together |
81 | google/gemma-2b-it | together |
82 | mistralai/Mistral-7B-Instruct-v0.2 | together |
83 | mistralai/Mixtral-8x7B-Instruct-v0.1 | together |
84 | mistralai/Mixtral-8x7B-v0.1 | together |
85 | Qwen/Qwen1.5-72B-Chat | together |
86 | NousResearch/Nous-Hermes-2-Yi-34B | together |
87 | Meta-Llama/Llama-Guard-7b | together |
88 | NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO | together |
89 | mistralai/Mistral-7B-Instruct-v0.1 | together |
90 | mistralai/Mistral-7B-v0.1 | together |
91 | meta-llama/Llama-2-13b-chat-hf | together |
92 | meta-llama/Llama-2-7b-chat-hf | together |
93 | meta-llama/Llama-2-70b-hf | together |
94 | codellama/CodeLlama-34b-Instruct-hf | together |
95 | upstage/SOLAR-10.7B-Instruct-v1.0 | together |
96 | togethercomputer/m2-bert-80M-32k-retrieval | together |
97 | togethercomputer/m2-bert-80M-8k-retrieval | together |
98 | togethercomputer/m2-bert-80M-2k-retrieval | together |
99 | WhereIsAI/UAE-Large-V1 | together |
100 | BAAI/bge-large-en-v1.5 | together |
101 | BAAI/bge-base-en-v1.5 | together |
102 | Gryphe/MythoMax-L2-13b | together |
103 | cursor/Llama-3-8b-hf | together |
104 | gpt-4o-realtime-preview | openai |
105 | gpt-4o-realtime-preview-2024-10-01 | openai |
106 | o1-mini-2024-09-12 | openai |
107 | gpt-4-1106-preview | openai |
108 | gpt-3.5-turbo-16k | openai |
109 | gpt-4-0125-preview | openai |
110 | gpt-4-turbo-preview | openai |
111 | omni-moderation-latest | openai |
112 | gpt-4o-2024-05-13 | openai |
113 | omni-moderation-2024-09-26 | openai |
114 | chatgpt-4o-latest | openai |
115 | gpt-4 | openai |
116 | gpt-4-0613 | openai |
117 | gpt-4o | openai |
118 | gpt-4o-2024-08-06 | openai |
119 | o1-mini | openai |
120 | gpt-3.5-turbo | openai |
121 | gpt-3.5-turbo-0125 | openai |
122 | o1-preview | openai |
123 | o1-preview-2024-09-12 | openai |
124 | gpt-4-turbo | openai |
125 | gpt-4-turbo-2024-04-09 | openai |
126 | gpt-3.5-turbo-1106 | openai |
127 | gpt-4o-mini-2024-07-18 | openai |
128 | gpt-4o-audio-preview | openai |
129 | gpt-4o-audio-preview-2024-10-01 | openai |
130 | gpt-4o-mini | openai |
131 | gpt-4o-realtime-preview-2024-12-17 | openai |
132 | gpt-4o-mini-realtime-preview | openai |
133 | gpt-4o-mini-realtime-preview-2024-12-17 | openai |
134 | gpt-4o-2024-11-20 | openai |
135 | gpt-4o-audio-preview-2024-12-17 | openai |
136 | gpt-4o-mini-audio-preview | openai |
137 | gpt-4o-mini-audio-preview-2024-12-17 | openai |
138 | curie:ft-emeritus-2022-12-01-14-49-45 | openai |
139 | curie:ft-emeritus-2022-12-01-16-40-12 | openai |
140 | curie:ft-emeritus-2022-11-30-12-58-24 | openai |
141 | davinci:ft-emeritus-2022-11-30-14-57-33 | openai |
142 | curie:ft-emeritus-2022-12-01-01-51-20 | openai |
143 | curie:ft-emeritus-2022-12-01-01-04-36 | openai |
144 | curie:ft-emeritus-2022-12-01-15-42-25 | openai |
145 | curie:ft-emeritus-2022-12-01-15-29-32 | openai |
146 | curie:ft-emeritus-2022-12-01-15-52-24 | openai |
147 | curie:ft-emeritus-2022-12-01-14-28-00 | openai |
148 | curie:ft-emeritus-2022-12-01-14-16-46 | openai |
149 | gemini-1.0-pro | |
150 | gemini-1.5-flash | |
151 | gemini-1.5-pro | |
152 | gemini-pro | |
153 | codestral-2405 | mistral |
154 | mistral-embed | mistral |
155 | mistral-large-2407 | mistral |
156 | mistral-medium-latest | mistral |
157 | mistral-small-2409 | mistral |
158 | mistral-small-latest | mistral |
159 | open-mistral-7b | mistral |
160 | open-mistral-nemo-2407 | mistral |
161 | open-mixtral-8x22b | mistral |
162 | open-mixtral-8x7b | mistral |
163 | pixtral-12b-2409 | mistral |
164 | azure:gpt-4o | azure |
165 | azure:gpt-4o-mini | azure |
166 | test | test |
167 | llama-3.1-sonar-huge-128k-online | perplexity |
168 | llama-3.1-sonar-large-128k-online | perplexity |
169 | llama-3.1-sonar-small-128k-online | perplexity |
Here we select GPT 4o (if no model is specified, this model is also used by default):
[8]:
model = Model("gpt-4o")
Running the survey
We run the survey by adding the scenarios, agent and model with the by()
method and then calling the run()
method:
[9]:
results = survey.by(scenarios).by(agent).by(model).run()
Job UUID | fb85ba30-31d9-401c-84b1-c920ac6fa5fc |
Progress Bar URL | https://www.expectedparrot.com/home/remote-job-progress/fb85ba30-31d9-401c-84b1-c920ac6fa5fc |
Error Report URL | None |
Results UUID | b4c408ec-32d6-4e4a-8422-6fb9957c4b87 |
Results URL | None |
This generates a dataset of Results
that we can analyze with built-in methods for data tables, dataframes, SQL, etc. We can see a list of all the components that can be analyzed:
[10]:
results.columns
[10]:
0 | |
---|---|
0 | agent.agent_instruction |
1 | agent.agent_name |
2 | agent.persona |
3 | answer.category_list |
4 | answer.rewrite_text |
5 | answer.skill_choice |
6 | answer.specific_scale |
7 | answer.technical_yn |
8 | comment.category_list_comment |
9 | comment.rewrite_text_comment |
10 | comment.skill_choice_comment |
11 | comment.specific_scale_comment |
12 | comment.technical_yn_comment |
13 | generated_tokens.category_list_generated_tokens |
14 | generated_tokens.rewrite_text_generated_tokens |
15 | generated_tokens.skill_choice_generated_tokens |
16 | generated_tokens.specific_scale_generated_tokens |
17 | generated_tokens.technical_yn_generated_tokens |
18 | iteration.iteration |
19 | model.frequency_penalty |
20 | model.logprobs |
21 | model.max_tokens |
22 | model.model |
23 | model.presence_penalty |
24 | model.temperature |
25 | model.top_logprobs |
26 | model.top_p |
27 | prompt.category_list_system_prompt |
28 | prompt.category_list_user_prompt |
29 | prompt.rewrite_text_system_prompt |
30 | prompt.rewrite_text_user_prompt |
31 | prompt.skill_choice_system_prompt |
32 | prompt.skill_choice_user_prompt |
33 | prompt.specific_scale_system_prompt |
34 | prompt.specific_scale_user_prompt |
35 | prompt.technical_yn_system_prompt |
36 | prompt.technical_yn_user_prompt |
37 | question_options.category_list_question_options |
38 | question_options.rewrite_text_question_options |
39 | question_options.skill_choice_question_options |
40 | question_options.specific_scale_question_options |
41 | question_options.technical_yn_question_options |
42 | question_text.category_list_question_text |
43 | question_text.rewrite_text_question_text |
44 | question_text.skill_choice_question_text |
45 | question_text.specific_scale_question_text |
46 | question_text.technical_yn_question_text |
47 | question_type.category_list_question_type |
48 | question_type.rewrite_text_question_type |
49 | question_type.skill_choice_question_type |
50 | question_type.specific_scale_question_type |
51 | question_type.technical_yn_question_type |
52 | raw_model_response.category_list_cost |
53 | raw_model_response.category_list_one_usd_buys |
54 | raw_model_response.category_list_raw_model_response |
55 | raw_model_response.rewrite_text_cost |
56 | raw_model_response.rewrite_text_one_usd_buys |
57 | raw_model_response.rewrite_text_raw_model_response |
58 | raw_model_response.skill_choice_cost |
59 | raw_model_response.skill_choice_one_usd_buys |
60 | raw_model_response.skill_choice_raw_model_response |
61 | raw_model_response.specific_scale_cost |
62 | raw_model_response.specific_scale_one_usd_buys |
63 | raw_model_response.specific_scale_raw_model_response |
64 | raw_model_response.technical_yn_cost |
65 | raw_model_response.technical_yn_one_usd_buys |
66 | raw_model_response.technical_yn_raw_model_response |
67 | scenario.job_post |
For example, we can filter, sort, select, limit, shuffle, sample and print some components of results in a table:
[11]:
(
results
.filter("specific_scale in [3,4,5]")
.sort_by("skill_choice")
.select(
"model",
"persona",
"job_post",
"category_list",
"specific_scale",
"skill_choice",
"technical_yn",
)
)
[11]:
model.model | agent.persona | scenario.job_post | answer.category_list | answer.specific_scale | answer.skill_choice | answer.technical_yn | |
---|---|---|---|---|---|---|---|
0 | gpt-4o | You are a labor economist. | Develop, test, and maintain robust software solutions to improve business processes using Python and Java. | ['Software Development', 'Business Process Automation', 'Python and Java Development'] | 3 | Advanced | Yes |
1 | gpt-4o | You are a labor economist. | Install and repair residential plumbing systems, including water heaters, pipes, and fixtures to ensure proper functionality. | ['Plumbing', 'Residential Plumbing', 'Residential Plumbing Installation and Repair'] | 3 | Advanced | Yes |
2 | gpt-4o | You are a labor economist. | Craft coffee drinks and manage the coffee station while providing excellent customer service in a busy café. | ['Food Service', 'Barista', 'Café Barista'] | 3 | Entry level | No |
3 | gpt-4o | You are a labor economist. | Design creative visual content for marketing materials, including brochures, banners, and digital ads, using Adobe Creative Suite. | ['Graphic Design', 'Marketing Design', 'Digital and Print Marketing Design'] | 3 | Intermediate | Yes |
4 | gpt-4o | You are a labor economist. | Assist veterinarians by preparing animals for surgery, administering injections, and providing post-operative care. | ['Animal Care', 'Veterinary Technician', 'Surgical Veterinary Technician'] | 5 | Intermediate | Yes |
5 | gpt-4o | You are a labor economist. | Install, maintain, and repair electrical wiring, equipment, and fixtures to ensure safe and effective operation. | ['Electrical Work', 'Electrical Maintenance and Repair', 'Residential Electrical Maintenance and Repair'] | 3 | Intermediate | Yes |
6 | gpt-4o | You are a labor economist. | Install, maintain, and repair electrical wiring, equipment, and fixtures to ensure safe and effective operation. | ['Electrical Work', 'Electrical Maintenance and Repair', 'Residential Electrical Maintenance and Repair'] | 3 | Intermediate | Yes |
7 | gpt-4o | You are a labor economist. | Fold dough into pretzel shapes ensuring each is uniformly twisted and perfectly salted before baking. | ['Food Preparation', 'Baking', 'Pretzel Shaping'] | 5 | Intermediate | No |
[12]:
results.select("rewrite_text")
[12]:
answer.rewrite_text | |
---|---|
0 | Job Title: Retail Operations Manager Job Description: We are seeking a dynamic and experienced Retail Operations Manager to lead our team in delivering exceptional service and operational excellence in a fast-paced retail environment. The successful candidate will be responsible for overseeing daily operations, managing and mentoring staff, and ensuring the highest levels of customer satisfaction. Key Responsibilities: - Lead and manage daily store operations to ensure efficiency and effectiveness. - Inspire, train, and develop a talented team of retail staff to achieve performance goals. - Foster a customer-centric culture by ensuring all team members deliver outstanding service. - Monitor inventory levels and implement strategies to optimize stock management. - Analyze sales data and customer feedback to drive continuous improvement. - Ensure compliance with company policies and retail regulations. Qualifications: - Proven experience in retail management or a similar role. - Strong leadership and team-building skills. - Excellent communication and interpersonal abilities. - Ability to thrive in a fast-paced, dynamic environment. - Exceptional problem-solving and decision-making skills. |
1 | We are seeking a talented and passionate writer to create captivating and insightful blog posts on health and wellness topics. Your work will play a crucial role in enhancing our website's visibility and fostering a strong connection with our audience. If you have a knack for crafting compelling content that informs and inspires, we would love to hear from you! |
2 | Join our dynamic team as a Sales Data Analyst! In this role, you will leverage advanced statistical tools to meticulously examine sales data, uncovering key trends that drive our business forward. Your expert insights will directly empower our marketing team to make informed, strategic decisions. If you have a passion for data and a knack for translating numbers into actionable strategies, we want to hear from you! |
3 | Join our dynamic team as a Sales Data Analyst! In this role, you will leverage advanced statistical tools to meticulously examine sales data, uncovering key trends that drive our business forward. Your expert insights will directly empower our marketing team to make informed, strategic decisions. If you have a passion for data and a knack for translating numbers into actionable strategies, we want to hear from you! |
4 | Join our culinary team as a Gourmet Chef! We are seeking a talented and passionate individual to craft exquisite dishes that not only meet our high restaurant standards but also captivate our guests with innovative and delightful flavor combinations. If you have a flair for creativity and a commitment to excellence, we would love to hear from you. |
5 | Join our dynamic marketing team as a Creative Designer! We are looking for a talented individual to craft visually compelling content across a variety of platforms. Your primary responsibilities will include designing innovative marketing materials such as brochures, banners, and digital advertisements. Proficiency in Adobe Creative Suite is essential. If you have a keen eye for detail and a passion for creativity, we would love to see your work! |
6 | Job Title: Software Developer - Python & Java Job Description: Join our dynamic team as a Software Developer, where you will play a crucial role in enhancing our business processes through innovative software solutions. We are looking for a talented and motivated individual who is proficient in Python and Java to develop, test, and maintain cutting-edge applications that drive efficiency and growth. Key Responsibilities: - Design and implement robust software solutions tailored to improve business operations. - Collaborate with cross-functional teams to identify and address process inefficiencies. - Develop and maintain high-quality code using Python and Java. - Conduct thorough testing to ensure the reliability and performance of software applications. - Continuously monitor and optimize existing systems to enhance functionality and user experience. Qualifications: - Proven experience in software development with a strong command of Python and Java. - Ability to work effectively in a team-oriented environment. - Strong problem-solving skills and attention to detail. - Excellent communication skills to articulate complex technical concepts to non-technical stakeholders. Why Join Us? - Be part of a forward-thinking company committed to innovation and excellence. - Opportunity to work on impactful projects that shape the future of our business. - Collaborative and inclusive work culture. - Competitive salary and benefits package. |
7 | Join our dynamic team at [Café Name] as a Barista! We are seeking a passionate and skilled individual to craft exceptional coffee beverages and oversee our coffee station. If you thrive in a fast-paced environment and are dedicated to delivering outstanding customer service, we want to hear from you! **Responsibilities:** - Expertly prepare and serve a variety of coffee drinks, ensuring quality and consistency in every cup. - Manage and maintain the coffee station, ensuring cleanliness and organization. - Engage with customers in a friendly and professional manner, providing personalized service and recommendations. - Collaborate with team members to ensure smooth café operations during busy periods. **Qualifications:** - Previous experience in a café or coffee shop setting is preferred. - Strong customer service skills and a passion for coffee. - Ability to work efficiently under pressure while maintaining attention to detail. - Excellent communication and teamwork skills. **What We Offer:** - Competitive salary and benefits package. - Opportunities for professional growth and development. - A vibrant and supportive work environment. If you are enthusiastic about coffee and customer service, apply today to become a part of our team at [Café Name]! |
8 | Join our team as a Recruitment and Employee Benefits Manager! In this dynamic role, you will lead and optimize our recruitment processes, conduct engaging interviews, and manage comprehensive employee benefit programs. Your efforts will ensure a motivated and thriving workforce, contributing to our organization's success. If you are passionate about fostering a positive work environment and have a knack for identifying top talent, we want to hear from you! |
9 | Join our team as a Recruitment and Employee Benefits Manager! In this dynamic role, you will lead and optimize our recruitment processes, conduct engaging interviews, and manage comprehensive employee benefit programs. Your efforts will ensure a motivated and thriving workforce, contributing to our organization's success. If you are passionate about fostering a positive work environment and have a knack for identifying top talent, we want to hear from you! |
10 | **Job Title: Veterinary Assistant** **Job Description:** Join our dedicated veterinary team as a Veterinary Assistant, where you will play a vital role in ensuring the health and well-being of our animal patients. We are seeking a compassionate and detail-oriented individual to assist our veterinarians with various medical procedures and care duties. **Key Responsibilities:** - Prepare animals for surgical procedures, ensuring their comfort and safety. - Administer injections and medications as directed by the veterinarian. - Provide attentive post-operative care to aid in the recovery of our animal patients. - Maintain a clean and organized surgical and treatment area. - Assist with routine examinations and record keeping. **Qualifications:** - Previous experience in a veterinary or animal care setting is preferred. - Strong communication and interpersonal skills. - Ability to work effectively in a fast-paced environment. - Passion for animal welfare and a commitment to high-quality care. **Why Join Us?** - Be part of a supportive and professional veterinary team. - Opportunities for professional growth and development. - Make a meaningful difference in the lives of animals and their owners. |
11 | Join our team as a Landscape Designer and transform outdoor spaces into stunning and functional environments. We are seeking a creative and skilled professional to design a variety of projects, from intimate residential gardens to expansive public parks. If you have a passion for blending aesthetics with practicality, we would love to hear from you! |
12 | Join our team as a Landscape Designer and transform outdoor spaces into stunning and functional environments. We are seeking a creative and skilled professional to design a variety of projects, from intimate residential gardens to expansive public parks. If you have a passion for blending aesthetics with practicality, we would love to hear from you! |
13 | **Job Title: Residential Plumbing Technician** **Job Description:** Are you a skilled plumbing professional looking to make a difference in homeowners' lives? Join our team as a Residential Plumbing Technician, where your expertise will ensure the efficient installation and repair of residential plumbing systems. **Key Responsibilities:** - Install and repair residential plumbing systems, including water heaters, pipes, and fixtures, to ensure optimal functionality and customer satisfaction. - Diagnose and troubleshoot plumbing issues efficiently, providing effective solutions to restore system performance. - Maintain a high standard of workmanship, adhering to industry regulations and safety protocols. - Communicate clearly with homeowners to explain repairs, installations, and maintenance procedures. - Collaborate with team members to ensure timely project completion and exceptional service delivery. **Qualifications:** - Proven experience in residential plumbing installation and repair. - Strong knowledge of plumbing systems, tools, and equipment. - Excellent problem-solving skills and attention to detail. - Ability to work independently and as part of a team. - Strong communication skills and a customer-focused approach. **Why Join Us?** - Competitive salary and benefits package. - Opportunities for professional development and career advancement. - A supportive and dynamic work environment. |
14 | Join our team as a Marketing Strategist and play a pivotal role in shaping the future of our brand! We are seeking a creative and analytical professional to develop and execute comprehensive marketing strategies that align seamlessly with our company goals. Your responsibilities will include crafting innovative digital campaigns and spearheading impactful branding initiatives. If you have a passion for driving growth and a talent for strategic thinking, we would love to hear from you. |
15 | Join our team as a Marketing Strategist and play a pivotal role in shaping the future of our brand! We are seeking a creative and analytical professional to develop and execute comprehensive marketing strategies that align seamlessly with our company goals. Your responsibilities will include crafting innovative digital campaigns and spearheading impactful branding initiatives. If you have a passion for driving growth and a talent for strategic thinking, we would love to hear from you. |
16 | Join our team as an Electrician, where you'll play a crucial role in ensuring the safety and efficiency of our electrical systems. Your responsibilities will include installing, maintaining, and repairing electrical wiring, equipment, and fixtures. We are looking for a detail-oriented professional who is committed to delivering high-quality work in a safe and effective manner. If you have a passion for problem-solving and a strong background in electrical systems, we would love to hear from you! |
17 | Join our team as an Electrician, where you'll play a crucial role in ensuring the safety and efficiency of our electrical systems. Your responsibilities will include installing, maintaining, and repairing electrical wiring, equipment, and fixtures. We are looking for a detail-oriented professional who is committed to delivering high-quality work in a safe and effective manner. If you have a passion for problem-solving and a strong background in electrical systems, we would love to hear from you! |
18 | Join Our Team as a Fitness Coach! |
19 | Job Title: Automotive Technician Job Description: We are seeking a skilled Automotive Technician to join our team. In this role, you will be responsible for diagnosing and repairing a wide range of automotive issues, performing routine maintenance, and ensuring that all vehicles meet the highest safety standards. Your expertise will help us deliver exceptional service and maintain our reputation for excellence. Key Responsibilities: - Accurately diagnose mechanical and electrical issues in vehicles. - Perform routine maintenance tasks such as oil changes, tire rotations, and brake inspections. - Repair and replace faulty components to restore vehicle functionality. - Conduct thorough safety inspections to ensure all vehicles comply with safety regulations. - Keep detailed records of all services and repairs performed. - Collaborate with team members to ensure timely and efficient service delivery. Qualifications: - Proven experience as an automotive technician or similar role. - Strong knowledge of automotive systems and components. - Excellent problem-solving skills and attention to detail. - Ability to work independently and as part of a team. - Valid automotive service certification is preferred. Benefits: - Competitive salary and performance-based incentives. - Opportunities for professional development and training. - Comprehensive health and wellness benefits. - Supportive and dynamic work environment. |
20 | Job Title: Creative Campaign Lead Job Description: Are you a visionary leader with a passion for bringing creative concepts to life? We are seeking an experienced Creative Campaign Lead to spearhead our innovative campaigns from initial concept through to flawless execution. In this dynamic role, you will collaborate closely with talented graphic designers and content creators to produce compelling and impactful campaigns that resonate with our audience. Key Responsibilities: - Develop and lead creative campaign strategies from ideation to completion, ensuring alignment with brand objectives and target audience. - Coordinate and collaborate with graphic designers and content creators to produce high-quality visual and written content. - Oversee the creative process, providing guidance and feedback to ensure excellence in execution. - Manage multiple projects simultaneously, maintaining a keen eye for detail and adherence to deadlines. - Stay current with industry trends and incorporate fresh ideas to keep our campaigns innovative and engaging. Qualifications: - Proven experience in leading creative campaigns and managing teams. - Strong communication and organizational skills. - Ability to think strategically and creatively. - A collaborative mindset with the ability to inspire and motivate a diverse team. |
21 | Join our team as a Mathematics Educator, where you'll inspire and engage students through innovative teaching strategies designed to deepen their understanding and spark a lifelong interest in mathematics. We're looking for a passionate educator who can bring creativity and enthusiasm to the classroom, making math both accessible and exciting for learners of all levels. If you're dedicated to fostering a dynamic learning environment and committed to student success, we want to hear from you! |
22 | Position: Sales Representative We are seeking a dynamic and customer-focused Sales Representative to join our team. In this role, you will be instrumental in driving sales by building strong relationships with our clients. Your primary responsibilities will include engaging with customers, understanding their unique needs, and offering tailored product solutions that enhance their experience. Key Responsibilities: - Actively engage with customers to foster strong, lasting relationships. - Gain a deep understanding of each client's specific needs and preferences. - Provide expert advice and recommend product solutions that align with customer requirements. - Continuously seek opportunities to improve customer satisfaction and drive sales growth. Qualifications: - Excellent communication and interpersonal skills. - Strong problem-solving abilities and a customer-first mindset. - Ability to understand and convey product benefits effectively. - Previous experience in sales or customer service is a plus. |
23 | Join Our Team as a Pretzel Artisan! |
24 | Join our team as a Customer Support Specialist, where you'll play a crucial role in delivering exceptional service. You'll be responsible for addressing customer inquiries and resolving issues through both phone and email communication. We are looking for someone who is dedicated to ensuring high levels of customer satisfaction by providing timely and effective solutions. If you have excellent communication skills and a passion for helping others, we would love to hear from you! |
Posting content to the Coop
We can post any objects to the Coop, including this notebook. Objects can be updated or modified at your Coop account, and shared with others or stored privately (default visibility is unlisted):
[13]:
survey.push(description = "Example survey: Job posts analysis", visibility = "public")
[13]:
{'description': 'Example survey: Job posts analysis',
'object_type': 'survey',
'url': 'https://www.expectedparrot.com/content/1563e393-6db3-430c-b971-a7b295812249',
'uuid': '1563e393-6db3-430c-b971-a7b295812249',
'version': '0.1.39.dev2',
'visibility': 'public'}
[14]:
from edsl import Notebook
n = Notebook(path = "evaluating_job_posts.ipynb")
[15]:
info = n.push(description = "Example text analysis: evaluating job posts", visibility = "public")
info
[15]:
{'description': 'Example text analysis: evaluating job posts',
'object_type': 'notebook',
'url': 'https://www.expectedparrot.com/content/6759d869-5734-4c69-8262-df6038179aca',
'uuid': '6759d869-5734-4c69-8262-df6038179aca',
'version': '0.1.39.dev2',
'visibility': 'public'}
To update an object at the Coop:
[16]:
n = Notebook(path = "evaluating_job_posts.ipynb") # resave the object
n.patch(uuid = info["uuid"], value = n)
[16]:
{'status': 'success'}