Inspiration

Contractors submit thousands of gas-meter corrosion inspections every week, each with a form and photos. A form can look complete even when the visit didn't happen, or when its photo came from a different meter. QA supervisors can only check a handful, and sending a crew back out (a "truck roll") is expensive. There are no confirmed fraud labels in the data, so we asked a practical question instead: which 20 inspections should a supervisor check this week, why, and what's the cheapest way to settle each one?

What it does

ProofTrail checks every inspection against three independent witnesses:

  • A. Location: was the worker's survey point near the meter?
  • B. Photo: was the attached photo taken at this visit, or is it a copy from somewhere else?
  • C. Company records: does the typed reading and radio module (ERT) match the meter that's actually there?

It only escalates when independent sources agree, and every case shows:

  • What supports the visit, not just what raises doubt
  • What could innocently explain it: meter banks, GPS error, map errors, recent meter exchanges
  • A problem type routed to the cheapest correct action:
    • worker was there but the photo is wrong → ask the contractor for the original (an email, not a truck roll)
    • map is wrong → map correction
    • nothing supports the visit → desk check
  • A resolution test: the one check that would clear or escalate the case
  • Directional flagging: when a photo was reused, it flags the copy, not the honest original

Supervisors work through a ranked review queue, record decisions with notes, and export handoffs for contractors and the GIS team.

Results (one-week anonymized sample, Mar 2–8, 2026)

  • 39,631 inspections and 111,911 photo records processed
  • 45 High-priority cases, about one week's review budget
  • 156 inspections where 2+ independent sources contradict the form and nothing supports the visit
  • 72 of 72 reused cross-site photo files came from the phone gallery, so requiring in-app capture would close that gap
  • Blinded review: reviewers judged 15 of 20 ProofTrail cases worth follow-up vs. 7 of 20 from a simple duplicate-photo check. (A pilot: 40 shuffled inspections, two team reviewers, source hidden.)
  • A full week processes in ~22 seconds on a laptop, at $0, with no AI model.

How we built it

  • Data pipeline: Python 3.12 and pandas join inspections to photo metadata, run 8 deterministic checks across the three witnesses, compute visit support, innocent explanations, priority bands, problem types and resolution tests, and export typed JSON.
  • Web app: React, TypeScript, Vite, Tailwind CSS and shadcn/ui, with an anonymized-grid map (SVG + d3-scale), a timeline, and decisions stored locally.
  • Verification: a script independently re-derives every number we quote from the raw CSVs, plus a pytest suite (pipeline, data contract, evaluation) and frontend tests.

Challenges we ran into

  • No ground truth. Without fraud labels we couldn't honestly report "accuracy", so we measured review yield with a blinded comparison instead.
  • Single signals are noisy. GPS drifts, maps go stale, readings get mistyped. Our first rules flagged 607 High cases; requiring independent witnesses to agree brought it to 45.
  • Telling honest reuse from copying. One photo on five inspections looked suspicious until we saw the five meters sat within 1.4 m of each other, a meter bank. So we built rule-outs that let ProofTrail clear its own flags.
  • Messy time data: minute-rounded inspection times, phone clocks, and a mysterious file-name timestamp offset we chose not to use in any rule.

Accomplishments we're proud of

  • A tool that argues against its own flags and shows evidence on both sides
  • Every number on screen traces back to a source field
  • Routing that saves expensive field visits for the cases that actually need them

What we learned

  • In compliance work, being explainable and honest matters more than a clever score.
  • The most useful output isn't "suspicious", it's "here's the one check that settles it".
  • Measure what you can defend. Review yield beats an invented accuracy number.

What's next

  • A pilot alongside CenterPoint's current QA process, measuring follow-up rate, truck rolls replaced and review time
  • A nightly batch on live data, with a running photo-fingerprint index to catch reuse across weeks
  • Reviewer decisions become the labels the data is missing today, enabling a per-rule scorecard and, eventually, a learned ranking

Responsible data use

Built on anonymized challenge data that stays local and is never committed. Locations are a shifted grid in meters, not real coordinates. ProofTrail flags records, not people, never labels anything fraud, and a human decides every case. It's a hackathon prototype, not affiliated with CenterPoint Energy.

Built With

Share this project:

Updates

Submission history