I Let AI Sort My Game Cam Cards — Here’s What It Found

June 9, 2026 · Rob Roy


I have a problem that every trail camera owner knows. Pull the cards, slot them into the Mac, open the folder — and stare down 500 images of wind-blown grass, shadows, and the occasional deer backside. Sorting them manually takes an hour. Most of that hour is deleting blanks.

This week I built something to fix that. It’s called camtriage, it runs entirely on my Mac with no cloud API, and on its first real run against my SD cards it sorted 511 images in about three minutes of my actual attention. Here’s what it found and where I think this is going.


The Problem With Game Cam Data

A motion-triggered camera doesn’t know the difference between a white-tailed deer and a branch moving in the wind. It fires on both. On a good month in Maine, maybe 15% of images actually contain an animal worth looking at. The rest are false positives — IR triggers from heat shimmer, shadows crossing the lens, a squirrel that was gone before the shutter fired.

The standard workflow is manual triage: click through every image, delete the blanks, move the interesting ones into folders by species. It works, but it scales terribly. A serious hobbyist or wildlife researcher running multiple cameras can pull thousands of images a month.

I’d been thinking about this problem since I started working on HomesteadAI — a suite of privacy-first, on-device AI tools for Mac. The game cam problem felt like a natural fit. Local processing, structured output, sensitive personal data (your property, your wildlife patterns) that has no business going to a cloud API.


The Stack

camtriage uses two models:

Google SpeciesNet — an open-source wildlife classifier trained on over 65 million camera trap images from around the world. It runs as a batch job: hand it a folder, it classifies every image to species level and returns confidence scores. Geographic priors (I set country=USA, state=ME) improve accuracy by down-weighting species not plausible in Maine.

Apple Foundation Models — for behavioral annotation. Once SpeciesNet identifies a species, Apple’s on-device language model generates a one-sentence behavioral note: what the animal is likely doing, and whether the timing is unusual. This runs through the new apple-fm-sdk Python package announced at WWDC 2026 this week, completely on-device, no API key.

The behavioral annotation uses a grounded species behavior table rather than asking the model to recall facts — which it does unreliably. I tell it that raccoons are nocturnal, then ask it to describe behavior. The model reasons, it doesn’t recall.


What Three Cards Found

I ran camtriage against three SD cards this afternoon. Combined results:

Card 1 — wildlife corridor camera, deep woods placement:

  white-tailed deer      15
  wild turkey            12
  domestic cat            7   ← all IR night images
  virginia opossum        4
  eastern gray squirrel   3
  northern raccoon        1

467 of 511 images were blank or low-confidence. The tool filtered them automatically.

Card 2 — driveway/trail entrance camera:

  wild turkey            17
  white-tailed deer      11
  human                   5   ← daytime, near driveway
  vehicle                 5   ← daytime
  woodchuck               1
  northern raccoon        1

The human and vehicle detections were correctly skipped — daytime activity near the driveway is normal. If any of those humans had been detected at night, the tool would have flagged them as alerts with a separate folder.

Card 3 data pending — running now.

Two things jumped out immediately. First, the seven domestic cat detections on Card 1 were all IR night images — cats hunting on the same trails as the turkeys and deer. That’s useful information for a homestead. Second, the two cards tell completely different stories about camera placement. Card 1 is a wildlife corridor. Card 2 is an access point. The species distribution makes that obvious at a glance.


The Accuracy Story

Before building camtriage I tested two approaches against a labeled test set of 56 images across 12 species — deer, fox, bobcat, turkey, raccoon, crow, cat, squirrel, skunk, woodpecker, opossum, birds.

SpeciesNet: 91.1% accuracy. It correctly identified bobcat (distinguishing it from domestic cat in several cases), got every fox right, and sorted turkeys cleanly even from awkward angles.

