TalentPerformer

Finance

Finance

Behavioral Analyses Agent

An AI agent specialized in policyholder behavior modeling and claims behavior analysis. Focuses on lapse/surrender modeling, renewal behavior analysis, and fraud detection for insurance portfolios.

LIVE

Purpose

An AI agent specialized in policyholder behavior modeling and claims behavior analysis. Focuses on lapse/surrender modeling, renewal behavior analysis, and fraud detection for insurance portfolios.

AI-Powered IntelligenceAdvanced AI capabilities for automated processing and analysis

Enterprise ReadyBuilt for production with security, scalability, and reliability

Seamless IntegrationEasy to integrate with your existing systems and workflows

Agent Capabilities

This agent is equipped with the following advanced capabilities:

Knowledge Base

Vector search & retrieval

Knowledge (PgVector)

Available Tools

Csv Tools

CsvTools from agno framework

Compute Lapse Rates By Duration

Model for storing functions that can be called by an agent.

@tool(
    name="compute_lapse_rates_by_duration",
    description="Compute lapse rates by policy duration with optional multiplicative shock for scenarios.",
    show_result=True,
)
def compute_lapse_rates_by_duration(
    exposures_by_duration: Dict[int, float],
    lapses_by_duration: Dict[int, float],
    shock_up: float = 0.0
) -> Dict[str, Any]:
    """
    Compute base and shocked lapse rates by duration.

    Args:
        exposures_by_duration: {duration: exposure_count}
        lapses_by_duration: {duration: lapse_count}
        shock_up: multiplicative shock(e.g., 0.10 for +10%)

    Returns:
        Dict of base rates, shocked rates, and weighted averages.
    """
    base: Dict[int, float] = {}
    shocked: Dict[int, float] = {}
    total_exp = 0.0
    total_lap = 0.0

    for d, exp in exposures_by_duration.items():
        laps = lapses_by_duration.get(d, 0.0)
        rate = (laps / exp) if exp > 0 else 0.0
        base[d] = round(rate, 6)
        shocked[d] = round(rate * (1.0 + shock_up), 6)
        total_exp += exp
        total_lap += laps

    weighted_base = (total_lap / total_exp) if total_exp > 0 else 0.0
    weighted_shocked = weighted_base * (1.0 + shock_up)
    return {
        "base_lapse_rates_by_duration": base,
        "shocked_lapse_rates_by_duration": shocked,
        "weighted_base_lapse_rate": round(weighted_base, 6),
        "weighted_shocked_lapse_rate": round(weighted_shocked, 6),
        "shock_applied": shock_up
    }

Compute Renewal Rates By Segment

Model for storing functions that can be called by an agent.

@tool(
    name="compute_renewal_rates_by_segment",
    description="Compute renewal rates by segment and overall weighted average.",
    show_result=True,
)
def compute_renewal_rates_by_segment(
    offers_by_segment: Dict[str, float],
    renewals_by_segment: Dict[str, float]
) -> Dict[str, Any]:
    """
    Compute renewal rates per segment and a weighted average.

    Args:
        offers_by_segment: {segment: number_of_offers}
        renewals_by_segment: {segment: number_of_renewals}

    Returns:
        Dict with per-segment rates and weighted average.
    """
    rates: Dict[str, float] = {}
    tot_offers = 0.0
    tot_ren = 0.0
    for seg, offers in offers_by_segment.items():
        rens = renewals_by_segment.get(seg, 0.0)
        rate = (rens / offers) if offers > 0 else 0.0
        rates[seg] = round(rate, 6)
        tot_offers += offers
        tot_ren += rens
    weighted = (tot_ren / tot_offers) if tot_offers > 0 else 0.0
    return {
        "renewal_rate_by_segment": rates,
        "weighted_renewal_rate": round(weighted, 6),
        "totals": {"offers": tot_offers, "renewals": tot_ren}
    }

Detect Claim Outliers Zscore

Model for storing functions that can be called by an agent.

