Composed’s screenshot import turns any image of a booking, confirmation, ticket, or schedule into a fully structured calendar event in three seconds. Tap the photo icon, select a screenshot from your Photos library, and Composed uses Anthropic’s Claude AI to extract the event name, date, time, location, confirmation number, and any preparation steps. Flight bookings come in with the airport buffer pre-calculated. Hotel reservations sync check-in and check-out as a multi-day event. Event posters extract artist, venue, and door time. It’s the fastest way to get something from your inbox to your calendar without typing.

This page walks through how the screenshot import works, what kinds of images are supported, and five concrete examples of how the extraction actually behaves.

How Screenshot Import Works

1. Take or save a screenshot. Anything that lives in your Photos library works — a screenshot of a confirmation email, a photo of a paper ticket, an Instagram event poster, a forwarded text message with restaurant reservation details, or a photo of a recipe with a cook time.

2. Tap the photo icon in Composed. The microphone is the primary input on the add screen, but right next to it is a photo icon. Tap it and your Photos library opens with Composed asking for permission to read the selected image.

3. The AI extracts the event. Composed sends the image to a Supabase edge function that uses Claude’s vision API to identify what type of confirmation it is, extract the structured data (date, time, location, confirmation number, attendees), and return a draft event.

4. Review and confirm. Composed shows you what it extracted — event title, date, time, location, prep tasks, and any notes from the confirmation. You can tweak anything before tapping save. One tap and the event is on your calendar with reminders and travel time configured.

What Composed Extracts From Each Image Type

The extraction is tuned to the type of document. A flight confirmation gets parsed differently from an event poster, which gets parsed differently from a recipe.

Flight Booking Confirmations

For a flight confirmation (American Airlines, Delta, United, Southwest, JetBlue, Alaska, and most international carriers tested), Composed extracts:

  • Departure airport with IATA code and timezone
  • Arrival airport with IATA code and timezone
  • Departure time in the departure airport’s local time
  • Arrival time in the arrival airport’s local time
  • Flight number and operating airline
  • Confirmation number / record locator
  • Seat number if shown
  • Terminal and gate if shown

The flight is created with the airport timezone properly set — not your device’s timezone — so a 9pm JFK departure shows up correctly even if you’re in California when you import it. The departure alert is pre-calculated with a 120-minute domestic or 180-minute international airport buffer added to real Apple Maps drive time. This matters: a flight where the leave-by alert is 30 minutes before takeoff isn’t a useful alert.

Hotel and Airbnb Reservation Confirmations

For hotel and short-term rental confirmations (Marriott, Hilton, Hyatt, IHG, Airbnb, VRBO, Booking.com tested), Composed extracts:

  • Property name and address
  • Check-in date (calendar date in UTC, not your local timezone)
  • Check-out date (calendar date in UTC)
  • Confirmation number
  • Lockbox code or check-in instructions if shown
  • Host contact information if shown

The hotel stay is created as a multi-day event that spans check-in to check-out, so it shows correctly across every day of your trip in the month view. Generic AI-generated labels like “Apartment in San Francisco” get rejected and replaced with the actual property name when possible.

Event Posters and Concert Tickets

For event posters from Instagram, paper tickets photographed, Eventbrite confirmations, and Ticketmaster screenshots, Composed extracts:

  • Event name and headliner
  • Venue with address
  • Date and door time (with start time if shown)
  • Ticket type and seat if shown
  • Confirmation number

The event is created with a sensible departure alert based on the venue distance. If door time is 7pm and the show is 8pm, Composed plans the leave-by alert against door time, not start time.

Restaurant Reservation Confirmations

For restaurant reservation confirmations (OpenTable, Resy, Yelp Reservations, Tock, direct restaurant confirmations), Composed extracts:

  • Restaurant name and address
  • Date and reservation time
  • Party size
  • Confirmation number
  • Special requests or notes

The reservation comes in with a departure alert calculated from real Apple Maps traffic to the restaurant. Prep tasks may include “bring the reservation confirmation” if the restaurant requires it.

Recipes With Cook Times

This one is less obvious but useful. A screenshot of a recipe (from a cookbook, a recipe app, a blog post) with cook times can become a planned cooking event with prep tasks for each stage.

For example, a beef wellington recipe screenshot becomes an event with prep tasks for “sear the beef (4pm),” “wrap in pastry (4:30pm),” and “bake (5pm)” so the dish is ready for the 6pm dinner you have scheduled.

Five Concrete Extraction Examples

Example 1: A JetBlue Flight Confirmation Email

You forward yourself an email confirmation for a JetBlue flight from JFK to SFO on June 14 at 9:00pm. You screenshot the confirmation block on your iPhone and tap the photo icon in Composed.

Composed extracts:

  • Event: JetBlue B6 723 — JFK to SFO
  • Date and time: June 14 at 9:00pm Eastern (10:35pm departure ATL → 1:55am arrival local — handled by airport timezones)
  • Departure airport buffer: 120 minutes domestic
  • Leave-by alert: 6:30pm local time, calculated against real-time JFK traffic from your home address
  • Prep tasks: Check in 24 hours before, confirm seat assignment, charge devices, pack a snack for the redeye

