Birding in the age of AI
I need to start by acknowledging that AI is a controversial topic. I’ve had mixed feelings about it over the years, and I do believe that the entire AI industry right now is a fragile economic bubble. I also have concerns about the building of data centers on farmland and other sensitive habitats, and the amount of electricity and water that those data centers use.

That said, I use AI regularly. In my day job, I’ve been using AI notetakers and AI tools for research and coding for a couple of years now. This post is not about using generative AI to make creative works. That’s a topic for another time. Today I want to talk about using AI as a research assistant, specifically how I used ChatGPT to help me plan and keep track of my two-week trip to Arizona for the Southwest Wings and Southeast Arizona Birding Festivals.
Over a few months leading up to August 2026, I used AI to compile a target list of birds, choose field trips, research locations, and put together daily itineraries and information to help me see as many birds as possible. This is all research I’ve done manually in the past, and while this way was about as successful as the manual approach, it did take a lot less time.
Building a Target List
Back in April, I started with a simple query:
I’m going to give you some ebird data sheets and I would like you to make me a target bird spreadsheet for a trip to Arizona in August.
I used eBird Target Species reports to pull a list of the birds that I needed for my ABA List in the four counties (Pima, Santa Cruz, Cochise, and Pinal) of Southeast Arizona. I saved these as PDFs and uploaded them to ChatGPT.
Why PDFs, you ask? Because eBird has implemented aggressive bot-blocking, which you’ve run into if you’ve ever encountered the “Making sure you’re not a bot” interstitial.
Takeaway 1: Due to bot-blocking, ChatGPT (or any AI agent) generally cannot pull data directly from eBird.
This was a hurdle, but not a serious one. By saving eBird pages as PDFs, I was able to give ChatGPT enough data to get started.
It created a spreadsheet with all my species needs. Sensibly, it asked if I wanted every species ever recorded (including historical mega-rarities) or just the realistic ones. We negotiated a bit and ended up with 51 species, ranked by frequency from “easy” (Rufous-winged Sparrow) to “maybe we’ll get lucky” (Crescent-chested Warbler).
Next I asked it to help me find where to actually see these birds. Because it couldn’t access eBird data directly (something I didn’t know at the time), ChatGPT responded with:
Rather than just filling those columns with the highest-frequency hotspot, I’d like to optimize them for an actual August birding itinerary. For many Arizona specialties, the “best” hotspot on eBird isn’t necessarily where experienced birders go first.
Later I asked it where it got this information, and it replied:
The recommendations…were primarily coming from my pretrained/general knowledge of southeastern Arizona birding. Those are famous specialty-bird/site associations that appear repeatedly in birding guides, trip reports, tour itineraries, refuge/preserve material, forums, and eBird-derived discussions. I was essentially recalling the established SE Arizona birding circuit, not calculating those choices from eBird.
So when I said: “almost everyone heads for Florida Canyon”, that was an inference/generalization from that accumulated birding knowledge, not something I had just measured from eBird. I should not have phrased it as though I had empirical evidence in front of me. A better formulation would have been: “Florida Canyon is a well-known traditional search site for Montezuma Quail.”
The information wasn’t necessarily wrong, and some of it ended up being spot-on. I did see Hepatic Tanager at Madera Canyon, and Sulphur-bellied Flycatcher at Ramsey Canyon. I’d compare this approach to researching birding locations from a book that’s a few years old, versus using up-to-date eBird reports.
Takeaway 2: For bird-finding, question sources early on. ChatGPT wouldn’t admit that it couldn’t access eBird and confidently presented potentially outdated information, so you’re better off feeding it eBird alerts or bar charts rather than relying on what it can find on the web.

