Eslam Hamed
Technical Lead & AI Solutions Architect
Building enterprise AI systems, cloud platforms, and production-ready software
Case study · September 2, 2026
Career Rafeeq: a paid AI SaaS shipped solo in 14 days
A verdict-first career advisor for tech job seekers. Backend, frontend, Chrome extension, billing and infrastructure, end to end, alone, and live at careerrafeeq.com.
I wanted to test a question about my own methods: could one engineer, using AI-assisted development with real discipline, take a product from nothing to paying customers in two weeks without shipping something fragile? Career Rafeeq is the answer. It reads a job description against your CVs and gives you a verdict, the reasons, the red flags, and what to change before you apply.
Context
Job seekers in the region open dozens of listings a week and face the same question every time: is this one worth my application, and what would I have to change to be a serious candidate? The product answers that first, in one screen, before anything else.
The constraint
Fourteen calendar days, one person, and the whole surface: a FastAPI and PostgreSQL backend, a React frontend in strict TypeScript, a Chrome extension that runs on LinkedIn and Indeed, two payment providers, bilingual marketing, and a single-box AWS deployment. Speed was the point, but a product that breaks on the first paying user proves nothing.
The decisions that mattered
- A deterministic pipeline instead of an agentic loop. Eight fixed phases: validate the description, extract requirements and the candidate profile, score five weighted dimensions, refine only the low-confidence ones, detect red flags and value signals, analyse gaps and strengths, classify the verdict, generate the summary. Phases fan out in parallel where the data allows, and the refinement phase fires only below a confidence threshold, so the expensive path runs only when the cheap one is unsure.
- An evaluation harness that gates every prompt change. Twenty-four hand-curated real job descriptions with assertion-based ground truth, six assertion kinds, four model surfaces, several runs per case aggregated statistically, and a separate evaluation database wiped between runs. A prompt edit or a model swap has to pass it before merge.
- Deterministic safety nets over model output. A verdict score-floor guard and a job-description validity early exit, so model uncertainty degrades to a safe default instead of cascading into a confident wrong answer.
- Scores computed, verdicts shown. Five dimensions are weighted internally, skills fit, experience relevance, career trajectory, role quality and seniority alignment, but the user sees a verdict and the reasoning, never a spreadsheet.
- 0Validate reject anything that is not a job description, early
- 1Extract requirements, candidate profile, salary signals parallel
- 2Score five weighted dimensions parallel
- 3Refine re-score only low-confidence dimensions conditional
- 4Detect red flags and value signals parallel
- 5Analyze gaps and strengths parallel
- 6Classify the six-band verdict, from everything upstream
- 7Generate the summary and next steps parallel
What shipped
- Verdict-first analysis with a reason, red flags, value signals, salary extraction and per-section CV suggestions.
- Multiple CVs, with a ranked recommendation of which one to send.
- A preference system for location, job type, seniority and salary that flags conflicts automatically.
- A job tracker, side-by-side comparison of two or three jobs, and a chat to ask follow-up questions about any analysis.
- A Chrome extension that analyses the listing where you are reading it.
- Multi-tier billing through two payment providers, and bilingual marketing pages.
How it was built
Roughly 75,000 lines of hand-authored production code, no generated clients or scaffolds: about 28,000 in the backend, 40,000 in the frontend and 7,000 in the extension, with another 15,000 lines of tests. The frontend compiles under TypeScript strict mode; the backend is Pydantic-validated and SQLAlchemy-typed throughout. Fifty-three backend test files, route-level integration tests for every major surface plus an end-to-end workflow, gate every deploy. Claude Code was the primary engineering collaborator from the first commit; every architectural decision and product trade-off was mine, and the tooling compressed the typing, not the thinking.
Result
A live product with paid tiers, shipped end to end in 14 calendar days, with the evaluation harness and the integration suite in place from the first release rather than added later. Figures are from the repository's fact sheet, last verified April 2026, and the August 2026 CV.
What it demonstrates
What AI-assisted engineering looks like when the human keeps direction and the tests keep correctness: the speed is real, and so is the discipline that makes it safe to sell.