Intelligence
Due diligence reports, sponsorship matching scores, web traffic analytics, and workspace memory — the research toolkit.
get_due_diligence
Fetch a cached due diligence report for an entity. Does not trigger generation if no report exists yet.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | "brand", "rightholder", "athlete", "event", or "organization" |
entity_name | string | Yes | Entity's canonical name |
Returns
Cached report with cards (leadership, financials, brand image, recent deals, sponsoring history, etc.) and citations, or null if not cached.
Example prompt
"Show me the cached due diligence on Red Bull"
generate_dd
Generate (or retrieve cached) a due diligence report using Claude Opus + web search.
Takes 15–30 seconds when generating. Returns the cached version immediately if already computed (unless force_refresh: true).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | "brand", "rightholder", "athlete", "event", or "organization" |
entity_name | string | Yes | Entity's canonical name |
language | string | No | Report language: "en", "fr", "es", "it", "pt", "de" (default: "en") |
force_refresh | boolean | No | Bypass cache and regenerate (default: false) |
Returns
Full report: { report: { entity_name, entity_type, language, generated_at, cards: [...], from_cache } }.
Each card has key, title, data, citations, confidence, and optional score.
Example prompt
"Generate a due diligence on Adidas in French"
generate_matching
Generate sponsorship matching scores and sales attack angles between an entity and your workspace.
Takes 5–35 seconds total: fetches or generates the DD report first, then runs the matching LLM call.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | "brand", "rightholder", "athlete", etc. |
entity_name | string | Yes | Entity's canonical name |
language | string | No | Output language (default: "fr") |
Returns
{
"report": {
"scores": [
{"key": "brand_alignment", "label": "Brand alignment", "score": 82, "justification": "...", "color": "green"},
{"key": "audience_match", "label": "Audience match", "score": 74, "justification": "...", "color": "green"},
{"key": "media_value", "label": "Media value", "score": 61, "justification": "...", "color": "orange"},
{"key": "deal_viability", "label": "Deal viability", "score": 55, "justification": "...", "color": "orange"}
],
"summary": "Strong brand alignment...",
"angles": [
{
"dimension": "brand_alignment",
"title": "Premium positioning synergy",
"hook": "Both Adidas and [your entity] occupy the performance-premium tier...",
"arguments": ["Shared target demographic 18–35...", "Co-visibility on European stadiums..."]
}
]
}
}
Example prompt
"Generate the matching between Adidas and my workspace, in English"
get_matching_cached
Read pre-computed matching scores for a brand that appears in your hot brands list.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | Entity type |
entity_name | string | Yes | Entity name |
Returns
Same structure as generate_matching, or null if not yet computed.
generate_memory
Generate workspace memory fields by researching your entity on LinkedIn and the web. These fields improve generate_matching accuracy.
Takes 8–15 seconds (Claude Opus + web search).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
workspace_name | string | Yes | Your workspace / organization name |
linkedin_url | string | Yes | LinkedIn URL of your organization |
language | string | No | Output language (default: "en") |
Returns
{
"institutionInfo": "Founded in 1998, [org] is a...",
"fanbaseInfo": "Core fanbase: 18–35, predominantly male...",
"sponsoringStrategy": "Current sponsors include...",
"digitalEngagement": "2.1M followers on Instagram...",
"socialLinkedin": "https://linkedin.com/company/...",
"socialInstagram": "https://instagram.com/..."
}
get_brand_traffic
Web traffic analytics for a brand: monthly visit trend, source breakdown, geographic distribution, ad spend estimate.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
brand_name | string | Yes | Brand name |
domain | string | No | Brand's primary domain (improves accuracy) |
Returns
Traffic payload with visits (monthly series), sources (organic/paid/social/direct percentages), countries (top 5), ad_spend_estimate. Cached for 7 days.
Example prompt
"What is the web traffic of Nike.com?"
save_entity_url
Save a website URL to an entity's node in the graph database. Useful for entities missing a website — improves DD quality and traffic analytics.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_name | string | Yes | Entity name |
entity_type | string | Yes | Entity type |
url | string | Yes | Website URL (e.g. "https://www.entity.com") |
entity_id | string | No | Entity ID (improves accuracy) |
Returns
{ "success": true } or an error.
generate_attack_angles
Generate sales angles and a draft outreach email for a target, from its due diligence and your workspace memory. Runs a paid LLM pass, so it previews and asks for confirmation first.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_name | string | Yes | Target entity |
entity_type | string | Yes | Entity type |
dd_report | object | Yes | The due-diligence report (from get_due_diligence) |
workspace_memory | object | Yes | Your workspace memory profile |
workspace_name | string | Yes | Your workspace name |
language | string | No | Output language (default "fr") |
Example prompt
"Give me angles and a draft email to approach Adidas"
generate_pitch
Generate a commercial pitch for a target from its due diligence and matching report. Runs a paid LLM pass, so it previews and asks for confirmation first.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
entity_name | string | Yes | Target entity |
entity_type | string | Yes | Entity type |
dd_report | object | Yes | The due-diligence report |
matching_report | object | Yes | The matching report (from generate_matching) |
workspace_memory | object | Yes | Your workspace memory profile |
workspace_name | string | Yes | Your workspace name |
language | string | No | Output language (default "fr") |
Example prompt
"Write a pitch for Red Bull based on my matching"
Inline generation (context → save)
For due diligence, matching, and workspace memory, you can generate the report
yourself inline (with your own web search) instead of paying for the backend
LLM pass. The pattern is always: call the get_*_context tool to receive the
research prompt + field schema, write the content, then call the matching
save_* tool to persist it to the same store the app reads. These context tools
are fast and do not call the backend LLM.
get_memory_context
Get the workspace-memory research prompt + field schema so you generate the
memory inline, then call save_workspace_memory.
| Name | Type | Required | Description |
|---|---|---|---|
workspace_name | string | Yes | Workspace name |
linkedin_url | string | No | Workspace LinkedIn URL |
language | string | No | Default en |
Returns { system_prompt, user_prompt, fields }.
save_workspace_memory
Persist a workspace-memory profile you generated. Fields include
socialLinkedin, socialTwitter, socialInstagram, socialFacebook,
socialTiktok, socialYoutube, socialWebsite, institutionInfo,
fanbaseInfo, sponsoringStrategy, digitalEngagement (all optional strings).
get_dd_context
Get the entity context + due-diligence card structure + writing instructions so
you generate each card (paragraph ≤ ~40 words + score) inline, then call
save_due_diligence. Faster than generate_dd.
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | e.g. "brand" |
entity_name | string | Yes | Entity name |
language | string | No | Default en |
save_due_diligence
Persist a DD report you generated inline. cards = [{ key, content, score, citations }].
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | Entity type |
entity_name | string | Yes | Entity name |
cards | object[] | No | The generated DD cards |
entity_id | string | No | Entity id |
language | string | No | Default en |
get_matching_context
Get the DD report + workspace memory + matching instructions (6 dimensions,
color thresholds, angles schema) so you compute fit scores + attack angles
inline, then call save_matching.
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | Entity type |
entity_name | string | Yes | Entity name |
language | string | No | Default fr |
save_matching
Persist a matching report you generated inline (scores + summary + angles) so it surfaces in the app's matching UI.
| Name | Type | Required | Description |
|---|---|---|---|
entity_type | string | Yes | Entity type |
entity_name | string | Yes | Entity name |
report | object | No | The generated matching report |
language | string | No | Default fr |