The flight shows up on your calendar with the right timezones, the right leave-by time, and prep tasks for a redeye. No typing.

Example 2: A Marriott Hotel Confirmation

You book a Marriott in Portland for a conference. The confirmation email shows a 4pm check-in on October 8 and an 11am check-out on October 11. You screenshot it.

Composed extracts:

  • Event: Marriott Portland Downtown
  • Check-in: October 8, 4:00pm
  • Check-out: October 11, 11:00am
  • Multi-day event: Spans October 8-11 on the calendar
  • Confirmation number: Pulled from the screenshot
  • Address: Geocoded to the actual property location
  • Prep tasks: Pack for 3 nights, confirm cancellation deadline, screenshot loyalty number for check-in

The hotel stay shows correctly across all three days in the month view because the end_at field is set from the checkout date with UTC parsing.

Example 3: An Instagram Concert Announcement

You screenshot a Phoebe Bridgers concert announcement from Instagram. The poster says “September 22 · The Greek Theatre · Doors 7pm.”

Composed extracts:

  • Event: Phoebe Bridgers at The Greek Theatre
  • Date: September 22
  • Door time: 7:00pm (used as effective start)
  • Venue: The Greek Theatre, Berkeley, CA (geocoded from venue name)
  • Prep tasks: Buy tickets if not already, eat dinner before, plan parking, bring a layer (outdoor venue)
  • Leave-by alert: Calculated against Berkeley traffic from your address

The event is on your calendar even before you’ve bought tickets — useful for capturing intent before logistics catch up.

Example 4: An OpenTable Reservation Confirmation

You make a reservation for dinner at Lazy Bear in San Francisco on a Friday at 7:30pm. The OpenTable confirmation arrives in your email. You screenshot the confirmation block.

Composed extracts:

  • Event: Lazy Bear (dinner)
  • Date and time: Friday at 7:30pm
  • Address: 3416 19th St, San Francisco
  • Party size: 4
  • Confirmation number: Pulled from screenshot
  • Prep tasks: Confirm dietary restrictions with guests, plan parking or rideshare, bring confirmation number, plan post-dinner drinks
  • Leave-by alert: Calculated against real-time SF traffic

The reservation arrives with the prep work for a multi-course tasting menu dinner already roughed out.

Example 5: A Cookbook Recipe Screenshot

You’re planning a Sunday dinner and screenshot a beef bourguignon recipe from a cookbook. The recipe shows a 3-hour total cook time.

Composed asks what time dinner is. You say 6pm. It creates:

  • Event: Beef bourguignon (dinner prep)
  • Start time: 3:00pm (3 hours before dinner)
  • Prep tasks: Brown the beef (3:00pm), prep vegetables (3:30pm), simmer for 2 hours (4:00pm), check seasoning (5:45pm)
  • Linked to: Sunday dinner event at 6pm

The cooking becomes a structured event with timing built in, not a vague intention.

Privacy and How the AI Sees Your Screenshots

When you select an image to import, Composed sends it to a Supabase edge function that calls Anthropic’s Claude vision API. The image is processed to extract the structured event data and the response comes back. The image is not stored on Composed’s servers after extraction — only the extracted structured data is saved to your account.

You can review what was extracted before confirming. If the AI misread something (a date, a confirmation number, an address), you can edit it before saving. The original screenshot stays in your Photos library and isn’t uploaded anywhere else.

For sensitive screenshots (banking confirmations, medical appointments with PHI), you can use the manual entry path or voice input instead — voice input runs through on-device Apple speech recognition first and only sends the transcribed text to the AI parser, not the raw audio or any image.

When Screenshot Import Beats Voice Input

Voice input is faster for events that fit in one sentence. Screenshot import is better when:

  • The event has a long confirmation number you don’t want to type
  • The location is a specific address rather than a known venue
  • There are multiple data points (flight number, terminal, gate, seat, confirmation number)
  • You don’t have the energy to speak the details out loud
  • You’re in a quiet place where you can’t speak
  • The information is already in front of you as a confirmation email or text

For everything else, voice input is usually faster.

Works With Composed’s Other Features

The structured event that comes out of screenshot import flows into everything else:

  • AI prep tasks generate based on the event type — flight prep is different from restaurant prep is different from concert prep
  • Smart reminders layer themselves automatically based on the event’s importance
  • Departure tracking uses the extracted address with real Apple Maps traffic
  • Flight intelligence activates for flight bookings with check-in alerts, gate change tracking, and the proper airport buffer

The screenshot is the input. The structured, prepared, alerted event is the output.

Try It With Something Already in Your Photos

Open Photos and find a recent confirmation screenshot — a flight, a hotel, an OpenTable reservation, an event you grabbed from Instagram. Open Composed, tap the photo icon, and select it.

The event lands on your calendar with prep tasks, a leave-by alert, and the right timezone in about three seconds. The thing you screenshot a week ago and forgot to enter is now on your calendar before you finish reading this paragraph.

That’s the point of screenshot import: the gap between “I should add this to my calendar” and “this is on my calendar” should be measured in seconds, not minutes. And the screenshot is usually already there, waiting to be useful.