Skip to content

Commit 30c5c8c

Browse files
committed
Add sheet formula templates and sheet-agent
1 parent 137b785 commit 30c5c8c

20 files changed

+590
-2
lines changed

llmstack/contrib/apps/sheet_agent.yml

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: Sheet Agent
2+
slug: sheet-agent
3+
version: "0.0.1"
4+
icon: super_agent_icon.png
5+
description: >-
6+
Sheet Agent is a Promptly Sheets helper AI agent. With features like Web Search and web browser, this agent provides a range of capabilities to assist you in various tasks seamlessly. Just input your requests and let agent handle the rest effortlessly.
7+
categories:
8+
- utilities
9+
config:
10+
model: "gpt-4o-mini"
11+
system_message: >-
12+
You are PromptlyGPT, a helpful assistant from Promptly. You help users
13+
perform their tasks using available a combination of available tools. You
14+
have access to the following tools:
15+
16+
## Web search (_inputs1)
17+
18+
- Searches the web for URLs containing realtime information. Only use web
19+
search when you cannot answer from your knowledge. Once the URLs are
20+
available, visit these URLs with static web browser to pull more
21+
information.
22+
23+
## Static web browser (_inputs2)
24+
25+
- Access a URL to retrieve information from a web page. Following are the
26+
only valid instruction types for browser input: Click, Type, Wait, Goto,
27+
Copy, Terminate, Enter, Scrollx, Scrolly
28+
29+
Follow the below guidelines while responding to the user:
30+
1. Never ask users any follow up questions.
31+
32+
Now let's think step by step -
33+
max_steps: 15
34+
split_tasks: true
35+
input_template: <p class="editor-paragraph"><br></p>
36+
welcome_message: ""
37+
window_color: "#477195"
38+
suggested_messages:
39+
- input:
40+
task:
41+
text: Find domain name for a company named "Apple"
42+
label: "**Find domain name for a company named Apple**"
43+
chat_history_limit: 20
44+
temperature: 0.7
45+
layout: >-
46+
<pa-layout sx='{"maxWidth": "1200px", "margin": "0 auto", "padding": "5px
47+
0", "height": "100%"}'>
48+
<pa-grid container="true" spacing="2" sx='{"height": "100%", "flexDirection": "column"}'>
49+
<pa-grid item="true" xs="12" sx='{"overflow": "auto !important", "flex": "1 1 0 !important", "padding": "0 !important"}'>
50+
<pa-chat-output></pa-chat-output>
51+
</pa-grid>
52+
<pa-grid item="true" xs="12" sx='{"alignSelf": "flex-end", "flex": "0 !important", "width": "100%", "padding": "0 !important"}'>
53+
<pa-input-form clearonsubmit="true"></pa-input-form>
54+
</pa-grid>
55+
</pa-grid>
56+
</pa-layout>
57+
seed: 1233
58+
user_message: "{{task}}"
59+
renderer_type: Chat
60+
type_slug: agent
61+
processors:
62+
- id: _inputs1
63+
name: Web Search
64+
input:
65+
query: ""
66+
config:
67+
k: 5
68+
search_engine: Google
69+
description: Search the web for answers
70+
provider_slug: promptly
71+
processor_slug: web_search
72+
output_template:
73+
markdown: |-
74+
{% for result in results %}
75+
{{result.text}}
76+
{{result.source}}
77+
78+
{% endfor %}
79+
- id: _inputs2
80+
name: Static Web Browser
81+
input:
82+
url: ""
83+
instructions: []
84+
config:
85+
timeout: 10
86+
stream_video: true
87+
connection_id: null
88+
description: >-
89+
Visit a URL and perform actions. Copy, Wait, Goto, Enter, Scollx, Scrolly
90+
and Click are the valid instruction types
91+
provider_slug: promptly
92+
processor_slug: static_web_browser
93+
output_template:
94+
markdown: >
95+
96+
<promptly-web-browser-embed
97+
wsUrl="{{session.ws_url}}"></promptly-web-browser-embed>
98+
99+
100+
{{text}}
101+
input_fields:
102+
- name: task
103+
type: multi
104+
title: Task
105+
required: true
106+
allowFiles: true
107+
description: Provide the task you want the agent to perform
108+
filesAccept: null
109+
placeholder: Type in your message
110+
output_template:
111+
markdown: "{{agent.content}}"
+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
name: Sheet Agent JSON
2+
slug: sheet-agent-json
3+
version: "0.0.1"
4+
icon: super_agent_icon.png
5+
description: >-
6+
Sheet Agent JSON is a Promptly Sheets helper AI agent that always responds in JSON. With features like Web Search and web browser, this agent provides a range of capabilities to assist you in various tasks seamlessly. Just input your requests and let agent handle the rest effortlessly.
7+
categories:
8+
- utilities
9+
config:
10+
model: "gpt-4o-mini"
11+
system_message: >-
12+
You are PromptlyGPT, a helpful assistant from Promptly. You help users
13+
perform their tasks using available a combination of available tools. You
14+
have access to the following tools:
15+
16+
## Web search (_inputs1)
17+
18+
- Searches the web for URLs containing realtime information. Only use web
19+
search when you cannot answer from your knowledge. Once the URLs are
20+
available, visit these URLs with static web browser to pull more
21+
information.
22+
23+
## Static web browser (_inputs2)
24+
25+
- Access a URL to retrieve information from a web page. Following are the
26+
only valid instruction types for browser input: Click, Type, Wait, Goto,
27+
Copy, Terminate, Enter, Scrollx, Scrolly
28+
29+
Follow the below guidelines while responding to the user:
30+
1. Never ask users any follow up questions.
31+
2. Always provide your response in JSON format. Never wrap your response in ```json <CODE_TEXT>```.
32+
33+
Now let's think step by step -
34+
max_steps: 15
35+
split_tasks: true
36+
input_template: <p class="editor-paragraph"><br></p>
37+
welcome_message: ""
38+
window_color: "#477195"
39+
suggested_messages:
40+
- input:
41+
task:
42+
text: Find domain name for a company named "Apple"
43+
label: "**Find domain name for a company named Apple**"
44+
chat_history_limit: 20
45+
temperature: 0.7
46+
layout: >-
47+
<pa-layout sx='{"maxWidth": "1200px", "margin": "0 auto", "padding": "5px
48+
0", "height": "100%"}'>
49+
<pa-grid container="true" spacing="2" sx='{"height": "100%", "flexDirection": "column"}'>
50+
<pa-grid item="true" xs="12" sx='{"overflow": "auto !important", "flex": "1 1 0 !important", "padding": "0 !important"}'>
51+
<pa-chat-output></pa-chat-output>
52+
</pa-grid>
53+
<pa-grid item="true" xs="12" sx='{"alignSelf": "flex-end", "flex": "0 !important", "width": "100%", "padding": "0 !important"}'>
54+
<pa-input-form clearonsubmit="true"></pa-input-form>
55+
</pa-grid>
56+
</pa-grid>
57+
</pa-layout>
58+
seed: 1233
59+
user_message: "{{task}}"
60+
renderer_type: Chat
61+
type_slug: agent
62+
processors:
63+
- id: _inputs1
64+
name: Web Search
65+
input:
66+
query: ""
67+
config:
68+
k: 5
69+
search_engine: Google
70+
description: Search the web for answers
71+
provider_slug: promptly
72+
processor_slug: web_search
73+
output_template:
74+
markdown: |-
75+
{% for result in results %}
76+
{{result.text}}
77+
{{result.source}}
78+
79+
{% endfor %}
80+
- id: _inputs2
81+
name: Static Web Browser
82+
input:
83+
url: ""
84+
instructions: []
85+
config:
86+
timeout: 10
87+
stream_video: true
88+
connection_id: null
89+
description: >-
90+
Visit a URL and perform actions. Copy, Wait, Goto, Enter, Scollx, Scrolly
91+
and Click are the valid instruction types
92+
provider_slug: promptly
93+
processor_slug: static_web_browser
94+
output_template:
95+
markdown: >
96+
97+
<promptly-web-browser-embed
98+
wsUrl="{{session.ws_url}}"></promptly-web-browser-embed>
99+
100+
101+
{{text}}
102+
input_fields:
103+
- name: task
104+
type: multi
105+
title: Task
106+
required: true
107+
allowFiles: true
108+
description: Provide the task you want the agent to perform
109+
filesAccept: null
110+
placeholder: Type in your message
111+
output_template:
112+
markdown: "{{agent.content}}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Company Website Analysis
2+
category_slug: null
3+
slug: company-website-analysis
4+
description: |
5+
This formula help you to analyze the website of a company to gather information about the company's products, services, and other details.
6+
formula:
7+
data:
8+
input:
9+
task: >-
10+
You are an analyst who is an expert on marketing and identifying ideal customer profiles (ICP). Your task is to analyze a company given their details. Figure out
11+
1. Company's ICP
12+
2. What industries do they target
13+
3. What buyer personas do they target
14+
4. What is the primary value proposition of the company for the buyer personas
15+
5. Products and services offered by the company
16+
6. Pricing details of the products and services
17+
You can also use websites like g2.com, capterra.com, etc. to gather information about the company's products, services, and pricing details.
18+
You should extract all this information by analyzing the company's website, LinkedIn page if available, and any other public information available on the web. Use resources like case studies, testimonials provided on the company's website to gather this information. Be as detailed as possible in analyzing and seraching information the company website.Provide the information in a structured JSON format. JSON format should be as follows:
19+
{
20+
"icp": "Ideal Customer Profile",
21+
"industries_targeted": ["Industry 1", "Industry 2"],
22+
"buyer_personas_targeted": ["Persona 1", "Persona 2"],
23+
"primary_value_proposition": "Primary Value Proposition",
24+
"products_services": ["Product 1", "Product 2"],
25+
"pricing_details": {
26+
"product_1": "Pricing details",
27+
"product_2": "Pricing details"
28+
}
29+
}
30+
----
31+
Company Details:
32+
Company Name: {{?}}
33+
Company Domain Name: {{?}}
34+
app_slug: sheet-agent-json
35+
max_parallel_runs: null
36+
type: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Company Funding Details
2+
category_slug: null
3+
slug: company-funding-details
4+
description: >-
5+
This formula helps you to gather information about a company's funding details. You need to provide the company name and the formula will return the funding details of the company.
6+
formula:
7+
data:
8+
input:
9+
task: >
10+
You are a research data analyst. You have to focus on getting funding related data for the company. We would like to list details about ALL of the funding rounds. For each round of funding, gether the following information
11+
1. Name of the round/fundraising stage [such as Seed, Early VC, Series A, Series B, etc.]
12+
2. Fundraising date in year-month format [this is the date the funding for this round was raised]
13+
3. Fundraising amount in US dollars.
14+
4. A comma-separated list of all investors that contributed to this funding round.
15+
16+
If you cannot find any results, just return \\\"Not found\\\" and nothing else.
17+
18+
If you were successful in finding the information, if you cannot find the investors, just say \\\"Not specified\\\".\\n\\nYou should be able to find this information. Exhaust all options and resources. Return the data as valid JSON in the following format:
19+
{ "funding_rounds" : [
20+
{
21+
"round_name": "Seed",
22+
"fundraising_date": "2021-01",
23+
"fundraising_amount": "$1000000",
24+
"investors": "Investor 1, Investor 2, Investor 3"
25+
},
26+
{
27+
"round_name": "Series A",
28+
"fundraising_date": "2021-06",
29+
"fundraising_amount": "$5000000",
30+
"investors": "Investor 1, Investor 2, Investor 3"
31+
}
32+
]
33+
}
34+
app_slug: sheet-agent
35+
max_parallel_runs: null
36+
type: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Find Company Domain
2+
category_slug: null
3+
slug: company-to-domain-name
4+
description: >-
5+
Given a company name, this formula will attempt to find the domain name of the company.
6+
formula:
7+
data:
8+
input:
9+
task: >-
10+
Search for the company {{A}} website and return the website domain.
11+
Make sure to respond only with the domain name. If you cannot find
12+
a valid domain simply respond with an empty string
13+
app_slug: sheet-agent
14+
max_parallel_runs: null
15+
type: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Get company name from Domain
2+
category_slug: null
3+
slug: domain-to-company
4+
description: >-
5+
Given a domain name, this formula will attempt to find the company name of the domain.
6+
formula:
7+
data:
8+
input:
9+
task: >-
10+
Search for the company name of the domain {{?}}.
11+
Make sure to respond only with the company name. If you cannot find
12+
a valid company name simply respond with an empty string
13+
app_slug: sheet-agent
14+
max_parallel_runs: null
15+
type: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Validate a domain
2+
description: >-
3+
Given a domain name, this formula will attempt to validate the domain.
4+
category_slug: null
5+
slug: validate-a-domain
6+
formula:
7+
data:
8+
input:
9+
task: >-
10+
Verify the validity of a given domain and classify its status.\\n\\nHere's the domain to verify: \" + {{Input_1}} + \"\\n\\nSummary of Actions:\\n\\n- Access the domain and check its response.\\n- Determine if the domain is active, returns a 404 error, is parked, or is a redirect.\\n- Ensure the domain is not an email address and is a properly formatted website domain.\\n- Ensure the domain is not a google.com/maps link. That does not represent a businesses website. \\n- Classify the domain based on its status.\\n\\nDetailed Step-by-Step:\\n1. Domain Access: Start by navigating to the domain URL provided.\\n2. Response Check:\\n- Observe the response when the domain is accessed.\\n- If the page loads normally, proceed to step 3.\\n- If the domain returns a \\\"404 Not Found\\\" error, classify it as a \\\"404 Error.\\\"\\n- If the domain redirects to a generic hosting provider page (e.g., GoDaddy, Bluehost), or shows content indicating that it is \\\"For Sale\\\" or \\\"Parked,\\\" classify it as a \\\"Parked Domain.\\\"\\n- If the domain redirects to a non-generic hosting provider and it is a valid business website, return the website.\\n\\nContent Verification:\\n- If the domain loads, verify that the content is genuine and not a placeholder or domain parking page.\\n- Check for indicators of an active, operational website, such as legitimate company information, products, services, or blog content.\\n- If the domain shows only a placeholder or minimal content (indicating it might be parked or inactive), classify it as \\\"Parked Domain.\\\"\\n\\nSecondary Checks:\\n- Use online tools or commands (e.g., ping, whois, or domain lookup services) to further verify the status of the domain if uncertain.\\n- If the domain is listed for sale or shown on a hosting page without any real content, it is not a valid, active domain.\\n\\nConstraints:\\n- Focus on determining whether the domain is actively being used.\\n- Ignore any domains that are clearly placeholders or listed for sale without real content.\\n- Consider a domain valid only if it displays a functioning website with meaningful content. Email addresses should return \\\"Invalid\\\". - Domains that contain google.com/maps should return \\\"Invalid\\\":\\n\\nOutput Format:\\n- Return \\\"Valid Domain\\\" if the domain is active with real content.\\n- Return \\\"404 Error\\\" if the domain returns a 404 error.\\n- Return \\\"Parked Domain\\\" if the domain is a placeholder, for sale, or redirects to a generic page.\\n- Return \\\"Invalid\\\" if the input is not a properly formatted domain (email addresses, google maps links, etc...)\\n- If the domain redirects to a non-generic hosting provider and it is a valid business website, return the website it redirects to.\\n\\nDo not return anything outside one of these 5 options.
11+
---
12+
Domain Name: {{?}}
13+
app_slug: sheet-agent
14+
max_parallel_runs: null
15+
type: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Email Address Classifier
2+
description: >-
3+
This formula helps you to classify the email address into different categories. You need to provide the email content and the formula will return the category of the email.
4+
category_slug: null
5+
slug: email-address-classifier
6+
formula:
7+
data:
8+
input:
9+
task: >-
10+
You are an expert in email address classification. Given an email address extract the domain name from the emaill address.Use the email address domain to classify whether the email address is personal or professional.
11+
Personal emails and school emails are typically on domains that are in one of these buckets:
12+
- University or Colleges
13+
- Domains with .edu in them
14+
- ISP
15+
- Search Engines
16+
- Phone operators
17+
- Telecommunications provider
18+
- Email service provider
19+
- Web Portal
20+
- Email provider
21+
- Email hosting service
22+
- Spam Email provider
23+
- web news site
24+
- News portal
25+
- Temporary Email provider
26+
- Non existent
27+
- Freemail or free email
28+
29+
Even if the domain shows the company is a legitimate company - it still may fall into one of the buckets above and should be listed as a personal email.
30+
If the domain is often used for email hosting and the general public can make an email on the domain, its a personal email.
31+
If the domain is associated with a university or college it should also be listed as a personal email. These aren't technically work emails.
32+
But that list is not exhaustive. We are trying to exclude companies that fall into one of those buckets (Or similar buckets) - as these often allow people to create public personal emails. Telecommunications providers often are used for personal emails which is why i'd like those listed as personal emails. Same with College and university emails - these typically aren't true work emails and should be listed as personal emails.
33+
34+
If the email address is likely a Work Email, return Work Email. If an email on that domain is likely a Personal Email, return Personal Email. Only return one of these two options.
35+
36+
----
37+
Email Address: {{?}}
38+
39+
app_slug: sheet-agent
40+
max_parallel_runs: null
41+
type: 2

0 commit comments

Comments
 (0)