CitizenCitizen

Head of Internal Tools

Designed, developed, and product managed a suite of custom internal tools for Citizen's 24/7 realtime crime reporting app.

How I Improved Reliability, Speed, and Efficiency for a 24/7 Real-Time Crime Reporting Operation

The Challenge: Prototypes That Couldn’t Scale

When I joined Citizen, the internal tools powering their real-time crime reporting system were barely holding together. These tools—designed to process live police radio feeds, incident reports, and user-generated video—were the backbone of the public-facing Citizen app, which had millions of active users. But internally, the team was struggling daily with tools that were never built for long-term, high-volume use.

Here’s what I walked into:

  • Frequent crashes and memory overload, making real-time input nearly impossible.
  • Bloated, unmaintainable code that made adding new features nearly unfeasible.
  • A UI/UX bottleneck—the tools slowed the team down instead of helping them work efficiently.
  • No visibility into efficiency metrics—there was no data to measure or improve core workflows.

The stakes were high: if these tools weren’t fixed, Citizen’s ability to deliver real-time emergency alerts to users would collapse.

I took charge as product manager, designer, and sole developer of a complete rebuild—transforming all three internal tools into fast, reliable, and scalable applications that dramatically improved speed, efficiency, and team morale.


The Solution: A Full Rebuild for Performance, Reliability & Usability

I built three critical internal tools—Audio Parsing, Incident Reporting, and Video Monitoring—all from the ground up, incorporating feedback from the team using them daily.

1. Audio Parsing: Faster Processing for Real-Time Radio Feeds

🚔 Before: A slow, unreliable system for processing live police radio feeds. Clips would pile up in an unorganized queue, causing overlapping reports and delays. The interface was mouse-based and inefficient, forcing workers to manually hunt for relevant clips.
After: A keyboard-driven, speed-optimized tool that let team members scan, sort, and listen to police radio at up to 3x speed while instantly slowing down for difficult-to-hear clips. It auto-sorted clips by location, ensuring workers focused only on their assigned shifts.

2. Incident Reporting: A Smarter, More Visual Way to Log Emergencies

🚨 Before: A simple CRUD app with a bloated UI that frequently crashed due to memory leaks. Inputting details was slow, and team members had no visibility into surrounding incidents while working.
After: I completely redesigned the reporting tool with a floating, movable sidebar UI overlaying a live map—giving workers real-time visibility into nearby incidents.

  • Added a dynamic notification radius control, letting workers fine-tune alert reach in seconds.
  • Improved real-time syncing with the public-facing app for instant updates.

3. Video Monitoring: More Control & Smarter Moderation

📹 Before: A bloated, crash-prone video processing tool that couldn’t handle live feeds effectively. No easy way for moderators to pause, approve, or reject live video uploads.
After: A performance-first rebuild with built-in buffers for manual video approval, giving the moderation team more control.

  • Connected video directly to incident data so moderators could make faster, more informed decisions about approving or rejecting live feeds.

Measuring Impact: A 60% Improvement in "Time to Incident"

Beyond fixing the crashes and usability issues, I wanted a way to quantify how much better the new tools were. I introduced a key efficiency metric: Time to Incident (TTI)—tracking how long it took to process an emergency from radio clip → team input → alert sent to Citizen users.

🔍 How we measured it:

  1. Retrospectively analyzed logs from the old tools.
  2. Introduced analytics tracking for each step of the workflow in the new tools.
  3. Monitored improvements as the team adjusted to the new system.

🚀 Results: Time to Incident dropped by 60%, meaning Citizen users got real-time crime alerts significantly faster—and with more accurate, more complete information.


Eliminating Crashes & Scaling for the Future

The original internal tools were built as quick prototypes—they relied on an outdated Create React App structure with a massive shared Redux memory store across all three tools.

🔧 Key technical improvements I made:

  • Rebuilt the entire system in Next.js for better performance and scalability.
  • Moved to Vercel for streamlined hosting and deployment.
  • Introduced caching & memory optimizations, eliminating browser memory bloat over long shifts.
  • Replaced inefficient state management with SWR + a real-time database, allowing faster, more reliable updates.

💡 The result? No more server crashes, no more memory overloads, and a system that scaled seamlessly to handle Citizen’s growing real-time demands.


More Than Just Software: A Team That Finally Felt Heard

One of the biggest successes wasn’t just better performance—it was the culture shift in how the internal team worked.

👥 Before: The team felt overlooked and unheard, stuck with tools that made their difficult jobs harder.
💬 After: I worked directly with them, designing every feature based on their needs. Their feedback shaped the tools in real-time—leading to faster workflows and higher morale.

Their response? They raved about the improvements—not just because the tools were better, but because they finally felt seen and valued.


Key Takeaways

From unreliable to rock-solid: Rebuilt three mission-critical internal tools, eliminating crashes and bottlenecks.
From slow to real-time: Reduced Time to Incident by 60%, getting alerts to millions of users faster.
From frustrating to intuitive: Redesigned UI/UX for faster, keyboard-driven workflows tailored to the team’s needs.
From rigid to scalable: Moved from outdated architecture to modern, optimized infrastructure that could grow with Citizen.
From overlooked to empowered: Built a culture of collaboration and feedback, improving both tools and team morale.


Want to work together?

If you’re looking for a thoughtful, high-impact approach to building scalable, user-focused internal tools, let’s talk. 🚀

TerminalESC
Welcome to my portfolio — you can navigate around using either your browser or the terminal. Type `help` to get started.
user@micah.sh ~/projects/citizen $