Launch
Why I built a job search site instead of using one
Aaron at Job Umbrella · July 17, 2026 · 7 min read
For ten years I worked as a consultant. That sounds like one job. It is closer to twenty, because every engagement has an end date printed on it from the first day, and the search for the next one has to run while the current one is still going. I have worked at Amazon, Expedia, T-Mobile, AT&T and Microsoft. In between each of those, and often during them, I was doing the same thing everyone reading this has done: finding postings, deciding which ones were worth the hour it takes to apply properly, rewriting a resume to match, and then trying to remember which of the forty open threads had gone quiet.
I built a process for it. Not software — a spreadsheet, a folder of resume variants, a naming convention, and a set of habits about when to follow up. It worked. It also took a genuinely stupid amount of my time, and I rebuilt it from scratch roughly every other year because the spreadsheet had rotted.
The thing that made me start
What finally moved this from “I should automate my spreadsheet” to a real project was reading other people’s numbers. Posts from job seekers reporting several hundred applications before an offer they could accept. Some reporting a thousand. Those numbers are not people being lazy about it. They are people doing the thing correctly, at volume, and getting almost nothing back.
When you read enough of those posts, the same three complaints show up no matter which site the person was using. The listing was never really open. The matches had nothing to do with them. The application vanished and nobody ever replied. Every one of those is a solvable problem, and none of the big boards is especially motivated to solve them, because the person applying is not the customer.
A job board where the employer pays for placement will always rank for the employer. That is not a bug in those products. It is the product.
So the first decision, made before any code, was about money rather than features: this site will never take payment to promote a job. Not sponsored slots, not “featured employer”, not a rank boost. I will write about that choice properly in a later post, because it cost me the most obvious revenue line available and I want the reasoning on the record.
What day one actually is
The version that went up today is not clever. It is the spreadsheet, made durable. There is a board with stages you can name yourself, and applications you drag between them. There is a profile that holds your whole work history — everything, not a trimmed version. There is resume generation at three career levels, a cover letter generator, and a page that searches twelve job boards plus federal and state government sites without making you retype the same query twelve times.
The part I care most about is the least visible: the profile is deliberately the superset. Your resume is supposed to be a distillation of it for one specific job. Most tools have this backwards — they treat the resume as the master document and then ask a model to stretch it. I would rather hold the whole record and choose from it than hold a short document and ask something to inflate it.
How it is built, and by what
The stack is ordinary on purpose: Next.js, Postgres, Prisma, deployed on DigitalOcean App Platform behind Cloudflare, with TLS to the database verified against a pinned CA certificate. Ordinary is a feature. I am one person, and every interesting decision I make should be about the job search, not about infrastructure I chose because it was interesting.
The code is written by AI agents that I direct. I decide what gets built and what ships, and I put changes through a review pass where other agents are instructed to break the work rather than bless it. I will be specific about this as the blog goes on, including the times it went wrong, because a development blog that only reports the wins is an advertisement.
Today also included the unglamorous half of launching: email verification, password reset, rate limiting, security headers, and a pass to make sure registration never returns a 500 just because the welcome email failed to send. A person who cannot create an account does not care how good the matching is.
Release notes
July 17, 202616 commits · first deploy · initial migrationShipped
- Application tracker: custom stages, a drag-and-drop board, deadlines, CSV import and export.
- Profile that holds the full work history, and resume generation at entry, professional and executive level.
- AI job-title recommendations from the profile.
- Find Jobs: one search across 12 job boards.
- Privacy Policy and Terms of Service.
- Browser-extension store assets prepared for submission.
Platform
- Postgres cutover and the DigitalOcean App Platform deploy configuration.
- Database TLS pinned to the DigitalOcean CA certificate.
Hardening
- Email verification, password reset, and account linking.
- Security headers, rate limiting, and dependency bumps.
- Registration survives a failed welcome email instead of returning a server error.
- AI provider calls time out rather than hanging the request.
Still open
- Google sign-in is disabled for launch.
- Ad units are merged but dormant. No advertising is live.
Everything here is free to use
AI resumes and cover letters, a fit check against any posting, search across 12 job boards plus government sites, and a Board that tracks every application. No employer can pay to reach the top of your list.