HacX Logo

HacX 2025

Frontend Developer

This project aimed to revolutionize Singapore's NPPs by adding agentic AI features and designing a voice-first UI.

README.md

πŸš” HacX β€” Team Galileo

HACX 2025 Hackathon Project | Reimagining Singapore's Neighbourhood Police Posts

GitHub Next.js TypeScript Python Azure


🎯 Problem

Singapore Police Force NPPs/NPCs handle many transactions that don't require direct officer involvement β€” yet the current self-help infrastructure is rigid, frustrating, and inaccessible:

  • 9.8% of elderly citizens (65+) own 0 digital devices, yet they make up 20.7% of the population
  • Existing self-help kiosks require users to manually fill forms in English, using complex police terminology
  • The learning curve is very steep
  • The current Found Property Drop Box has no monitoring capability, and fragile items are at risk of being broken
  • Although an "Officer Clif" chatbot already exists, it is limited and not voice-driven

πŸ’‘ Our Solution

Reimagine NPPs/NPCs as friendly, intelligent, autonomous hubs.

We built a Voice-First, AI-powered self-help kiosk system that transforms how citizens interact with the police post β€” no typing, no jargon, no barriers.

Our system is:

  • ❌ NOT dictation
  • ❌ NOT text-to-speech
  • βœ… A human voice agent that is intelligent and adapts to the situation

✨ Key Features

πŸŽ™οΈ Voice-First Incident Reporting Interface

Citizens can walk up and talk to the kiosk in natural language. The AI voice assistant β€” Officer Clif β€” guides them through the reporting process conversationally, in their own language.

  • Powered by Azure AI VoiceLive (real-time WebSocket API) and GPT-4o Realtime Preview
  • Dynamically fills in the report form as the user speaks
  • Confirms each field back to the user before committing
  • Supports multiple languages (responds in the user's spoken language)
  • Professional, calm, and empathetic persona designed specifically for policing contexts

πŸ“¦ Smart Found Property Drop Box

A redesigned drop box that allows citizens to return lost items they have found.

  • Modular design for needs-based construction with less complexity
  • Hardware interface allows officers to monitor the contents of the box remotely
  • Communicates with backend via serial (Arduino) + Flask API
  • Reduces the need for fragile items to be handled unsafely

πŸ–₯️ Self-Help Kiosk β€” Incident Reporting

A clean, accessible web interface for the Woodleigh Neighbourhood Police Post.

  • Multi-section guided forms with smart validation
  • Voice assistant embedded directly into the reporting flow
  • Handles both traffic incidents and general police reports

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Next.js 15 Frontend          β”‚
β”‚  (React 19, TypeScript, Tailwind CSS)β”‚
β”‚                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Report Form   β”‚  β”‚ Voice Agent β”‚ β”‚
β”‚  β”‚  (multi-step)  β”‚  β”‚ (Officer    β”‚ β”‚
β”‚  β”‚                β”‚  β”‚  Clif)      β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚ WebSocket (Azure VoiceLive)
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   Azure AI Services β”‚
                    β”‚  GPT-4o Realtime    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Flask Python Backend         β”‚
β”‚  (Flask, Flask-CORS, PyAudio)        β”‚
β”‚                                      β”‚
β”‚  - Serial interface to Arduino       β”‚
β”‚  - Drop Box LED / sensor control     β”‚
β”‚  - Azure Identity integration        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚ Serial (USB)
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  Arduino / IoT  β”‚
           β”‚  Hardware Layer β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

LayerTechnology
FrontendNext.js 15, React 19, TypeScript, Tailwind CSS v4
Voice AIAzure AI VoiceLive, GPT-4o Realtime Preview
BackendPython 3.13, Flask, Flask-CORS
HardwareArduino (Serial over USB via @serialport)
CloudAzure AI Services, Azure Identity
UI ComponentsRadix UI, Lucide React

πŸš€ Getting Started

Loading README…

🌟 The Bigger Vision

The Future of Policing: Intelligent Agentic Models that can have conversations with users.

This project is a step toward making every Neighbourhood Police Post an accessible, intelligent, and autonomous hub β€” reducing officer workload on routine transactions while dramatically improving the citizen experience, especially for elderly and non-English-speaking residents.


Built at HacX 2025 by Team Galileo πŸš€

Repository Specs

Stars
0
Forks
0
Watchers
0
Issues
0
License
None

Languages

TypeScript
91%
CSS
5%
JavaScript
2.6%
Python
1.4%