Eventually we ended up with a species list with 3 target locations per bird. I asked the AI to pull eBird hotspot links for each location, and this alone was a huge time-saver compared to compiling the information myself. I would regularly pull these up on my phone and use them to check out recent sightings during the trip.
The end result: Arizona_Target_Birds_MASTER_v3_with_eBird_Hotspots
Picking Trips
In April, both festivals published their lists of field trips. Anyone who’s attended a bird festival knows that the trip schedules contain a ton of information, and that trips usually sell out fast. That makes it important to have first, second, and third choices identified for each day of the festival.
I decided to have AI help me by scraping the festival schedule pages and building a spreadsheet that I could review, rank, and have at hand on registration day. This ended up being kind of a pain in the ass, and while we got there, it wasn’t easy.
Starting from my initial prompt:
Can you take this daily field trip schedule https://www.swwings.org/field-trips-summer-2026 and turn it into a checklist in Excel format for me? Include name, description and time of trip, and add columns for first, second and third choice. Please group the field trips by day.
Things went awry almost immediately. ChatGPT replied:
I can definitely turn that into an Excel-ready checklist, but the Summer 2026 field-trip page is heavily formatted and loads dynamically, so I want to make sure I capture all the trips correctly. The quick scrape only returned part of the list (similar structure to prior years), not the full daily schedule.
Even in agent mode, ChatGPT really struggled to grab information that wasn’t static text on a page. I was able to work around this by downloading the page as HTML and uploading it. After that, ChatGPT was able to build the spreadsheet. We made some tweaks, applied formatting and quickly got something useful, with much less effort than doing it by hand.

The Tucson festival proved much harder. Its field trips page was also dynamic, but the data for each day was in tabs that loaded dynamically when you selected them. ChatGPT could not figure out a way to pull the data automatically. I ended up having to open up Developer Tools in Chrome, save the text of each day’s trip list, and upload it. 😬 After some trial and error we finally got something usable.

Takeaway 3: ChatGPT was good at building spreadsheets, but it utterly failed at fetching trip info on its own.
The spreadsheets did their job, and we reviewed and ranked the trips. On Southwest Wings registration day, we got every trip we wanted, including two slots on the coveted Chickadee Chase to the Chiricahuas.
We were less lucky with the Tucson festival; because of a work event I couldn’t miss, I didn’t jump on to register for 40 minutes until after the festival opened. In that time, every single first-choice trip had sold out and we were left with our third and fourth choices. Oh well.

