‹ Work
Work · 03

Tenso

A career assistant that writes tailored job applications, tracks where each one lands, and keeps up with the people behind them.

Tenso dashboard — application conversion funnel and recent rejection feedback

I built Tenso in the middle of my own job search, when I realized I was spending more time reshaping my resume for each posting than actually applying. Every job wants a slightly different version of you, and you almost never find out which version worked.

Tenso reads a job description and writes a resume tailored to it — and a cover letter if you want one — then follows what happens after you hit send: submitted, callback, phone screen, onsite, offer. The dashboard turns the whole search into something you can actually see — your response rate, which companies write back, and the feedback that comes in on the ones that don’t.

A job search isn’t one-and-done, though, and it isn’t only about applications — a lot of it is people. The recruiter who messaged you, the engineer from an interview loop, the contact worth circling back to months later. Tenso tracks that side too: who you’ve talked to, when you last spoke, and what was said in between, with a nudge to follow up before a thread goes cold. Someone stays a single contact whether you met them at one company or three. That’s the part that changed how I think about it — less a tool for landing one job, more a career assistant you keep up with, so the relationships are there when you need them again.

How it’s built — Writing a good application is really several smaller jobs — pulling the requirements out of a posting, matching them to your history, drafting, then tightening — and they aren’t equally hard. So Tenso routes each step to the cheapest model that can handle it and saves the expensive one for the parts that genuinely need reasoning; that tiering is what holds the quality up without a runaway API bill. The whole generation runs as a background job, so the page stays responsive while the model works instead of freezing on a long request.

The fit score — how well you match a role — I deliberately kept out of the model’s hands and computed in plain, deterministic code. It’s a number you lean on when you decide whether to bother applying, so it has to be reproducible and explainable, not a figure a model returns a little differently every time you ask.

The networking side brought its own decision: a person is one record, not a name you retype on every interview. Meet someone once, or run into them again at another company, and it’s the same contact with one shared history — so the network builds itself as you capture it. And the follow-up reminders are written the instant you log an outgoing message, not swept up later by a nightly job, so a nudge is never a day stale.