See the Full Picture — Forensic 3D scene reconstruction from partial video evidence.
Built at HoyaHacks 2026.
Crime scene footage is often incomplete. A body cam captures only what the officer sees. Surveillance video shows one angle. Investigators are left piecing together fragments, unable to explore the full environment where critical events occurred.
SplatWitness transforms partial video footage into complete, explorable 3D environments using Gaussian Splatting technology. Detectives and forensic analysts can now:
- Explore every angle of a crime scene from a single video clip
- Detect tampering through temporal anomaly analysis
- Verify evidence integrity with cryptographic chain of custody
- Review AI-assisted insights highlighting suspicious patterns
Upload body cam, surveillance, or any video footage. Our neural reconstruction pipeline builds an interactive 3D model of the entire environment — even areas not directly visible in the original video.
Advanced temporal analysis identifies cuts, reorders, and edits in video evidence. Visual timeline shows anomaly spikes with confidence scores.
Every piece of evidence is hashed (SHA-256) and tracked. Metadata including upload time, file size, and integrity status are preserved for court admissibility.
Gemini-powered narrative generation provides investigative insights, highlighting visual evidence and generating hypotheses about detected anomalies.
Scrub through footage with synchronized video playback and 3D viewer. Jump directly to detected anomalies with one click.
| Layer | Technology |
|---|---|
| Frontend | React 19, Tailwind CSS, Framer Motion |
| 3D Rendering | Luma AI (Gaussian Splatting) |
| Charts | Recharts |
| Icons | Lucide React |
| AI Analysis | Google Gemini |
| Backend | Python (FastAPI) |
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/your-username/hoya-hacks.git
cd hoya-hacks
# Install dependencies
npm install
# Start development server
npm startOpen http://localhost:3000 to view the app.
cd backend
pip install -r requirements.txt
python main.py- Upload — Drop any video file (body cam, surveillance, phone footage)
- Wait — Watch as the system reconstructs the 3D environment
- Explore — Navigate the interactive 3D scene from any angle
- Analyze — Review timeline for tampering, check AI insights
- Export — Document findings with chain of custody intact
The app runs in demo mode by default, using pre-computed 3D models and mock forensic data. This allows full exploration of features without backend processing.
├── src/
│ ├── components/
│ │ ├── UploadLanding.jsx # Landing page with upload
│ │ ├── GeneratingView.jsx # Processing animation
│ │ ├── ResultView.jsx # Main forensic dashboard
│ │ ├── SplatViewer.jsx # 3D Gaussian splat viewer
│ │ ├── TimelineChart.js # Anomaly timeline
│ │ ├── GeminiFeed.js # AI analysis feed
│ │ └── ArtifactDrawer.js # Evidence artifacts
│ ├── context/
│ │ └── TimeSyncContext.js # Video/timeline synchronization
│ ├── mock/
│ │ └── api_contract.json # Demo data
│ └── App.js # Main app router
├── backend/
│ └── main.py # FastAPI server
└── public/
| Upload | Processing | Analysis |
|---|---|---|
| Clean upload interface | Animated reconstruction progress | Full forensic dashboard |
Built with caffeine and determination at Georgetown University.
MIT
- Luma AI for Gaussian Splatting technology
- Google Gemini for AI analysis
- HoyaHacks organizers and mentors