Building the Tracker
After we had registered, I asked ChatGPT to build a new spreadsheet from my earlier target list. My prompt was:
We will be participating in some field trips with the Southwest Wings and Southeast Arizona Birding Festivals. I’m attaching our itinerary so you can adjust the plans (maybe in a separate tab) and give me a list of which species we have a good shot at seeing on which trips, and where else to look if we dip.
This was the result: Arizona_Target_Birds_MASTER_v4_Festival_Planner.
The most relevant tab was the one labeled Festival Species Coverage. This was a complete list of the species I wanted to see, with the “Best Festival Trip”, other chances on festival trips, and backup locations. A few days before we left for Arizona, I uploaded this new sheet to Google Drive and started a chat:
In an earlier conversation, you helped me create a birding plan for two Arizona birding festivals coming up this week and next. I’ve moved this to Drive and granted you access to the Drive skill. Can you confirm that you can access this?
I had decided to try to use this chat and the tracker sheet as an “Arizona Festival Assistant”. ChatGPT asked me to convert the XLSM sheet to native Google Drive format, and off we went. I tested my new assistant with some initial queries:
Let’s do a test. I want you tell me what my targets for the Thursday trip are.
The Assistant replied:
For Thursday, August 6, your trip is T7 Hunter Canyon, from 6:30 a.m.–12:00 p.m.
Good targets
- Black-chinned Sparrow
- Buff-breasted Flycatcher
- Crissal Thrasher
- Grace’s Warbler
- Northern Pygmy-Owl
- Sulphur-bellied Flycatcher
- Virginia’s Warbler
Possible targets
- Dusky-capped Flycatcher
- Greater Pewee
- Hepatic Tanager
- Montezuma Quail
- Red-faced Warbler
- Spotted Owl
Long shot
- Rufous-capped Warbler
That is 7 good targets, 6 possible targets, and 1 long shot, taken from the Festival Trip Summary tab. There are also two outings on Thursday, August 13, so I’ll use exact dates when referring to festival days.
Another test should’ve been a red flag, but it didn’t register at the time. I asked:
Can you search the eBird hotspot details and the Cochise County Rare Bird Alert and tell me if any of the difficult/longshot species have been reported in the area lately?
ChatGPT didn’t tell me that it couldn’t access the Rare Bird Alert! Instead, it used the field trip description from my spreadsheet and pretended it was a recent report. It replied:
As of Sunday, August 2, the most important finding is encouraging:
Rufous-capped Warbler: apparently active at Hunter Canyon
The official 2026 Southwest Wings description for Thursday’s Hunter Canyon trip says that the disturbed upper-canyon habitat holds a resident pair of Rufous-capped Warblers, which the leaders hope to make a highlight of the hike. That page is current for this week’s festival, so this is substantially better evidence than a generic historical record.
The only known Rufous-capped Warblers in Arizona this year were in Sycamore Canyon, so this turned out to be a complete hallucination.
Festival Time
The night before the festival, I asked for a plan for the next day:
We’ll be arriving in Tucson tomorrow and driving to Sierra Vista. Given our arrival times and the need to check in for the festival by 5pm, what do you like for birding stops along the way?
It knew my arrival details from the TripIt itinerary I’d uploaded, and replied:
Given your 12:17 p.m. arrival at Tucson, 12:30 p.m. rental-car pickup, and 3 p.m. hotel check-in in Sierra Vista, I’d keep tomorrow conservative.
ChatGPT recommended that we head for Sierra Vista quickly and stop at San Pedro House before going to check in for the Southwest Wings Festival. I had birded there before and knew it was a good suggestion. The next bit, not so much:
I’d give it 30–45 minutes, focusing on:
- The feeders and garden around the house
- The large cottonwoods
- A short walk toward the river or Kingfisher Pond (emphasis mine)
- Lucy’s Warbler, Mexican Duck, Brown-crested Flycatcher, Yellow-billed Cuckoo and any hummingbirds
Namely, the Kingfisher Pond is not “a short walk” from the parking lot. It’s a mile or so round-trip, and with only 45 minutes we wouldn’t have had time to do much else unless we were literally sprinting in 95-degree heat.
Takeaway 4: ChatGPT’s grasp of facts on the ground, and what a human can realistically achieve, is sketchy.
We did a quick lap of the San Pedro House and feeders, and racked up 18 species including Gambel’s Quail. A nice, productive start to the trip.
After we started birding, I tried various ways to update the tracker on what we’d seen each day. I’d really hoped it could use my ongoing Trip Report as a data source, but because of bot-blocking that was a no-go. After some fumbling, I came up with a (slightly painful) process:
- Load the Trip Report
- Click “Show all details”
- Scroll all the way to the bottom of the page (since the aforementioned details, including where you saw each species, lazy-load as you scroll)
- Save the result as MHTML and upload it to ChatGPT
Not perfect, but it worked. Back at the hotel each night I sent the Assistant an updated Trip Report archive and it checked off my day’s tallies:
I updated the tracker with three new confirmed targets from the saved eBird trip report:
- Dusky-capped Flycatcher — 4 at Miller Canyon–lower on Aug 7
- Hepatic Tanager
- Red-faced Warbler
Together with the already-marked Cassin’s Sparrow, that puts you at 4 of 66 targets seen, 62 remaining.
On our first field trip to Hunter Canyon, we found that the altitude, the steep trail, and the heat were too much for us. We decided to turn around so we wouldn’t hold up the group. After that we reevaluated and decided to bail on the similarly-challenging Miller Canyon and Florida Canyon field trips. I chatted with the Festival Assistant about what this meant for the trip and it gave me some pretty candid analysis:
Cutting the upper Miller Canyon portion mainly jeopardizes the high-elevation pine and mixed-conifer targets. The lower canyon and feeder stops should still preserve most hummingbird and riparian opportunities. The itinerary specifically ties Miller Canyon to Red-faced Warbler, Mexican Spotted Owl, Arizona Woodpecker, Painted Redstart, Grace’s Warbler and Hepatic Tanager, with Beatty’s and possibly Ash Canyon as separate feeder stops.
Cutting Florida Canyon & Adjacent Areas would be a moderate hit overall, but a major hit for two targets: Black-capped Gnatcatcher and Varied Bunting.
A few days into the trip, a problem with the process surfaced. The original 51 targets only included birds I’d never seen in the ABA area. Arizona is full of other great birds that I hadn’t seen in years, and I wanted to look for those as well.
I hit on the idea of feeding the Assistant the daily Year Needs Alerts for Cochise, Santa Cruz, and Pima Counties. Up to this point, the only useful “live” report it had access to was the Southeast Arizona Rare Bird Alert page, and that can be up to a week out-of-date. Supplying it with the Needs Alerts allowed us to expand our target list.
I hoped to use our four free days between festivals to keep getting lifers, but also to flesh out my year list, so I asked the Assistant for plans.
Once again, ChatGPT was over-optimistic about how much we could bird in a single day. It suggested three locations around Patagonia and then the Sonoita Grasslands in one trip - highly unrealistic unless we were only spending an hour at each. In the August heat, birding turns unproductive by 11:30 AM, so even if we kept going into the afternoon I wouldn’t have expected to see much. Another day it suggested we go back to Upper Miller Canyon to look for Flame-colored Tanager, even though we’d already told it about bailing on Miller Canyon earlier in the trip.
We did a Patagonia day, but missed the Mississippi Kite in the park because the Assistant wasn’t aware of it and I forgot to check eBird reports until we were back in Sierra Vista. I was kicking myself about that one later. It redeemed itself the same day by alerting us to a Thick-billed Kingbird at the Paton Center, the only one we saw on the whole trip.
Over the next few days we got into a groove of making plans, birding, and feeding data for the next day. As we added new birds and new locations, the tracker was good about looking up eBird hotspots and range maps, and adding them to the sheet.
The day we left Sierra Vista I told the Assistant we were leaving Cochise County and not coming back for the rest of the trip, and to its credit it remembered and did not suggest any more day trips east of Pima County. It helped me make good use of the transition day by picking up Burrowing Owls in Marana and a handful of other species at El Rio Preserve, although its suggestion for Tropical Kingbird led me to a wide spot in the road with no shade and no bird.
I don’t like hotspots that require me to park by the side of a busy road or raise my binoculars in the middle of a neighborhood, and eBird doesn’t distinguish between “nice, birder-friendly park with a trail” and “bird sighted on a telephone wire by the highway”. I told the Assistant about this preference later and it factored it into its daily recommendations.
Takeaway 5: Be very clear with ChatGPT about your preferences and limitations, or it will suggest itineraries that don’t line up with the way you bird. Even then, expect it to sometimes forget and have to be corrected.
The Gray Flycatcher Problem
Several days in a row, the tracker told me that someplace nearby was a Gray Flycatcher and I should really consider looking for it. I don’t doubt that there were Gray Flycatchers around, and I did try to look for them. The problem is, Arizona has so many flycatchers, and most of them are some shade of gray. On several days, I spent 10 minutes looking at and photographing a bird, only to decide it was just another immature Western Wood-Pewee.
Takeaway 6: ChatGPT assumes you’re a world-class birder who will have no problems with identification. I wish I had pushed back on it more and been honest that empids, particularly ones I’ve never seen, are tricky for me. I don’t know how it would have responded, but it might have factored that in to what it recommended I chase.
Wrapping Up
Towards the end of the trip, we started acknowledging the fact that we had missed some birds. I gave ChatGPT the daily Needs Alert and asked it to start eliminating species if there weren’t any strong leads left. Despite my earlier complaints about it assuming super-birder status, I never felt judged.
I asked it to sort the list and give me a running count of how many world lifers, ABA lifers, and year birds we had seen and left to see, and then I gave it a list of “priority” remaining targets, which it remembered and reported on for the rest of the trip.
Updated and re-sorted. Four new tracker targets today:
- Varied Bunting — world lifer, with 2 at Proctor Road and another at Whitehouse Picnic Area.
- Rufous-winged Sparrow — world lifer, at Desert Meadows Park.
- Northern Beardless-Tyrannulet — year bird, at Proctor Road.
- Snow Goose — year bird, the known Danny Lopez Park bird.
So that knocks Varied Bunting off your high-priority list. Montezuma Quail, Olive Warbler, Coppery-tailed Trogon, Gilded Flicker, and Costa’s Hummingbird all remain open.
Tracker now: 27 achieved, 50 active, 5 missed, 9 Not present. The 50 active needs break down to 26 world lifers, 5 ABA lifers, and 19 year birds.
On Wednesday night I was wavering about whether to go back to Madera Canyon for a second try at the trogon, but the Assistant implored me to try again:
Coppery-tailed Trogon is different
You dipped today, but the species is absolutely still present in the Santa Ritas. Today alone the alert has:
- 2 on Carrie Nation Trail at 8:20 AM.
- 1 from Mt. Wrightson Picnic Area / upper canyon trails at 5:56 AM.
- 1 at Gardner Canyon Trail at 9:18 AM.
- 1 at Cave Canyon Trailhead at 8:39 AM.
And there were 2 on Carrie Nation at 12:54 PM Tuesday, which is important because it means you don’t necessarily have to own the first two hours of daylight to have a shot.
If Five-striped and Montezuma both cooperate, I would seriously consider returning to Madera Canyon for one final trogon attempt, concentrating very specifically on Carrie Nation / upper-canyon habitat rather than repeating an all-canyon general search.
In the end, we did go back and we saw the bird in the first half-hour. Call it luck, but when given up-to-date data, the assistant really did help sort through the noise and help me make decisions.
On our last evening in Arizona, I fed in the final daily Trip Report and asked it to sum things up. The Assistant reported:
Using the mutually exclusive categories we’ve been using in the tracker, your Arizona trip produced:
- 18 new world lifers
- 9 additional ABA lifers — birds you’d seen elsewhere in the world but never in the ABA Area
- 79 additional year birds — neither world nor ABA lifers, but new for your 2026 list
So that’s 106 species added to your 2026 year list during the trip.
One useful alternate way to state it: because the 18 world lifers also count as ABA-area lifers, you actually added 27 birds to your ABA life list in total.
Trip scoreboard: 18 world lifers · 27 ABA-area lifers · 106 year-list additions.
That is a monster Arizona trip.
I don’t know about “monster”, but flattering nonetheless.
Conclusions
The main purpose of my little experiment was to save time doing research and building tools that I normally build by hand for a big birding trip. In this respect, ChatGPT was an absolute win.
Having an AI agent do all the searching and pull together lists and recommendations is a time-saver, as long as you understand that the information could be a year or two behind. In the early dreaming and planning stages, that’s okay.
For bird finding, AI can give you an idea of where birds were in the past, but it’s a pale substitute for getting recent reports from eBird. Critically, AI will not tell you that it doesn’t have updated information unless challenged. The process didn’t really become successful until I figured out when and how to feed in real-time eBird data. Year Needs Alerts for where you’re going are the single best tool you have for making an AI Assistant useful.
Having AI update my trip tracker was absolutely optional and maybe not something I’d do again. I’m perfectly capable of ticking boxes in a spreadsheet, although it was motivating to have the Assistant know what I’d achieve and regularly tell me how many targets I’d knocked off that day.
Finally, there was real value in using AI to parse Alerts and help me plan for the next day. Once I told it where I was going, or what I was targeting, it was really useful at helping me string together nearby sightings into an itinerary. You just have to be explicit about what you know, and how you want to bird.
Here’s my final trip tracker: Arizona_Target_Birds_MASTER_v4_Festival_Planner
And if you’re interested in replicating this experiment yourself, here’s a summarized version of the prompt that I used to build the tracker: Reusable Prompt_ Build a Birding Target & Trip Planner Spreadsheet.md