DEV Community

Chilewar Sangameshwar
Chilewar Sangameshwar

Posted on

AI Internship & Career Advisor

Tracking Internship Applications Turned Out to Be More Valuable Than Recommending Them
I started with recommendations

Initially, I focused on building a recommendation system.

Suggest internships based on skills.

But quickly realized something:

Recommending is easy. Tracking is hard—and more useful.

What the system does

The internship module:

stores applications

tracks status (applied, interview, rejected)

analyzes patterns

First approach: static recommendations
const jobs = await getJobs();

const filtered = jobs.filter(job =>
matchesSkills(user.skills, job)
);

This works—but it ignores user history.

The real insight: applications are events

Instead of treating internships as static data, I stored them as events:

await saveEvent(userId, {
type: "application",
company: "CompanyX",
role: "Backend Intern",
status: "applied"
});

Now we have a timeline.

Using memory for tracking
const history = await hindsight.retrieve(userId);

const applications = history.events.filter(
e => e.type === "application"
);

This allows:

progress tracking

pattern detection

What changed

Instead of:

“Here are internships”

We can say:

“You applied to 5 backend roles but didn’t clear interviews”

That’s a completely different level of guidance.

Where Hindsight fits

We rely on
👉 https://github.com/vectorize-io/hindsight

to persist and retrieve application history.

Docs:
👉 https://hindsight.vectorize.io/

Overview:
👉 https://vectorize.io/features/agent-memory

What worked

event-based storage

timeline tracking

pattern recognition

What didn’t

static job lists

ignoring past applications

Lessons

history is more valuable than suggestions

tracking enables insight

memory enables continuity

Final thought

Recommending opportunities is useful.

Understanding what happened after applying is more powerful.

Top comments (0)