{"id":50148635,"url":"https://github.com/airkyzzz/cheatjob","last_synced_at":"2026-05-24T07:02:29.334Z","repository":{"id":356038355,"uuid":"1215150272","full_name":"AirKyzzZ/cheatjob","owner":"AirKyzzZ","description":"Le logiciel qui contacte les recruteurs à ta place. AI cold-outreach SaaS for French students hunting alternance \u0026 stages. Next.js 16 + React 19 + Tailwind 4.","archived":false,"fork":false,"pushed_at":"2026-05-06T10:01:42.000Z","size":7978,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T11:37:31.996Z","etag":null,"topics":["ai","alternance","cold-email","france","job-search","nextjs","react","recruitment","saas","stage","tailwindcss","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://cheatjob.fr","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AirKyzzZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-19T14:48:52.000Z","updated_at":"2026-05-06T10:01:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AirKyzzZ/cheatjob","commit_stats":null,"previous_names":["airkyzzz/cheatjob"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AirKyzzZ/cheatjob","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AirKyzzZ%2Fcheatjob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AirKyzzZ%2Fcheatjob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AirKyzzZ%2Fcheatjob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AirKyzzZ%2Fcheatjob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AirKyzzZ","download_url":"https://codeload.github.com/AirKyzzZ/cheatjob/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AirKyzzZ%2Fcheatjob/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33424573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","alternance","cold-email","france","job-search","nextjs","react","recruitment","saas","stage","tailwindcss","typescript","vercel"],"created_at":"2026-05-24T07:02:27.505Z","updated_at":"2026-05-24T07:02:29.314Z","avatar_url":"https://github.com/AirKyzzZ.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/brand/logos/cheatjob-mark-v5.png\" alt=\"Cheatjob\" width=\"180\" /\u003e\n\n# cheatjob\n\n**Le logiciel qui contacte les recruteurs à ta place.**\n*Pas de réseau ? On t'en fabrique un.*\n\n[![Live Site](https://img.shields.io/badge/Live-cheatjob.fr-6B1F28?style=for-the-badge)](https://cheatjob.fr)\n[![Status](https://img.shields.io/badge/Status-Pre--launch-FAF9F6?style=for-the-badge\u0026labelColor=0A0A0A)](#status)\n[![License](https://img.shields.io/badge/License-Proprietary-0A0A0A?style=for-the-badge)](#license)\n\n[![Next.js](https://img.shields.io/badge/Next.js-16-000000?style=flat-square\u0026logo=next.js\u0026logoColor=white)](https://nextjs.org)\n[![React](https://img.shields.io/badge/React-19-61DAFB?style=flat-square\u0026logo=react\u0026logoColor=black)](https://react.dev)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind-4-06B6D4?style=flat-square\u0026logo=tailwindcss\u0026logoColor=white)](https://tailwindcss.com)\n[![Vercel](https://img.shields.io/badge/Deploy-Vercel-000000?style=flat-square\u0026logo=vercel\u0026logoColor=white)](https://vercel.com)\n\n\u003c/div\u003e\n\n---\n\n## Why this exists\n\nIndeed, LinkedIn and Welcome to the Jungle funnel a few hundred CVs into one HR inbox. Most are never read. The students who land internships and *alternance* don't apply harder — they bypass the funnel and land directly in the **hiring manager's** inbox.\n\nThat used to require a network. Cheatjob makes it a feature.\n\n\u003e *Le système n'est pas cassé. Il est juste fermé.*\n\n---\n\n## What it does\n\nFor French students hunting **stages** and **alternances**, Cheatjob:\n\n1. **Identifies the right hiring manager** at a target company (not HR — the person who actually wants you on the team).\n2. **Reconstructs their direct email** from public signals.\n3. **Drafts a cold outreach** in the student's voice, calibrated to the role and the company.\n4. **Tracks deliverability and replies** so the student knows what's working.\n\nThe wedge is narrow on purpose: **email reconstruction + AI-personalized cold outreach**. No CV builder, no Indeed clone, no HR portal.\n\n---\n\n## Live evidence\n\nReal replies from real recruiters, anonymized for the public site.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"web/public/evidence/01.png\" alt=\"Reply 01\" width=\"48%\" /\u003e\n  \u003cimg src=\"web/public/evidence/02.png\" alt=\"Reply 02\" width=\"48%\" /\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"web/public/evidence/03.png\" alt=\"Reply 03\" width=\"48%\" /\u003e\n  \u003cimg src=\"web/public/evidence/04.png\" alt=\"Reply 04\" width=\"48%\" /\u003e\n\u003c/div\u003e\n\nCompanies the founder personally landed using the method that became Cheatjob:\n\n\u003e **Dataiku** · **Deezer** · **SQLI** · **Extrajool** · **HopHopImmo**\n\n---\n\n## Tech stack\n\n| Layer | Choice | Why |\n|---|---|---|\n| Framework | **Next.js 16** (App Router) | Server Components for marketing surface, Route Handlers for outreach jobs |\n| Runtime | **React 19** | New compiler, transitions, Server Actions for the waitlist |\n| Language | **TypeScript** (strict) | Non-negotiable on the email path |\n| Styling | **Tailwind CSS 4** + design tokens | Brand charter ported to CSS variables |\n| Animation | **Motion** (formerly Framer Motion) | Editorial micro-interactions, reduced-motion respected |\n| Typography | **Instrument Serif** + **Geist** | Editorial display, neutral UI |\n| Analytics | **PostHog** + **Vercel Analytics** | Funnel + acquisition |\n| Hosting | **Vercel** | Edge, preview deploys, OG image generation |\n\n---\n\n## Project layout\n\n```\ncheatjob/\n├── docs/\n│   └── brand/                   # Brand charter, logos, hero spec\n│       ├── charter.md           # Single source of truth for design + copy\n│       └── logos/\n└── web/                         # Next.js app\n    ├── src/\n    │   ├── app/                 # App Router, OG image, robots, sitemap\n    │   ├── components/\n    │   │   ├── sections/        # hero, wedge, evidence, pricing, faq…\n    │   │   ├── ui/              # primitives (BlurText, ProofPanel…)\n    │   │   ├── waitlist/        # waitlist context + form\n    │   │   └── analytics/\n    │   ├── hooks/\n    │   └── lib/\n    └── public/\n        └── evidence/            # Anonymized reply screenshots\n```\n\n---\n\n## Run it locally\n\n```bash\ncd web\ncp .env.example .env.local        # fill in the keys you actually need\nnpm install\nnpm run dev                       # http://localhost:3000\n```\n\n| Script | What it does |\n|---|---|\n| `npm run dev` | Next dev server (Webpack, with raised heap) |\n| `npm run dev:turbo` | Same, but with Turbopack |\n| `npm run build` | Production build |\n| `npm run typecheck` | `tsc --noEmit` over the whole app |\n\n\u003e **Note:** this version of Next.js 16 has breaking changes vs. older docs. If you're hacking on the app, read the relevant guide in `node_modules/next/dist/docs/` before assuming an API still exists.\n\n---\n\n## Brand \u0026 design\n\nThe visual system is documented end-to-end in [`docs/brand/charter.md`](docs/brand/charter.md):\n\n- **Wordmark** — editorial lowercase, Instrument Serif Regular, burgundy on cream\n- **Palette** — `#FAF9F6` cream, `#0A0A0A` ink, `#6B1F28` burgundy accent (≤ 5% per screen)\n- **Typography** — Instrument Serif (display) + Geist (UI/body)\n- **Voice** — *tu*, French-first, declarative, no em-dashes, no corporate jargon\n\nIf you contribute design or copy, the charter wins over personal taste. That's the deal.\n\n---\n\n## Status\n\nPre-launch. Waitlist is live at [cheatjob.fr](https://cheatjob.fr). The first 100 founding users are getting the *Sprint* offer at €29 fixed price; ongoing pricing will be announced at public launch.\n\n---\n\n## License\n\nThis repository is published for transparency and as a portfolio piece. The Cheatjob name, brand assets, copy, and product mechanics are **proprietary** and not licensed for reuse. The code is open to read; please don't fork it as a competing product.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nBuilt by [Maxime Mansiet](https://maximemansiet.fr) · Bordeaux, France\n\n[![Website](https://img.shields.io/badge/cheatjob.fr-6B1F28?style=flat-square\u0026logoColor=white)](https://cheatjob.fr)\n[![Portfolio](https://img.shields.io/badge/maximemansiet.fr-0A0A0A?style=flat-square\u0026logoColor=white)](https://maximemansiet.fr)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairkyzzz%2Fcheatjob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairkyzzz%2Fcheatjob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairkyzzz%2Fcheatjob/lists"}