Why an uploaded photo cannot be trusted by default
A file your user uploads has no anchor. Its date and GPS live in editable metadata that free tools rewrite in seconds, and that most apps strip on upload anyway. The pixels themselves can be generated or retouched, so a convincing defect, document or scene can be produced that never existed. Nothing in the file ties it to a real moment.
That means your reviewers are deciding on trust, not evidence, and it does not scale. Worse, once staff suspect AI, a genuine photo gets waved away as a possible fake, so honest users are penalised for a problem created by fraud. The file format was never designed to defend itself.
What you can do with a file after the fact
Two checks help as a first screen. An AI media detector scans the file and returns a probability that it was generated or edited: useful to triage incoming claims, but a probability is not proof, and it can be wrong in either direction. Reading provenance (Content Credentials, the C2PA standard) helps when a manifest is present, but it depends on the capturing device or software supporting it, and the manifest is easily stripped on upload.
Treat both as filters, not verdicts. They raise or lower suspicion and route the hard cases to a human, but neither can turn an arbitrary file someone sent you into something an independent party would accept. For anything that matters, you need evidence created at capture, not inferred afterward.
The stronger model: capture proof at the moment
Instead of accepting a file and trying to vouch for it, change the question: have the user capture the photo live, so it is sealed as it is taken. Danaya binds a SHA-256 fingerprint of the image to a server timestamp and the GPS position at the instant of capture. The timestamp comes from the server, not the device, so it cannot be back-dated, and capture is live only, so an imported or AI-generated file cannot earn a valid seal.
You can add this with no code by sending a capture link, the user opens it in the browser, captures with no account, and the sealed result lands in your dashboard, or integrate it directly through the API. Anyone can then confirm a result from a public verification link. Honest scope: this works where you control the capture step, it is not a retrofit that makes an arbitrary third-party file trustworthy, and the GPS position is declarative, taken from the capturing device.