8 minrecruitmentmarket-mappingbusiness-development
Who to Call First, With Receipts: Building the Austin Defence Market Map
Opening a new recruitment market usually starts with a blank spreadsheet and far too many browser tabs. Over a weekend I built the alternative for a recruitment consultant opening the defence market in Austin from scratch: a living map of the area's small and mid-sized defence companies, ranked by how likely each one is to be hiring right now.
It's live and in use. Open it on Monday, see who to call first, and click through to the evidence behind every ranking.
The interesting part isn't the AI. It's how little of it there is.
TL;DR
- What: the Austin Defence Market Map, a ranked database of small-to-mid defence and defence-tech companies in the Austin metro.
- Who for: a recruitment consultant opening a new market from scratch.
- Data: public federal sources only. SAM.gov registrations, USAspending and war.gov contract awards, SBIR grants and public job boards.
- Ranking: a heat score built from recent contract wins, open roles, hard-to-fill cleared roles, SBIR Phase II awards and an Austin headquarters. Every point links to its source.
- AI: Claude Haiku tags job ads with a role family and clearance level. Nothing else. It never writes a number, and the product works without it.
- Trust: every fact carries a source link and a verified date. Low-confidence records go to a human, not the live list.
The problem: new market, blank spreadsheet
Starting a desk in a new market is mostly research nobody bills for. Who exists, who's growing, who just won money, who's struggling to hire cleared engineers. It takes weeks, and half of it is stale by the time the spreadsheet is finished.
Defence makes it harder and easier at the same time. Small and mid-sized defence firms rarely have big employer brands, so they're easy to miss. But they leave a paper trail: contract awards, innovation grants and federal registrations are all public. They're just scattered across government sites built for compliance officers, not recruiters.
I spent 15 years on the desk before I wrote code for a living. This is the tool I wanted every time I opened a new market. One page, ranked, with an answer to the question every business development call starts with: who should I ring first, and why?
What the Austin Defence Market Map is
The Austin Defence Market Map is a living, ranked database of small-to-mid-sized defence and defence-tech companies in the Austin metro. It pulls from public federal sources, scores each company by how likely it is to be hiring right now, and shows the evidence behind every ranking with a link to the source.
Five public sources feed it, each answering a different question:
| Source | What it tells a recruiter |
|---|---|
| SAM.gov | Who is registered to do federal work, and where they're based |
| USAspending | Who won which federal contracts, when, and for how much |
| war.gov contract announcements | The larger defence awards, as the department announces them |
| SBIR awards | Who just won innovation funding, including Phase II awards |
| Public job boards | Open roles, clearance requirements, and how long each role has been open |
No single source says "this company is hiring". Stacked together, they say it fairly loudly.
How it's built
The architecture is boring on purpose. A standalone ingestion pipeline does the messy work against government APIs and job boards. The app only ever reads from its own database.
| Layer | Choice | Why it matters |
|---|---|---|
| Framework | Next.js 16.4, React 19, App Router | Cache Components ("use cache", cacheLife, cacheTag): pages read from the database, cached and revalidated by tag |
| Database | Neon serverless Postgres, Prisma 7 with the pg driver adapter | prisma dev locally, so no Docker |
| Hosting and jobs | Vercel, with Vercel Cron for scheduled refreshes | Changing refresh frequency is a one-line edit |
| Auth | Better Auth magic links, email via Resend | Sign-in restricted to the client's email domain |
| Types and UI | TypeScript and Zod end to end, Tailwind v4 | Its own visual identity, full light and dark mode |
The rule that matters most: pages never call an external API. Only the pipeline does, in six stages:
- Collect. Pull from SAM.gov, USAspending, war.gov, SBIR and public applicant-tracking job boards.
- Match. Tie every record to one company: UEI first, then CAGE code, then name plus city. No confident match, no entry.
- Filter. Keep small-to-mid defence and defence-tech firms in the Austin metro.
- Classify. Tag job ads and contract descriptions with a role family and clearance level. Rules first, AI second.
- Verify. Refuse to publish any fact that can't be traced to a stored source record with a valid URL.
- Score. Calculate the heat score from verified facts only.
Anything that fails match, classify or verify doesn't disappear. It lands in a human review queue.
How the AI is used, and where it isn't
AI does exactly one job here: reading free text. Job ads and contract descriptions get tagged with a role family and a clearance level. That's it.
Three rules keep it on a short leash:
- Rules first. Deterministic regex and keyword rules run before any model does. "TS/SCI with poly" does not need a language model to understand it.
- AI second. Claude Haiku is only called when the rules aren't sure. Its output is structured and validated with Zod. If Claude isn't more confident than the rules, the rules win.
- Receipts or it didn't happen. Claude must quote the exact words it based each tag on. If that quote isn't a verbatim substring of the source, its confidence is set to zero and the rules take over.
Pull the API key out and the product still works. Tagging gets a bit blunter. The map, the scores and the evidence stay exactly the same.
Why so stingy? Because a recruiter calling a hiring manager with a made-up contract value is worse off than a recruiter with no data at all. In recruitment, credibility is the whole product.
(Footnote for the builders: the app itself was built by a small team of AI subagents working off a shared written contract. Same principle, different layer. That's a post of its own.)
Decisions that keep the data honest
Trust is the feature. A ranking nobody believes is just a list.
- Every fact has receipts. Each displayed fact carries a source link and the date it was last fetched and verified.
- AI never writes a number. Amounts, dates, IDs and addresses come from structured fields only. The verify stage refuses anything that can't be traced back to a stored source record.
- Unsure goes to a human. Anything below 0.7 confidence, and any record that can't be matched to a company, sits in a review queue instead of the live list.
- The score shows its working. The heat score only uses verified facts. Every reason links to its evidence, and the interface displays the stored reasons rather than recalculating them.
- Stale is labelled stale. Facts unverified for 45 days are flagged. Demo data is labelled as demo data. Every run logs what it dropped and why.
- No LinkedIn, no dodgy scraping. Nothing is scraped from sites whose terms forbid it. A person only appears when a public page names them.
What the consultant actually gets
- Who to call first, with receipts. A ranked heat score built from recent awards, open roles, ageing cleared roles, SBIR Phase II funding and an Austin headquarters. A cleared role that's been open for weeks is a hiring manager who'll probably take your call.
- A "What's new" view. Nobody has to re-read the whole map every week. What changed since last time is surfaced on its own.
- A pipeline that doesn't fall over. Daily cron jobs that are resumable, idempotent and time-bounded. If a government API has a bad day, the next run picks up where it left off.
- Something they own. Neon and Vercel were chosen so the whole project can be handed over to the client. No hostage-ware.
At the time of writing it indexes 579 companies.
The bit for recruitment leaders
You don't need a defence desk to take something from this.
- Your next market is already in public data. Contract awards, grants and registrations tell you who is growing before the job ads do.
- Use AI where it reads, not where it counts. Let it classify messy text. Keep money, dates and numbers in structured data.
- Demand receipts. If a tool can't show you why it ranked a company, it shouldn't decide who your team calls.
FAQ
What is the Austin Defence Market Map? A ranked database of small-to-mid defence and defence-tech companies in the Austin metro, scored by how likely each is to be hiring right now. Built for a recruitment consultant opening the defence market from scratch.
Where does the data come from? Public federal sources: SAM.gov contractor registrations, USAspending and war.gov contract awards, SBIR innovation grants, and public job boards.
How does it decide who is likely to be hiring? A heat score combines recent contract wins, open roles, cleared roles that have stayed open, SBIR Phase II funding and an Austin headquarters. Each point links to its evidence.
Does the AI make up numbers? No. AI only tags free text such as job ads with a role family and clearance level, and must quote the source word for word. Amounts, dates and IDs come from structured data only.
Does it use LinkedIn data? No. It doesn't scrape LinkedIn or any site whose terms forbid it. People only appear when a public page names them.
Who owns it? The client. It's built on transferable infrastructure so the whole project can be handed over.
Can you build one for my market? If your market leaves a public trail, yes. The federal sources cover the whole US, and location is one stage of the pipeline. Other sectors need different sources. The method stays the same.
Want one for your market?
The Austin map is one build. The method is the bit that travels:
- Find the public signals that show a company is about to hire.
- Pull them into one place, every day, without anyone copying and pasting.
- Rank the companies, and show the receipts for every ranking.
If you're opening a new market, or running a desk on spreadsheets and gut feel, that's what I'd build for you. A ranked market map for your sector and patch, evidence on every line, a daily refresh, and the keys handed over at the end.
Book a strategy call, or just tell me which market you'd map first.
James Aspinall · Engineer and AI consultant