Aman Sriven
All work

Case study

Roleward

An AI career workspace where applications, resumes, coding practice, and mock interviews share one context.

Year
2026
Role
Design, engineering, and operations — solo
Status
Live
Stack
Next.js · TypeScript · AWS Lambda · DynamoDB · Cognito · S3 · OpenAI
The Roleward command center, showing the highest-impact next step alongside live counts from applications, evidence, resume, coding practice, and mock interviews.

What it is

Roleward is a career workspace for software engineers. It holds the job you are targeting, the applications you have sent, the resume you are tailoring, the coding problems you are practising, and the mock interviews you are running — and it treats all of that as one connected context rather than five unrelated tools.

It is live at roleward.org. I conceived it, designed it, built it, and I operate it.

The problem

A job search generates a surprising amount of state. Which version of the resume went to which company. What that posting actually asked for. Which of your projects is the right story for this role. Which behavioural question you fumbled last time.

Almost none of the tooling holds that state. A tracker knows your applications but nothing about your experience. A resume tool knows your document but not the role. A coding site knows your submissions but not why you are practising. So the person doing the search becomes the integration layer, re-explaining their own background to every tool, every time.

Roleward’s premise is that the target role is the missing primary key.

Shared context

  1. 01Target role, applications, and confirmed experience

    The user saves a posting and confirms what they have actually done. This is the only place facts enter the system.

  2. 02One shared career context

    Every workspace reads from the same record instead of keeping a private copy of who the user is.

  3. 03Resume tailoring · coding practice · mock interviews

    Resume revisions close specific evidence gaps. Coding sessions focus on relevant patterns. Interview practice draws on decisions the user can defend.

  4. 04One recommended next action

    Activity across all three feeds a readiness view that surfaces the highest-value thing to do next, and explains why it matters for that role.

What I built

All of it — product design, frontend, backend, infrastructure, and the operational side of running something with real accounts and real user data.

System

Application
Next.js with TypeScript and React Server Components. Server-only modules keep model calls and data access off the client entirely.
Identity
Amazon Cognito behind Auth.js, with sessions scoped so a user record is never reachable from another account.
Data
DynamoDB as the primary store, S3 for uploaded and generated documents, and Lambda for the longer-running document and generation work that does not belong in a request cycle.
Documents
PDF and DOCX resumes are parsed server-side, normalised into structured experience, and re-rendered rather than mutated in place.
Model layer
OpenAI, called with bounded context and schema-validated output. Zod validates every model response before it is allowed near the UI or the database.
Verification
Vitest for units, Playwright for the flows that would be embarrassing to break — sign-in, import, tailor, export.

Decisions worth explaining

Roleward's coding practice room, recommending a sliding-window problem and noting that later recommendations will be based on what actually went wrong in this session.
The practice room measures how you think before it measures whether the code passes. What it recommends next is derived from what actually went wrong in the last session.

Tradeoffs

Serverless made the early product cheap and the debugging harder. Lambda and DynamoDB meant no idle infrastructure cost while the product had no users, which is the right shape for something you are funding yourself. The cost is that a request now spans several execution contexts, and reproducing a failure locally takes deliberate effort rather than a stack trace.

Schema-validated model output rejects work I paid for. Every model response is parsed against a schema and thrown away if it does not conform, which means occasionally discarding a generation and retrying. That is a real latency and cost tax. It is worth it, because the alternative is malformed data reaching a user’s resume.

Single-region, single-operator. There is no multi-region story and no on-call rotation. For a product at this stage that is the correct amount of infrastructure, and I would rather say so than build a resilience story the traffic does not justify.

Where it stands

Roleward launched recently. I am deliberately not putting usage, retention, or revenue numbers on this page yet, because there are not enough of them to mean anything — and a portfolio that quotes a metric from week two is telling you something about the author rather than the product. Those numbers will appear here when they are real.

What it does demonstrate today is the full arc: taking a product from an idea about how a job search should work, through design and engineering, to something that is deployed, authenticated, paid for, and used by people who are not me.