While building my AI Career Advisor, I initially assumed resume feedback would be one of the simplest features.
Upload resume β analyze β give suggestions.
There are already dozens of tools doing this, so it seemed straightforward.
But once I introduced memory and user context, things became much more complex.
π§ What the system actually needs to do
At a basic level, the system should:
- Parse a resume
- Extract skills and projects
- Compare them with target roles
- Suggest improvements
Simple enough β but in practice, this wasnβt sufficient.
Because a resume is only a "snapshot", not the full story.
β οΈ The real problem: resumes are incomplete
Users often:
- Forget to include recent work
- Undersell their projects
- Omit important details
If the system only analyzes the uploaded resume, it misses critical context.
So the real challenge became:
π 'How do we combine resume data with stored user memory?'
β First attempt: treat resume as the source of truth
const parsedResume = parseResume(file);
const response = await llm.generate({
input: "Give resume feedback",
context: parsedResume
});
This worked β but only at a surface level.
It couldnβt detect missing information or inconsistencies.
β
The fix: merge resume with memory
const memory = await hindsight.retrieve(userId);
const resumeData = parseResume(file);
const context = {
resume: resumeData,
pastProjects: memory.projects,
skills: memory.skills
};
Now the model has access to:
- What the user wrote
- What the system already knows
π‘ Why this matters
This enables insights like:
- βYou worked on X but didnβt include itβ
- βYour project description is too vague compared to stored detailsβ
This kind of feedback is impossible without memory.
π Using Hindsight for context
The memory layer is powered by:
π https://github.com/vectorize-io/hindsight
More details:
π https://hindsight.vectorize.io/
Concepts:
π https://vectorize.io/features/agent-memory
π What improved after this change
Before:
- Generic resume tips
- Repetitive suggestions
After:
- Context-aware corrections
- Missing content detection
- Better personalization
β What didnβt work
- Relying only on resume text
- Ignoring past interactions
- Overloading the model with full memory
π§© Lessons learned
- A resume is incomplete without history
- Memory enables comparison, not just analysis
- Context merging is more powerful than parsing
π Final thought
Resume feedback is easy to build.
Context-aware resume feedback is not.
And the difference is "memory".



Top comments (0)