Problem
Remote roles are fragmented across sources, and early-career candidates need a clearer way to understand how their profile maps to each opportunity.
Go · AI integration · Concurrent services
An AI-assisted job platform that aggregates remote roles, matches them to candidate profiles, and supports CV improvement workflows.
Overview
JobGen combines a Go backend with a React and TypeScript client. The backend coordinates job ingestion, matching, CV processing, AI calls, authentication, and storage behind REST APIs.
Remote roles are fragmented across sources, and early-career candidates need a clearer way to understand how their profile maps to each opportunity.
Built the backend service structure and web product around job aggregation, profile-based matching, CV workflows, and AI-service integration.
Architecture
Engineering
Run independent job-source adapters concurrently with goroutines and sync.WaitGroup, then collect failures without discarding successful sources.
Keep source-specific scraping behind interfaces so sources can be registered or removed without rewriting the aggregation flow.
Separate deterministic skill, experience, and location scoring from AI-assisted CV features.
Use Redis for cache/session concerns and MongoDB for application data; keep object storage behind MinIO-compatible APIs.
group, failures := sync.WaitGroup{}, make(chan error, len(sources))
for name, source := range sources {
group.Add(1)
go func() {
defer group.Done()
if err := aggregate(ctx, source); err != nil {
failures <- fmt.Errorf("%s: %w", name, err)
}
}()
}Stack & evidence