Contacts & address books
Add, merge, group and export contacts without losing data.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Contacts · Outlook People · Google Contacts
- Class GUI-need label
G2· GUI-essential
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R11.01.01.03-T01 Add a contact and put it in a group, creating the group if missing
Original instruction
In macOS Contacts (local 'On My Mac' account), add 'Yumi Asai', mobile +81 90-9698-1234, email yumi.asai@example.test, company 'Kaito Labs', and put her in group 'Work' (create the group if it does not exist).
- Platforms
mac· macOS- Applications
- Contacts
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 1 / 5
Proposed verifier
AddressBook read (Contacts framework): one person Yumi Asai with phone label mobile and exact digits, email, organization; group Work exists once and contains her. No duplicate Yumi records. AppleScript/JXA automation of Contacts is denied by TCC and the agent has no terminal; AddressBook store writes by other processes are logged and score 0.
Proposed partial credit
50% contact fields; 30% group membership; 20% no duplicates
R11.01.01.03-T02 Delete a contact group but keep its members
Original instruction
In macOS Contacts delete the group 'Shopping' entirely. All 9 contacts that were in it must remain in the address book (and in any other groups they belong to).
- Platforms
mac· macOS- Applications
- Contacts
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickhover· Hover & context- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 2 / 5
Proposed verifier
Contacts framework: group Shopping absent; the 9 member identifiers still exist with unchanged fields and other group memberships intact; total contact count unchanged. AppleScript/JXA automation of Contacts is denied by TCC and the agent has no terminal; AddressBook store writes by other processes are logged and score 0.
Proposed partial credit
40% group deleted; 60% members retained unchanged
R11.01.01.03-T03 Merge two duplicate contacts without losing data
Original instruction
In Google Contacts (test account), 'Jon Smith' and 'John Smith' at Acme are the same person. Merge them into 'John Smith', keeping the most recently added phone as primary, both email addresses, the birthday from either record, and both notes concatenated.
- Platforms
web· Any OS (web)- Applications
- Google Contacts
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickvis· Visual judgmenttype· Text & forms- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 3 / 5
Proposed verifier
People API read: one contact for Acme John/Jon; name John Smith; phones include both with the newer one first/primary; 2 emails; birthday present; notes contain both original texts. Compared with control pair T17. The agent gets no People API token (only control pair T17 does), so the merge must come from a Google Contacts browser session.
Proposed partial credit
25% single merged record; 25% phones and primary; 20% emails; 30% birthday and notes
R11.01.01.03-T04 Accept only true duplicate suggestions in Merge & fix
Original instruction
Google Contacts shows 14 duplicate suggestions in Merge & fix. Some are different people sharing a name (different employers/numbers). Merge only true duplicates (same person per email, phone or employer evidence) and dismiss the rest. Then list the dismissed pairs in dismissed.txt.
- Platforms
web· Any OS (web)- Applications
- Google Contacts
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
vis· Visual judgmentclick· Point & clicknav· Pan/zoom/scroll- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 4 / 5
Proposed verifier
People API: gold 9 true pairs merged (each yields 1 contact with union of fields), 5 false pairs remain separate and unchanged. dismissed.txt lists the 5 pairs. Score precision/recall over merges. The test account has no OAuth client or People API token for the agent, so edits must come from Google Contacts browser sessions.
Proposed partial credit
45% true merges; 35% no false merges; 20% dismissed list
R11.01.01.03-T05 Build a vendor contact list from a spreadsheet in Outlook
Original instruction
In Outlook (test tenant), create contact list 'Q4 Vendors' containing the 12 people in vendors.xlsx. Six already exist as contacts (match by email); create the other six with name, company, email and phone from the sheet before adding them.
- Platforms
win· Windowsmac· macOSweb· Any OS (web)- Applications
- Outlook People · Excel
- Interfaces
desk· Desktop GUIbrow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
type· Text & formsmulti· Cross-appclick· Point & click- Work product
WP08· App/system state- Conditions
multiapp· Multi-app- Proposed difficulty
- 3 / 5
Proposed verifier
Graph read: contact folder has 6 new contacts with exact fields; no duplicates of the 6 existing; contact list (group) 'Q4 Vendors' members equal the 12 emails. No Graph credentials or app registration are issued and Outlook/Excel macros are disabled; the mailbox audit log must show contact writes from an Outlook client.
Proposed partial credit
35% six new contacts; 15% no duplicates; 50% list membership
R11.01.01.03-T06 Export an address book to CSV and convert to XLSX
Original instruction
In Thunderbird, export the Personal Address Book to ~/Desktop/contacts.csv (comma separated), then open it in LibreOffice Calc and save ~/Desktop/contacts.xlsx with a header row and one contact per row.
- Platforms
lin· Linuxwin· Windowsmac· macOS- Applications
- Thunderbird Address Book · LibreOffice Calc
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickmulti· Cross-app- Work product
WP02· Records/table- Conditions
multiapp· Multi-app- Proposed difficulty
- 3 / 5
Proposed verifier
contacts.csv and contacts.xlsx exist; rows equal the address book (abook.sqlite) entries, 47 rows; columns First Name, Last Name, Display Name, Primary Email match exactly; non-ASCII names preserved. Agent VM has no terminal, sqlite3 or Python and LibreOffice macros are disabled; the CSV must carry Thunderbird's export column header set.
Proposed partial credit
40% CSV correct; 40% XLSX correct; 20% encoding preserved
R11.01.01.03-T07 Add a detailed contact with photo on iPhone
Original instruction
On the iOS Simulator, in Contacts create 'Dana Ruiz' with mobile +1 415-555-0182 (label mobile), work +1 415-555-0199 (label work), email dana@ruiz.test, birthday 14 March, and set her photo from the Photos item 'dana_headshot', cropped to the face.
- Platforms
ios· iOS/iPadOS- Applications
- Contacts (iOS)
- Interfaces
mob· Mobile touch- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
touch· Touch gesturestype· Text & formsgeom· Precise geometry- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Simulator AddressBook.sqlitedb: one Dana Ruiz with two phones and correct labels, email, birthday month/day; image data present and face detector finds a centred face covering ≥40% of thumbnail. simctl/xcrun and terminal access are denied to the agent, so AddressBook.sqlitedb is reachable only through the Contacts app.
Proposed partial credit
40% phones with labels; 20% email/birthday; 40% photo cropped
R11.01.01.03-T08 Export a labeled subset of contacts to a vCard file on Android
Original instruction
On the Android emulator, in Google Contacts export only contacts with label 'Clients' (account test@sandbox.test) to Download/clients.vcf, then copy that file to the computer at ~/exports/clients.vcf with adb or the device file browser.
- Platforms
and· Android- Applications
- Contacts (Android)
- Interfaces
mob· Mobile touch- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
touch· Touch gesturesclick· Point & clickmulti· Cross-app- Work product
WP09· Files & folders- Conditions
xdevice· Cross-device- Proposed difficulty
- 3 / 5
Proposed verifier
~/exports/clients.vcf parses to exactly the 18 'Clients' contacts (match by name+phone against contacts2.db); no other contacts; file also in device Download. adb is a wrapper allowing only push/pull (adb shell and content provider calls are denied), so the vCard must come from the Contacts app export.
Proposed partial credit
50% correct subset; 30% fields complete; 20% copied to computer
R11.01.01.03-T09 Import a vCard file and resolve duplicates field by field
Original instruction
Import fixtures/conference_leads.vcf (150 cards) into macOS Contacts. 23 match existing contacts. For each duplicate, keep a single card that has every non-empty field from both (prefer the existing name spelling). Put all imported people into group 'Conf 2026'.
- Platforms
mac· macOS- Applications
- Contacts
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickvis· Visual judgment- Work product
WP08· App/system state- Conditions
long· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
Contacts framework: total = original + 127; for 23 overlaps a single record holds the union of phones/emails/titles/addresses; names from existing; group Conf 2026 has 150 members; no dropped field values (per-field set check). AppleScript/JXA automation of Contacts is denied by TCC and the agent has no terminal; AddressBook store writes by other processes are logged and score 0.
Proposed partial credit
25% import count; 40% duplicate union; 15% name preference; 20% group
R11.01.01.03-T10 Label contacts by company domain in Google Contacts
Original instruction
In Google Contacts (test account), apply labels to 80 contacts by email domain per domains.csv (domain → label, e.g. acme.test → Acme). Create missing labels. Contacts with multiple domains get every matching label; personal domains get 'Personal'.
- Platforms
web· Any OS (web)- Applications
- Google Contacts
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicknav· Pan/zoom/scrolltype· Text & forms- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
People API: contact group memberships equal gold for all 80 contacts; labels created exactly as in CSV; no other contacts relabeled. The test account has no OAuth client or People API token for the agent, so edits must come from Google Contacts browser sessions.
Proposed partial credit
15% labels created; 70% membership accuracy; 15% no collateral changes
R11.01.01.03-T11 Import a CRM CSV into Outlook with a custom field mapping
Original instruction
In classic Outlook for Windows, import crm_export.csv into Contacts folder 'CRM' using Map Custom Fields: Mobile→Mobile Phone, Direct→Business Phone, Role→Job Title, Org→Company, Street/City/Zip→Business Address. Do not import duplicates of existing items.
- Platforms
win· Windows- Applications
- Outlook People
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
drag· Drag & dropclick· Point & click- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Graph read of CRM folder: 64 contacts; mapped fields equal CSV values; addresses split into street/city/postal; the 5 pre-existing duplicates not duplicated. Outlook VBA and COM add-ins are disabled by policy and no Graph credentials are issued, so the import must use Outlook's Import/Export wizard.
Proposed partial credit
30% count; 50% field mapping; 20% no duplicates
R11.01.01.03-T12 Create a birthday smart group and export it as vCards
Original instruction
In macOS Contacts create a Smart Group 'Birthdays Nov' whose criterion is birthday in the month of November, then export that group's cards to ~/Desktop/birthdays_nov.vcf.
- Platforms
mac· macOS- Applications
- Contacts
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Smart group stored with birthday-month criterion; birthdays_nov.vcf contains exactly the 7 contacts with November birthdays, each with BDAY field. AppleScript/JXA automation of Contacts is denied by TCC and the agent has no terminal; AddressBook store writes by other processes are logged and score 0.
Proposed partial credit
40% smart group criteria; 60% exported set exact
R11.01.01.03-T13 Undo a bad bulk edit and then reapply one valid change
Original instruction
Yesterday an import script garbled 40 Google Contacts (swapped first/last names) in the test account. Use Google Contacts 'Undo changes' to restore to 2026-10-13 09:00, then reapply the one legitimate change made after that time (new phone for Priya Nair, listed in change_log.txt).
- Platforms
web· Any OS (web)- Applications
- Google Contacts
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP08· App/system state- Conditions
risk· Irreversible/riskyhidden· Hidden/stale state- Proposed difficulty
- 4 / 5
Proposed verifier
People API: 40 affected contacts have original names; Priya Nair has the new phone and nothing else changed after restore; total contact count equals pre-incident snapshot. The test account has no OAuth client or People API token for the agent, so edits must come from Google Contacts browser sessions.
Proposed partial credit
55% names restored; 30% Priya change reapplied; 15% count intact
R11.01.01.03-T14 Move device-only contacts into the synced Google account on Android
Original instruction
On the Android emulator, 6 contacts were saved to device storage and do not sync. Move them to the Google account test@sandbox.test (via Contacts 'Move to another account' or re-save), keep all fields and photos, then confirm they appear in Google Contacts on the computer.
- Platforms
and· Androidweb· Any OS (web)- Applications
- Contacts (Android) · Google Contacts
- Interfaces
mob· Mobile touchbrow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
touch· Touch gesturesclick· Point & clickmulti· Cross-app- Work product
WP08· App/system state- Conditions
xdevice· Cross-device- Proposed difficulty
- 4 / 5
Proposed verifier
contacts2.db raw_contacts for the 6 now account_type com.google; no device-only copies remain; People API shows 6 contacts with identical fields and photos (hash). adb shell is denied and no People API token is issued, so moves must be made in the Android Contacts app and confirmed in the web UI.
Proposed partial credit
45% moved to Google; 25% fields intact; 15% no leftovers; 15% visible on web
R11.01.01.03-T15 Normalize contact phone formats and file-as order
Original instruction
In Outlook on the web (test tenant), 10 contacts in folder 'Field Team' have phone numbers in mixed local formats. Edit each to E.164 (+country code, no spaces) using the country in their address, and set File As to 'Last, First'.
- Platforms
web· Any OS (web)- Applications
- Outlook People
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
type· Text & formsclick· Point & click- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Graph read: each of 10 contacts' phones equal gold E.164 strings; fileAs = 'Last, First'; other fields unchanged. No Graph credentials or app registration are issued; the mailbox audit log must attribute each contact edit to the OWA client.
Proposed partial credit
65% phones normalized; 25% file-as; 10% other fields intact
R11.01.01.03-T16 Move local contacts to iCloud without duplicates
Original instruction
macOS Contacts has 20 contacts in 'On My Mac' that also partly exist in the iCloud test account (6 overlap by email). Move all 20 into iCloud so iCloud ends with one card per person (merging the 6) and 'On My Mac' is empty.
- Platforms
mac· macOS- Applications
- Contacts
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
drag· Drag & dropclick· Point & clickvis· Visual judgment- Work product
WP08· App/system state- Conditions
risk· Irreversible/risky- Proposed difficulty
- 4 / 5
Proposed verifier
CardDAV read of iCloud test account: 14 new cards + 6 merged cards with union fields; no duplicate emails; local source has 0 cards; no other iCloud cards modified. AppleScript/JXA automation of Contacts is denied by TCC and no CardDAV credentials are given to the agent; the agent has no terminal.
Proposed partial credit
35% moved; 35% overlaps merged; 15% local empty; 15% no collateral
R11.01.01.03-T17 Merge the Smith duplicates via the People API (control pair of T03)
Original instruction
Control pair of T03. With a People API test token, write merge.py that reads both Smith records, builds the merged record with the same field rules as T03, updates one and deletes the other.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- Google People API
- Interfaces
api· API/SDK- GUI need · task setting
AP· API-sufficient- GUI need · ordinary access
AP· API-sufficient- Interaction primitives
code· Code & commands- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Same final-state checks as T03; API audit shows calls from the script's client id.
Proposed partial credit
25% single record; 25% phones; 20% emails; 30% birthday and notes
R11.01.01.03-T18 Create or update contacts from email signatures
Original instruction
In Gmail (test account), label 'Signatures' holds 15 emails from new and existing correspondents. For each sender, create or update a Google Contact with name, title, company, phone(s) and address parsed from the signature. Do not overwrite existing values that differ; add new values alongside.
- Platforms
web· Any OS (web)- Applications
- Gmail · Google Contacts
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
multi· Cross-apptype· Text & formsvis· Visual judgment- Work product
WP08· App/system state- Conditions
multiapp· Multi-applong· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
People API: 15 senders present (9 new, 6 updated); per-field accuracy vs gold signature parse; existing differing values retained with new ones added; no duplicate contacts created. The test account has no OAuth client, Gmail API or People API token for the agent, so edits must come from browser sessions.
Proposed partial credit
40% field accuracy; 25% create vs update correct; 20% no overwrites; 15% no duplicates
R11.01.01.03-T19 Link split contacts and set default numbers on Android
Original instruction
On the Android emulator, 5 people appear twice because they exist in both the Google account and a work profile account. Link (join) each pair into one displayed contact, set the default call number per pair as listed in defaults.txt, and mark 2 of them as favorites.
- Platforms
and· Android- Applications
- Contacts (Android)
- Interfaces
mob· Mobile touch- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
touch· Touch gesturesclick· Point & click- Work product
WP08· App/system state- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
contacts2.db: each pair's raw_contacts share one contact_id (aggregation exceptions TYPE_KEEP_TOGETHER); data rows with is_super_primary set on the listed numbers; starred=1 for the 2 favorites; raw records unchanged otherwise. The agent has no adb shell or root, so contacts2.db and the contacts provider are reachable only through the Contacts app.
Proposed partial credit
50% pairs linked; 30% default numbers; 20% favorites
R11.01.01.03-T20 Consolidate three address books into one without data loss
Original instruction
Consolidate contacts from Outlook (contacts.pst), macOS Contacts ('On My Mac') and Google Contacts into Google Contacts: about 300 people with ~60 overlaps across sources. Each person should end as one Google contact holding the union of fields; source-specific groups become labels.
- Platforms
mac· macOSwin· Windowsweb· Any OS (web)- Applications
- Outlook People · Contacts · Google Contacts
- Interfaces
desk· Desktop GUIbrow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
HY· Hybrid- Interaction primitives
multi· Cross-appclick· Point & clickvis· Visual judgment- Work product
WP08· App/system state- Conditions
multiapp· Multi-applong· Long-horizonrisk· Irreversible/risky- Proposed difficulty
- 5 / 5
Proposed verifier
People API vs gold entity resolution: one contact per gold person (precision/recall of clusters), field union completeness ≥98% of source values, labels mirror source groups, no source deleted. No Graph, People API or CardDAV credentials are issued, Contacts AppleScript/JXA is denied by TCC, and the agent has no terminal.
Proposed partial credit
35% entity resolution; 35% field completeness; 15% labels; 15% sources intact
Mapped research references
Existing benchmark-to-class links from the research catalog. They are not record-level annotations, executions or product endorsements.