Filtering stale postings out of my teaching-job search app

My wife used Nimble to search for teaching jobs in Tennessee and Kentucky, and at some point that site stopped covering Tennessee. So I built my own version. I used Codex to…

By Jed May ·

My wife used Nimble to search for teaching jobs in Tennessee and Kentucky, and at some point that site stopped covering Tennessee. So I built my own version. I used Codex to scaffold the app, and it came together fast, running on my home server, with some UI tweaks and general fit-and-finish work after that. The first results included old postings that still looked like new openings, though, and I couldn't leave it that way. A search tool like this isn't useful if it gives someone false hope.

The initial version collected teaching jobs and let me narrow them by state, grade, and other matching criteria. It started with Tennessee sources, and I later added Kentucky. Per the handoff report, it runs as a private, sign-in-gated app with a local database, and optional alerts were part of that reported implementation too.

The bigger work was deciding which results deserved to show up at all. A posting could still be live even after its start date had passed or its school year was no longer current. I changed the filtering to exclude known start dates more than a month old, and postings for school years before 2026–2027. There's a chance a legitimate posting could get caught by one of those cutoffs, but it seemed unlikely.

Unknown dates needed different handling. Dropping every undated posting could hide a real opening, but showing it like a fresh, dated result would overstate what I actually knew. So I kept those visible with a warning instead, and I show the date itself so I can see why a posting passed the filter rather than trusting a vague "new" label.

I also found a basic keyword problem: a short subject term like the synthetic example "art" could match unrelated words that just happened to contain the same letters, making the search look broader than it really was. I tightened the matching so a subject keyword has to be a meaningful term, not just a substring.

The development handoff reports 94 passing tests, but I haven't rerun those myself while writing this. The current reported state is a private, multi-state search app with more honest date handling and stricter matching. Its remaining weakness is the source data itself — when a posting has no reliable date, the app can flag that uncertainty, but it can't manufacture certainty the district never published one.

I've used it several times over the past couple of days without running into problems, and my wife started using it today too.

An unhandled error has occurred. Reload 🗙