-
-
Completed report showing the app-derived result, uncertainty, local provenance, and next steps. Offline Test Mode.
-
Exact send plan: privacy copy and optional close-up are approved while original-file data stays protected
-
Optional B2 close-up generated locally from the privacy copy. Selecting an area does not mean it was altered.
-
Local Content Credentials check: signature validated, but signer trust could not be established offline.
-
Privacy copy prepared locally with metadata removed before the user approves any analysis.
-
Mobile report showing the same privacy controls, provenance, uncertainty, and verification guidance.
LookAgain Media Check
Inspiration
I have worked in cybersecurity for many years, and I have wanted to build something that helps ordinary people deal with online deception.
It is becoming harder and harder to tell which images are real, edited, generated, or simply missing important context. At the same time, a tool that confidently labels an image “real” or “fake” can create a new kind of danger when it is wrong.
That is why I built LookAgain Media Check. Its job is not to act like a truth machine. Its job is to slow the moment down, inspect the available evidence, explain what deserves a closer look, and help the user decide what to verify next.
LookAgain for Chrome existed before Build Week as a separate browser-safety project. Media Check is the new, isolated Build Week application that expands that mission into suspicious-image review without changing the released extension.
What it does
LookAgain Media Check lets a user select a JPEG, PNG, or static WebP image and review it through a deliberate, privacy-first workflow.
Before anything can be sent, the browser can locally:
- inspect bounded original-file signals;
- identify metadata categories and file-format mismatches;
- check Content Credentials offline;
- create a metadata-stripped privacy copy;
- show the exact prepared pixels, size, dimensions, format, and SHA-256;
- automatically scan the privacy-copy pixels for repeated or copied regions; and
- display source and comparison boxes with paired crop previews when a candidate is found.
The automatic duplicate-region review does not require the user to manually point at a suspicious area first. It runs in the browser, makes no provider request, and produces a bounded comparison signal rather than proof of manipulation.
The interface then shows a clear sent/not-sent manifest. Original image bytes, original metadata, local paths, GPS information, Content Credentials results, detector results, and detector coordinates remain local.
Confirmation still sends nothing. Analysis begins only after the user separately selects Analyze confirmed copy.
When the optional GPT-5.6 path is used, only the confirmed privacy copy and any explicitly approved optional context are eligible to be sent. GPT-5.6 examines visible-pixel details such as edges, lighting, shadows, texture consistency, possible compositing clues, and plausible non-deceptive alternatives.
The local detector and GPT-5.6 remain separate evidence sources. GPT-5.6 never receives the detector coordinates and cannot directly author or override the trusted headline.
Trusted application code validates the response and derives one of three cautious summaries:
- No notable manipulation indicators
- Weak manipulation indicators
- Moderate manipulation indicators
Strong is structurally impossible. These summaries are not probabilities, authentication verdicts, or proof that an image is real, fake, generated, or manipulated.
How I built it
I built Media Check as an isolated application under build-week/lookagain-media-check/ on a dedicated contest branch so the released LookAgain extension and existing backend would remain unchanged.
The project combines:
- browser-local image preparation and hashing;
- bounded original-file inspection;
- offline Content Credentials validation;
- a deterministic browser-local duplicate-region detector;
- a loopback-only local analysis server;
- the OpenAI Responses API with GPT-5.6;
- strict JSON-schema and semantic validation;
- deterministic trusted-code evidence summaries;
- explicit consent and sent/not-sent controls;
- accessible, responsive report presentation; and
- unit, security, browser, formatting, syntax, secret-scan, and deterministic-build checks.
The automatic detector is real browser-local computer-vision work rather than prompt-only behavior. It uses prepared privacy-copy pixels to find geometrically consistent repeated regions, then applies conservative validation and repetition suppression before showing a candidate.
For judging, the project includes a provider-free Test Mode and a committed recorded controlled GPT-5.6 example. Judges can inspect the real workflow, the automatic local detector, the consent boundary, and the validated report without needing an API key or making a paid provider request.
How I used Codex
Codex accelerated the multi-file implementation, contracts, validators, browser-local detector work, test creation, debugging, security review, accessibility corrections, deterministic-build work, documentation, and clean-checkout validation.
I retained and approved the product and safety decisions, including:
- the privacy boundary;
- confirm-before-send behavior;
- what may and may not leave the device;
- the separation between local evidence and GPT evidence;
- application ownership of the headline;
- the prohibition on Strong, probability, and forensic-authentication claims;
- authorization and no-retry limits for provider requests;
- evaluation-fixture ownership and methodology; and
- every commit and release checkpoint.
The final frozen candidate passed 152 unit tests, 50 security tests, 32 browser tests, root regression checks, secret scanning, syntax checks, formatting checks, and deterministic browser-build verification.
Challenges
The hardest challenge was balancing usefulness with honesty.
A user wants a clear answer, but a single image rarely contains enough evidence for certainty. I did not want the model to sound more confident than the evidence justified, so the model output is treated as constrained evidence rather than the final verdict.
Another major challenge was privacy. It would have been much easier to upload the original image immediately, but that would conflict with the reason I wanted to build the tool. The application instead prepares a reviewable privacy copy, shows exactly what may be sent, and requires two separate deliberate actions before analysis.
The automatic local detector was also challenging. Repeated textures and ordinary patterns can create false matches, so the detector needed conservative thresholds, semantic validation, repetition suppression, fail-open timeout behavior, and clear language that a candidate is only an area worth comparing.
Finally, I wanted the product to feel like a coherent consumer tool rather than a technical demo. That required repeated interface changes so privacy, consent, evidence sources, uncertainty, and next steps remained understandable.
Accomplishments I am proud of
I am most proud that the final project does meaningful work even when GPT is unavailable.
The browser-local detector can automatically identify two areas worth comparing without the user selecting a suspicious region and without making a network request.
I am also proud that the system does not allow GPT-5.6 to dictate the trusted headline. The application validates the response, keeps evidence sources separate, and refuses to claim more than the evidence supports.
The project includes a complete provider-free judge path, a transparent recorded controlled example, strict privacy boundaries, deterministic builds, and extensive automated tests. It is a working product experience, not just a model wrapper or a mockup.
What I learned
The biggest lesson was that helping people fight deception does not require pretending to know the absolute truth.
A useful tool can instead make careful looking easier: preserve privacy, show specific evidence, explain uncertainty, and guide the user toward verification.
I also learned that Codex is most effective when it is paired with clear human-owned decisions, narrow checkpoints, repeated review, and strong stop conditions. Codex helped me move much faster, but the product became better because I kept reviewing, questioning, and refining what it built.
What comes next
This project will continue after Build Week.
The next steps include:
- a larger labeled evaluation set;
- published false-positive and false-negative measurements;
- additional explainable browser-local checks;
- improved source and reverse-search guidance;
- privacy-preserving video keyframe review;
- audio and temporal-consistency analysis;
- deeper integration with the LookAgain browser workflow; and
- GPT-5.6 remaining an optional cloud second opinion rather than the sole source of evidence.
The long-term goal is to help people pause, inspect, and verify suspicious content without pretending uncertainty is proof.
Before you trust it, LookAgain.
Built With
- ajv
- c2pa
- codex
- css
- html
- javascript
- jsfeat
- node.js
- openai-gpt-5.6
- playwright
Log in or sign up for Devpost to join the conversation.