
Automating CompanyCam Photo Descriptions with ChatGPT and Zapier
One of the benefits of the job search1 is discovering apps and companies I’d never heard of before. A recent standout was CompanyCam, which makes it a snap for trade professionals to manage projects through a variety of photo tools.
How I landed on this experiment
Over the weekend, I applied for their Senior Engineering Manager opening. Their product offers a free trial, so I decided to check it out. Over the last several years, my wife and I have been slowly turning part of our basement into a tiki bar. There’s still plenty of work to do, so it seemed like a fun way to play with the CompanyCam app and get a feel for how it works.
The companion mobile app lets employees or contractors take photos, annotate them with voice-transcribed notes, add comments, and more. You can even draw on photos, record video, and scan documents. Everything syncs to the cloud immediately (with unlimited storage, no less) and is accessible via the web app.
I was particularly impressed by how effortless the voice-transcribed notes feature was. After snapping a photo, I could tap a button, speak, and see my notes appear almost instantly. That got me wondering: could AI describe what’s in each photo automatically? I didn’t see a built-in option, but their long list of integrations included Zapier—and that sounded promising.
Integration goal and high-level architecture
Goal: Add a helpful, zero-code feature that uses existing pathways in CompanyCam, Zapier, and OpenAI.
I’d used Zapier before and knew it could talk to OpenAI. Since CompanyCam already integrated with Zapier, the pieces were there.
1. Log in to Zapier and start a new Zap with CompanyCam
Sign in and authorize your CompanyCam account. This works for trial accounts, too, which makes experimentation easy.
2. Select “New Photo” as the trigger event
This runs the Zap whenever a new photo hits your CompanyCam account. In production you’d probably narrow it to specific tags or projects, but for testing, “every photo” is fine.
3. Send the photo to ChatGPT with a custom prompt
Add an “Analyze Images” action (OpenAI). You’ll need an OpenAI account funded for API calls, but setup is otherwise straightforward. My quick-and-dirty prompt:
This photo was taken by a general contractor working on a project. Please2 describe the contents of the photo.
4. Send the description back to CompanyCam (almost)
Zapier lacks a ready-made action to add comments to photos. A quick look at CompanyCam’s docs showed a Create Photo Comment endpoint, so I tried Zapier’s Custom Action (currently in beta).
I asked the Custom Action agent:
Add a comment to a specified CompanyCam photo.
The agent located the API docs, generated a form (Photo ID, Comment Text, User Email), and even produced editable code. My first test failed. The CompanyCam API returned an error:
Comment text cannot be blank.
A peek at the generated code revealed it was sending the comment under the key text
, while the API expected content
. One quick edit fixed that3.
Pulling it all together
After publishing the Custom Action, I ran a full test. Success! A new photo from my basement appeared in CompanyCam with ChatGPT’s description attached within a minute. Now, any new photo I take in the CompanyCam app will have a photo description attached automatically.
Conclusion and suggestions
Because CompanyCam’s API is so well documented and Zapier’s Custom Actions fill feature gaps, adding new functionality was fast, fun, and surprisingly easy. It’s a nice reminder of the potential sitting just under the surface of many everyday tools.
Ideas for future improvements
- An image description might not be useful on every project. Tweak the prompt to flag structural issues or damage and post a comment only when something noteworthy is found.
- Pipe the description back into ChatGPT, ask it to generate tasks, and create or update CompanyCam task lists automatically.
- Auto-tag photos for faster search: Feed the description back through a short prompt that extracts 3–5 keywords (e.g., “electrical panel,” “drywall,” “water damage”) and saves them as CompanyCam tags so teams can filter shots later.
Footnotes
-
Yes, that is a very optimistic view, but I’m having a good day so I’ll roll with it. ↩
-
I like to be polite in my prompts just in case AI eventually takes over and checks how humans treated it. ↩
-
This step was slightly more involved than this. I actually tried 2 different LLMs to troubleshoot this, both kept getting hung up on the authorization headers not looking correct (likely due to the way Zapier abstracts the actual API call). I eventually just read the API docs closely while reviewing the code and caught the difference in the key that was being passed for the comment text. ↩