Inspiration

Public works like roads, drains and streetlights are often marked "Completed" on the strength of a single photo and a status update. That photo might have been taken somewhere else, months ago, edited, or even AI-generated, and the citizens who use the work are rarely asked. We wanted public works to have evidence, not just a signature.

What it does

Proof of Work is an AI-powered platform that verifies public works using before/after evidence. Instead of trusting one signal, it cross-checks several:

  • Location and time: the photo's EXIF GPS must fall within 500 m of the registered site, and the "after" photo must come after the "before" photo.
  • Same scene: CLIP embeddings plus ORB feature matching with RANSAC geometry confirm both photos show the same physical place.
  • Real change: it measures the visual difference between before and after, and checks it against the work description.
  • Authenticity: an AI-image detector plus forensic checks (error-level analysis, JPEG and EXIF analysis, file hashing) flag edited or generated images.
  • Citizen feedback: residents can confirm or dispute completed work.

Each work gets one of three outcomes: Verified, Needs Review or Rejected. The evidence score is weighted as:

$$S = 0.35\,M + 0.30\,V + 0.25\,P + 0.10\,D$$

where $M$ is metadata, $V$ visual change, $P$ same-scene match and $D$ description match. Hard rules override the score. For example, a different scene is always rejected.

How we built it

  • Frontend: React, Vite, Tailwind CSS, Framer Motion, with a dashboard, work registration, map view, analytics, reports and notifications.
  • Backend: Java 17 and Spring Boot REST APIs with MySQL for users, works, evidence and verification results.
  • AI service: Python and FastAPI with CLIP (clip-ViT-B-32), OpenCV, a SigLIP-based authenticity model and Pillow.

The AI service is separate so image processing can scale independently of the main app.

Challenges we ran into

  • Making four technologies (React, Spring Boot, MySQL and Python) work together smoothly.
  • Semantic similarity alone can't prove two photos show the same place, so we added geometric matching with RANSAC.
  • Early on, good GPS and timestamps could mask a bad scene match. We reordered the decision logic so a scene mismatch is rejected first.
  • Handling photos with missing or stripped metadata, and tuning thresholds to limit false positives and negatives.
  • Being honest about what AI can and can't prove: GPS can be spoofed and images can be edited.

Accomplishments that we're proud of

  • A working full-stack system, from work registration to a final verdict.
  • A multi-signal verification pipeline that sends suspicious or conflicting cases to a human instead of auto-approving them.
  • A clear, auditable result for every work.

What we learned

Evidence is stronger when several independent signals agree. We also learned to design AI as an assistant to human inspectors, and how to coordinate a multi-language project as a team.

What's next for Proof of Work

  • Stronger image-tampering detection
  • Citizen feedback weighted into the final score
  • A public map of verified works
  • A mobile app
  • Integration with government project systems

Built With

  • artificial-intelligence
  • fast-api
  • gps-verification
  • image-analysis
  • python
  • react-js
  • spring-boot
Share this project:

Updates

Submission history