Submission to the Gemini 3 Paris Hackathon organized by Cerebral Valley on 14.03.2026 which was awarded 2nd place.
Problem? Still in 2026 forensic sketching is used to identify criminals. This process is slow and costly. Humans experts struggle to effectively combine all possible supporting evidence and statements of multiple witnesses.
Solution? ShareLock helps combine witness information through interactions with users, collecting both descriptions and reported evidence. It uses Gemini's multimodal reasoning capabilities to synthetize possible candidate faces with Imagen. The witnesses can refine those using selection mechanism and confidence on different features.
Demonstration Check out our video demonstration to see our assistant in action!
Create a local environment file:
cp .env.example .envThen set your Gemini API key in .env:
VITE_GEMINI_API_KEY=your_gemini_api_key_hereNotes:
- Vite only exposes variables prefixed with
VITE_to frontend code. - The app can also store/update the key in browser
localStorage(gemini_api_key).
npm install
npm run devOpen the local URL shown in terminal (typically http://localhost:5173).
- Choose a witness (A/B/...) in the header.
- Interview: collect witness description and structured traits.
- Refinement: generate and iterate candidate suspect images.
- Repeat for other witnesses.
- Consensus: combine witness outcomes into a final result.
npm run dev— start development servernpm run build— create production buildnpm run preview— preview production build locallynpm run lint— run ESLint
