Auxy normalizes citations by parsing grounding chunks and text segment supports from Google Gemini responses, while classifying sources as selected or unselected based on annotation links in OpenAI GPT responses.

flowchart TD
    Raw[Raw LLM Response] --> Route{Provider Router}
    Route -->|Google| G[parse_google_citations]
    Route -->|OpenAI| O[parse_openai_citations]
    Route -->|Anthropic| A[parse_anthropic_citations]
    G --> GChunks[Extract groundingChunks<br/>and groundingSupports]
    O --> OAnnot[Match web_search_call<br/>vs message annotations]
    A --> ATool[Extract web_search_tool_result<br/>vs text citations]
    GChunks --> Norm[Normalized Citations]
    OAnnot --> Norm
    ATool --> Norm