Software Architect, Engineer & Leader
An intelligent assistant that reconstructs and articulates career achievements through structured conversation — turning scattered professional memories into compelling, recruiter-ready narratives.
Most professionals significantly undersell themselves. Not from lack of achievement, but from a failure of articulation. Years of deep, meaningful work compress into vague bullet points: “Managed team” instead of “Rebuilt a fragmented 12-person group into a cohesive engineering unit that shipped five major platform features in under eight months.”
The AI-Powered Career Coach was built to close that gap. It combines structured conversational prompting with AI generation to help professionals unearth, reconstruct, and communicate what they actually accomplished — in language that resonates with hiring managers and executive sponsors alike.
The system does not just format a resume. It learns. Starting from raw personal background data, it builds a structured understanding of career context, then uses that model to generate fully customized resumes tailored to specific roles, industries, and audiences.
The platform provides a complete workflow from raw career data through polished, deployable resume output. Every component was designed to handle the inherent ambiguity of human work history — the gaps, the pivots, the roles that defied titles.
Modal-driven conversation collects career history, project details, and achievement context in a format the AI can reason about effectively.
Generates fully customized resume content from the learned career model, tailored by target role, industry, and seniority level.
Tracks resume requests, approvals, and delivery states through a persistent workflow built on MongoDB and Express API endpoints.
Handles document uploads and persistent storage for supporting materials, with configurable volume mounts for production reliability.
Dual-provider email integration via both SMTP and SendGrid supports automated alerts for request submission, approval, and delivery events.
Inbound contact form submissions route through the same unified API, providing a single service boundary for all user interactions.
The system evolved from a larger monorepo into a focused, deployment-optimized architecture. The defining architectural decision was consolidation: a single unified Express server now serves both the React UI and all API endpoints from the same origin, eliminating CORS complexity entirely.
This is not a shortcut — it is a deliberate engineering choice that simplifies every subsequent concern: a single container to deploy, a single port to expose, a single process to monitor. The performance benefit of eliminating cross-origin requests is secondary to the operational clarity it provides.
Technology choices favored proven, actively maintained tools that reduce operational risk without sacrificing developer experience. The frontend stack reflects the current production consensus for TypeScript-first React development; the backend favors minimal ceremony over framework magic.
Frontend
Backend
Infrastructure
The deployment workflow is intentionally minimal. A single docker compose up brings the entire application online. Health checks with automatic restart handle transient failures, and persistent volume mounts ensure uploaded files survive container restarts.
Clone the repository and copy .env.example to .env. Set the MongoDB connection string, email provider credentials, and port configuration.
A single command starts the unified service. Docker builds the React UI at image build time, so the startup container has everything it needs.
For production, connect the Git repository to Dokploy, configure environment variables through the UI, and deploy. No manual SSH or build commands needed.
Confirm the deployment via the root endpoint or /status. Docker health checks with restart policies handle transient failures automatically.
The Career Coach began as a component inside a larger monorepo designed to give an AI system a complete, structured understanding of professional history. The original monorepo succeeded at its core goal — the AI learning and generation pipeline worked — but the scale of the codebase made deployment friction unacceptably high.
Rather than compromise the system by stripping it down, the deployment-critical components were extracted into this focused repository. The AI learning logic remained in the source monorepo; this repository became the production deployment artifact. It is a conscious architectural tradeoff: some duplication of concern in exchange for dramatically simpler operational characteristics.
The planned evolution continues this trend: future iterations will have the generator push completed resumes directly into deployment repositories, removing even this intermediary step and establishing a clean separation between generation and delivery.