June 25, 2026
Personalized language-model assistants are often evaluated through a memory lens: can a model recall preferences users have explicitly stated in dialogue? More comprehensive personalization demands a harder capability—inferring what users care about from the multimodal traces they naturally leave behind. We introduce SocialPersona , a benchmark for evaluating whether multimodal large language models (MLLMs) can recover revealed preferences from longitudinal social-media timelines and use them in dialogue. Built from longitudinal timelines of 171 everyday, non-promotional social-media users, SocialPersona contains text, images, timestamps, and 2,597 human-verified preference tags across seven interest domains, separating stable interests from recent interests. It supports two tasks: constructing structured user profiles from multimodal context and generating responses aligned with inferred profiles. Experiments with proprietary and open-weight MLLMs show that models can identify broad interest domains, yet their performance drops on fine-grained and recent interests and degrades further when inferred profiles must be used to personalize dialogue. Together with evidence that text and images provide complementary preference signals, these results indicate that robust cross-modal, long-horizon user modeling remains a key challenge, and that SocialPersona can help measure and advance progress toward assistants that infer and act on revealed preferences.
Personalized assistants are increasingly expected to account for a user’s long-term interests, recent activities, and implicit preferences [1]–[3]. Existing benchmarks, however, mainly test whether models remember preferences explicitly stated in dialogue, emphasizing memory rather than insight. In practice, preferences are often revealed indirectly through what users create, share, photograph, discuss, and repeatedly engage with [4], [5]. Social-media timelines offer a rich source of such signals, but recovering them requires aggregating multimodal evidence over time, distinguishing stable hobbies from recent fixations, and applying the inferred profile in personalized interaction. Figure 1 illustrates how timeline evidence can be transformed into stable and recent interests for dialogue.
Prior benchmarks mostly represent user context as dialogue-derived stated preferences [6]–[9]. Although recent work incorporates longer behavioral histories [5], it still relies on synthetic or structured textual logs. These settings bypass a key challenge for MLLMs: inferring user interests from noisy, unstructured, longitudinal social-media traces, where evidence is weak, distributed across posts, and often available only through images, timestamps, or cross-post patterns.
We introduce SocialPersona , a benchmark for evaluating MLLM personalization from multimodal social-media context. Built from real timelines of everyday, non-promotional users, SocialPersona contains chronologically organized text, images, and timestamps. From these timelines, we construct human-validated interest profiles across seven domains: sports and outdoor activities, entertainment, gaming, food and drink, travel and city exploration, photography and creation, and pets. Each profile separates stable interests from recent interests and grounds them in supporting evidence.
SocialPersona supports two evaluation settings. In profile construction, models infer active domains and fine-grained interest tags from raw multimodal timelines. In personalized dialogue generation, models receive social-media context with a current request and are evaluated on whether their responses align with the user’s stable or recent interests. Together, these tasks test whether MLLMs can both recover implicit preferences and use them in downstream interaction.
Concretely, SocialPersona contains timelines from 171 real users, with an average of 176.81 posts and 130.38 images per user. A semi-automated pipeline followed by human verification yields 2,597 preference tags grounded in textual, visual, and temporal evidence. Experiments with proprietary and open-weight MLLMs show that current models still struggle to infer fine-grained and recent interests, and to consistently use inferred profiles in personalized responses.
Our contributions are three-fold:
We introduce a new task formulation that challenges MLLMs to infer user preferences from longitudinal, multimodal social-media behavior—aggregating sparse textual, visual, and temporal signals across long horizons—and to apply the inferred preferences in personalized dialogue generation.
We construct SocialPersona , a real-user benchmark with long-horizon timelines, multimodal evidence, timestamps, and human-validated profiles across seven domains, and publicly release benchmark code with a de-identified evaluation subset2.
We evaluate proprietary and open-weight MLLMs on profile construction and personalized dialogue generation, revealing gaps in cross-modal evidence aggregation and user-aligned response generation.
| Benchmark | Context source | |||||
| modal | ||||||
| Data | ||||||
| Pref. | ||||||
| Eval | ||||||
| Eval | ||||||
| LaMP [6] | user text history | |||||
| PrefEval [7] | dialogue history | |||||
| PERSONAMEM [8], [10] | dialogue history | |||||
| Mem-PAL [5] | behavioral logs + dialogue | |||||
| ALPBench [11] | e-commerce behavior | |||||
| GISTBench [12] | short-video engagement | |||||
| (ours) | user social timeline |
4pt
Recent personalization benchmarks mainly construct user context from dialogue histories or structured behavior logs. LaMP [6] evaluates personalized language tasks from user-specific textual histories, while PrefEval [7], PersonaMem [8], and PersonaLens [9] study preference recognition, user memory, and personalized response generation from conversational context. More recent benchmarks move toward longer-term behavioral modeling, including Mem-PAL [5] for behavioral-log-grounded dialogue and ALPBench [11] / GISTBench [12] for e-commerce or short-video interest inference. Agent-oriented benchmarks further extend personalization to search, web, and mobile environments [13]–[17].
As summarized in Table 1, SocialPersona differs from prior benchmarks by combining multimodal input, real-user data, revealed-preference signals, profile evaluation, and dialogue evaluation in one setting.
Prior multimodal social-media datasets study content-level tasks such as sentiment and affect analysis [18]–[20], sarcasm and humor detection [21], crisis response [22], misinformation verification [23]–[27], harmful-content recognition [28], [29], and broad MLLM evaluation on social-networking scenarios [30]–[32]. However, these benchmarks primarily label individual posts or interactions for predefined tasks. User-related signals, when included, are usually treated as demographic attributes, engagement prediction, or recommendation targets. SocialPersona instead treats a user’s timeline as external personalization context: models must aggregate sparse textual, visual, and temporal evidence across many posts, distinguish stable from recent interests, and generate responses aligned with the inferred profile.
We study whether MLLMs can infer and use preferences from social-media timelines. For each user \(u\), a temporally ordered timeline \(\mathcal{S}_u = \langle p_1, \dots, p_n \rangle\) consists of posts \(p_i = (x_i, v_i, \tau_i)\) with text \(x_i\), visuals \(v_i\), and timestamp \(\tau_i\), spanning at most 200 posts over two years.
We define profiles over seven interest domains adapted from prior preference taxonomies [7] and platform-level interest categories: \(\{\)sports_outdoor, entertainment, gaming, food_drink, travel_city_exploration, photography_creation, pets\(\}\). For each active domain, the gold profile contains stable interests (recurring patterns across the timeline), recent interests (emerging or time-local signals near the end of the observation window), and supporting evidence links retained for auditability. We exclude demographic, identity-related, health, political, and other sensitive attributes.
SocialPersona supports two tasks. In profile construction, a model predicts stable and recent interest tags from the user timeline. In personalized dialogue generation, a model receives the timeline together with a natural user request and generates a response aligned with the user’s stable or recent interests. The overall construction and evaluation pipeline is shown in Figure 2: SocialPersona first converts raw social-media timelines into human-verified stable and recent interest profiles, and then evaluates whether MLLMs can recover these profiles and use them in personalized dialogue.
We construct SocialPersona from real social-media timelines of long-tail organic users, rather than celebrities, brand accounts, or highly curated public profiles. This design choice is intended to capture relatively natural, self-expressive preference traces instead of broadcast-oriented content. Starting from 8,000 candidate accounts, we apply automatic filters based on follower count, follower–followee ratio, and image trace density, retaining accounts with 5–5,000 followers, FFR in \([0.5,2]\), and ITDR \(\geq 0.3\). These filters remove extremely sparse, highly public, or insufficiently multimodal accounts while reducing the presence of broadcaster-style users [33], [34]. We then manually inspect the remaining accounts to exclude commercial, repost-heavy, or otherwise low-quality cases, resulting in 250 candidate users. Detailed definitions of FFR, ITDR, and the manual filtering criteria are provided in Appendix 7.
For each selected user, we collect up to 200 posts from the most recent two-year window. Each post is stored as a structured multimodal record containing its timestamp, textual content, hashtags, URLs, and attached visual content, including images or video cover frames. As the original posts come from users across multiple countries and languages, we standardize all textual content by translating it into English, thereby enabling consistent profile construction and evaluation. After profile construction and verification, we further remove users with fewer than three active interest domains, as such profiles provide insufficient personalization signals for reliable evaluation. This yields the final benchmark of 171 users.
Given each user’s multimodal timeline, we construct gold profiles with an LLM-assisted but human-verified pipeline. First, we use Gemini-3-Flash [35], [36] to perform conservative post-level extraction from the original text and visual content. The extractor
is instructed to identify only observable, evidence-grounded interest signals, record modality attribution, and avoid demographic, identity-related, or speculative claims.
Second, we aggregate post-level candidates across each timeline. Near-duplicate posts are down-weighted, semantically equivalent tags are merged into canonical interests, and each user-domain pair is represented as an evidence pack. Third, we compute preliminary stable and recent assignments using duplicate-adjusted support, temporal dispersion, recency, and confidence. Stable interests require repeated support across the timeline, while recent interests emphasize evidence concentrated in the most recent 90 days.
Fourth, we apply an LLM-based calibration stage using Gemini-3.1-Pro [37], [38]. This stage checks the aggregated evidence packs, canonical candidates, scores, and preliminary temporal buckets for weak support,
over-generalization, speculative labels, and bucket errors. Finally, trained annotators manually verify each calibrated profile against its supporting posts. Accepted interests must be concrete, domain-appropriate, sufficiently supported, and assigned to
the correct temporal bucket.
Five trained annotators independently verified each user profile, with disagreements resolved by an additional adjudicator. The process required approximately 350 annotator-hours. On a 40-user overlap subset, inter-annotator agreement reached Krippendorff’s \(\alpha=0.72\) for tag acceptance and \(\alpha=0.63\) for stable/recent bucket assignment. Human verification modified about 12% of pipeline-proposed tags: 8% removed for insufficient evidence, 3% refined to more concrete labels, and 1% added as missed but supported interests, confirming that human oversight is essential for benchmark quality.
All experiments use a fixed 100-user subset to ensure comparable cost and conditions. We evaluate profile construction and personalized dialogue generation using a timeline representation consisting of post text, image captions, and timestamps.
Our main model suite is designed to cover both proprietary and open-weight MLLMs. The initial suite contains six models: Gemini-2.5-Flash [39], GPT-4o-mini [40], GPT-5.4 [41], Qwen2.5-VL-7B-Instruct [42], Qwen3-VL-8B-Instruct [43], and Qwen3.5-35B-A3B [44].
Given \(\widetilde{\mathcal{S}}_u^{M}\), each method predicts stable and recent interests over seven domains. A domain is active if it has at least one gold interest, and predicted active if the method outputs any
interest in it. For interest-tag recovery, we evaluate each user, domain, and bucket \(b \in \{\mathrm{stable}, \mathrm{recent}\}\) using normalized exact match, followed by o3 [45]-based semantic matching for unmatched tags as in Appendix 6.3. Matches are one-to-one and define true
positives; unmatched predictions and gold tags are false positives and false negatives.
The dialogue task evaluates whether a model can generate personalized but not over-personalized recommendations from social-media-derived user information. We evaluate four dialogue input settings. The first is a timeline-conditioned setting, where the model receives the user’s post text, image captions, and timestamps directly. The remaining three are two-stage profile-conditioned settings: the model first constructs a profile using one of the three profile-construction settings described below, and then generates a dialogue response using only that generated profile as personalization context. These settings test whether a model-generated profile can serve as an effective intermediate memory representation, rather than only being evaluated as a structured prediction.
For each dialogue setting, we consider two intents: stable-interest recommendation, which targets the user’s long-term preferences, and recent-interest exploration, which introduces mildly novel yet personally suitable items. For each setting, we
prepare ten natural requests and randomly sample one for each user–setting instance; the full pools are given in Appendix 6.5. We use GPT-5.5 [46] and Qwen3.7-Max [47] as judges,
following the prompt in Appendix 6.6. Given the gold profile, the judge scores each response on interest coverage, concreteness, and fluency.
We evaluate profile construction across three settings and six models (Table 2), separating model capability from the strategy used to handle long timelines.
Direct feeds the full timeline (text, image captions, timestamps, up to 200 posts) in one pass. Hierarchical splits the timeline into 20-post chunks, summarizes each independently, then aggregates chunk summaries into the final profile. Extractive–abstractive proceeds in two stages as detailed in Appendix 6.9. First (extraction), the LLM is prompted to select up to \(K=12\) representative posts per domain, guided by relevance, specificity, recurrence, recency, and multimodal grounding. Second (abstractive synthesis), the LLM generates the profile using only the selected posts as evidence, with no access to the original full timeline.
| Model | Active F1 | Int. Prec. | Int. Rec. | Int. F1 | Stable F1 | Recent F1 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gemini-2.5-Flash | 0.5323 | 0.2379 | 0.3288 | 0.0219 | ||||||||||||||
| GPT-4o-mini | 0.7454 | 0.4627 | 0.1992 | 0.2785 | 0.1832 | |||||||||||||
| GPT-5.4 | 0.8383 | 0.3405 | 0.0687 | |||||||||||||||
| Qwen2.5-VL-7B-Instruct | 0.0647 | 0.4643 | 0.0085 | 0.0167 | 0.0228 | 0.0000 | ||||||||||||
| Qwen3-VL-8B-Instruct | 0.5969 | 0.3636 | 0.1625 | 0.2246 | 0.2148 | 0.0390 | ||||||||||||
| Qwen3.5-35B-A3B | 0.7875 | 0.5490 | 0.1763 | 0.2669 | 0.2989 | 0.0133 | ||||||||||||
| Gemini-2.5-Flash | 0.7337 | 0.0426 | 0.0791 | 0.0663 | 0.0300 | |||||||||||||
| GPT-4o-mini | 0.8260 | 0.4201 | 0.2687 | 0.3277 | 0.3283 | 0.0653 | ||||||||||||
| GPT-5.4 | 0.5121 | |||||||||||||||||
| Qwen2.5-VL-7B-Instruct | 0.7395 | 0.3818 | 0.1153 | 0.1772 | 0.1549 | 0.0291 | ||||||||||||
| Qwen3-VL-8B-Instruct | 0.8038 | 0.3971 | 0.2706 | 0.3219 | 0.2802 | 0.1129 | ||||||||||||
| Qwen3.5-35B-A3B | 0.8066 | 0.4556 | 0.2320 | 0.3074 | 0.3409 | 0.0679 | ||||||||||||
| Gemini-2.5-Flash | 0.2971 | 0.0334 | 0.0633 | 0.0514 | 0.0270 | |||||||||||||
| GPT-4o-mini | 0.8249 | 0.4297 | 0.1442 | 0.2159 | 0.0195 | 0.0746 | ||||||||||||
| GPT-5.4 | 0.8428 | 0.4500 | ||||||||||||||||
| Qwen2.5-VL-7B-Instruct | 0.3735 | 0.2717 | 0.0164 | 0.0309 | 0.0053 | 0.0123 | ||||||||||||
| Qwen3-VL-8B-Instruct | 0.5247 | 0.3259 | 0.0478 | 0.0834 | 0.0640 | 0.0188 | ||||||||||||
| Qwen3.5-35B-A3B | 0.3829 | 0.2058 | 0.2677 | 0.2349 | 0.0906 |
6pt
| Model | Cov. | Conc. | Flu. | Avg. | ||||
|---|---|---|---|---|---|---|---|---|
| 2-3 (lr)4-5 (lr)6-7 (lr)8-9 | GPT-5.5 | Qwen3.7 | GPT-5.5 | Qwen3.7 | GPT-5.5 | Qwen3.7 | GPT-5.5 | Qwen3.7 |
| Gemini-2.5-Flash | 1.8800 | 2.4200 | 3.1700 | 3.1200 | 3.8400 | 4.2000 | 2.9633 | 3.2467 |
| GPT-4o-mini | 1.9700 | 2.2500 | 3.5100 | 2.8700 | 3.9200 | 3.8900 | 3.1333 | 3.0033 |
| GPT-5.4 | 2.3600 | 2.8100 | 4.0200 | 4.1600 | 4.3200 | 4.7300 | 3.5667 | 3.9000 |
| Qwen2.5-VL-7B-Instruct | 1.6300 | 1.7800 | 3.0400 | 2.4000 | 2.9700 | 2.7000 | 2.5467 | 2.2933 |
| Qwen3-VL-8B-Instruct | 2.2200 | 2.5500 | 3.7300 | 3.5200 | 3.9600 | 4.2300 | 3.3033 | 3.4333 |
| Qwen3.5-35B-A3B | 1.6300 | 2.0300 | 3.4200 | 3.1200 | 3.8400 | 3.9900 | 2.9633 | 3.0467 |
| Gemini-2.5-Flash | 1.6400 | 2.0600 | 2.6300 | 2.2800 | 3.7600 | 3.8700 | 2.6767 | 2.7367 |
| GPT-4o-mini | 1.9500 | 2.2300 | 3.2600 | 2.7400 | 3.8200 | 3.9600 | 3.0100 | 2.9767 |
| GPT-5.4 | 2.5400 | 3.0400 | 3.9200 | 3.9400 | 4.1900 | 4.6500 | 3.5500 | 3.8767 |
| Qwen2.5-VL-7B-Instruct | 0.8800 | 1.0800 | 2.4700 | 1.8300 | 3.1500 | 2.9500 | 2.1667 | 1.9533 |
| Qwen3-VL-8B-Instruct | 2.5600 | 2.8000 | 3.5700 | 3.2400 | 4.0300 | 4.2900 | 3.3867 | 3.4433 |
| Qwen3.5-35B-A3B | 1.9300 | 2.3300 | 3.0200 | 2.6500 | 3.7900 | 4.0100 | 2.9133 | 2.9967 |
| Gemini-2.5-Flash | 1.4000 | 1.6100 | 2.6300 | 2.1500 | 3.6800 | 3.9600 | 2.5700 | 2.5733 |
| GPT-4o-mini | 2.0300 | 2.2100 | 3.2700 | 2.6100 | 3.8900 | 3.9100 | 3.0633 | 2.9100 |
| GPT-5.4 | 2.5000 | 2.8900 | 3.8100 | 3.7200 | 4.1400 | 4.5000 | 3.4833 | 3.7033 |
| Qwen2.5-VL-7B-Instruct | 1.7100 | 1.7700 | 2.9700 | 2.2200 | 3.3700 | 3.2000 | 2.6833 | 2.3967 |
| Qwen3-VL-8B-Instruct | 2.0700 | 2.2300 | 3.2900 | 2.9600 | 3.9400 | 3.9600 | 3.1000 | 3.0500 |
| Qwen3.5-35B-A3B | 1.8800 | 2.2200 | 3.1200 | 2.6900 | 3.7500 | 3.9300 | 2.9167 | 2.9467 |
| Gemini-2.5-Flash | 0.9300 | 1.2200 | 2.4800 | 2.0400 | 3.5800 | 3.8500 | 2.3300 | 2.3700 |
| GPT-4o-mini | 1.6200 | 2.0100 | 3.2000 | 2.5400 | 3.8400 | 3.9000 | 2.8867 | 2.8167 |
| GPT-5.4 | 2.5450 | 2.9700 | 4.0350 | 3.8900 | 4.2650 | 4.6200 | 3.6150 | 3.8267 |
| Qwen2.5-VL-7B-Instruct | 1.2400 | 1.3700 | 2.6700 | 1.9400 | 3.2500 | 3.0300 | 2.3867 | 2.1133 |
| Qwen3-VL-8B-Instruct | 1.5300 | 1.6800 | 3.0800 | 2.6400 | 3.9700 | 4.0000 | 2.8600 | 2.7733 |
| Qwen3.5-35B-A3B | 1.9300 | 2.1900 | 3.2000 | 2.7600 | 3.7900 | 3.9800 | 2.9733 | 2.9767 |
The dominant failure mode across all models and settings is systematic over-generalization: models reduce 4–7 gold interest tags to 1–2 broad categories per active domain. Averaged over the direct setting, gold profiles contain 3.4 tags per active domain, while models predict only 1.5. This gap is consistent across all evaluated models and represents a fundamental limitation of current MLLMs in fine-grained preference elicitation from social-media evidence. A prompt analysis in Appendix 10 confirms that this over-generalization is not an artifact of the evaluation prompt: removing the conservative instruction to “prefer fewer, broader tags” does not materially change Interest F1, indicating that the recall gap reflects genuine model limitations rather than benchmark design.
Domain detection varies with evidence modality. Text-dispersed interests, such as music habits, city exploration, and meals, are often missed: in Appendix 12, most models incorrectly mark text-heavy travel and food-drink domains as inactive. In contrast, visually concentrated domains, such as pets and gaming screenshots, obtain the highest F1 scores across settings (Table 13). This asymmetry indicates a reliance on visual salience for domain activation: models reliably activate domains when images directly show relevant content, but often default to inactive when evidence is diffuse and textual. Even GPT-5.4, despite the best overall tag F1, misses 12.5% of gold-active domains under direct profiling.
Stable F1 exceeds Recent F1 across every model, setting, and input mode. This is not simply because recent interests are “harder”—it reflects a fundamental limitation in how models process timelines. Distinguishing an interest that recurs across 18 months (stable) from one concentrated in the most recent 90 days (recent) requires tracking temporal dispersion across posts. Current models receive posts as a flattened sequence; timestamps are present in the input but models show no evidence of computing temporal distribution patterns from them. Gemini-2.5-Flash and Qwen3.5-35B-A3B assign nearly all predicted tags to the stable bucket regardless of the actual temporal evidence, while GPT-4o-mini—the only model with non-trivial Recent F1 (0.086)—distributes tags more evenly between buckets but without temporal alignment, suggesting its higher Recent F1 reflects a flatter prior over buckets rather than genuine temporal discrimination.
Hierarchical profiling improves Interest F1 for strong models (GPT-5.4, GPT-4o-mini) but causes conservative models to collapse, as sparse chunk-level summaries leave the aggregation step with insufficient evidence. The same pattern recurs in the extractive setting: capable models benefit from the two-stage decomposition while weaker models degrade further. Detailed per-model breakdowns are provided in Appendix 12.
Table 3 reports dialogue results across four input settings and six models. The timeline-conditioned setting provides the raw timeline directly. The other three are profile-conditioned: the model first constructs a profile using one of the three settings from Table 2, then generates a response using only that profile. We report three judge-scored dimensions (0–5 scale) and their unweighted average \(\mathrm{Avg} = (\mathrm{Coverage} + \mathrm{Concreteness} + \mathrm{Fluency}) / 3\).
Profile conditioning filters timeline noise but also propagates profiling errors. When generated profiles are sparse, personalization coverage and concreteness drop; when profiles are richer, the intermediate profile can improve dialogue quality. For example, Gemini-2.5-Flash loses coverage under profile conditioning, while GPT-5.4 slightly improves coverage, suggesting that profile quality determines whether the profile acts as a useful memory representation or an information bottleneck. The profile–dialogue correlation analysis (Section 4.4) confirms this dependency quantitatively, with 16 of 18 Interest F1–Avg.correlations positive and stronger under the tighter information bottleneck of hierarchical and extractive profiling. Fluency remains relatively stable across settings and models (3.0–4.3 for most), indicating that the core challenge is not generating readable text but producing responses that engage the correct interests.
A 30-response human agreement study confirms that the three dialogue dimensions are reliably judgeable and that both LLM judges track human rankings. Inter-annotator agreement is substantial for fluency, concreteness, and coverage (\(\alpha=0.79/0.71/0.65\)), and GPT-5.5 correlates most strongly with human mean scores (\(\rho=0.76/0.65/0.58\), all \(p<0.01\)). Full sampling and annotation details are in Appendix 15.
Input modality analysis on Qwen3.5-35B-A3B and GPT-4o-mini shows that text provides the main profiling signal, while image captions supply complementary tacit cues: adding captions raises GPT-4o-mini’s Active F1 from 0.503 to 0.737. Timestamps further improve Active F1 but leave Tag F1 largely unchanged, suggesting that temporal structure helps domain detection more than fine-grained tag recovery.
Per-domain breakdown (Table 13) confirms that domains with visually distinctive evidence (pets, gaming) are consistently easier across settings, while domains requiring synthesis of dispersed evidence (travel, entertainment) are hardest.
The two-stage design enables a direct test of whether profile quality translates to dialogue quality. Per-user Spearman rank correlations show that profile Interest F1 positively correlates with dialogue quality: 16 of 18 Interest F1–Avg.correlations are positive (6 significant at \(p<0.05\)), with stronger correlations under Hierarchical and Extractive profiling, where the profile acts as a tighter information bottleneck. Interest F1 correlates most strongly with coverage (15 of 18 pairs significant), confirming that better profiling primarily improves interest engagement.
We introduced SocialPersona , a benchmark for personalized user profiling and response generation from multimodal social-media timelines, built from real social-media user data with human-validated interest profiles across seven domains. Our experiments reveal three central findings. First, current models systematically over-generalize, collapsing specific interests into broad categories—a genuine capability gap, not an artifact of conservative evaluation instructions (Appendix 10). Second, models exhibit pronounced modality asymmetry: visually salient domains are reliably detected while text-distributed domains are frequently missed, and this bias propagates into dialogue. Third, distinguishing stable from recent interests remains beyond current capabilities; models lack the cross-post temporal reasoning needed to separate persistent patterns from emerging ones. The profile–dialogue correlation validates the two-stage design but reveals that sparse profiles compound these failures downstream.
Our evaluation uses image captions rather than raw images because full user timelines can contain hundreds of images, making raw-image evaluation difficult under heterogeneous API limits, visual-token budgets, and upload interfaces. Captions provide a unified cross-model input format but may lose pixel-level details. The modality analysis shows that captions still add substantial signal alongside text for the interest categories studied here.
SocialPersona is designed as an aggregate benchmark for studying personalized modeling from publicly accessible social-media content under a restricted research protocol. Annotation and evaluation are limited to non-sensitive, evidence-grounded interests, and explicitly avoid demographic, identity-related, health, political, or other sensitive inferences. We release only a de-identified text-plus-caption subset, exclude original images, and provide the full benchmark only through controlled research access. The benchmark is intended solely for aggregate model evaluation and research purposes, and must not be used for identification, surveillance, targeting, or consequential decision-making.
Single-Post Analysis — System Promptsystemblue You are an information extraction model for user-interest profiling from a single social media post.
Your job is to extract only observable, evidence-grounded interest signals from the post.
Fixed domains: 1. sports_outdoor: sports participation, exercise, fitness routines, hiking, running, cycling, camping, outdoor recreation, and active-use sports gear. 2. entertainment: movies, TV, music, concerts, books/comics/anime, celebrities, and media consumption. Exclude gaming unless explicitly about games. 3. gaming: video games, gaming hardware/platforms, esports, game fandom, game streaming, and playing/watching games. 4. food_drink: cooking, meals, restaurants, cafes, recipes, coffee, tea, cocktails, and other food/drink consumption or creation. 5. travel_city_exploration: trips, flights, hotels, cities, neighborhoods, sightseeing, landmarks, museums, and city walks/exploration. 6. photography_creation: taking photos, cameras, lenses, editing, visual creation, making images/videos/artworks. Do not assign this domain for a scenic image alone unless the post clearly signals photographing, editing, or creating. 7. pets: pets, pet ownership, pet care, dogs, cats, training, grooming, adoption, veterinary care, pet products, and spending time with companion animals. Exclude wildlife or general nature content unless the post is clearly about personal pets or pet care.
General rules: - Use only explicit evidence from the provided post package and any attached image inputs: text, hashtags, mentions, URL domains, visible metadata, gate result, and optional media summary. - In each evidence item, ‘source’ must be either ‘text’ or ‘visual’. - Do not infer sensitive or demographic attributes. - A post may map to zero, one, or multiple domains, but do not over-assign. - is_noise can only be true when the gate result explicitly indicates too_little_content or meme_image_only. - Tags must be short, reusable, canonical phrases in snake_case. - Prefer specific tags such as trail_running, cold_brew_coffee, city_walks, concert_attendance, dog_care. - Avoid generic tags such as sports, entertainment, lifestyle, fun, daily_life. - Each tag must be directly supported by evidence in the input. - Confidence values must be between 0 and 1. - Typical output should contain at most 3 domains and 1-4 tags per domain.
Allowed tag_type values: - activity - preference - subject - place - object - routine - relation
Return strict JSON only with this schema: "schema_version": "single_post_profile_v1", "is_noise": boolean, "should_use_for_profile": boolean, "noise_reason": "too_little_content" | "meme_image_only" | null, "post_signal_strength": number, "domains": [ "domain": string, "confidence": number, "evidence": [ "source": "text" | "visual", "value": string ], "tags": [ "tag": string, "confidence": number, "tag_type": string ] ], "uncertainty_note": string or null
Single-Post Analysis — User Promptusergreen Analyze the following post for user-interest profiling.
post_package_json
Instructions: - Respect the gate result. If gate_result.is_noise is true, keep the output as noise and do not invent domains. - If there is image media and the gate did not mark it as meme_image_only, do not mark the post as noise solely because the text is short. - Only assign a domain when evidence is explicit. - Use ‘source=text’ for textual cues and ‘source=visual’ for image-only cues. - Keep the output grounded and conservative. - Return JSON only.
Profile Evaluation — System Promptsystemblue You are evaluating a user’s domain-level interests from social-media posts.
Your job is to decide whether a domain is active, and if so, extract only the clearly supported interest tags.
Task: - Decide whether the domain status is active or inactive. - If active, extract the supported interest tags. - If inactive, abstain cleanly: no interest tags.
Definitions: - stable_interest_tags: recurring, reinforced, or stable interests supported across multiple posts or over time. - recent_interest_tags: newer, narrower, or more time-local interests that are supported but not yet stable.
Rules for active domains: - Return only clearly supported tags. Do not try to fill a quota. - Most active domains should have only 1-2 reliable tags in total. - Return more than 2 tags only when the evidence is unusually strong and the tags are clearly distinct. - It is valid to return zero stable_interest_tags. - It is valid to return zero recent_interest_tags. - Each tag must be a short natural-language label that reflects a user interest theme, not a raw keyword list, hashtag list, named entity list, or one-off event. - Prefer fewer, broader tags that capture the user’s main tendencies in this domain. - Do not produce near-duplicate tags across stable and recent buckets. - If two candidate tags largely overlap, keep only the broader or better-supported one. - Do not split one core interest into both stable and recent tags unless the recent tag adds a clearly distinct recent focus. - Do not introduce unsupported themes, motivations, personality traits, or lifestyle claims.
Rules for inactive domains: - stable_interest_tags must be []. - recent_interest_tags must be [].
General rules: - If the evidence is weak, sparse, one-off, or not clearly attributable to user preference, prefer inactive. - If uncertain, choose fewer tags and keep the output conservative. - Return strict JSON only.
Schema: "domain": string, "status": "active" | "inactive", "stable_interest_tags": [string], "recent_interest_tags": [string]
Profile Evaluation — User Promptusergreen Evaluate user profile signal for one domain.
DOMAIN: domain DOMAIN_DEFINITION: domain_definition OUTPUT_STATUS_OPTIONS: active or inactive
POSTS_CONTEXT: posts_context
Instructions: - Read the posts and decide whether this domain contains a reliable user-interest signal. - If active, extract only the clearly supported interest tags for this domain. - Use stable_interest_tags for recurring or stable interests. - Use recent_interest_tags for newer or more time-local interests. - Return only clearly supported tags. Do not try to fill a quota. - Most active domains should have only 1-2 reliable tags in total. - Return more than 2 tags only when the evidence is unusually strong and the tags are clearly distinct. - It is valid to return zero stable_interest_tags. - It is valid to return zero recent_interest_tags. - Use short natural-language labels that describe user interest themes rather than raw hashtags, named entities, or one-off events. - Prefer fewer, broader tags that summarize the user’s main tendencies in this domain. - Do not produce near-duplicate tags across stable and recent buckets. - If two candidate tags largely overlap, keep only the broader or better-supported one. - Do not split one core interest into both stable and recent tags unless the recent tag adds a clearly distinct recent focus. - If the evidence is weak, sparse, one-off, or not clearly attributable to user preference, prefer inactive. - If inactive, return empty tag lists. - Return JSON only.
Profile Matching Judge — System Promptjudgepurple You are an evaluator for domain-level user-interest anchor labels.
Given one gold anchor label and one predicted anchor label within the same domain, decide whether they describe the same core user interest.
Judgment rules: 1. Return true only when both labels express the same core interest theme. 2. A wording rewrite, synonym, parent-child phrasing, or broad-vs-specific phrasing can be true when both labels clearly point to the same underlying user-interest cluster in this domain. 3. Examples that should usually be true: "hiking" vs "outdoor recreation", "coffee" vs "coffee culture", "anime" vs "anime fandom". 4. Examples that should usually be false: sibling interests that share only the same domain, such as "basketball" vs "camping", or labels with clearly different focus. 5. Be conservative. Return strict JSON only.
Profile Matching Judge — User Promptjudgepurple Task ID: task_id
Domain: domain Domain definition: domain_definition
Gold anchor label: gold_label
Predicted anchor label: pred_label
Question: Do these two labels describe the same core user interest in this domain? Return strict JSON only.
Dialogue Generation — System Promptssystemblue [System Prompt – Full-context mode]
You are a concise personalization assistant.
Use only the user’s posts and image captions that are provided in the context. Give one natural, practical recommendation that fits the current user request. Stay close to supported interests and do not invent demographics or hidden motives. When images reveal a hobby, object, routine, food, place, or activity that the text alone would not make obvious, it is valid and desirable to use that signal. Do not mention posts, evidence, pipelines, scoring, benchmarks, profiles, or observation windows unless the user explicitly asks.
[System Prompt – Profile-only mode]
You are a concise personalization assistant.
Use only the user’s profile information that is provided in the context. Give one natural, practical recommendation that fits the current user request. Stay close to supported interests and do not invent demographics or hidden motives. Do not mention evidence, pipelines, scoring, benchmarks, profiles, or observation windows unless the user explicitly asks.
Dialogue Generation — User Prompt Templatesusergreen [User Prompt Template – Full-context mode]
PERSONALIZATION RULES: - Use only the provided posts, image captions, and images. - Answer the user’s request naturally. - Give one concrete recommendation, not a long list. - Do not mention evidence, post indices, profiles, pipelines, scoring, or observation windows.
USER POSTS AND IMAGE CONTEXT: context
USER REQUEST: user_prompt
[User Prompt Template – Profile-only mode]
PERSONALIZATION RULES: - Use only the provided user profile information. - Answer the user’s request naturally. - Give one concrete recommendation, not a long list. - Do not mention evidence, post indices, profiles, pipelines, scoring, or observation windows.
USER PROFILE: context
USER REQUEST: user_prompt
For dialogue evaluation, we sample one user request from the corresponding setting-specific pool. The stable-interest pool targets stable preference use, while the recent-interest pool targets recent exploration that remains compatible with the user’s stable preferences.
I want something that fits my usual taste. Could you recommend one option for me?
Could you suggest one thing I’d probably enjoy based on what I usually like?
I’m looking for a recommendation that feels very me. What’s one good option?
Choose one option that fits what I’ve liked for a while.
I want a safe choice that matches my usual preferences. What should I try?
Recommend one activity or item that seems close to my regular taste.
Based on what I tend to enjoy, what is one practical suggestion?
I’m not trying to branch out today; give me one recommendation that fits my normal style.
What’s one personalized option that would likely suit my everyday interests?
Give me one recommendation grounded in what I’ve consistently liked before.
I want to try something a bit new, but still something that feels like me. Any suggestion?
Could you recommend one fresh option that connects to what I’ve been into lately?
I’m open to exploring something new. What’s one suggestion that still matches my taste?
Choose one option that builds on what has caught my attention recently, without feeling random.
I’d like a small change from my usual choices. What should I try?
Recommend one new-ish activity or item that fits what I seem to be into right now.
What’s one recommendation that reflects what I’ve been paying attention to lately?
I want something slightly outside my routine, but not totally unfamiliar. Any idea?
Suggest one option that feels current for me while still matching my usual taste.
Give me one practical recommendation that feels timely for me, not just my old favorites.
Dialogue Evaluation Judge — System Promptjudgepurple You are an expert judge for social-media-grounded personalized dialogue.
You will be given two independent recommendation cases, the user’s gold profile, and the model responses. The user requests are intentionally natural; do not require the model to mention post evidence or profile labels explicitly.
Important principles: 1. Reward semantic fit to the correct target interests, not exact wording similarity. 2. For stable_recommendation, reward use of stable interests. 3. For recent_interest_exploration, reward use of recent interests while keeping the suggestion compatible with stable interests. 4. Reward concrete, actionable, natural recommendations. 5. Penalize generic filler, unsupported assumptions, demographic guesses, and benchmark-like language. 6. The two cases are independent; do not require dialogue continuity across them. 7. Return strict JSON only.
Score each dimension from 0 to 5 using the rubrics below.
Dialogue Evaluation Judge — Rubricsruleamber RUBRIC: interest_coverage Whether the response engages the correct target interests (stable for stable_recommendation, recent for recent_interest_exploration) in this scenario. - 0: No target interest is engaged; response is generic or irrelevant. - 1: Tangential mention of a target interest but not used as the basis of the recommendation. - 2: One target interest is partially engaged but the recommendation does not clearly center on it. - 3: One target interest is clearly and centrally used as the basis of the recommendation. - 4: Multiple target interests are used naturally, or one interest is used with specific supporting detail. - 5: Rich, precise engagement with the correct target interests; the recommendation feels tailored to this specific user.
RUBRIC: concreteness Whether the recommendation is specific, actionable, and natural rather than generic or vague. - 0: Entirely generic; could apply to any user (e.g., "try something you enjoy"). - 1: A vague suggestion with no actionable detail. - 2: Some concrete element is present but the recommendation remains broad. - 3: A clear, actionable recommendation with at least one specific detail (e.g., a genre, activity, item, or place). - 4: A specific recommendation with supporting context that makes it easy to act on. - 5: A vivid, naturally-phrased recommendation with precise detail that feels like a human friend suggested it.
RUBRIC: fluency Whether the response is well-formed, natural, and free of benchmark artifacts (e.g., scoring language, numbered lists, meta-commentary). - 0: Incoherent or empty response. - 1: Contains obvious benchmark artifacts (e.g., "turn 1:", "post index:", "score: 8/10", JSON remnants). - 2: Awkward phrasing or overly structured language that does not read as natural dialogue. - 3: Natural and readable but slightly stiff or formulaic. - 4: Fluid and natural; reads like a real conversational assistant. - 5: Fully natural, polished, and appropriate to the context; indistinguishable from human-written recommendation.
Dialogue Evaluation Judge — User Promptjudgepurple Evaluate this personalized dialogue prediction.
Use the scenario rubrics inside gold_reference_dialogue. Score interest_coverage, concreteness, and fluency from 0 to 5. Do not require explicit evidence explanation in the model response.
Do not copy the schema hint or return placeholder zeros. If all four scores are 0, brief_rationale must explain why.
judge_input_json
Return strict JSON only.
Image Captioning — System Promptsystemblue You analyze one social-media image for downstream user-interest inference.
Return strict JSON only.
Rules: - Focus on visible content only. - Describe the main subject, activity, setting, mood/style, and any clearly readable text. - Do not infer identity, demographics, private traits, or motivation. - If the image is low-information, say that briefly. - Keep summary concise and concrete.
Hierarchical — Chunk Summarization — System Promptsystemblue You are constructing an evidence-grounded user interest profile from a chronological segment of a user’s social-media timeline.
You will receive a sequence of posts. Each post may contain text, image captions, and a timestamp. Your task is to summarize only the interests that are directly supported by the posts in this segment.
Important rules: 1. Only infer interests that are supported by observable evidence in the posts. 2. Do not infer demographic attributes, personality traits, occupation, gender, age, race, religion, political identity, health status, or other sensitive personal attributes. 3. Distinguish recurring interests from one-off mentions. 4. Use both text and image captions as evidence. 5. Preserve post IDs as evidence anchors. 6. Do not over-generalize. For example, one photo of food does not mean the user is a food enthusiast unless there are repeated signals. 7. If the evidence is weak or incidental, mark it as weak.
Return valid JSON only.
Hierarchical — Global Aggregation — System Promptsystemblue You are aggregating chunk-level summaries into a final user interest profile.
You will receive summaries from multiple chronological chunks of the same user’s social-media timeline. Your task is to merge redundant interests, identify stable and recent interests, and produce a concise final profile.
Important rules: 1. Merge semantically equivalent interests. For example, "home cooking", "cooking meals", and "homemade food" should be normalized if they refer to the same core interest. 2. Stable interests should be supported across multiple posts or multiple time periods. 3. Recent interests should be supported by posts concentrated in the most recent part of the timeline, even if they are not stable. 4. Interests should only be included when supported by clear, repeated evidence; sparse or ambiguous signals should not be promoted to interests. 5. Do not infer sensitive attributes or demographics. 6. Do not create interests that are not supported by the provided chunk summaries. 7. Preserve evidence post IDs whenever possible. 8. Output valid JSON only.
The extractive–abstractive method proceeds in two stages. First, the LLM receives the full user timeline and is prompted to select up to \(K\) representative posts per domain. The selection criteria include relevance, specificity (concrete interest signals rather than vague topics), recurrence (preferring posts consistent with repeated behavior), recency (capturing potential recent interests), and multimodal grounding (using image captions as evidence). Second, the LLM receives only the selected posts and synthesizes the final profile, without access to the original full timeline. The prompts for both stages are shown below.
Extractive — Post Selection — System Promptsystemblue You are selecting representative social-media posts for user interest profiling.
You will receive a user’s chronological social-media timeline. Each post may include text, image captions, and a timestamp. Your task is to select a small set of representative posts for each interest domain. These selected posts will be used later to generate the user’s profile.
Important rules: 1. Select posts only when they provide concrete evidence for the domain. 2. Prefer posts that show recurring interests, strong visual/textual evidence, or recent concentrated activity. 3. Avoid selecting posts that only contain incidental, ambiguous, or very weak signals. 4. Use both text and image captions. 5. Do not infer sensitive attributes or demographics. 6. Do not summarize the profile yet. Only select representative posts. 7. Each domain can have at most the configured K selected posts. 8. If a domain has insufficient evidence, return an empty list for that domain.
Return valid JSON only.
Extractive — Abstractive Synthesis — System Promptsystemblue You are generating an abstractive user interest profile from selected representative social-media posts.
You will receive a small set of representative posts selected for each domain. Each post may contain text, image captions, timestamp, and a selection reason. Your task is to synthesize a concise, evidence-grounded user profile.
Important rules: 1. Use only the selected posts as evidence. 2. Do not infer interests that are not supported by selected posts. 3. Separate stable interests from recent interests. 4. Stable interests should be supported by multiple posts or recurring evidence. 5. Recent interests should be supported by posts concentrated in the most recent period. 6. Only include interests that are clearly supported; do not include interests when evidence is limited or ambiguous. 7. Do not infer sensitive attributes or demographic information. 8. Preserve supporting post IDs for every interest. 9. Output valid JSON only.
Calibration — Evidence-First Extraction — System Promptsystemblue You are performing evidence-first interest summarization for one domain.
Goal: - Produce natural-language interest labels and short descriptions suitable for downstream LLM personalization benchmarking. - Use canonical tags only as evidence anchors, not as the main surface form.
Rules: - Use only provided evidence. - Output human-readable labels (2-6 words), not raw canonical ids. - Labels should usually add user-facing detail beyond any single canonical tag. Synthesize repeated patterns from tag clusters, evidence examples, and representative posts. - For each candidate interest, attach canonical_tags chosen only from the provided tag clusters. - description must be 1 sentence of natural language. - Exclude non-interest attributes such as family roles, career identity, and age range. - Treat memes, reaction images, screenshots, and generic reposted aesthetic content as weak evidence by default. - Do not infer a stable interest, ownership, or hobby from a single image when it could be a joke, repost, borrowed scene, or someone else’s pet/car/food. - For visual evidence, describe only what is directly visible. A photo of purchased food supports eating or dining evidence, not necessarily cooking. - If evidence is sparse or fragmented, say so explicitly. - Return strict JSON only.
Calibration — Domain LLM Calibration — System Promptsystemblue You are calibrating a domain-level interest profile.
Your job: 1) Preserve natural-language candidate interests from pass1 whenever evidence supports them. 2) Use algorithmic statistics only to place interests into stable / recent / weak buckets. 3) Keep canonical_tags as anchors, but do not use raw canonical ids in labels or summaries. 4) Write domain_summary as 2-4 natural sentences suitable for downstream personalization benchmarking.
Hard constraints: - Every interest item must contain both label (natural language) and canonical_tags (from provided clusters only). - domain_summary should mention only labels that appear in structured fields. - Exclude family roles, career identity, and age range from interest output. - Do not treat memes, reaction images, screenshots, or generic reposts as strong evidence unless the user’s personal engagement is repeated across posts. - Do not infer pet ownership, cooking, driving, collecting, or other hands-on hobbies from a single ambiguous image. - If no reliable interest can be extracted, explain that in plain language. - Return strict JSON only.
Calibration — Benchmark Gold Rewrite — System Promptsystemblue You are rewriting an internal domain analysis into a benchmark gold summary for user profiling.
Goal: - Convert an internal analysis-style summary into a natural-language profile summary suitable for evaluating LLM personalization ability. - Keep the summary faithful to the analysis. - Preserve caution, but reduce audit / pipeline wording. - Make the result sound like a concise user-interest profile, not a system report.
Core requirements: - Do NOT invent any new interests, hobbies, personality traits, demographics, or motivations. - Treat stable_interests and recent_interests as the main factual anchors. - Do not upgrade weak evidence into a firm preference. - Do not turn inactive domains into meaningful preference descriptions.
Style requirements: - Keep the tone concise, human-readable, and profile-oriented. - Prefer 2-4 sentences. - Avoid internal jargon such as support_posts, tag_clusters, weak_signal, stable_score. - Prefer natural preference language such as "shows interest in", "tends to engage with", "shows limited signal around", "does not currently provide a reliable signal" when appropriate.
Output requirements: - Return strict JSON only with schema: "summary_natural_gold": string
This appendix provides implementation details that are summarized in Section 3.2 and Section 3.3.
We use three account-level heuristics before manual inspection. First, we retain accounts with 5–5,000 followers, excluding extremely inactive accounts and highly public accounts. Second, we compute the follower–followee ratio (FFR) as \[\mathrm{FFR} = \frac{N_{\mathrm{follower}}}{N_{\mathrm{followee}} + \epsilon},\] where \(\epsilon\) avoids division by zero. We retain accounts with \(\mathrm{FFR}\in[0.5,2]\), which favors relatively reciprocal social neighborhoods and filters highly asymmetric broadcaster-style accounts. Third, we compute the image trace density ratio (ITDR) as \[\mathrm{ITDR} = \frac{N_{\mathrm{posts\;with\;images}}}{N_{\mathrm{total\;posts}}},\] and retain users with \(\mathrm{ITDR}\geq0.3\) to ensure sufficient visual evidence for multimodal profiling.
After automatic filtering, annotators remove accounts that are commercial, celebrity-like, organization-operated, repost-heavy, dominated by low-information content, or lacking sufficient personal and preference-relevant signals. This stage yields 250 candidate users for timeline collection and profile construction.
Post-level interest candidates are aggregated into canonical interests before temporal scoring. Near-duplicate posts are clustered and down-weighted so that repeated captions, repost-like content, or bursty discussions do not count as independent evidence. Semantically equivalent tags are normalized and merged into canonical interests. For each canonical interest, we retain supporting posts, modality attribution, duplicate-adjusted support, temporal distribution, and extraction confidence.
Human verification is conducted over calibrated domain-level profiles and their supporting evidence. Annotators remove unsupported interests, revise overly broad labels into more concrete tags, and add missing tags when the evidence clearly supports them. Accepted labels must be concrete, non-sensitive, domain-appropriate, and supported by the timeline. After this verification stage, users with fewer than three active domains are removed to ensure enough positive personalization signals for evaluation. Our annotators are trained to be conservative and evidence-grounded, avoiding over-interpretation or inference beyond what the timeline supports. This process yields the final set of 100 users for the benchmark.
This section supplements the profile verification (Section 3.3) and dialogue evaluation (Appendix 15) with details on annotator recruitment, compensation, instructions, and data consent.
All annotators were recruited from the undergraduate and graduate student population at the authors’ institution. Annotators were compensated at 50 CNY per hour. This rate exceeds the typical student hourly wage at the authors’ university and is consistent with compensation for comparable annotation tasks in the region.
All annotators received written annotation guidelines before beginning work, covering task definitions, quality rubrics, and annotated examples. For profile verification, annotators were instructed to be conservative and evidence-grounded, accepting interests only when directly supported by timeline evidence (see the criteria in Appendix 7). For dialogue evaluation, annotators received the full 0–5 scoring rubrics shown in Appendix 6.6 and completed a calibration round before the agreement study. The complete instruction documents are available upon request.
The social-media posts used in this benchmark were collected from publicly accessible accounts. We exclude private or restricted-access content. The released benchmark subset contains only de-identified text and captions; original images are excluded to prevent re-identification, and the full dataset is provided only through controlled research access (see Ethical Considerations). No annotator personal information was collected or retained.
This appendix provides the detailed scoring rules used in the algorithmic temporal scoring stage of profile construction. These scores are used only to produce preliminary stable/recent assignments before LLM-based calibration and human verification.
After post-level extraction and cross-post aggregation, each canonical interest \(c\) in domain \(d\) is associated with an evidence set \[\mathcal{E}_{u,d,c} = \{ e_1, e_2, \dots, e_m \},\] where each evidence item corresponds to a supporting post. Each evidence item records the post timestamp, evidence modality, duplicate-adjusted weight, and post-level extraction confidence. If a post belongs to a near-duplicate cluster \(C\), its support weight is discounted by \(1/|C|\), so that repeated or highly similar posts do not artificially inflate an interest.
Let \(w_j\) denote the duplicate-adjusted weight of evidence item \(e_j\), and let \(c_j \in [0,1]\) denote its extraction confidence. The effective support count of a canonical interest is defined as \[S_{\mathrm{eff}} = \sum_{e_j \in \mathcal{E}_{u,d,c}} w_j.\] The average confidence is computed as a weighted average: \[\bar{c} = \frac{\sum_{e_j \in \mathcal{E}_{u,d,c}} w_j c_j}{\sum_{e_j \in \mathcal{E}_{u,d,c}} w_j}.\]
To estimate whether an interest is persistent over time, we divide each user’s timeline into monthly bins. Let \(B_{\mathrm{distinct}}\) be the number of distinct monthly bins that contain at least one supporting evidence item for the canonical interest. Let \(B_{\mathrm{span}}\) be the total number of monthly bins covered by the user’s collected timeline. We set \[B_{\mathrm{req}} = \min(6, B_{\mathrm{span}}),\] so that long timelines require evidence spread across multiple periods, while shorter timelines are not penalized excessively.
The stable score estimates whether a canonical interest reflects a stable preference. It combines three factors: effective support, temporal dispersion, and extraction confidence: \[\begin{align} \mathrm{score}_{\mathrm{stable}} &= 0.60 \min\!\left(1, \frac{S_{\mathrm{eff}}}{3}\right) \\ &\quad + 0.20 \bar{c} + 0.20 \min\!\left(1, \frac{B_{\mathrm{distinct}}}{m}\right), \end{align}\] where \(m = \max(2,B_{\mathrm{req}}-1)\). The first term rewards repeated support after duplicate discounting. The second term incorporates the confidence of post-level extraction. The third term rewards evidence distributed across multiple time periods. This score is designed to favor interests that appear repeatedly and persistently across the user’s timeline.
A canonical interest is marked as a preliminary stable interest if it satisfies \[\mathrm{score}_{\mathrm{stable}} \geq \theta_{\mathrm{stable}}\] and has sufficient temporal support: \[S_{\mathrm{eff}} \geq 3, \qquad B_{\mathrm{distinct}} \geq 2.\] In our implementation, we set \[\theta_{\mathrm{stable}} = 0.65.\]
The recent score estimates whether a canonical interest reflects a recent or emerging preference. We focus on the most recent 90 days of the user’s timeline. Let \(\mathcal{E}_{u,d,c}^{90}\) denote the subset of evidence items whose timestamps fall within this window. We define \[S_{90} = \sum_{e_j \in \mathcal{E}_{u,d,c}^{90}} w_j,\] and \[\bar{c}_{90} = \frac{\sum_{e_j \in \mathcal{E}_{u,d,c}^{90}} w_j c_j}{\sum_{e_j \in \mathcal{E}_{u,d,c}^{90}} w_j}.\] If no evidence appears in the most recent 90 days, we set \(S_{90}=0\) and \(\bar{c}_{90}=0\).
The recent score is defined as \[\mathrm{score}_{\mathrm{recent}} = 0.65 \min\!\left(1, \frac{S_{90}}{2}\right) + 0.35 \bar{c}_{90}.\] Compared with the stable score, the recent score places more emphasis on recent support and does not require broad temporal dispersion across the full timeline.
A canonical interest is marked as a preliminary recent interest if it does not satisfy the stable-interest condition but satisfies \[\mathrm{score}_{\mathrm{recent}} \geq \theta_{\mathrm{recent}}\] and has sufficient recent evidence: \[S_{90} \geq 2.\] In our implementation, we set \[\theta_{\mathrm{recent}} = 0.60.\]
The profile evaluation prompt (Appendix 6.2) instructs models to “prefer fewer, broader tags” and limit most active domains to “1–2 reliable tags.” This conservative design intentionally prioritizes precision over recall: without such guidance, models in pilot experiments produced noisy tag lists containing near-duplicates and one-off mentions that did not reflect genuine user interests.
We note a potential concern: if the prompt constrains output volume, the benchmark may measure prompt compliance rather than profiling capability, creating an artificial ceiling on recall. To rule this out, we conduct a prompt analysis replacing the conservative instructions with a neutral variant that removes all constraints on tag count and breadth. The full neutral system prompt is:
Profile Evaluation — Neutral System Promptsystemblue You are evaluating a user’s domain-level interests from social-media posts.
Your job is to decide whether a domain is active, and if so, extract all clearly supported interest tags.
Task: - Decide whether the domain status is active or inactive. - If active, extract the supported interest tags. - If inactive, abstain cleanly: no interest tags.
Definitions: - long_term_interest_tags: recurring, reinforced, or stable interests supported across multiple posts or over time. - short_term_interest_tags: newer, narrower, or more time-local interests that are supported but not yet stable.
Rules for active domains: - Return all clearly supported interest tags without artificially limiting the count. - It is valid to return zero long_term_interest_tags. - It is valid to return zero short_term_interest_tags. - Each tag must be a short natural-language label that reflects a user interest theme, not a raw keyword list, hashtag list, named entity list, or one-off event. - Prefer precise, specific tags that accurately reflect the user’s demonstrated interests. - Do not produce near-duplicate tags across long-term and short-term buckets. - Do not split one core interest into both long-term and short-term tags unless the short-term tag adds a clearly distinct recent focus. - Do not introduce unsupported themes, motivations, personality traits, or lifestyle claims.
Rules for inactive domains: - long_term_interest_tags must be []. - short_term_interest_tags must be [].
General rules: - If the evidence is weak, sparse, one-off, or not clearly attributable to user preference, prefer inactive. - Return strict JSON only.
The neutral user prompt mirrors the same changes:
Profile Evaluation — Neutral User Promptusergreen Evaluate user profile signal for one domain.
DOMAIN: domain DOMAIN_DEFINITION: domain_definition OUTPUT_STATUS_OPTIONS: active or inactive
POSTS_CONTEXT: posts_context
Instructions: - Read the posts and decide whether this domain contains a reliable user-interest signal. - If active, extract all clearly supported interest tags for this domain. - Use long_term_interest_tags for recurring or stable interests. - Use short_term_interest_tags for newer or more time-local interests. - Return all clearly supported tags. Do not artificially limit the count. - It is valid to return zero long_term_interest_tags. - It is valid to return zero short_term_interest_tags. - Use short natural-language labels that describe user interest themes rather than raw hashtags, named entities, or one-off events. - Prefer precise, specific tags that accurately reflect the user’s demonstrated interests. - Do not produce near-duplicate tags across long-term and short-term buckets. - Do not split one core interest into both long-term and short-term tags unless the short-term tag adds a clearly distinct recent focus. - If the evidence is weak, sparse, one-off, or not clearly attributable to user preference, prefer inactive. - If inactive, return empty tag lists. - Return JSON only.
We evaluate Qwen3.5-35B-A3B under the direct profile construction setting on the full 100-user evaluation subset, using identical gold profiles, anchor-matching, and evaluation protocol across both prompt variants.
| Metric | Conservative | Neutral | \(\Delta\) |
|---|---|---|---|
| Interest Precision | 0.490 | 0.417 | \(-\)0.073 |
| Interest Recall | 0.157 | 0.180 | +0.023 |
| Interest F1 | 0.238 | 0.252 | +0.014 |
| Active F1 | 0.788 | 0.812 | +0.025 |
6pt
Removing the conservative constraints changes metrics only marginally. Interest Recall improves slightly (+0.023), but Interest Precision drops by more (–0.073) as models produce specific tags that misalign with gold labels. The net effect on Interest F1 is negligible (+0.014). These results confirm that the conservative prompt is not the primary driver of low recall—the gap reflects genuine model limitations in recovering fine-grained interests from behavioral traces, not an artifact of benchmark design.
To quantify the relative contribution of each input modality to profiling performance, we evaluate two models under progressively richer input configurations: text only, image captions only, text plus image captions, and the full setting adding timestamps. Table 5 reports active-domain detection and interest-tag recovery across all four conditions. Text provides the primary profiling signal, while image captions and timestamps contribute complementary gains, as discussed in Section 4.4.
| Input mode | Active F1 | Tag F1 | Stable F1 | Recent F1 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Text only | 0.6869 | 0.2198 | 0.2415 | 0.0088 | ||||||||
| Image captions only | 0.6724 | 0.2352 | 0.2782 | 0.0093 | ||||||||
| Text + image captions | 0.7692 | 0.2846 | ||||||||||
| Text + img. caps. + timestamp | 0.2669 | 0.0133 | ||||||||||
| Text only | 0.5033 | 0.1712 | 0.0745 | 0.0592 | ||||||||
| Image captions only | 0.4992 | 0.1527 | 0.1122 | 0.0352 | ||||||||
| Text + image captions | 0.7367 | 0.1705 | 0.0812 | |||||||||
| Text + img. caps. + timestamp | 0.2785 |
6pt
This appendix presents detailed case studies supporting the error analysis in Sections 4.2 and 4.3. We examine predictions from representative users across all seven domains, comparing gold profiles against model outputs under the direct, hierarchical, and extractive settings. Tables 7–10 organize examples by failure pattern.
Notation. In all case-study tables that follow: S = stable interest tags; R = recent interest tags; D = direct, H = hierarchical, E = extractive–abstractive profiling.
| User | Posts | Active | Gold profile summary (stable \(|\) recent interests, with evidence modality) | Inactive |
|---|---|---|---|---|
| User A | 115 | 5/7 | sports_outdoor: outdoor recreation, hiking [t+v] \(|\) walking, park visit [t+v] entertainment: music listening, book, creative writing [t+v] \(|\) poetry, reading, writing [t+v] food_drink: dining out, birthday cake, dessert, coffee [t+v] \(|\) restaurant dining, casual dining, confectionery [t+v] travel_city: sightsee, road trip, historic site, landmark [t+v] \(|\) Virginia Beach, roadside attraction, historical landmark [t+v] photography: craft, photo sharing [t+v] \(|\) vintage photography [t+v] |
gaming, pets |
| User B | 100 | 6/7 | sports_outdoor: football fandom [t+v] \(|\) soccer, Africa Cup, fitness [t+v] entertainment: music listen, Arabic music [t+v] \(|\) Marwan Moussa, Spotify, movy [t+v] gaming: eFootball [t+v] \(|\) video games, mobile gaming [t+v] food_drink: — \(|\) iftar, breakfast, meal [t+v] travel_city: city exploration [t+v] \(|\) city walks, urban exploration [t+v] pets: — \(|\) cat [v] |
photography |
| User C | 187 | 5/7 | sports_outdoor: wrestl, indie wrestling [t+v] entertainment: wrestling, AEW, live event [t+v] \(|\) wrestle kingdom [t+v] food_drink: cocktail, home cooking [t+v] travel_city: sightsee, city exploration [t+v] photography: event photography, photo editing [t+v] |
gaming, pets |
| User D | 185 | 6/7 | sports_outdoor: walk, snorkeling, birdwatching [t+v] \(|\) nature observation, outdoor recreation [t+v] entertainment: classic rock, the grinch, music listening [t+v] \(|\) concert attendance, music [t+v] food_drink: pub, pub visit, coffee, breakfast [t+v] \(|\) banana bread [t+v] travel_city: sightsee, city exploration, cruise travel, city walks [t+v] \(|\) Volendam, Netherlands, Sinai desert [t+v] photography: landscape photography, photography, nature photography, night photography [t+v] \(|\) bird photography, black and white photography, outdoor photography [t+v] pets: dog walk, dog ownership, dog care, pet ownership [t+v] \(|\) pet friendly pub [t+v] |
gaming |
5pt
Table 7 illustrates the most pervasive failure mode: models collapsing multiple specific gold tags into one or two broad categories, and confusing semantically adjacent but factually incorrect categories.
| User | Domain | Gold tags | Model predictions |
|---|---|---|---|
| User A | food_drink | S: dining out, birthday cake, dessert, coffee R: restaurant dining, casual dining, confectionery |
Gemini-2.5 (D): S={Dining out, Baking} GPT-5.4 (D): S={sweets and desserts, restaurants and dining out} GPT-4o-mini (D): INACTIVE Qwen3-VL-8B (D): INACTIVE |
| User B | entertainment | S: music listen, Arabic music R: Marwan Moussa, Spotify, movy |
Gemini-2.5 (D): S={music, movies and TV} GPT-5.4 (D): S={Arabic music} |
6pt
Representative posts: User A food_drink evidence (dining out and store-bought desserts, no home cooking)
2026-01-01
Last night, for #NewYear2026, we went out to eat. As I was biting my delicious chicken strip, I thought about all who couldn’t be out, due to being sick, bedridden with cancer, frail unable to walk.
| Hubs birthday soon. My mom always bought Pepperidge Farms cakes for birthday celebrations. Sure miss her. |
| I miss eating Paradiso with my mom and hubs together. |
These three posts illustrate the user’s food_drink profile: dining out on New Year’s Eve, purchasing store-bought Pepperidge Farms cakes for a birthday, and eating at a restaurant (Paradiso). The user’s gold profile includes home cooking as a negative* interest—this user does not cook at home. Yet Gemini-2.5 predicts “Baking” with no evidence of any baking activity anywhere in the timeline. GPT-5.4 over-generalizes seven specific tags into two broad categories. GPT-4o-mini and Qwen3-VL-8B predict INACTIVE despite seven gold tags supported by posts spanning the full four-month window.*
The User A food_drink case exhibits three distinct but related failure modes in a single domain. First, over-generalization: GPT-5.4 collapses seven specific gold tags—dining out, birthday cake,
dessert, coffee, restaurant dining, casual dining, and confectionery—into just two broad labels (sweets and desserts, restaurants and dining out). While these are
not factually wrong, they discard the granularity needed for downstream personalization: recommending a confectionery shop is qualitatively different from recommending a birthday cake bakery, and a coffee shop recommendation differs from a casual-dining
suggestion. Second, cross-category confusion: Gemini-2.5 predicts Baking despite the user having zero baking activity anywhere in the timeline. The gold profile explicitly includes home cooking as a
negative interest—this user purchases prepared food and eats at restaurants, but does not cook. The model appears to conflate “engages with food content” with “prepares food at home,” a category error analogous to confusing “attends concerts” with
“plays an instrument.” Third, false inactive: GPT-4o-mini and Qwen3-VL-8B classify the entire domain as INACTIVE, missing all seven gold tags. This is a severe false-inactive error: the domain is supported by posts spanning the full
four-month observation window across multiple modalities (text, images, and mixed), yet two models fail to activate it at all.
The User B entertainment case exhibits the same over-generalization pattern. Gemini-2.5 predicts music, movies and TV, adding a film/television interest absent from the gold profile, while GPT-5.4 reduces five tags to one
(Arabic music). Across both cases, the pattern is consistent: models default to broad, safe hypernyms and resist committing to the specific subcategories that make personalized recommendations actionable.
Table 8 shows cases where models incorrectly classify an active domain as inactive, missing all gold interest tags. These errors concentrate in domains whose evidence is primarily textual and dispersed across many posts.
| User | Domain | Gold tags | Which models missed it |
|---|---|---|---|
| User B | travel_city | S: city exploration R: city walks, urban exploration |
All four models (D) |
| User B | food_drink | R: iftar, breakfast, meal | GPT-5.4, Qwen3.5, Qwen2.5 (D) |
6pt
Representative posts: User B city-exploration evidence (text-dispersed domain)
2026-01-07
I wanna migrate illegally and the guys are like let’s go to Ifrane hhhhhhhhhhhhh
| Late night walk |
| Bars |
These three posts collectively support city exploration (stable) and city walks / urban exploration (recent). However, the evidence is distributed across short, casual text mentions with no hashtags, no location tags in the text, and no visually distinctive landmarks. All four models classified this domain as inactive when using the direct setting, because without a visually anchoring post, the weak textual signal fails to reach the activation threshold.
The User B travel case is illustrative: all four models predict inactive for a domain where gold lists city exploration, city walks, and urban exploration. These interests are expressed through casual text mentions
across posts (e.g., “went for a walk downtown,” “exploring a new neighborhood”) rather than through prominent images or hashtags. Without a visually anchoring post, the evidence fails to reach the model’s activation threshold.
The inverse failure—activating a domain the user does not actually engage with—occurs when models over-interpret incidental posts as preference signals. Table 9 presents two representative cases. The first involves a user whose timeline is dominated by professional-wrestling content (187 posts, gold-active domains: sports_outdoor and entertainment with wrestling-related interests). GPT-5.4 under hierarchical profiling activates the gaming domain with tags that explicitly name wrestling—“video game references in wrestling-related memes” and “Pokémon-themed wrestling events.” The model’s own labels concede the content is wrestling-related, yet it places them in gaming. Five posts out of 187 mention video games at all, and all five are wrestling-context posts: three document a CMLL\(\times\)Pokémon crossover wrestling show, one jokes about a wrestler taking time off to play a game, and one is an incidental mention. The model conflates wrestling content that references gaming with the user having a gaming interest.
| User | Domain | Gold status | Model predictions |
|---|---|---|---|
| User C | gaming | inactive | GPT-5.4 (H): R={ video game references in wrestling-related memes, Pokémon-themed wrestling events } GPT-5.4 (E): R={ video game releases and references } |
| User B | photography | inactive | GPT-5.4 (D): S={ selfie and portrait photography } GPT-5.4 (H): R={ selfie portraits and self-image/profile visual curation } Qwen3-VL-8B (H): R={ image editing and AI-generated visuals } |
4pt
Representative posts: User C wrestling content that triggered gaming hallucination
2025-09-26
Checking out that #CMLL Pokémon show for a bit. This already looks like so much fun and I can’t believe they got approval from Nintendo for it. #LeyendasPokémonZA
| The commitment from this fan to rock the Umbreon gimp mask for the show …#CMLL #LeyendasPokémonZA |
2025-03-13
It’s okay, Will. We know you need time off to play the new Assassin’s Creed game coming out next week. Don’t need to use your wife as an excuse. #AEWDynamite
| The St.Louis arch on the #AEWWrestleDream stage is now making me think of the Borderlands vaults and all the wrestlers are just different Vault Hunters. #AEW |
| “Hopes and Dreams” intensifies. #AEW #Undertale |
These five posts are the only video-game mentions across 187 posts. All are contextual to professional wrestling: three document a wrestling show with a Pokémon promotional crossover, one jokes about a wrestler taking time off, one compares an AEW stage design to Borderlands, and one uses an Undertale meme to react to a match. GPT-5.4’s own predicted tags concede the content is “wrestling-related”—yet the model activates the gaming domain rather than recognizing this as wrestling-fan content that belongs in the user’s already-active sports_outdoor and entertainment domains.
The User B photography case reveals a broader systemic pattern: across the full benchmark, posting selfies—a common behavior on social media—is frequently misinterpreted as photography enthusiasm. This mirrors the over-generalization pattern from Section 12: models lack the pragmatic judgment to distinguish “taking a photo to document an experience” from “photography as a sustained interest.” The User C case adds a further dimension: even when the model correctly identifies the topic of a post (wrestling), it can assign it to the wrong domain, revealing a category-boundary problem in how models map post content to interest domains.
Table 10 illustrates a pervasive failure: models cannot distinguish long-standing interests from recently emerged ones, assigning nearly all predictions to the stable bucket regardless of when evidence appears in the timeline. User D provides a representative case: a frequent traveler with a clear pattern of general, recurring travel behavior (cruises, city walks, sightseeing) punctuated by specific recent destinations (Volendam, the Netherlands, the Sinai Desert).
| User | Domain | Gold temporal split | Predictions (stable \(|\) recent) |
|---|---|---|---|
| User D | travel_city | S: 4 tags: sightsee, city exploration, cruise travel, city walks R: 3 tags: volendam, netherland, sinai desert |
GPT-5.4 (H): S={Caribbean cruise, city exploration, Amsterdam} R={Egypt, Sinai, Netherlands} Qwen3.5 (H): S={International Travel, Cruise Travel}, R=0 Qwen3-VL (E): S={cruise-based Caribbean exploration}, R=0 |
6pt
Representative posts: User D travel evidence illustrating stable vs.recent temporal structure
| Marella Discovery 2, our home for the next two weeks at Berth in Bridgetown Port, Barbados as we and a multitude of other new passengers wait to board. |
| Happy #FingerpostFriday from #Budapest…I came across these cyclist friendly fingerposts on a late evening walk by the River #Danube. |
| Happy #FingerpostFriday…Here’s a set of Fingerposts from the lovely town of #Volendam in the Netherlands that we visited on a day trip out from Amsterdam. |
| Sunset Sinai Desert style. A fabulous excursion out into the desert this afternoon, to see a stark but stunning landscape that just seems utterly timeless. |
The temporal structure of User D’s travel domain is clear from the timeline: cruises, city walks, and sightseeing recur across the full four-month timeline (stable), while Volendam (January), the Netherlands (January–February), and the Sinai Desert (February) are specific destinations visited only in the final two months. GPT-5.4 partially captures this—placing Egypt and Netherlands travel in the recent bucket—but contradicts itself by assigning “Amsterdam city exploration” to the stable bucket, even though Amsterdam and the Netherlands are the same trip. Qwen3.5 and Qwen3-VL exhibit complete temporal blindness: they collapse all evidence into one or two broad stable tags and assign zero predictions to the recent bucket.
The failure pattern extends beyond User D. Across the benchmark, models assign 70–90% of predictions to the stable bucket regardless of temporal evidence distribution. When recent tags are predicted, they often correspond to interests that the gold profile classifies as stable, and vice versa. GPT-5.4’s Amsterdam/Netherlands contradiction is especially revealing: the model recognizes that “the Netherlands” is a recent topic but places the capital city of that same country in the stable bucket, demonstrating that these models perform surface-level topic labeling rather than genuine temporal reasoning about when and how frequently evidence appears.
The following examples illustrate how profiling failures propagate into downstream dialogue (Section 4.3).
In the direct-profile-conditioned setting, a user’s gold food-drink profile contains seven specific interests spanning dining out, regional cuisines, and holiday meals. Gemini-2.5-Flash’s profile reduces this to two tags (Dining out, Asian cuisine); its dialogue response ignores food entirely, instead recommending astrophotography based on the user’s photography interests. The judge assigns coverage \(=\) 1.0/5, noting the model “ignores the required interests.” GPT-5.4’s profile for the same user captures restaurant dining and sushi; its dialogue recommends a specific Japanese restaurant, earning coverage \(=\) 3.0/5. The difference illustrates a compounding failure: conservative profiling removes the very tags that would enable diverse, personalized responses.
In the timeline-conditioned setting, models can access all posts directly, yet they exhibit the same modality bias observed in profile construction. For the user described above, Gemini-2.5-Flash overlooks seven supported food interests and a hiking interest to recommend astrophotography across both dialogue turns, fixating on the domain with the most visually prominent evidence (sky and landscape photography). This pattern recurs across users: when a domain generates abundant images, it crowds out text-supported interests in downstream dialogue, even when those text-supported interests are equally or more relevant to the user’s request.
These two cases illustrate a compounding failure chain. Conservative profiling strips away fine-grained interest tags (profile under-generation); the resulting sparse profile provides insufficient hooks for the dialogue model, which then defaults to visually dominant domains regardless of the user’s actual request. The chain can be broken at either stage—better profiling yields richer profiles, and direct timeline access bypasses profile sparsity—but the modality bias persists in both paths, suggesting that balanced cross-modal attention is a prerequisite for either approach to succeed.
This appendix provides the full correlation tables referenced in Section 4.4.
| Model | Interest F1 \(\leftrightarrow\) Avg. | Interest F1 \(\leftrightarrow\) Coverage | Interest F1 \(\leftrightarrow\) Concreteness | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Gemini-2.5-Flash | \(-0.016\) | \(+0.013\) | \(+0.039\) | ||||||
| GPT-4o-mini | \(+0.221^{*}\) | \(+0.245^{*}\) | \(+0.189\) | ||||||
| GPT-5.4 | \(+0.128\) | \(+0.113\) | \(+0.087\) | ||||||
| Qwen2.5-VL-7B-Instruct | \(+0.094\) | \(+0.299^{**}\) | \(+0.319^{**}\) | ||||||
| Qwen3-VL-8B-Instruct | \(+0.092\) | \(+0.240^{*}\) | \(+0.224^{*}\) | ||||||
| Qwen3.5-35B-A3B | \(-0.042\) | \(+0.089\) | \(+0.054\) | ||||||
| Gemini-2.5-Flash | \(+0.330^{***}\) | \(+0.472^{***}\) | \(+0.177\) | ||||||
| GPT-4o-mini | \(+0.148\) | \(+0.319^{**}\) | \(+0.028\) | ||||||
| GPT-5.4 | \(+0.214^{*}\) | \(+0.244^{*}\) | \(+0.306^{**}\) | ||||||
| Qwen2.5-VL-7B-Instruct | \(+0.102\) | \(+0.477^{***}\) | \(+0.256^{*}\) | ||||||
| Qwen3-VL-8B-Instruct | \(+0.065\) | \(+0.251^{*}\) | \(+0.157\) | ||||||
| Qwen3.5-35B-A3B | \(+0.207^{*}\) | \(+0.311^{**}\) | \(+0.233^{*}\) | ||||||
| Gemini-2.5-Flash | \(+0.208^{*}\) | \(+0.484^{***}\) | \(+0.153\) | ||||||
| GPT-4o-mini | \(+0.198^{*}\) | \(+0.222^{*}\) | \(+0.055\) | ||||||
| GPT-5.4 | \(+0.172\) | \(+0.204^{*}\) | \(+0.128\) | ||||||
| Qwen2.5-VL-7B-Instruct | \(+0.138\) | \(+0.446^{***}\) | \(+0.245^{*}\) | ||||||
| Qwen3-VL-8B-Instruct | \(+0.022\) | \(+0.413^{***}\) | \(+0.722^{***}\) | ||||||
| Qwen3.5-35B-A3B | \(+0.186\) | \(+0.318^{**}\) | \(+0.193\) |
6pt
| Model | Stable F1 \(\leftrightarrow\) Stable Rec. | Recent F1 \(\leftrightarrow\) Recent Expl. | Stable F1 \(\leftrightarrow\) Recent Expl. | Recent F1 \(\leftrightarrow\) Stable Rec. | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gemini-2.5-Flash | \(+0.415^{***}\) | \(+0.189\) | \(+0.154\) | \(+0.336^{***}\) | |||||||||
| GPT-4o-mini | \(+0.172\) | \(+0.265^{*}\) | \(+0.254^{*}\) | \(+0.048\) | |||||||||
| GPT-5.4 | \(+0.038\) | \(+0.186\) | \(-0.060\) | \(+0.317^{**}\) | |||||||||
| Qwen2.5-VL-7B-Instruct | \(+0.496^{***}\) | \(+0.385^{**}\) | \(+0.364^{**}\) | \(+0.466^{***}\) | |||||||||
| Qwen3-VL-8B-Instruct | \(-0.067\) | \(-0.109\) | \(-0.009\) | \(+0.217^{*}\) | |||||||||
| Qwen3.5-35B-A3B | \(+0.214^{*}\) | \(+0.161\) | \(-0.018\) | \(-0.036\) |
3pt
| Domain | Direct | Hierarchical | Extractive |
|---|---|---|---|
| Pets | 0.522 | 0.497 | 0.575 |
| Gaming | 0.385 | 0.483 | 0.399 |
| Sports & Outdoor | 0.324 | 0.488 | 0.463 |
| Food & Drink | 0.341 | 0.358 | 0.345 |
| Photography & Creation | 0.314 | 0.405 | 0.387 |
| Entertainment | 0.313 | 0.378 | 0.299 |
| Travel & City Exploration | 0.272 | 0.394 | 0.339 |
Table 13 breaks down Interest Tag F1 by domain for GPT-5.4 across the three profile-construction settings. The seven domains form a clear difficulty spectrum. Pets and Gaming sit at the top (Direct F1: 0.522 and 0.385), benefiting from concentrated, visually distinctive evidence—pet photos and game screenshots are unambiguous signals that models detect reliably. Travel & City Exploration and Entertainment anchor the bottom (Direct F1: 0.272 and 0.313), reflecting the challenge of synthesizing evidence dispersed across many posts: a user’s travel interests may be scattered across dozens of posts mentioning different destinations, cuisines, and activities, with no single post fully defining the interest.
Hierarchical profiling improves Interest Tag F1 on six of seven domains, with the largest gains on difficult domains that require cross-post aggregation. Sports & Outdoor gains +0.164 (0.324 \(\rightarrow\) 0.488) and Travel gains +0.122 (0.272 \(\rightarrow\) 0.394), confirming that chunking helps aggregate weak but recurrent signals that the direct setting misses. The exception is Pets, where Extractive profiling achieves the best result (0.575 vs.Hierarchical 0.497). Pets evidence tends to be concentrated in a small number of high-signal posts (photos of the user’s own pets), so selecting the top \(K\) posts per domain preserves nearly all available evidence while filtering noise. For text-dispersed domains, however, Extractive profiling underperforms Hierarchical, as the selection stage must commit to a fixed set of posts before knowing which evidence will prove relevant.
The difficulty ranking is consistent across all three settings, suggesting that per-domain hardness is an intrinsic property of how evidence is distributed across modalities and posts rather than an artifact of any particular profiling strategy.
This appendix provides the detailed setup and full results of the human–LLM agreement study referenced in Section 4.3.
We sample 30 model responses from the full dialogue evaluation pool (100 users \(\times\) 4 settings \(\times\) 6 models) using stratified sampling across three dimensions to ensure coverage of the full quality and setting space:
Dialogue setting: 7–8 responses from each of the four settings (Timeline-conditioned, Direct, Hierarchical, Extractive–abstractive), ensuring representation of both raw-timeline and profile-conditioned generation paths.
User intent: 15 stable-interest recommendation responses and 15 recent-interest exploration responses.
Quality tier: 10 responses each from low (GPT-5.5 Avg.\(\leq 2.5\)), medium (\(2.5 < \text{Avg.} \leq 3.5\)), and high (Avg.\(> 3.5\)) tiers, ensuring annotators see the full quality range.
Three annotators with prior experience on the SocialPersona annotation team (see Section 3.3) independently score each response. Each annotator receives a sheet containing, for every response: (1) the user’s gold profile summary (stable and recent interests per domain), (2) the user request text and intent type, (3) the model response text, and (4) the identical 0–5 scoring rubrics for coverage, concreteness, and fluency used by the LLM judges (Appendix 6.6). Annotators do not see LLM judge scores, model identities, or dialogue settings. Total annotation time is approximately 5 annotator-hours.
We report two complementary agreement measures:
Human–human agreement. We compute Krippendorff’s \(\alpha\) for ordinal data across the three annotators on each dimension. This validates whether the evaluation task itself is reliably human-judgeable. We interpret \(\alpha > 0.80\) as strong agreement, \(\alpha \in [0.67, 0.80]\) as moderate, and \(\alpha < 0.67\) as tentative.
Human–LLM agreement. For each response and dimension, we average the three annotator scores to form a human reference. We then compute per-dimension Spearman rank correlation \(\rho\) between this reference and each LLM judge (GPT-5.5 and Qwen3.7-Max). Spearman \(\rho\) captures monotonic ranking agreement without assuming linearity or interval-scale properties of the 0–5 scores.
| Dimension | Human–Human \(\alpha\) | GPT-5.5 \(\rho\) | Qwen3.7-Max \(\rho\) |
|---|---|---|---|
| Fluency | 0.79 | 0.76 | 0.72 |
| Concreteness | 0.71 | 0.65 | 0.58 |
| Coverage | 0.65 | 0.58 | 0.52 |
Table 14 reports the full results. Three findings emerge:
First, human–human agreement follows the expected difficulty ordering: fluency is most objective (\(\alpha=0.79\)), followed by concreteness (\(\alpha=0.71\)), with coverage being most subjective (\(\alpha=0.65\)). All three values fall within the moderate-to-substantial agreement range, confirming that the evaluation dimensions are reliably applicable by trained annotators.
Second, both LLM judges correlate positively and significantly with human judgments across all dimensions (\(p < 0.01\) for all \(\rho\)), validating their use as automated proxies for dialogue quality assessment. GPT-5.5 consistently outperforms Qwen3.7-Max in human alignment, consistent with its role as the primary judge in our main results (Table 3).
Third, the dimension-level gap mirrors the human–human pattern: coverage shows the lowest agreement in both settings. This is expected for a task requiring judges to assess whether a response meaningfully engages with specific user interests; borderline responses that mention a domain tangentially without clearly centering on a gold interest are inherently ambiguous. The residual disagreement on coverage (\(\rho=0.52\)–\(0.58\)) sets a plausible upper bound on automated coverage evaluation precision, but the positive and significant correlations confirm that LLM judges capture the correct ranking signal for model comparison—sufficient for the benchmarking conclusions drawn in Section 4.3.
Corresponding author.↩︎
Available at https://anonymous.4open.science/r/socialpersona-6E9B. Original images are excluded
to reduce re-identification risk. Qualified researchers may request controlled access to the full benchmark for replication and follow-up studies; please contact the authors at qkzhang@ir.hit.edu.cn for details.↩︎