Inspiration

One member of our team worked in construction for two years and saw firsthand how messy end-of-day reporting can be. Important details were scattered across phone photos, texts, memory, and sometimes even handwritten notes on someone's arm. Progress photos were easy to forget, and by the end of a long day, the last thing anyone wanted to do was reconstruct everything that happened on site.

That problem is even harder for small contractors. Larger firms can lean on office staff and full construction software platforms to keep documentation organized, but smaller crews often have to handle the field work and the paperwork themselves. We wanted to build something that makes recordkeeping as easy as talking through the day and uploading a few photos. Just as importantly, we wanted to help small contractors create a reliable paper trail they can use for client updates, billing, and protection if work is ever questioned or disputed later.

What it does

Vulcan helps small contractors turn daily jobsite activity into clean, professional records in minutes. Users create a project, upload site photos, and complete a short, guided, AI-powered voice check-in. Vulcan then turns that messy, real-world input into a structured daily report with completed work, crew activity, delays, safety notes, next steps, weather context, and attached photos.

The result is a polished, branded PDF that is useful not only for internal tracking, but also for communication with customers, owners, and subcontractors. Instead of relying on memory or incomplete notes, contractors get a clear, dated record of what happened on site each day. No typing, no templates, no desk work.

How we built it

We built Vulcan as a full-stack web app with a multi-step AI pipeline at its core.

Frontend: React 19 with TypeScript, built with Vite and styled with Tailwind CSS and shadcn/ui. The UI handles project creation, drag-and-drop photo uploads, report progress tracking, and in-browser PDF viewing. We use TanStack Query for data fetching and caching.

Backend: Python and FastAPI, backed by PostgreSQL with SQLAlchemy for data modeling. ReportLab handles PDF generation with custom branding, fonts (General Sans + Cabinet Grotesk), and layout.

AI pipeline: This is where the core product logic lives. We designed a multi-step workflow for turning unstructured field input into reliable documentation:

  1. Voice intake - Deepgram powers a live voice agent that asks targeted questions about crew, deliveries, safety, and tomorrow's plan
  2. Transcription - Groq's Whisper endpoint converts the voice check-in into text
  3. Photo analysis - Groq's LLaMA 4 Scout vision model analyzes uploaded jobsite photos to extract relevant context
  4. Report synthesis - Groq's LLaMA 3.3 combines the transcript, photo analysis, and project metadata into a structured daily report
  5. PDF generation - The backend renders the final report as a branded, professional PDF ready to download or send

Using the address entered on project creation, we also enrich reports with real-time weather data from external APIs so the final output feels like a real construction record, not just AI-generated text.

Challenges we ran into

The biggest challenge was reliability. It is easy to make an LLM generate a summary, but much harder to make it produce structured, trustworthy output that can hold up as a real project record. We had to make sure the system could turn spoken updates, photos, and metadata into something organized, consistent, and useful, every time, not just on a good demo run.

Another major challenge was designing the workflow so people would actually use it. A reporting tool is worthless if it sits unused because it is too annoying to deal with at the end of a long day. We kept coming back to one scenario: a project leader driving home from the jobsite. That person has already been on their feet for ten hours. They are not going to sit down and type out a report. So we built the entire flow around that constraint. Upload your photos while you are still on site, then take a voice call on the drive home, and by the time you park the report is done. Every design decision filtered through "would someone actually do this after a twelve-hour day?"

That voice experience was its own engineering challenge. We spent a lot of time tuning the real-time voice models, adjusting interrupt timing, response speed, and conversational pacing so the call feels natural, not robotic. But it also had to be more than a casual conversation. We needed to build a dynamic dialogue flow that still pulls deterministic, structured information (crew counts, materials delivered, safety incidents, schedule status) so the backend can produce a reliable JSON payload for the final PDF. Balancing a conversational feel with structured data extraction was one of the hardest problems we solved.

Accomplishments that we're proud of

We're proud that Vulcan is more than a concept. It is a working end-to-end workflow where a user can create a project, upload jobsite photos, complete a voice check-in, and receive a finished branded PDF report back. The whole flow runs in under five minutes.

We're also proud that the project solves a real and unglamorous problem. A lot of software in construction focuses on big companies with heavy processes. Vulcan is aimed at smaller contractors who still need professional documentation but do not have dedicated admin staff or time to wrestle with bulky software. Turning scattered field updates into a clean daily report and defensible paper trail feels genuinely useful.

What we learned

We learned that building with AI is as much about orchestration and validation as it is about prompting. Our pipeline is effectively a multi-agent workflow: a vision model reads the photos, a voice model conducts the check-in, a transcription model converts speech to text, and a synthesis model pulls everything together into a structured report. Each stage transforms the data, and the hard part is managing that chain so information gets richer and more detailed at every step without drifting away from what actually happened on site. There is a constant tension between letting the AI flesh things out and keeping the output deterministic and grounded enough to serve as a real record. Getting that balance right was the biggest lesson of the project.

We also learned how much value comes from giving each model in the pipeline its own job with its own context. If we had just used the voice agent as a survey and reproduced the answers into a report, the output would have been flat, limited to whatever the user remembered to say out loud. Instead, because the vision model independently analyzes photos, and the synthesis model has access to project history, team members, and image captions alongside the transcript, the final report can draw connections and surface details that no single pass could. A photo of stacked lumber becomes a logged material delivery. A mention of "Carlos" gets matched to a crew member on file. The report ends up richer and more structured than any one model or one input source could produce on its own.

Finally, we learned a lot about the construction reporting problem itself. Good daily records are not just nice to have. They are operationally important. They keep everyone aligned, reduce miscommunication, and create evidence when questions come up later. That made us think less about "AI demo" features and more about trust, usability, and whether this would actually fit into a project leader's day.

What's next for Vulcan

Next, we want to make Vulcan even more useful in the field: better mobile capture, multilingual support, stronger photo understanding, smarter report editing, and easier sharing to email or project management tools.

We'd also love to test it with real small contractors and refine the workflow around how crews actually document work on busy jobsites. Long term, we see Vulcan becoming a lightweight field documentation layer that helps smaller teams get the kind of consistency, visibility, and protection that larger firms already get from bigger systems.

Built With

  • Figma & Figma Make
  • Python
  • FastAPI
  • PostgreSQL
  • SQLAlchemy
  • ReportLab
  • Groq (LLaMA 4 Scout, LLaMA 3.3, Whisper)
  • Deepgram
  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS
  • shadcn/ui
  • TanStack Query

Built With

Share this project:

Updates