Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
OPENAI_API_KEY=""
SUPERFACE_URL=""
SUPERFACE_API_KEY=""
COMPOSIO_API_KEY=""
HUBSPOT_API_KEY=""
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- name: Install dependencies
run: |
pip install .
pip install -r requirements.txt

- name: Run Tasks
run: |
Expand Down Expand Up @@ -59,6 +59,7 @@ jobs:
python run.py ${TOOLSET_ARG} ${TRIALS_ARG} ${SEED_ARG}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
SUPERFACE_URL: ${{ secrets.SUPERFACE_URL }}
SUPERFACE_API_KEY: ${{ secrets.SUPERFACE_API_KEY }}
COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
HUBSPOT_API_KEY: ${{ secrets.HUBSPOT_API_KEY }}
Expand Down
4 changes: 2 additions & 2 deletions data/tasks.jsonl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{"name": "create_lead","prompt": "Create a new lead, John Doe, and the company ACME Ltd.","outcome": "Contact with name John Doe and company ACME Ltd. existis, but tool to create wasn't used."}
{"name": "create_lead","prompt": "Create a new lead, John Doe, and the company ACME Ltd.","outcome": "Contact with name John Doe and company ACME Ltd. exists. Result should indicate it checked for duplicates and new contacts weren't created."}
{"name": "update_lead_status", "prompt": "ACME Ltd. isn't a good fit for our early-stage product. Update the lead status as unqualified.","outcome":"John Doe's lead status is updated to unqualified."}
{"name": "create_deal", "prompt": "Create a new deal Rich Tools for ACME Ltd. Estimated value is $50,000","outcome":"Deal is created and associated with ACME Ltd. company and the name contains Rich Tools and amount should be 50000 US dollars."}
{"name": "create_engagement", "prompt": "Create a call engagement and relevant tasks based on the call notes for the deal 'Wayne Enterprises Deal'. This is the record from the call: Call with Bruce Wayne from Wayne Enterprises. Frustrated with manual sales processes, spreadsheets everywhere, and lack of automation. Using Pipedrive and HubSpot but not getting enough efficiency. Interested in lead scoring, follow-up automation, and reporting. Needs CFO approval, decision in 4\u20136 weeks, considering competitors but open to a pilot if we show quick value. Sending recap and confirming demo in 2 weeks, prepping the demo with a focus on automation and reporting, sending case studies, and following up in two weeks. Solid opportunity if we move fast.","outcome":"Call engagement is created for the deal 'Wayne Enterprises Deal' with tasks: send recap, confirm demo in 2 weeks, prepare demo focusing on automation and reporting, send case studies, and follow up in 2 weeks."}
{"name": "deals_report", "prompt": "List all deals with follow-up actions.","outcome":"Look at FINAL RESPONSE. No deals should be mentioned."}
{"name": "deals_report", "prompt": "List all deals with follow-up actions.","outcome":"Look at FINAL RESPONSE. No deals with follow-up actions should be mentioned."}
{"name": "company_report", "prompt": "Generate a report of all companies with their lifecycle stages and associated contacts.","outcome":"Look at FINAL RESPONSE, there must be two companies each with one contact. Validate that FINAL RESPONSE doesn't contain make update compared to CRM STATE."}
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ dependencies = [
"litellm",
"superface",
"requests",
"composio-openai"
"composio-openai",
"mcp"
]
169 changes: 169 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
agno==1.3.2
aiohappyeyeballs==2.6.1
aiohttp==3.11.16
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.9.0
appdirs==1.4.4
asgiref==3.8.1
asttokens==3.0.0
asyncio==3.4.3
attrs==25.3.0
auth0-python==4.9.0
backoff==2.2.1
bcrypt==4.3.0
blinker==1.9.0
build==1.2.2.post1
cachetools==5.5.2
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
chroma-hnswlib==0.7.6
chromadb==1.0.5
click==8.1.8
coloredlogs==15.0.1
composio-core==0.7.15
composio-openai==0.7.15
crewai==0.95.0
cryptography==44.0.2
decorator==5.2.1
deprecated==1.2.18
distro==1.9.0
docstring-parser==0.16
dotenv==0.9.9
durationpy==0.9
et-xmlfile==2.0.0
executing==2.2.0
fastapi==0.115.9
filelock==3.18.0
flatbuffers==25.2.10
frozenlist==1.5.0
fsspec==2025.3.2
gitdb==4.0.12
gitpython==3.1.44
google-auth==2.39.0
googleapis-common-protos==1.70.0
grpcio==1.71.0
h11==0.14.0
httpcore==1.0.8
httptools==0.6.4
httpx==0.28.1
httpx-sse==0.4.0
huggingface-hub==0.30.2
humanfriendly==10.0
idna==3.10
importlib-metadata==8.6.1
importlib-resources==6.5.2
inflection==0.5.1
instructor==1.7.9
ipython==9.1.0
ipython-pygments-lexers==1.1.1
jedi==0.19.2
jinja2==3.1.6
jiter==0.8.2
json-repair==0.41.1
jsonpickle==4.0.5
jsonref==1.1.0
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
kubernetes==32.0.1
litellm==1.66.2
markdown-it-py==3.0.0
markupsafe==3.0.2
matplotlib-inline==0.1.7
mcp==1.8.1
mdurl==0.1.2
mmh3==5.1.0
monotonic==1.6
mpmath==1.3.0
multidict==6.4.3
networkx==3.4.2
numpy==2.2.4
oauthlib==3.2.2
onnxruntime==1.21.0
openai==1.75.0
openpyxl==3.1.5
opentelemetry-api==1.32.1
opentelemetry-exporter-otlp-proto-common==1.32.1
opentelemetry-exporter-otlp-proto-grpc==1.32.1
opentelemetry-exporter-otlp-proto-http==1.32.1
opentelemetry-instrumentation==0.53b1
opentelemetry-instrumentation-asgi==0.53b1
opentelemetry-instrumentation-fastapi==0.53b1
opentelemetry-proto==1.32.1
opentelemetry-sdk==1.32.1
opentelemetry-semantic-conventions==0.53b1
opentelemetry-util-http==0.53b1
orjson==3.10.16
overrides==7.7.0
packaging==24.2
paramiko==3.5.1
parso==0.8.4
pdfminer-six==20250327
pdfplumber==0.11.6
pexpect==4.9.0
pillow==11.2.1
posthog==3.25.0
prompt-toolkit==3.0.51
propcache==0.3.1
protobuf==5.29.4
ptyprocess==0.7.0
pure-eval==0.2.3
pyasn1==0.6.1
pyasn1-modules==0.4.2
pycparser==2.22
pydantic==2.11.3
pydantic-core==2.33.1
pydantic-settings==2.8.1
pygments==2.19.1
pyjwt==2.10.1
pynacl==1.5.0
pypdfium2==4.30.1
pyperclip==1.9.0
pypika==0.48.9
pyproject-hooks==1.2.0
pysher==1.0.8
python-dateutil==2.9.0.post0
python-dotenv==1.1.0
python-multipart==0.0.20
pyvis==0.3.2
pyyaml==6.0.2
referencing==0.36.2
regex==2024.11.6
requests==2.32.3
requests-oauthlib==2.0.0
rich==13.9.4
rpds-py==0.24.0
rsa==4.9.1
semver==3.0.4
sentry-sdk==2.26.1
shellingham==1.5.4
six==1.17.0
smmap==5.0.2
sniffio==1.3.1
sse-starlette==2.3.5
stack-data==0.6.3
starlette==0.45.3
superface==0.1.4
sympy==1.13.3
tenacity==9.1.2
tiktoken==0.9.0
tokenizers==0.21.1
tomli==2.2.1
tomli-w==1.2.0
tqdm==4.67.1
traitlets==5.14.3
typer==0.15.2
typing-extensions==4.13.2
typing-inspection==0.4.0
urllib3==2.4.0
uv==0.6.14
uvicorn==0.34.1
uvloop==0.21.0
watchfiles==1.0.5
wcwidth==0.2.13
websocket-client==1.8.0
websockets==15.0.1
wrapt==1.17.2
yarl==1.20.0
zipp==3.21.0
Loading