Fly the roof.
Get the damage summary.
Drop in drone footage of a storm-damaged roof. A vision-language model boxes missing shingles, exposed decking and tarps frame by frame, then drafts the pre-inspection summary an adjuster needs before the site visit. It runs on a GPU that Chalk deploys from one Python file.
Inspect a roof
Pick a flight or upload your own drone video, then press Inspect roof. Findings appear frame by frame, and the summary follows. Click any finding to jump to that moment in the footage.
Sample footage: U.S. Army Corps of Engineers drone video from Operation Blue Roof after Hurricanes Ian and Ida, in the public domain via DVIDS. The summary is decision support, not a coverage determination.
How it works
After a storm, the backlog is the bottleneck. A model that has already looked at every frame lets an adjuster triage claims, and walk onto the roof knowing where to look.
Sample
ffmpeg pulls up to 14 evenly spaced keyframes from the flight, from MP4s or the MOVs a phone or drone app records.
Inspect
Qwen3-VL-8B looks at each keyframe and returns typed findings: missing shingles, exposed decking, tarps, debris, fallen limbs, each with a severity and a box around the evidence.
Summarize
A second pass reads every finding plus the most damaged frames and drafts the adjuster's summary: severity, damaged share of the roof, a recommendation, and what to verify on site.
Deploy your own in three commands
Clone the example, log in, and run the deploy script. Chalk starts vLLM with Qwen3-VL-8B on an L40S, then the inspection app, and prints a URL that serves this exact demo.
The API is one streaming endpoint, so the same deployment can sit behind a claims intake form, a nightly batch over new flights, or an agent that files the first notice of loss.
chalk-ai/roof-inspectiongit clone https://github.com/chalk-ai/roof-inspection
cd roof-inspection
# Or export CHALK_CLIENT_ID and CHALK_CLIENT_SECRET.
chalk login
# Deploys the vision-language model on a GPU and the inspection app, prints your demo's URL.
./deploy.pyWhat Chalk handles
The model is the interesting part. Everything around it is the part Chalk does for you.
GPUs on demand
Ask for gpu="nvidia-l40s" and Chalk provisions the node, schedules vLLM, and gives it an HTTPS URL that only your environment can call.
About 25 seconds a roof
Keyframes are inspected six at a time and vLLM batches them on one L40S, so a 35-second flight goes from upload to adjuster summary in about 25 seconds.
Answers that always parse
Every model call is constrained to a JSON schema, so damage types, severities and boxes arrive as data your claims system can store, not prose to scrape.
Streams as it works
Each keyframe's findings stream to the browser the moment they are ready, and every finding links back to its moment in the footage.
Runs in your cloud
The model runs in your Chalk environment. Policyholder photos and video never pass through a third-party API.
Open model, open code
Qwen3-VL-8B and the app are Apache-2.0. Fine-tune the model on your own claims, or swap the damage taxonomy for hail, wind or fire.
Put vision models in your claims pipeline
Roofs, vehicles, water damage, or documents. Talk to an engineer about running vision models on GPUs in your cloud, next to the claims data they score.