Career Compass is LIVE!!!

We just finished building a working end‑to‑end job intelligence platform in under two weeks. Career Compass now collects real jobs, analyzes them with AI, and produces fully transparent relevance reports. We’re opening a private beta for people that want to help shape the next phase.

Career Compass is LIVE!!!
Product logo

Career Compass: Behind the Scenes of Our Rapid-Built Job Intelligence Engine

How We Shaped a Working SecDevOps Product in Under Two Weeks

We've spent the last week and a half building something that surprised even us. Career Compass wasn't planned as a minimal tool or a demo. We wanted a functioning, end-to-end pipeline that could collect real jobs, run them through an AI evaluation engine, and show users exactly how well they match. No smoke, no mirrors. Just an honest system that does the work.

It's far from finished, and that's the point. We're opening the door to a private beta for organizations that want to shape it with us. Before anyone jumps in, we want to walk through what actually exists today. Not what we hope it will become. What it already does.


A Platform Built Around Real Profiles, Not Guesswork

Career Compass begins with the authenticated user. We rely on Authentik as the identity provider, which means the platform never wonders who is logged in. The reverse proxy hands us identity headers, and a middleware component in our UI turns those headers into a consistent, verifiable profile.

On a user's first visit, we generate a profile tied directly to that identity. We store their résumé, languages, seniority, and location using geographic IDs. Those IDs map to tables of countries, states, and cities so we can reliably interpret and reuse the data across the system.

We don't try to "infer" information. Users tell us what they want, and we store it cleanly.


The Collector: A Trigger for Real‑World Job Discovery

Once a profile is ready, users land on the Collector page. This is where the magic begins. They select a search term and review their own stored profile. When they click Run Collector, data flows from the UI to a dedicated Python service.

That service, wrapped around a Python API, that fetches jobs from multiple job sites. It unifies everything into a consistent schema, regardless of where the data came from. Company names, descriptions, URLs, posting dates. We gather it, normalize it, and return it.

From there the UI stores every job into the database and records a formal search run. Nothing is lost. Each run becomes a traceable, auditable event.


Where the Worker Takes Over

We built a background worker service to act as the system's heartbeat. It picks up pending search runs, respects retry limits, and handles long‑running operations. For each job it sends a structured request to the Analyzer API, which handles the actual semantic and symbolic comparison.

The Analyzer responds with scores, extracted skills, benefits, risks, and reasoning. The worker stores all of this as part of a structured report. Each job in the run becomes its own analysis entry.

It's a clean pipeline: collect, store, analyze, record.


The Challenge

What happens all too often is that job offers are described in a heterogeneous way. Each company has its own way of pushing it's corporate values. So it costs us time each time, to dissect what is offered and what is asked.

At the same time, our CVs/Résumes are also a hodgepodge. Bridging the gap between our repository of experience and this multitude of job descriptions is not easy!

So we designed a proprietary algorithm that bridges the gap naturally and reliably.


Reporting That Makes the Invisible Visible

Our reporting pages show the full history of completed analyses. Users can click into any run and browse page by page through each job. We show symbolic alignment, semantic vectors, rationalized résumé and job breakdowns, and a narrative‑style summary of strengths and risks.

It's the kind of transparency many job‑matching systems gloss over. We want users to see not only the score, but the thinking behind it.


Container‑First, Automation‑First

We've kept everything inside containers. The UI, the worker, the Python collector, the database. This wasn't just a convenience choice. We wanted something we could deploy, reset, monitor, and rebuild without ceremony.

The result is a SecDevOps‑aligned architecture where every component has a clear role and minimal surface area. It's simple, but not simplistic.

And for those that are wondering, yes we're scanning our code with SonarQube at each deployment.


Why This Matters for SecDevOps

Career Compass is a good example of the kind of iterative, automatable system we try to build. We kept our pipeline small and observable. We split concerns across services. We avoided hidden logic. And we favored clarity over cleverness at every turn.

We built this quickly because we live inside this type of environment daily. The same patterns we teach teams: clean boundaries, staged pipelines, asynchronous workers, automated recovery: show up in the architecture.


Invitation‑Only Beta: Help Shape the Next Phase

Career Compass already works end to end. It authenticates users, collects jobs, processes them, analyzes them, and reports the results. But we want corporate users, hiring teams, and career‑transition specialists to test it at scale.

We're opening a private beta, by invitation only. If you want to explore it, push it, or help steer how it evolves, reach out. This is the moment where early adopters can genuinely influence the product's direction.

The direction is clear. The details are where we need partners. You in?