Groundwave · Founder-built product, not client work
One home for amateur-radio clubs and operators.
Groundwave combines FCC-derived records, station tools, and the day-to-day work of running a radio club. I founded it, built it, and continue to run it through Whisker Tech.
Why I built it
Radio clubs rely on volunteers, and those volunteers change over time. Member lists, dues, event records, documents, and account passwords often end up spread across spreadsheets, inboxes, and personal accounts. A new officer may have to reconstruct how the club was being run.
I built Groundwave to keep that work in a shared club account. It covers members, dues, net logs, events, documents, elections, and officer access. The public side includes callsign search, club and repeater directories, and free station tools for individual operators.
- My role
- Product, UX, engineering, and operations
- Public data
- 800,000+ FCC ULS-derived operator records
- Users
- Individual operators and club volunteers
- Model
- Free operator tools and paid club plans
How I narrowed the product
Groundwave began as a broad community idea. I narrowed it to jobs radio operators and club officers already had: finding nearby clubs, looking up callsigns, recording station information, collecting dues, and handing records to the next group of volunteers.
Callsign search, directories, and station tools are free. Clubs pay for the private administrative workspace, where permissions and continuity matter. That split lets someone use the public data without joining a club or buying a subscription.
Tools for individual operators
I added these tools for station tasks that would otherwise live in separate utilities or personal notes. They share the same Groundwave account.
On the Air
Operators can share their current band, mode, frequency, grid square, and notes in a real-time activity feed. Sessions expire automatically, reusable presets reduce repeated entry, and following another operator can produce an in-app notification when that person goes live.
RF Exposure Calculator
The calculator models an amateur station using band, mode, power, antennas, feedline loss, and operating duty cycle. It evaluates controlled and uncontrolled exposure limits, calculates the distance corresponding to each limit, supports multiple antennas, and lets operators save or export the evaluation.
Noise Floor Tracker
Operators can record S-meter readings across amateur bands using saved equipment profiles, then compare trends over time. Multi-band charts, timeline annotations, location tags, batch entry, and CSV export help turn individual measurements into a useful station history.
Propagation Journal
The journal pairs an operator’s observations with NOAA solar indices captured when each entry is made. Bands, modes, conditions, regions heard, contacts, signal reports, and antenna profiles provide context for understanding how propagation and station performance change over time.
Public data people can use

Groundwave turns nationwide license records and club information into direct callsign lookup and location-aware directories. Operators can find organizations and activity near them instead of working through raw public files.
To make those directories useful, Groundwave updates changing records, indexes locations for nearby searches, and connects FCC identities with club-managed profiles.
Keeping FCC records current
Groundwave reads FCC ULS bulk files and applies incremental updates. It can also rebuild all 800,000-plus operator records while the application stays available.
Imported FCC data is stored separately from Groundwave accounts and from records created by users and clubs. I can replace the imported dataset without deleting profiles, memberships, dues history, or documents.
Shared club operations

Membership affects dues, access, club messages, and elections. Nets and events create records that the next group of volunteers will need. Keeping these features together means officers do not have to move club history through personal files and credentials.
I operate what I built
I am responsible for the product choices, interface, code, data, deployment, support, and maintenance. A failed import makes search results stale. A permission bug can expose club records. A confusing screen becomes a support request. Running the product keeps those consequences close.
