Trust
Your data, and the door out
Aaron at Job Umbrella · July 31, 2026 · 8 min read
One of the loudest complaints against the older resume sites is not about their search or their matching. It is that people believe uploading a resume is the thing that starts the spam. The phone calls, the recruiters who have not read it, the mail from companies you have never heard of. Whether every accusation is fair is beside the point. Enough people believe it that a new site has to answer the question before it is asked.
A privacy policy is not an answer. Everyone has one, and nobody reads it, correctly, because it is written by people who are paid to make the answer sound acceptable. The only answer I trust as a user is a delete button that really deletes, and a way to take my data with me when I go.
Deletion that actually removes things
Account deletion here cascades across all eleven tables that hold anything of yours: applications, stages, profile, resumes, cover letters, contacts, tasks, tokens, sessions, usage records, matches. Not a flag on a row that hides you from the interface. The rows go.
The ordering is the part worth explaining. If you ask for your data on the way out, the export is built, stored, and emailed to you before anything is destroyed. That is backwards from how it is usually written, and it is deliberate: if the mail fails, the account is still intact and you can try again. Build the archive after the delete and a failed email is a person who has lost everything and received nothing.
The safe order is: make the copy, deliver the copy, then destroy the original. Any other order has a failure mode that costs somebody their work history.
Changing a password should end the other sessions
This one turned into a real design problem. Sessions here are JSON Web Tokens, which are self-contained by design — the server does not keep a list of them, which is what makes them cheap. It also means you cannot revoke one by deleting a row, because there is no row.
The fix is a passwordChangedAt column and a check in the authentication callback: a token minted before the last password change is refused. The cost is one database read per authenticated request, which I decided was worth it. If you change your password because you think somebody else is in your account, a session that keeps working for another two weeks is not a session, it is a break-in.
That check fails open on error. If the database read throws, the request is allowed. That is an uncomfortable choice to write down, and it is the right one: a missing column or a slow query should degrade to “other sessions were not revoked”, not to “nobody in the world can log in”. I would rather write this sentence than explain a total outage.
The rename
The site launched as JobDeckHQ. It is Job Umbrella now, on jobumbrella.com. A deck is a thing you organize. An umbrella is a thing that covers you, which is closer to what this is supposed to do for somebody in the middle of a bad search.
A domain move is mostly discipline. DNS, certificates, canonical tags, the sitemap, robots, the social cards — all of which now read from one site-URL constant rather than being typed in eleven places. Analytics were renamed in place instead of started over, so the history stays continuous rather than showing a fake cliff on the day of the move.
The one genuinely embarrassing find: the Terms of Service had been live since launch with a literal [your jurisdiction] placeholder in the governing-law clause. It now says Washington State. Read your own legal pages out loud after you publish them.
Underneath: the job feed
Quietly, the first four job-feed source clients went in this week, along with the cache and the refresh budget around them. The design decision I want on the record is the cache key: results cache against the query, not the user. Two people searching for the same title in the same city cost one call to the provider, not two.
That means the cost of this feature scales with how many different things people search for, not with how many people there are. For a free product that has to survive its own growth, that is the single most important property in the design.
Release notes
July 31, 202631 commits · 2 migrations (account management, job feed)Shipped
- Rename to Job Umbrella and the domain cutover to jobumbrella.com.
- Change password, which revokes every other session.
- Delete account, cascading 11 relations, with an optional data export emailed before anything is destroyed.
- A reveal toggle on all seven password fields.
- The first four job-feed source clients, with a shared per-query cache and a per-user refresh budget.
- Landing page rebuilt around the whole tool suite instead of the tracker alone.
Fixed
- Terms of Service governing law was a placeholder. It is now Washington State, USA.
- The cover-letter guide called a shipped feature a roadmap item, which sent readers away from a live tool.
- Resume highlighting broke on newlines, and profile sections sorted at random.
Security
- next, postcss and sharp patched for known advisories.
- next-auth and the Prisma adapter moved off a vulnerable core package.
- Structured data is escaped before it goes into a script tag.
- The production host is matched exactly, not as a substring.
Still open
- Google sign-in is still off, and I have not worked out why the provider rejects the callback.
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.