Gemma 4 12B (general vision LLM): 38.2% accuracy. It called foxes “bears” repeatedly, labeled raccoons as coyotes, and identified a domestic cat as a dog. Not because it’s a bad model — it’s excellent — but because it has never been trained on Maine IR game cam images at dusk. Domain-specific models win decisively for domain-specific tasks.

This is one of the core lessons of the HomesteadAI project. The right model for the job beats the largest model every time.


The Alert System

Not all detections are equal. A deer on the trail is interesting. A mountain lion, an unknown dog, or a human on your property at 2am is something you want to know about immediately.

camtriage has a two-tier alert system:

Always-alert labels — mountain lion, black bear, wolf, unknown dog. Any detection at any confidence above threshold copies the image to an _alerts/ folder and flags it at the top of the summary.

Context-sensitive alerts — the more interesting case. A human detected during the day near the driveway camera is normal. A human detected at night is not. The tool reads the EXIF timestamp, computes time-of-day (dawn/daytime/dusk/night), and alerts only when the timing matches a configured rule:

alert_if:
  human:        [night, dawn]   # trespasser
  domestic cat: [night]         # predator behavior

This means the seven IR cat detections from Card 1 would now trigger alerts — cats active at night on wildlife corridors is worth knowing about, especially with ground-nesting turkey in the same area.


What Apple Announced This Week

The timing of this project turns out to be interesting. WWDC 2026 was today. A few things Apple announced matter directly:

Foundation Models is now multimodal. The on-device model can now accept image input alongside text. Vision annotation — passing the actual game cam image to Apple FM for visual reasoning — requires macOS 27 Golden Gate (shipping fall 2026). Today on macOS 26 Tahoe, only text annotation works. When Golden Gate ships, the behavioral annotation layer gets significantly richer because the model can actually see what it’s describing.

The LanguageModel protocol. Apple introduced a standard Swift interface that Apple Foundation Models, Claude, and Gemini all implement. One API, swappable models. For the eventual native Mac version of camtriage, this is the architecture — write against the protocol, let the user choose the model.

macOS Golden Gate drops Intel. Apple Silicon only from here. Every machine in the HomesteadAI target market has unified memory and a Neural Engine. The hardware assumption that makes local AI viable is now universal.


Where This Goes

Near term: Run more real cards. Refine the confidence threshold based on real false positive rates. Add video support — game cams produce companion video clips for the same trigger events as stills, and I’m handling that by matching timestamps rather than processing video frames directly.

Fall 2026: When macOS 27 ships, add image input to the Apple FM annotation layer. A behavioral description that can actually see the image will be significantly more useful than one working from species name and time of day alone.

Native Mac app: The Python prototype validates the concept. The production version is Swift — SpeciesNet replaced by Apple FM vision (or DeepFaune New England, a 97%-accurate classifier specifically trained on northeastern North American species), the annotation layer using the LanguageModel protocol, a species review UI before any images are copied. The target is a HomesteadAI product that any Mac user can run without touching a terminal.

SmartFiler integration: The underlying pattern — classify, sort, flag anomalies — is exactly what SmartFiler does for documents. The game cam feature slots into SmartFiler as a v2.0 capability once the Apple FM vision layer is available. One app, one purchase, expanding capability.


The Project

camtriage is open source, MIT licensed, and on GitHub. It runs on Mac, Linux, and Windows — the core pipeline is cross-platform, Apple Foundation Models annotation is a Mac enhancement.

github.com/robroy/camtriage

If you run trail cameras and have a pile of SD cards you’re dreading, give it a run. The configuration is a single YAML file — set your country and state, adjust the species behavior table for your region, define your alert labels. The defaults are tuned for the northeastern US.

Feedback welcome. Particularly interested in hearing from people running cameras in other regions — the species behavior table is currently Maine-centric and needs contributions from the community.


Rob Roy builds privacy-first, on-device Mac and iOS apps under the HomesteadAI brand. This post is part of an ongoing series on local AI for practical homestead and outdoor applications.