Inspiration

QR codes are used everywhere, from restaurant menus and posters to payment displays and product packaging. However, malicious QR codes can redirect unsuspecting users to phishing websites and fraudulent destinations. We wanted to explore how computer vision and AI-agent orchestration could make QR-code fraud investigation more systematic, explainable, and evidence-driven.

What it does

QRensic is an AI-powered visual-forensics prototype designed to investigate suspicious QR-code evidence. It combines image analysis, structured evidence rules, and agent orchestration to organize forensic checks and support investigation decisions.

Key capabilities include:

  • Processing QR-code image evidence through a vision engine.
  • Applying structured evidence rules to investigation findings.
  • Coordinating forensic actions through an agent orchestrator.
  • Supporting controlled tool execution and human-review escalation.
  • Running a local mock-model workflow without requiring live cloud access.

How we built it

QRensic is built primarily in Python using a modular architecture that separates vision processing, evidence evaluation, and agent orchestration.

The vision engine processes image evidence, while the evidence rules evaluate findings. The agent orchestrator coordinates investigation actions and handles their results.

We also implemented an Amazon Bedrock Runtime Converse API adapter with native tool use. It supports structured tool requests, multi-turn tool-result handoff, argument validation, bounded execution, and error handling. A command-line smoke-test utility helps diagnose AWS credentials and model-access issues.

The project includes an offline mock-model mode and automated tests. The Bedrock adapter has been tested with mocked interactions, but live AWS execution has not yet been verified.

Technology: Python, OpenCV-based vision processing, Amazon Bedrock Runtime SDK (boto3), and automated unit testing.

Challenges we ran into

A major challenge was separating AI reasoning from the execution of forensic actions. We addressed this with a structured tool-use cycle that validates arguments, executes controlled actions, returns results, and limits repeated model interactions.

Another challenge was handling unavailable cloud credentials safely. Instead of pretending that a live investigation succeeded, the system reports the problem and supports human-review escalation.

Testing cloud interactions without depending on live AWS access was also important. Mocked tests let us validate expected behavior while keeping local development reproducible.

Accomplishments that we're proud of

  • Built a modular visual-forensics and agent-orchestration prototype.
  • Implemented an Amazon Bedrock Converse API adapter with native tool-use support.
  • Added validation and safeguards around forensic action execution.
  • Created a diagnostic smoke-test script for AWS connectivity and model-access issues.
  • Achieved 47 passing automated tests across the existing test suite and new mocked Bedrock adapter tests.
  • Published the source code and committed the Bedrock integration to GitHub.

What we learned

We learned that reliable AI-assisted forensics requires more than sending an image to a model. Vision processing, evidence rules, action execution, and decision-making need clear boundaries.

We also learned to treat uncertainty, cloud permissions, and failed requests as explicit engineering concerns. Testing these behaviors with mocks helps validate the integration before attempting live cloud execution.

What's next for QRensic

Our next steps are to verify the Bedrock adapter against a real AWS account, validate the complete investigation flow on representative QR-code examples, improve evidence presentation, and evaluate the system against additional fraud scenarios.

QRensic is currently a local prototype with a Bedrock integration implemented in code; live AWS execution and deployment remain future validation steps.

Source code: https://github.com/AashneeSethi/QRensic

Built With

Share this project:

Updates

Submission history