Engineering Blog

Foxhunt Platform Development Log

19 entries documenting the build from concept to field-validated RF geolocation — terrain modeling, signal processing, Bayesian estimation, and real-world testing.

Building the RID Algorithmic Moat: From Radio IDs to Agency Classification
A harvester-analyzer pipeline extracts radio unit ID patterns from live P25 control channel traffic, building a data asset that maps RID prefixes to law enforcement agencies.
From Pin Drops to Road Stripes: Rebuilding the Map Visualization
The map visualization was completely overhauled — discrete pin-drop markers replaced by colored polyline stripes painted along road segments near each detection.
The Diversity Gate Breakthrough: Finding the Engine-Rebuild Bug
The most consequential bug fix in the project’s history: every GPS location update was destroying the engine’s observation windows, making geolocation permanently impossible.
The Live Web Dashboard: Real-Time RF Monitoring in the Browser
A full live dashboard replaced the static mockup — Leaflet dark tiles, auto-reconnecting WebSocket, real-time alert table, and PIN_DROP markers with auto-expiry.
The Cavity Filter Arrives: RF Chain Calibration Against a Known Tower
A Celwave CF800-6P cavity bandpass filter joined the RF chain, and a calibration drive against the Brunswick P25 tower site validated the end-to-end signal pipeline.
RF Hardware Deep Dive: Understanding the Uplink Detection Envelope
Today's work involved a detailed RF hardware analysis to understand the detection range limits of the current scanner setup and diagnose an intermodulation interference problem.
Closing the Development Sprint
With the core geolocation engine stable and field-tested, I shifted focus to planning the final week before investor outreach. The remaining schedule covers final validation testing, demo video production, and investor outreach preparation...
Anonymous Transmissions and the RID Problem
Analysis of the field test data revealed that 99% of captured RF observations had a radio unit ID of zero — meaning the decoder couldn't extract the individual transmitter's identi...
The Big Field Test: Latency Bug and Parallel Processing
The longest field test to date produced the most data — and exposed the most serious performance bug I've encountered. The geolocation engine was emitting results for nearly five ...
Narrowband Filtering and the DC Spike Discovery
Today's work focused on signal processing refinements to improve the scanner's ability to distinguish real P25 transmissions from background noise. The core improvement is a narrow...
Android Auto Goes Live in the Jeep
The Android Auto integration moved from the desktop emulator to actual vehicle hardware today. The implementation displays color-coded detection pins on the head unit's map and pro...
Road Networks, Doppler Shifts, and Geolocation Accuracy Upgrades
Three significant accuracy improvements deployed today, each attacking a different source of geolocation error.
The Investor Demo Takes Shape
I stepped back from the code today to think strategically about what the platform needs to demonstrate, and to whom. The Foxhunt Platform is ultimately a consumer-facing situation...
Fixing the Pin Drop: Device Coordinates vs. Transmitter Coordinates
A subtle but critical bug surfaced during post-drive analysis. The map pins were appearing at the device's location — where I was when I received the signal — rather than at the...
Terrain Awareness and the First Accurate Pin Drop
Radio waves don't travel in straight lines over terrain. A transmitter on one side of a ridgeline is effectively invisible to a receiver on the other side, regardless of how close ...
First Field Test: Debugging the Signal Pipeline
I took the platform out for its first real-world field test — and immediately discovered why bench testing and field testing are different disciplines. The system connected, the s...
The Geolocation Engine Goes Live
A milestone day. I completed and deployed the central server component that ties the entire platform together — the real-time geolocation engine that processes RF observations fro...
Building a Nationwide P25 Database and Redesigning the App from Scratch
Two major workstreams today, both foundational. First, I began building out the platform's database of P25 trunked radio systems to achieve statewide coverage across Maryland. The...
Designing the Overwatch Scanner: From Consumer App to Enterprise Data Platform
Today I stepped back from code to think about hardware. The Foxhunt Platform currently demonstrates RF geolocation viability using off-the-shelf SDR dongles connected to a laptop ...
The Uplink Insight: Why We Listen to the Officer, Not the Tower
A foundational design decision crystallized today: the scanner should measure uplink frequencies, not downlink. This single choice defines the entire geolocation approach and what ...
First Light: Connecting the Scanner to the Phone
Today the Foxhunt Platform's three components talked to each other for the first time. The scanner running on a MacBook Air, the Android app on a Pixel phone, and the VPS backend &...