Fresher-AI: The Job-Hunt OS Built from a Gateway, a Graph, and a Shared Session Layer

A look at how one open-source platform tries to unify mock interviews, resume feedback, and learning roadmaps into a single candidate workflow.

6 to 8 min read • View on GitHub • More from rushi690

A lone candidate sits at a desk while resume pages, interview prompts, and roadmap ladders orbit toward a central hub that resembles a gateway. The scene explains the project’s core idea: job prep is treated as one coordinated system instead of separate tools.
Fresher-AI frames career prep as a single control surface, with identity, guidance, and practice all routed through one center.
Key Takeaways

The job hunt, reorganized as a system

Most career-prep apps solve one narrow pain point. Fresher-AI tries to connect the whole path: mock interviews, resume feedback, learning roadmaps, and billing around a single candidate journey. That is the real product bet. It is not just a chatbot with a nicer homepage.

The repo’s shape backs that up. There is a React frontend, but the story lives in the backend: an API gateway, specialized services, shared Redis state, and agent workflows built on LangChain and LangGraph. The result is closer to a small operating system for early-career prep than a one-off AI tool.

That ambition matters because job search tools fail when they fragment context. A resume tool does not know what the interview tool asked. A mock interview tool does not know which skill gap the roadmap should address. Fresher-AI is designed to keep those pieces talking to each other.

The surprise: this is not a chatbot, it is a workflow engine

The most interesting technical move is the use of LangGraph in the interview flow. That choice suggests the interview experience is not meant to be a freeform chat transcript. It is meant to move through states.

The platform’s hidden structure is a two-step idea: preserve identity across services, then branch the interview itself through a graph of states.

A close-up branching mechanism shows one interview prompt entering a graph machine and splitting into different paths such as deeper probing, topic switching, and feedback. The image explains that the interview is stateful and responsive, not a single unbroken chat thread.
LangGraph makes the interview feel like a guided assessment. The system can branch, revisit, and escalate instead of replying the same way every time.
// The architectural idea in miniature
if (req.cookies.session) {
  const user = await redis.get(`session:${req.cookies.session}`);
  req.user = JSON.parse(user);
}

// Downstream services can now trust req.user
// and focus on the interview or resume workflow.

How the backend keeps one candidate identity alive across services

The gateway is doing more than routing. It acts as the trust boundary for the whole system. The `isAuth` middleware reads a session cookie, looks up the session in Redis, and attaches the user object to the request before forwarding it downstream.

That pattern matters because it keeps service code lean. Interview, resume, roadmap, and billing services can assume the user context already exists. The gateway becomes the place where identity is normalized and requests are enriched.

LayerWhat it doesWhy it matters
Browser cookieCarries the session identifierKeeps the client-side state lightweight
Redis session lookupMaps session id to user contextAvoids repeated auth checks in every service
API gatewayRoutes and decorates requestsCentralizes policy and request shaping
Specialized servicesHandle interview, resume, roadmap, billingKeeps each domain focused

This is a classic platform trade-off. The architecture is more complex than a monolith, but it buys cleaner boundaries. Once the system grows, that discipline can prevent the usual pileup of auth checks and duplicated logic.

Why the API Gateway matters more than it looks

The gateway is the policy layer. It decides which requests get forwarded, which ones need authentication, and how user context is attached before a service sees the call. In practice, that means the gateway is part router, part gatekeeper, part assembly line.

Compared with a simpler setup, this shifts complexity upward. The payoff is that service boundaries stay sharper. The interview service does not need to know how Redis sessions are fetched. The resume service does not need to know how auth cookies are parsed.

ApproachUser experienceBackend cost
Single app with ad hoc endpointsFast to start, but context gets scatteredLower upfront complexity, higher drift later
Gateway plus shared session layerOne coherent candidate identity across servicesMore coordination work, cleaner service boundaries
Disconnected point toolsEach feature can be simpleUser must re-enter context and repeat work

What makes the stack feel ambitious for a solo project

The stack reads like a team project: React, Vite, Redux Toolkit, Tailwind, Node, Express, MongoDB, Redis, Docker Compose, Firebase, Razorpay, LangChain, and LangGraph. That is a lot of surface area for a single repository.

That breadth is the story. The repo is early, but the architecture is already opinionated. It treats state, routing, and orchestration as first-class problems instead of afterthoughts.

SignalWhat it suggestsEditorial read
Microservices and gatewayIntent to scale by domainNot a throwaway prototype
Redis-backed session stateNeed for shared identity across toolsThe workflow is meant to feel continuous
LangGraph interview flowStateful agent behaviorThe interview is designed, not improvised
Docker ComposePractical local coordinationThe system is being assembled with deployment in mind

There is also a visible gap between ambition and maturity. The repository feels structured, but not finished. That is not a flaw in the article’s argument. It is the argument. The architecture itself is ahead of the polish.

Where it stands against simpler career-prep tools

Most tools in this space fall into one of three buckets. They score resumes, run generic chat interviews, or leave the user to stitch together multiple apps. Fresher-AI is trying to do something different: keep the whole process inside one coordinated flow.

CategoryTypical modelFresher-AI’s bet
Resume toolsScore one artifact at a timeTreat the resume as one node in a larger prep loop
Chat interviewersRespond turn by turnMove through a structured interview state machine
Patchwork prepUser switches between separate toolsShared session and routing keep the experience unified

That bet is expensive. Coordination creates more moving parts. But if the goal is a real product rather than a demo, the architecture starts to make sense. The user does not want four separate AI experiences. They want one system that remembers where they are.

What the project gets right, and what still looks provisional

Fresher-AI gets the central idea right: candidate prep is a workflow, not a single prompt. The gateway, Redis session layer, and graph-based interview logic all support that thesis.

What still looks provisional is the execution surface. Early-stage repositories often show this mix: sophisticated shape, unfinished edges. That combination is common in strong product ideas. It means the developer is solving the right system problem before the whole thing is fully polished.

In other words, the repo is worth noticing not because it has the most features, but because its internal structure matches its product claim. It is trying to be the operating system for early-career prep, and the backend reflects that ambition.