Functional DemoInternal Tool

Company Cam

A jobsite photo manager with a fast single-click tool for annotating damage.

JobCam landing page headlined Document Property Damage Like a Pro, with a start-free-trial button and feature cards for photo upload and reports.
JobCam landing

What it solves

Field crews need to capture, organize, and mark up jobsite photos quickly, but general photo tools are slow to annotate and don't tie images to a specific job or push them to the rest of the CRM. Marking each damage spot with a generic editor takes too long when crews have many photos per job.

Built for Field crews capturing and marking up jobsite photos.

Overview

Company Cam (JobCam) lets users create a job, upload photos to it, and browse them in a clean gallery. Its core is a fast annotation tool: pick an annotation type such as hail damage or missing shingle, click the photo, and a colored circle of that type's default size is placed and stored as a record. Finished markups are flattened into separate versioned annotated copies while the originals stay untouched. Jobs can produce shareable damage reports, and a plugin sync map ties jobs to connected CRM apps.

What this demonstrates

A fast click-to-place annotation model where each circle is stored as a record and later flattened server-side into a new versioned image so originals are never overwritten. Server-side image processing with Sharp, PDF damage-report generation with PDFKit, shareable report links via share tokens, and a pluggable local or S3 storage backend. Plugin sync mapping links jobs to external CRM apps.

What makes it different

A CompanyCam-style job photo manager built around one thing: annotating damage in seconds, not minutes.

  • Fast annotationPick a type, click the image, circle placed in a few seconds.
  • Single-click circle toolEach annotation type carries its own color and default circle size.
  • Originals preservedAnnotated copies are new versioned files; originals stay untouched.
  • Configurable annotation typesCreate, edit, and delete types with color and size in settings.
  • Plugin syncJobs and media map to connected CRM apps for push or sync.

Core capabilities · 10

  • Jobs

    Create, list, and open jobs with name and address.

  • Photo upload and gallery

    Bulk-upload photos and browse thumbnails per job.

  • Photo viewer

    Prev and next navigation with minimal metadata.

  • Fast annotation

    Select a type and click to place a stored circle annotation.

  • Annotation types

    Manage type name, color, and default circle size in settings.

  • Annotated copies

    Flatten markups into separate versioned annotated images.

  • Damage reports

    Compile job photos and items into a PDF report.

  • Share links

    Share tokens produce expiring links to reports and outputs.

  • Report send history

    Track deliveries of damage reports to recipients.

  • Plugin sync

    Map jobs to connected CRM apps for push or auto sync.

How it works

  1. Create a job with name and address
  2. Upload photos to the job
  3. Open a photo in the viewer
  4. Choose an annotation type and click to place circles
  5. Undo or clear, then save an annotated copy
  6. Generate and send a damage report
  7. Sync the job and photos to connected apps

Key screens

  • JobsSearch, create, and list jobs with latest thumbnail.
  • Job detailPhotos, Annotated, and Uploads tabs.
  • Photo viewerNavigate photos with an Annotate action.
  • Annotate modeType dropdown, click-to-place, undo, clear, and save.
  • SettingsManage annotation types and their color and size.
  • IntegrationsConnected apps and per-app sync toggles.

Data model

  • Organization
  • User
  • Job
  • Photo
  • AnnotationType
  • PhotoAnnotation
  • AnnotatedPhoto
  • PluginSyncMap
  • DamageReport
  • DamageReportItem
  • ShareToken
  • ReportSendHistory

Screens · 6

JobCam Jobs list with a single job card for Chase Crable at a Maryland address, showing an aerial roof photo and a 19-photo count.
JobCam jobs list
JobCam job detail for Chase Crable with Photos, Annotated, Reports, and Uploads tabs and a grid of 19 aerial drone roof photos.
Job photo gallery
JobCam photo annotation tool marking roof damage, with yellow and orange circles placed over shingles on an aerial roof photo
Annotating roof damage on a job photo
JobCam job detail for Chase Crable at 11616 Norwich Lane, Ellicott City MD, showing the Annotated tab with two annotated roof photos and a Build Report button
Job's annotated photos with Build Report action
JobCam Damage Report panel marked PDF Ready with a damage summary of 11 Crease and 2 Missing Shingle, plus empty share links and send history
Damage report summary panel
JobCam Settings page configuring annotation types (Crease, Hail Damage, Missing Shingle, Wind Damage with pixel radii) and an empty Integrations section
Annotation types and integrations settings

How it is built

An Express and Prisma backend on PostgreSQL handles jobs, photos, annotations, and reports, with configurable storage that defaults to local disk and can switch to AWS S3. Sharp flattens annotated images and PDFKit builds damage reports, which are delivered by email over SMTP. A React and Vite frontend styled with Tailwind CSS provides the gallery, viewer, and annotation UI.

APIs and services

AWS S3

Classification

Industries
Home Services

Related work

CRM Empire

Functional Demo

Central CRM that unifies a cluster of home-service apps under one role-based platform.

Adjuster Database

Functional Demo

A shared database for contractors to track and review insurance claim adjusters.

Supplement Tracker

Functional Demo

Insurance supplement management for roofing contractors, with adjuster communication and AI.

Building something with similar Authentication, Document Generation, Notifications functionality?

Start a project and reference this one — the conversation begins with what you have already seen.

Start a project