@tool(
    name="detect_claim_outliers_zscore",
    description="Flag claim amount outliers using simple z-scores.",
    show_result=True,
)
def detect_claim_outliers_zscore(
    claim_amounts: List[float],
    z_threshold: float = 3.0
) -> Dict[str, Any]:
    """
    Compute mean and std, then flag outliers with |z| > threshold.

    Args:
        claim_amounts: list of claim amounts
        z_threshold: threshold in standard deviations

    Returns:
        Dict with summary stats, outlier indices and values.
    """
    n = len(claim_amounts)
    if n == 0:
        return {"error": "Empty list."}
    mean = sum(claim_amounts) / n
    var = sum((x - mean) ** 2 for x in claim_amounts) / n
    std = var ** 0.5
    outliers: List[Tuple[int, float, float]] = []
    if std == 0:
        "color: #6b7280;"># All equal amounts
        return {
            "mean": round(mean, 2),
            "std": 0.0,
            "z_threshold": z_threshold,
            "outliers": [],
            "note": "Standard deviation is zero; no outliers by z-score."
        }
    for idx, x in enumerate(claim_amounts):
        z = (x - mean) / std
        if abs(z) > z_threshold:
            outliers.append((idx, round(x, 2), round(z, 3)))
    return {
        "mean": round(mean, 2),
        "std": round(std, 2),
        "z_threshold": z_threshold,
        "outliers": [{"index": i, "amount": v, "z": z} for i, v, z in outliers],
        "outliers_count": len(outliers)
    }

Exa

ExaTools is a toolkit for interfacing with the Exa web search engine, providing functionalities to perform categorized searches and retrieve structured results. Args: enable_search (bool): Enable search functionality. Default is True. enable_get_contents (bool): Enable get contents functionality. Default is True. enable_find_similar (bool): Enable find similar functionality. Default is True. enable_answer (bool): Enable answer generation. Default is True. enable_research (bool): Enable research tool functionality. Default is False. all (bool): Enable all tools. Overrides individual flags when True. Default is False. text (bool): Retrieve text content from results. Default is True. text_length_limit (int): Max length of text content per result. Default is 1000. api_key (Optional[str]): Exa API key. Retrieved from `EXA_API_KEY` env variable if not provided. num_results (Optional[int]): Default number of search results. Overrides individual searches if set. start_crawl_date (Optional[str]): Include results crawled on/after this date (`YYYY-MM-DD`). end_crawl_date (Optional[str]): Include results crawled on/before this date (`YYYY-MM-DD`). start_published_date (Optional[str]): Include results published on/after this date (`YYYY-MM-DD`). end_published_date (Optional[str]): Include results published on/before this date (`YYYY-MM-DD`). type (Optional[str]): Specify content type (e.g., article, blog, video). category (Optional[str]): Filter results by category. Options are "company", "research paper", "news", "pdf", "github", "tweet", "personal site", "linkedin profile", "financial report". include_domains (Optional[List[str]]): Restrict results to these domains. exclude_domains (Optional[List[str]]): Exclude results from these domains. show_results (bool): Log search results for debugging. Default is False. model (Optional[str]): The search model to use. Options are 'exa' or 'exa-pro'. timeout (int): Maximum time in seconds to wait for API responses. Default is 30 seconds.

Required Inputs

Generated Outputs

Business Value

Automated processing reduces manual effort and improves accuracy

Consistent validation logic ensures compliance and audit readiness

Early detection of issues minimizes downstream risks and costs

Graph

Behavioral Analyses Agent preview

Pricing

Get in touch for a tailored pricing

Contact us to discuss your specific needs and requirements and get a personalized plan.

Custom Deployment

Tailored to your organization's specific workflows and requirements.

Enterprise Support

Dedicated support team and onboarding assistance.

Continuous Updates

Regular updates and improvements based on latest AI advancements.

Contact Us

For enterprise deployments.

Custom

one time payment

plus local taxes

Contact Sales

Tailored solutionsCustom pricing based on your organization's size and usage requirements.