A career lifecycle tool. Catalog your work, tailor resumes to specific job listings, prep for interviews, track your time, send invoices, and manage the relationships that move your career forward — all in one place.
- Employment catalog — structured, deeply detailed records of everywhere you've worked, every project you've shipped, every accomplishment with the metrics to back it up
- AI-tailored resumes — paste a job listing, get a resume built from the most relevant evidence in your catalog, with every word traceable back to source
- Interview prep — practice questions generated from your actual experience, meeting notes captured during interviews and tied back to specific applications
- Time tracking — log hours against tasks and projects once you've landed the job
- Invoicing — generate timesheets and invoices from tracked time, integrated with payment processing
- Relationship management — track the people who matter to your career, who you owe a follow-up, who's most relevant to your next move
The first three are the priority. Everything else is the long arc of the project.
For the project's mission, design philosophy, and explicit anti-goals, read docs/00-mission.md. For the development roadmap, see docs/06-planned-features.md.
Functional MVP, in active development. The data entry milestone is complete, and the AI extraction pipeline is mostly built. You can paste raw notes, performance reviews, or upload a previous resume and get structured draft records back to review, edit, and confirm into the catalog. Duplicate detection and merge UI (slice 4.5) is the remaining work for that milestone.
After milestone 4 wraps, the resume builder is next: capture a job listing, generate a tailored resume drawing from the catalog, save the result as an immutable artifact tied to the application. That's the moment the project shifts from "structured career database" to genuinely useful — manual entry and AI extraction are both bootstrapping steps; the long-term value is what you can do with the data.
Start the Docker environment:
docker compose up -dRun migrations:
docker compose exec app php artisan migrateInstall frontend dependencies and start the Vite dev server (run from host machine, leave running in a separate terminal):
cd laravel
npm install
npm run devAccess the app at http://localhost:8145.
For production builds, replace npm run dev with npm run build. The dev server is preferred during active development since it hot-reloads CSS and Blade template changes without manual rebuilds.
| Container | Image | Purpose | Ports |
|---|---|---|---|
| success-app | php:8.5-fpm (custom) | PHP-FPM with Laravel extensions and Composer | 9000 (internal) |
| success-nginx | nginx:alpine | Serves laravel/public/, proxies PHP to app |
8145 → 80 |
| success-db | mysql:8.0 | MySQL database | 3491 → 3306 |
Docker Compose reads from the root .env file for container names, ports, and database credentials. This file is gitignored and generated during project setup. See .env.example for the expected variables.
Laravel's own laravel/.env handles application-level config (app key, database connection, session driver, etc.) and is also gitignored.
From the host machine, the database is accessible on port 3491.
All artisan commands run through the app container:
docker compose exec app php artisan migrate
docker compose exec app php artisan make:model Example -m
docker compose exec app php artisan test
docker compose exec app php artisan tinkerOn production servers, drop the Docker prefix:
php artisan migrateDetailed technical documentation lives in the docs/ directory:
- Mission — why we're building this, design philosophy, anti-goals
- Database Schema — table definitions, model relationships, cascade behavior
- Services & Commands — service classes, artisan commands, business logic
- Routes & Controllers — route structure, controller conventions, form request pattern
- Frontend — Tailwind/Vite setup, Blade conventions, design system, component classes
- AI Development Notes — conventions for AI-assisted development with Claude
- Planned Features — milestones, schema design principles, deferred features, and open questions
Success is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for the full text.
The AGPL is a strong copyleft license. In short: you can run, modify, and distribute Success freely, but if you operate a modified version as a network service, you must make your modifications available to the users of that service under the same license. This protects the project and its users from closed-source forks running as competing hosted offerings.
You can self-host Success on your own infrastructure. You'll need to provide your own AI provider API keys for features that depend on them. When a hosted version exists, it'll be cheap — the goal is to keep the basic features (catalog, resume builder, interview prep) affordable to people who are unemployed and price-sensitive, with paid features priced for people who are already using the tool to manage paid work.
The MVP is functional and the patterns are established. New entity types follow the same structure as existing ones (model + form request + controller + Blade views + feature tests), and the design system uses a small set of reusable component classes. Reading through one of the implemented entities — Organization is the simplest, Project the most architecturally interesting — is the fastest way to onboard.
If you've worked on career tools, resume parsers, or AI-powered document generation and have opinions about what works and what doesn't — those opinions are wanted. Open an issue or start a discussion.