jobsu.ch
An AI-driven platform that ranks Swiss job listings for fit and drafts tailored applications. I designed and built it end-to-end with AI coding tools.
https://jobsu.ch · live, and free to try.
The problem
I was becoming increasingly frustrated with the repetitive nature of the job search. I was going through all the listings across different websites by hand, and rebuilding my CV almost from scratch to fit each job description before sending it off. So I built a tool that ingests your CV, learns what you're after, scores live Swiss roles for fit, explains every score in plain language, and drafts a tailored cover letter for the ones worth pursuing.
See it work
The live product at jobsu.ch.
How I built it
jobsu runs one core loop: ingest a CV and a short preference questionnaire, build a structured profile of the candidate, score incoming Swiss roles against it, explain each score in plain language, and draft a tailored cover letter for the strong matches. I built the app in Next.js, used Supabase for data and auth, and an LLM for the fit scoring and the cover-letter drafts. A separate ingestion worker keeps a fresh pool of listings to score against, including a LinkedIn pipeline.
The decision I spent the most time on was the onboarding process. Most tools reduce you to a single CV, and that isn’t how real job-seekers exist. People keep different CVs for different roles. They have portfolio pieces that fit some jobs and not others. They’re more than one file. So onboarding takes all of it: PDFs, Word docs, portfolios, screenshots, even a photo of your LinkedIn page. I added voice notes too, because I noticed I gave far richer answers to open-ended questions when I could talk instead of type. The model should work from your whole self, not the one document you happened to upload.
Every score also comes back with a reason, never just a number, because the match you can’t see the logic behind is useless.
How I work with AI
I built this with Claude Code, without any prior coding knowledge. I realized the real challenge wasn’t only writing prompts, but also catching the moments the output is quietly wrong. Early on, the generated CVs and cover letters were technically fine and totally forgettable. The fix wasn’t a cleverer prompt; it was a product decision. I added a “root document”, a version of your resume written the way you want it to read, and anchored everything the AI generates to it. Now the output sounds like the applicant, not the model’s defaults. It was after building this project that I realized I wanted to learn more, and enrolled in UC Berkeley’s Master of Information and Data Science (MIDS), starting in September 2026.
What I’d do next
The honest gap: there’s no feedback loop yet. jobsu doesn’t learn from which matches you actually pursued, or which drafts you kept and sent. That’s the next build: turning every application into signal that sharpens the next round of scores.