06 · MVP in development
SimplyCareer: job application cockpit
I'm building SimplyCareer, a job application cockpit that brings verified candidate information, application materials, and follow-up into one workflow. My work covers planning, business and technical documentation, architecture, and development, with AI assistance.
- Project type
- Job application cockpit
- Stage
- Documentation and authentication complete; database partly set up
Overview
The workflow I started with already used AI to prepare application materials. The rest of the work still moved between chats, documents, a job platform, and a spreadsheet. Candidate information had to travel with it, including corrections about which skills and experience could honestly appear on a resume.
The deeper problem was the missing connection between preparation and history. A generated resume lived in one place; the version sent, contact, response, and next action lived elsewhere. Reviewing the week meant collecting that context again.
SimplyCareer is intended to connect that loop. A candidate brings a job they have found, checks fit, prepares materials from verified context, reviews the output, submits it themselves, and keeps a record that can inform the next application.
The design question: how can preparation, evidence, and application history stay connected?
Approach
Start with the process, then choose the features
I documented the existing workflow, its gaps, and a target process before turning them into requirements. This separated problems that needed a new screen from problems that needed a better data model or a rule the system could enforce.
For example, a tracker that mixes application stage, outcome, and whether a posting is still open makes later analysis ambiguous. The proposed model separates those fields and links applications, contacts, and messages by ID. That gives reviews a clearer record to work from.
An end-to-end MVP with a deliberate boundary
I left job discovery out of the first version. Existing aggregators already supplied postings; SimplyCareer would supplement them. I also kept submission and sending under the candidate's control. The product is meant to prepare and organize the work, with the person reviewing and taking the final action.
I kept onboarding because a new user needs a clear next step. Its intended outcome is to start the first application. The requirements allow document import or manual setup, show what remains to be completed, and keep imported facts unverified until the candidate confirms them.
The requirements rank features and define a cut order if the release becomes too large. Batch generation can run sequentially before adding parallel execution, for example. This makes the fallback explicit while preserving the core application journey.
- Bring a job
Discovery stays with existing tools.
- Prepare and review
Use verified context; resolve flags.
- Apply and follow up
The candidate acts; the record stays linked.
Documentation that carries a decision into the build
My documentation runs from business analysis into technical design. The charter and process analysis establish the problem. Business and product requirements define what should change. User stories and acceptance criteria describe the expected behavior. Architecture decisions, the data model, API specification, and test strategy work through how to deliver it.
I connected these through a requirements traceability matrix. A requirement can be followed into the stories, design, planned tests, and implementation tickets that address it. A checked-off document is not proof that the feature works; the trace gives the build and review a specific path to follow.
- 01
Understand the workflow
Process analysis, pain points, gaps, and the target experience.
- 02
Define the requirements
Business needs, priorities, user stories, and acceptance criteria.
- 03
Design the system
Architecture decisions, data model, APIs, AI behavior, and security.
- 04
Plan the build and checks
Traceable tests, dependencies, vertical slices, and implementation tickets.
System design
The target architecture uses a React and TypeScript interface, Clerk for identity, and Convex for backend functions, data, storage, and scheduled work. AI requests stay on the server. These are the documented design choices for the MVP; the full workflow is still to be implemented.
Give AI a bounded job
The design gives AI responsibility for writing and checking meaning. Application code owns validation, calculations, permissions, limits, and saving. A coverage score or application stage should follow a defined rule rather than change with a model's phrasing.
The same boundary applies to context. Imported documents help draft a profile and suggest claims. They do not become permission to use every statement in a resume. The candidate must verify the claims that generation is allowed to draw from.
Connect a generated line to evidence
One worked example runs through the whole document set: a generated line must be supported by the candidate's verified information. The requirement leads to claim tiers and source references in the data model, server-side checks, a review state, an export restriction, and planned test cases.
I documented a two-stage check. Code checks known violations, such as prohibited claims or invalid source references. An AI judge then examines whether a cited source supports the wording of each line. Rules alone can miss a fabrication that has been rephrased; a judge alone does not provide deterministic checks.
Flagged content remains available for review, but acceptance and export are intended to stay blocked until it is edited or removed. The tradeoff is another model call and the possibility of false flags slowing the user down. Those need evaluation rather than an assumption that a second model guarantees correctness.
- Verified sources
Each generated line cites its supporting context.
- Rules, then judge
Check structure and evidence support.
- Human review
Resolve flags before acceptance or export.
Model stable facts separately from generated text
I compared a fully split profile schema with a hybrid model. The accepted design keeps small, fixed profile fields together and puts growing collections, such as roles, projects, claims, and bullets, in separate tables. This reduces the number of reads and moving parts needed for the screens without putting an ever-growing history inside one record.
Generated resume content references roles and projects by ID. Names, dates, and other locked facts come from the stored profile when the document is rendered. The intention is to keep those identity fields outside the model's editable output.
Plan for retries and changing state
A generation request may finish after the user has retried or changed something. The design assigns each run an identifier and checks it again before saving, so a stale result can be dropped. Batch jobs have individual states, allowing one failed job to be retried without restarting the whole batch.
The implementation plan turns the design into vertical slices: backend behavior, checks, and a connected screen delivered together. Candidate evidence comes before analysis and generation; tracking and reviews depend on a reliable application record.
Prototype
The prototype makes the proposed workflow inspectable, from setup and captured jobs to application review and weekly feedback. It is also a way to examine whether each screen gives the user a useful next action.
Interactive prototype · Fictional sample data. Screens and displayed figures illustrate the proposed experience, not measured results or proof that the backend features are complete.
Explore the workflow
A clear start
The setup checklist makes the remaining steps visible and ends with capturing a first job.
View full-size image ↗
Candidate evidence
Claim tiers and evidence sentences show which statements the candidate has confirmed and which still need support.
View full-size image ↗
Capture and triage
Jobs and other captured items have a next action and a date to resurface, so a saved link can become actionable work.
View full-size image ↗
Review before using
The proposed review view puts the generated document alongside claim flags, gaps, and changes from the base resume. Coverage figures are demo values.
View full-size image ↗
Keep the next action visible
The tracker groups applications by what needs attention, including preparation, waiting, and interviews.
View full-size image ↗
Close the session
The summary connects the jobs worked on with resume variants, application stages, and flags to revisit.
View full-size image ↗
Review recurring gaps
The weekly view groups recurring skill gaps and suggests a learning follow-up. Counts are illustrative sample data.
View full-size image ↗Swipe to explore, or use the arrow buttons. Open the interactive prototype
Current progress
The documentation and authentication are complete. Database setup is partly complete. Upcoming work includes finishing the schema and database setup, implementing the features, and validating the complete application journey. The intended MVP works end to end; the current product does not yet do so.
How the design is meant to be tested
The test strategy separates predictable software behavior from model quality. Unit and backend tests use fixed examples to check rules, calculations, permissions, error paths, and state changes. Real-model evaluations ask whether the generated material remains supported by evidence and whether its cost and response time are acceptable.
Browser journeys then connect those pieces: analyze a job, generate materials, resolve a flag, export, and find the application in the tracker. Manual acceptance checks cover usability and the actual workflow. These are planned checks, not results I am claiming to have passed.
Reflection
The planning work brought several decisions into focus. Choosing a boundary determines which dependencies the first release needs. Treating a resume claim as stored evidence changes the schema, generation context, review behavior, and tests. Separating stage, outcome, and posting state determines what a later review can meaningfully calculate.
That is the connection I want this project to demonstrate: taking a business problem through requirements and technical decisions into work that can be built and checked. The documentation is a foundation for that work. The next step is to implement those decisions and test them in use.
There are still important questions to validate. Can a new user finish setup and start an application without help? Do the claim checks catch unsupported wording without making review frustrating? Does keeping the application history connected produce useful weekly decisions? The prototype lets me examine the journey, while the finished system and its evaluations will need to answer those questions.
Deliverables
3 DELIVERABLESFull-size images open in a new tab.