Jobsite photo coverage board for your CompanyCam crews
Open one board each morning to see every active jobsite, how long since the last photo, who posted it, and nudge the crew that went quiet.
I want an app my production manager opens every morning to see which jobsites are actually being documented in CompanyCam. It is a photo coverage board, not a report: every row is a live jobsite, and every row has actions the manager can take on the spot.
The main view lists every active project using List Projects. Filter out anything with status "deleted" and anything with archived set to true. Archived is a separate soft state from deletion, so the active jobsite filter has to check both. CompanyCam list endpoints return a bare JSON array and accept page and per_page, so page through until a short page comes back.
Each row shows the project name and address, days since the last photo, how many photos landed in the last 7 days, which crew members posted them, and the labels currently on the job. Pull photos per project with List Project Photos, which returns most recently captured first, so a bounded page is enough for both the recency figure and the 7 day count. Resolve poster ids to names with a single List All Users call cached for the whole refresh, and read the label chips from List Project Labels. Timestamps such as created_at and updated_at are Unix epoch integers, so days since last photo is epoch math rather than date string parsing.
Render the latest three to six thumbnails inline on each row from the photo uris array, picking the entry whose type is thumbnail, so the manager can eyeball coverage quality without opening CompanyCam at all. Clicking a thumbnail opens the larger web rendition in place.
Any site with no photo in more than 3 days sorts to the top in a red going dark band, ordered by the longest silence first. Everything else sits below in a normal band, also sorted by days since the last photo. Make the 3 day threshold a saved setting so the manager can tighten or loosen it per how their jobs run.
A second view flips the board around by crew: one row per CompanyCam field user showing their current posting streak of consecutive days with at least one photo, their last upload date, photos posted in the last 7 and 14 days, and which jobsites they covered. Sort the weakest documenters first so it is immediately obvious who is skipping documentation.
From a project row the manager can do four things. Nudge the crew lead with a Slack direct message, using Open a Conversation to get the DM channel for that person and then Send a Message with a prefilled, editable note naming the job and how long it has been dark. Post a reminder straight onto the job with Add Project Comment. Tag the job with a "Needs Photos" label via Add Labels to Project. Attach the standard documentation checklist by picking a template from List Checklist Templates and calling Create Project Checklist from Template.
Persist a mapping the manager fills in once: each CompanyCam user matched to their Slack member ID, plus which crew member is the lead on each project, so the nudge button knows who to message. Also persist the going dark threshold, the default label name, the default checklist template, and when a nudge was last sent per project, so a row that was already nudged today shows "nudged 2h ago" instead of inviting a second ping. Store all of this per user of the app.
CompanyCam allows 240 GET requests per minute per token, so fan the per project photo and label fetches out in small batches with bounded concurrency, cache the user list for the duration of a refresh, and give the manager a manual refresh control rather than polling in the background. Where a cheap refresh is possible, use the modified_since filter with an ISO8601 timestamp. If one call fails, keep the rest of the board rendered and mark just the affected row. Show a clear empty state when there are no active projects, and if Slack is not connected, disable only the direct message button while the comment, label, and checklist actions keep working.
What does this prompt do?
- Lists every active jobsite with days since the last photo, how many photos landed in the past week, which crew members posted them, and the labels on the job, with recent thumbnails inline so you can judge coverage quality at a glance
- Pushes any site with no photo in more than three days to the top in a red going dark band, so the gaps are the first thing you see each morning
- Flips to a per crew view showing each field user's posting streak and last upload, so it is obvious who is skipping documentation
- Lets you act straight from a row: send the crew lead a direct message, post a reminder on the job, tag it Needs Photos, and attach your standard documentation checklist
What do I need to use this?
- A CompanyCam admin login on a Pro, Premium, or Elite plan
- A Slack workspace where you can send direct messages to your crew leads
- The Slack member ID for each crew lead you want to nudge, copied from their Slack profile and matched to their CompanyCam name
- At least one checklist template already set up in CompanyCam if you want the checklist button to do anything
How can I customize it?
- Change the going dark threshold from three days to whatever your job types actually need
- Edit the wording of the direct message and the job reminder before either one sends
- Swap the Needs Photos label for your own tag, and choose which checklist template gets attached by default
- Adjust the streak window in the crew view between the last 7, 14, or 30 days
FAQs
Does opening the board change anything in CompanyCam?
Will archived jobs clutter up the board?
Do my crews have to do anything differently?
What if some of my crew leads are not on Slack?
How up to date is the information on the board?
Related templates
Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.
Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.
See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.
Review Introw partner payouts line by line, approve them from one board, raise the matching bill in Xero, and post every approval to Slack.
See every install this week day by day, with the crew, the homeowner, whether materials were ordered, and the latest jobsite photos.
See every access, purchase and leave request waiting on your decision in one screen, approve or decline in place, and send the reason back to the requester.
Stop guessing which jobsites are getting documented.
Open one board every morning, spot the sites going dark, and nudge the crew before the photo trail goes cold.