{"slug": "how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more", "title": "How I drew all 11,064 bird species with Claude Code and Codex, and why the reviewer mattered more than the artist", "summary": "A non-programmer directed Claude Code as orchestrator and Codex with GPT-image as illustrator to generate stickers for all 11,064 living bird species in the IOC World Bird List v15.2, publishing the images and structured species data (names in up to 43 languages, Wikidata/eBird/GBIF/iNaturalist IDs, range, measurements and IUCN status) on GitHub. Of the generated stickers, 7,676 met the project's quality bar while 3,388 did not, and the creator credits a reviewer loop that pastes specific field-mark corrections into redraw prompts as more important than the illustration model itself.", "body_md": "I drew a sticker for every living bird species on Earth. All 11,064 of them, every species in the IOC World Bird List v15.2, and I've put them on GitHub along with structured data for each species: names in up to 43 languages, Wikidata / eBird / GBIF / iNaturalist IDs, range, subspecies, body measurements and IUCN status.\n\n**Repo:** [https://github.com/alchaincyf/huashu-bird-sticker](https://github.com/alchaincyf/huashu-bird-sticker)\n\nTwo things up front. First, I don't write code. Everything here was built by AI agents I directed: Claude Code as the orchestrator, Codex (with GPT-image) as the illustrator. Second, these are AI illustrations, not hand-painted, and not all of them are good. 7,676 meet the quality bar we set; 3,388 don't, and the data says which. I'd rather you hear that from me.\n\nThis post is about how a project this size gets done without falling apart, because I think the method transfers to anything with \"do this 10,000 times, correctly\".\n\nLast December I spent some time in Sydney. Sulphur-crested cockatoos became my favourite bird almost immediately. There was a tree in the Royal Botanic Garden full of rainbow lorikeets, and an Australian white ibis smacked me on the head while charging at someone's chips. After that I started actually noticing the birds around me.\n\nThat's my photo on the left, and the cockatoo sticker in the repo is drawn from it (it scored 86, a pass).\n\nA few weeks ago I was testing a design tool and had Claude Code mock up a birding app as a test case. The mock-up was good enough that I decided to build it for real. The idea is a sticker book: every time you identify a bird, you stick it into your own notebook with a date-and-city postmark. That means every species needs a sticker.\n\nWe started with China's birds, grew to 5,232 species, and then I said: all of them. The IOC list has 11,227 species; minus 163 extinct ones, that's 11,064.\n\nWe did find a reference photo for every species. But by species, only 1,986 had openly licensed photos (CC0, public domain, CC BY, CC BY-SA). Many others were non-commercial, no-derivatives or all rights reserved, and for 2,017 we didn't record the license at the time. And photos shot from every angle, against every background, in every light, don't sit together on one page.\n\nSo photos became references only, and every sticker was redrawn.\n\nRoles first:\n\nThe principles that held it together:\n\nAn image model drawing a bird from memory gets the bill curve, the eye colour and the number of toes wrong all the time. So every species gets a real photo first, mostly from iNaturalist and Wikimedia Commons. The source page, author and known license are recorded in each record's `sticker.reference` field.\n\nFor 453 obscure species there was no single usable photo (only distant shots, backs, half a bird). For those we built a reference board: 2 to 4 imperfect images tiled together, plus a written description of the field marks that must be right. The rule I set was \"done beats perfect\".\n\n*Reference photos above, all from Wikimedia Commons, left to right, top to bottom: Blue-throated Bee-eater (Charles J. Sharp, CC BY-SA 4.0), Chinese Crested Tern (Oregon State University, CC BY-SA 2.0), White-throated Dipper (Mark Medcalf, CC BY 2.0), Siberian Sand Plover (Vedant Raju Kasambe, CC BY-SA 4.0), Plaintive Cuckoo (Charles J. Sharp, CC BY-SA 4.0), Pallas's Rosefinch (M.Nishimura, CC BY-SA 3.0), Red-tailed Minla (Shiv's fotografia, CC BY 4.0), Blue-tailed Bee-eater (Tisha Mukherjee, CC BY-SA 4.0), Orange-headed Thrush (JJ Harrison, CC BY-SA 3.0).*\n\nSpecies with reference boards were drawn one at a time instead.\n\nWhen a bird failed review, its next batch prompt got an extra \"pay attention to\" line with the reviewer's note pasted in verbatim, for example \"toes must be zygodactyl, two forward and two back\" or \"the iris is red\", and the redraw was checked specifically against it.\n\nThe grid route alone ran 2,760 batches and 16,339 bird draws including redraws. At peak, early on 30 October, there were 8 Codex sessions drawing, 8 reviewer subagents reviewing and 10 subagents building reference boards for the last 195 species without photos.\n\nThings broke, of course. BiRefNet's memory crept up to 22 GB and froze the whole Mac. Codex keeps about 7 MB of session log per generated image, which quietly grew to 46 GB.\n\nEvery AI sticker goes to a separate reviewer subagent that compares it with the reference and scores it out of 100. 80 or above passes.\n\nThe reviewer works through a checklist: iris colour, bill shape and length, every colour patch on the head and body, legs, feet and claws, tail shape, feather texture and the white outline, and whether last round's problems were fixed. Any single error caps the score at 76–78, so it can't pass.\n\nWhere something can't be verified (the eye isn't visible in the reference, say), the reviewer has to write that down instead of assuming it's fine. And every bird has to be zoomed in on, because many errors are invisible at thumbnail size.\n\nThe reviewer returns JSON, roughly like this (illustrative, not a real record):\n\n```\n{\"<species id>\": {\"name\": \"Common name\", \"score\": 78, \"verdict\": \"fail\",\n  \"plumage\": \"sex / plumage drawn\",\n  \"issues\": [\"pay-attention item: fixed\", \"iris: drawn black, reference is red\", \"...\"],\n  \"redoNote\": \"what to change in the next redraw, and to what colour or shape\"}}\n```\n\nA failed sticker's `redoNote` becomes the next round's \"pay attention to\" line.\n\nOn the evening of 29 October we took 270 stickers that Claude subagents had already reviewed and had Codex re-check them against the same standard. Claude had passed 88 that Codex failed; only 23 went the other way. Claude was too lenient.\n\nThe disagreements clustered in a few places: eyes drawn solid black where the reference shows a red, yellow or blue-green iris; toes fused into a lump or a hind toe with no claw; hummingbirds, with their tiny legs, standing like sparrows; elongated central tail feathers drawn as an ordinary tail.\n\nSo we rewrote the review instructions, listed those errors one by one, and made zooming in on every bird mandatory. After calibration, Claude agreed with Codex on 13 of 18 samples and was slightly stricter overall.\n\nIn the last round, the 852 borderline stickers scoring 80–82 also got a second blind review, and 211 of them failed it and were redrawn.\n\nSome birds won't draw well: the reference is too poor, or the model keeps getting one feature wrong. The rule: at most two redraws per species. If it still doesn't pass, keep the highest-scoring version. No falling back to a photo, no blank page.\n\nThat gives the honest result:\n\nEvery sticker's score and pass/fail is in the data (`meetsQualityBar`), so you can filter to only the ones that pass. The scores come from a model comparing against a reference photo, not from an ornithologist, and these are illustrations, not field-guide plates. For fine identification details, use a field guide.\n\nSwap birds for insects, plants or fish and I think it comes down to four things:\n\n`stickers/<Order>/<Family>/<Genus_species>.webp`.` data/species.json` / `species.csv`:` data/names.csv`:\nSome ideas: a birding journal or printed sticker sheets, nature-education material and bird cards for kids, multilingual flashcards (the Common Kingfisher is カワセミ in Japanese and Eisvogel in German), or joining eBird/GBIF IDs to observation data for your own visualisations.\n\nThe full repo is about 700 MB. If you only want the data and one order (owls, say):\n\n```\ngit clone --filter=blob:none --sparse https://github.com/alchaincyf/huashu-bird-sticker\ncd huashu-bird-sticker && git sparse-checkout set data stickers/Strigiformes\n```\n\n**Licenses.** The stickers are under PolyForm Shield 1.0.0: free for almost anything, including commercial use, except using them in a product that competes with our app (another birding, bird-ID or field-guide app or site). Strictly speaking PolyForm Shield isn't an OSI open-source license; it's source-available. Our own data is MIT; third-party parts keep their terms (IOC multilingual names are CC BY 3.0). Whether a drawing made from a photo is bound by that photo's license is legally unsettled; if that matters for your use, you can filter by each sticker's reference source.\n\nIf one of the stickers was drawn from your photo and you'd rather it wasn't, open an issue or email me at [alchaincyf@gmail.com](mailto:alchaincyf@gmail.com) and I'll replace it within 7 days.\n\nCorrections from birders. AI has certainly drawn some of these birds wrong. If you spot one, please open an issue. That's worth more to this project than a star.\n\nThe stickers were made for Mingji, the iOS birding notebook I'm building; it's in App Store review now (Chinese interface first). I'll write about that when it's out.\n\nRepo again: [https://github.com/alchaincyf/huashu-bird-sticker](https://github.com/alchaincyf/huashu-bird-sticker)", "url": "https://wpnews.pro/news/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more", "canonical_source": "https://dev.to/alchaincyf/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-reviewer-mattered-more-4kcn", "published_at": "2026-10-30 17:07:18+00:00", "updated_at": "2026-10-30 17:20:43.402665+00:00", "lang": "en", "topics": ["artificial-intelligence", "generative-ai", "ai-agents", "ai-tools", "structured-data"], "entities": ["Claude Code", "Codex", "GPT-image", "GitHub", "iNaturalist", "Wikimedia Commons", "IOC World Bird List", "Wikidata"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more", "markdown": "https://wpnews.pro/news/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more.md", "text": "https://wpnews.pro/news/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more.txt", "jsonld": "https://wpnews.pro/news/how-i-drew-all-11064-bird-species-with-claude-code-and-codex-and-why-the-more.jsonld"}}