dhisana 0.0.1.dev255__tar.gz → 0.0.1.dev256__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/PKG-INFO +1 -1
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/setup.py +1 -1
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_email_response.py +132 -117
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/PKG-INFO +1 -1
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/README.md +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/pyproject.toml +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/setup.cfg +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/cli/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/cli/cli.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/cli/datasets.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/cli/models.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/cli/predictions.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/schemas/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/schemas/common.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/schemas/sales.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/ui/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/ui/components.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/add_mapping.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/agent_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/apollo_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/assistant_tool_tag.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/built_with_api_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/cache_output_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/cache_output_tools_local.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/check_email_validity_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/check_for_intent_signal.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/clay_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/clean_properties.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/company_utils.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/compose_salesnav_query.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/compose_search_query.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/composite_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/dataframe_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/domain_parser.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/email_body_utils.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/email_parse_helpers.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/email_provider.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/enrich_lead_information.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/fetch_openai_config.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/field_validators.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/g2_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_content.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_custom_message.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_email.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_flow.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/google_custom_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/google_oauth_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/google_workspace_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/hubspot_clearbit.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/instantly_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/linkedin_crawler.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/lusha_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/mailgun_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/mailreach_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/microsoft365_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openai_helpers.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/profile.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/proxy_curl_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/python_function_to_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/research_lead.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/search_router.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/search_router_jobs.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/sendgrid_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serarch_router_local_business.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_google_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_search_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serperdev_local_business.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serperdev_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/smtp_email_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/test_connect.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/trasform_json.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/web_download_parse_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/workflow_code_model.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/zoominfo_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/workflow/__init__.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/workflow/agent.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/workflow/flow.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/workflow/task.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/workflow/test.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/SOURCES.txt +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/dependency_links.txt +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/entry_points.txt +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/requires.txt +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana.egg-info/top_level.txt +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_agent_tools.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_apollo_company_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_apollo_lead_search.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_connectivity.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_email_body_utils.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_google_document.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_hubspot_call_logs.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_linkedin_serper.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_mailreach.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_mcp_connectivity.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_proxycurl_get_company_search_id.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_proxycurl_job_count.py +0 -0
- {dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/tests/test_structured_output_with_mcp.py +0 -0
|
@@ -246,129 +246,144 @@ async def generate_inbound_email_response_copy(
|
|
|
246
246
|
sender_data = cleaned_context.sender_info or SenderInfo()
|
|
247
247
|
|
|
248
248
|
prompt = f"""
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
Do not
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
249
|
+
You are a B2B account executive replying to warm inbound or engaged leads.
|
|
250
|
+
|
|
251
|
+
Your goal is to sound natural, helpful, and human while following all triage,
|
|
252
|
+
compliance, and action rules below.
|
|
253
|
+
|
|
254
|
+
Write responses the way a strong AE would type them, not like a system message.
|
|
255
|
+
|
|
256
|
+
=====================================================
|
|
257
|
+
INPUT CONTEXT
|
|
258
|
+
=====================================================
|
|
259
|
+
|
|
260
|
+
1) Email thread to respond to:
|
|
261
|
+
{[thread_item.model_dump() for thread_item in cleaned_context.current_conversation_context.current_email_thread]
|
|
262
|
+
if cleaned_context.current_conversation_context.current_email_thread else []}
|
|
263
|
+
|
|
264
|
+
2) Lead information:
|
|
265
|
+
{lead_data.dict()}
|
|
266
|
+
|
|
267
|
+
Sender information:
|
|
268
|
+
- Full name: {sender_data.sender_full_name or ''}
|
|
269
|
+
- First name: {sender_data.sender_first_name or ''}
|
|
270
|
+
- Last name: {sender_data.sender_last_name or ''}
|
|
271
|
+
- Bio: {sender_data.sender_bio or ''}
|
|
272
|
+
|
|
273
|
+
3) Campaign-specific triage guidelines
|
|
274
|
+
(User overrides always take priority):
|
|
275
|
+
{cleaned_context.campaign_context.email_triage_guidelines}
|
|
276
|
+
|
|
277
|
+
=====================================================
|
|
278
|
+
TRIAGE DECISION LOGIC
|
|
279
|
+
=====================================================
|
|
280
|
+
|
|
281
|
+
Decide first. Write second.
|
|
282
|
+
|
|
283
|
+
• Routine, non-sensitive, clearly actionable
|
|
284
|
+
→ triage_status = "AUTOMATIC"
|
|
285
|
+
|
|
286
|
+
• PII, finance, legal, contracts, compliance, NSFW,
|
|
287
|
+
or document requests
|
|
288
|
+
→ triage_status = "END_CONVERSATION"
|
|
289
|
+
→ Include a brief triage_reason
|
|
290
|
+
|
|
291
|
+
=====================================================
|
|
292
|
+
ACTION SELECTION
|
|
293
|
+
=====================================================
|
|
294
|
+
|
|
295
|
+
Choose exactly ONE action from:
|
|
296
|
+
{allowed_actions}
|
|
297
|
+
|
|
298
|
+
Priority order:
|
|
299
|
+
1. UNSUBSCRIBE
|
|
300
|
+
2. NOT_INTERESTED
|
|
301
|
+
3. OOF_MESSAGE
|
|
302
|
+
4. SCHEDULE_MEETING
|
|
303
|
+
5. FORWARD_TO_OTHER_USER
|
|
304
|
+
6. NEED_MORE_INFO
|
|
305
|
+
7. OBJECTION_RAISED
|
|
306
|
+
8. SEND_REPLY
|
|
307
|
+
9. END_CONVERSATION
|
|
308
|
+
|
|
309
|
+
=====================================================
|
|
310
|
+
HOW THE RESPONSE SHOULD SOUND
|
|
311
|
+
=====================================================
|
|
312
|
+
|
|
313
|
+
This is a warm lead. Assume positive intent.
|
|
314
|
+
|
|
315
|
+
• Friendly, relaxed, and conversational
|
|
316
|
+
• Short sentences. Natural pacing.
|
|
317
|
+
• One clear idea per paragraph
|
|
318
|
+
• No sales pressure. No hype. No buzzwords.
|
|
319
|
+
• Helpful first. Next step second.
|
|
320
|
+
|
|
321
|
+
Think:
|
|
322
|
+
"Thanks for reaching out. Happy to help."
|
|
323
|
+
Not:
|
|
324
|
+
"Thank you for your inquiry regarding..."
|
|
325
|
+
|
|
326
|
+
=====================================================
|
|
327
|
+
RESPONSE STRUCTURE (LOOSE, NOT FORMAL)
|
|
328
|
+
=====================================================
|
|
329
|
+
|
|
330
|
+
Typical flow:
|
|
331
|
+
1. Quick thank-you or acknowledgement
|
|
332
|
+
2. Briefly mirror what they said or asked
|
|
333
|
+
3. Answer or clarify in plain language
|
|
334
|
+
4. Suggest a simple next step, if appropriate
|
|
335
|
+
|
|
336
|
+
Do not force all steps if it feels unnatural.
|
|
337
|
+
|
|
338
|
+
=====================================================
|
|
339
|
+
HARD RULES
|
|
340
|
+
=====================================================
|
|
341
|
+
|
|
342
|
+
• Plain text only. No HTML.
|
|
343
|
+
• Do not repeat previous messages verbatim.
|
|
344
|
+
• Do not invent information, pricing, links, or docs.
|
|
345
|
+
• If a link exists in the inbound email, reuse it exactly.
|
|
346
|
+
• Do not add new links or attachments.
|
|
347
|
+
• If documents are requested, END_CONVERSATION.
|
|
348
|
+
• Never contradict or disparage {campaign_context.lead_info.organization_name}.
|
|
349
|
+
• Do not spam or over-message.
|
|
350
|
+
|
|
351
|
+
=====================================================
|
|
352
|
+
NAMING AND STYLE
|
|
353
|
+
=====================================================
|
|
354
|
+
|
|
355
|
+
• Use conversational company name
|
|
356
|
+
• Use conversational lead first name
|
|
357
|
+
• Do not use special characters or spaces when referencing lead first name
|
|
358
|
+
• Signature must include sender_first_name exactly as provided
|
|
359
|
+
• Preserve clean spacing and newlines
|
|
360
|
+
• Do NOT use em dash
|
|
361
|
+
• Keep it human. Avoid templates.
|
|
362
|
+
|
|
363
|
+
=====================================================
|
|
364
|
+
OUTPUT FORMAT (STRICT JSON)
|
|
365
|
+
=====================================================
|
|
366
|
+
|
|
367
|
+
Return valid JSON only.
|
|
368
|
+
|
|
369
|
+
{
|
|
361
370
|
"triage_status": "AUTOMATIC" or "END_CONVERSATION",
|
|
362
|
-
"triage_reason": "<
|
|
371
|
+
"triage_reason": "<string if END_CONVERSATION, otherwise null>",
|
|
363
372
|
"response_action_to_take": "one of {allowed_actions}",
|
|
364
|
-
"response_message": "<
|
|
365
|
-
}
|
|
373
|
+
"response_message": "<reply body only if SEND_REPLY or SCHEDULE_MEETING, otherwise empty>"
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
=====================================================
|
|
377
|
+
SYSTEM CONTEXT
|
|
378
|
+
=====================================================
|
|
366
379
|
|
|
367
|
-
Current date
|
|
368
|
-
|
|
380
|
+
• Current date: {current_date_iso}
|
|
381
|
+
• Use only provided context
|
|
382
|
+
• If unsure, choose END_CONVERSATION
|
|
369
383
|
"""
|
|
370
384
|
|
|
371
385
|
|
|
386
|
+
|
|
372
387
|
# If there's a vector store ID, use that approach
|
|
373
388
|
if (
|
|
374
389
|
cleaned_context.external_known_data
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/check_email_validity_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/check_linkedin_url_validity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/compose_three_step_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/extract_email_content_for_llm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/generate_linkedin_connect_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openai_assistant_and_file_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/openapi_tool/openapi_tool.py
RENAMED
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/parse_linkedin_messages_txt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serarch_router_local_business.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev255 → dhisana-0.0.1.dev256}/src/dhisana/utils/serpapi_local_business_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|