Inspiration

We started Push Rank from a real frustration. As a fresh CS graduate applying to backend roles, the team consistently hit the same wall: tailoring one CV took 30+ minutes and required switching between 6–10 tools (LinkedIn → ChatGPT → Google Docs → Canva → PDF converter → email), and we STILL didn't know if the company was real.

To validate this wasn't just our problem, we surveyed 16 active job-seekers. The data was brutal: • 62.5% had rage-quit an application halfway through • 43.75% apply only 1–2 jobs per month — each one costs too much • 25% spend 1+ hour per CV (6.25% spend over 2 hours) • ZERO respondents felt "very confident" in their CV

We identified three missing pieces in the job-search workflow: (1) no risk validation, (2) no CV reviewer, (3) no monitoring after applying.

Existing AI tools (ChatGPT, Canva) solved fragments. None combined all three. So we built Push Rank as an agentic Chrome extension + AI backend that collapses all six tools into one workflow and keeps working after you close the tab.

What it does

Push Rank is a Chrome MV3 extension + AI backend that helps job-seekers go from "I found a job on LinkedIn" to "I applied with a tailored, evidence-grounded CV" in under 2 minutes, then keeps monitoring the job on their behalf.

In one workflow, Push Rank:

  1. EXTRACTS job context from a LinkedIn job page with one click, no copy-paste, no new tab
  2. ASSESSES risk using public sources (LinkedIn, Glassdoor, news) with green/yellow/red status, confidence scores, and clickable source URLs
  3. MAPS job requirements to your profile with a transparent match percentage (informational, not a gate, you always decide)
  4. GENERATES a one-page ATS-safe PDF CV in 47 seconds, grounded in your real experience, every claim linked to an evidence ID, zero fabrication
  5. WATCHES the job daily via a background agent, sending daily email digests when status changes (green→yellow, yellow→red)
  6. REMEMBERS cross-session context, surfaces prior analyses ("you applied to PT X 2 weeks ago, similar role, match was 78%")

The whole conversation is mediated by a Universal Turn Orchestrator (Gemini 3.6 Flash via Google ADK) that dynamically routes each input to the right tool — never hard-coded intents, never raw chain-of-thought exposed to the user.

How we built it

We built Push Rank in 14 days with 3 engineers (1 PM/frontend, 1 designer/frontend, 1 backend) using a deliberate MVP scope.

Tech stack (all mandatory hackathon pillars visible): • Gemini 3.6 Flash via Google ADK — for all conversational orchestration, dynamic tool selection, evidence mutation, and versioned CV generation. One model, two workload configs (interactive sync + async background). • Cloud Run: FastAPI backend with auto-scaling • Cloud SQL for Firestore / Firestore: state, memory, watchlist, application log • GKE: running LaTeX-to-PDF rendering sandbox + supporting services • Pub/Sub: async fan-out for background watchlist refresh and email digest scheduling • Cloud Storage: PDF artifacts with 15-minute signed URLs • SendGrid: daily email digest delivery with one-click unsubscribe (signed JWT, no login required) • Firebase Authentication: user sign-in + Row-Level Security across all data tables • Chrome MV3 Extension: content script + side panel + service worker • React + Tailwind: extension UI • FastAPI + Python 3.11: backend • TypeScript: extension • Mermaid: architecture diagrams • Tavily AI Search: public-source risk signals (1000/month free tier)

  • Methodology: Test-Driven Development with 10 golden test CV fixtures (real job pairs), zero fabricated employer/title/date/metric as a hard pass criterion. Claim-to-evidence trace audited per generated CV.

  • Dynamic orchestration (v1.6): All user inputs flow through one Universal Turn Orchestrator endpoint (/v1/chat/runs:stream). The ADK agent dynamically selects read tools, evidence mutations, or CV patches based on the typed compact state. Client never does keyword/regex intent routing. Backend validates every mutation (auth, intent, target, schema, provenance), only refreshes affected analyses, and rejects hypothetical-question writes.

  • Cost optimization: Watchlist refresh runs once per 24 hours (default) with Gemini 3.6 Flash background workload (lower thinking/tool budget). Estimated $7.50/month for 50 watched jobs, under our 5%-of-GCP-credit target.

Challenges we ran into

Three specific challenges worth flagging:

  1. Scope discipline was the hardest engineering decision. We started with 10 features. After Day 5 we realized we couldn't ship 10 well in 14 days. We cut to 2: analyze-and-generate, plus background watchlist. We deleted cover-letter generation, multi-board support, auto-apply (out of scope, scary), team features, and the mobile app. The discipline of cutting made what remained actually work.

  2. AI hallucination in CVs is non-negotiable. A model that invents a "Kubernetes migration" or "50% latency reduction" can destroy a candidate's interview. We solved this with a typed-evidence-mutation pattern (PRD F016): every CV claim must link to a user-provided evidence ID; backend validators reject orphan claims before render. Zero fabricated facts passed across 10 golden test fixtures.

  3. Privacy and proactive monitoring in tension. Watching jobs daily requires background data access. We made watchlist, cross-session memory, and email digest three SEPARATE consents (all default off), enforced Row-Level Security across every Cloud SQL table, kept the email digest body PII-free (only job title, company, status diff, and source links), and built a one-click unsubscribe via signed JWT that doesn't require login. Hard bounce auto-disables the email preference.

Accomplishments that we're proud of

Five things we're genuinely proud of:

  1. Validated the problem with real users before writing code. 16 surveyed job-seekers confirmed the pain. We didn't build a solution looking for a problem.

  2. Zero fabricated claims across 10 golden test fixtures. Every employer, title, date, and metric in a generated CV is linked to a user-provided evidence ID. The deterministic validator catches orphans before PDF render.

  3. Two real "wow" moments that don't need marketing speak to land. (a) "Most CV tools treat each session as fresh. Push Rank remembers and surfaces relevant context proactively", memory references with source IDs. (b) "Most CV tools are reactive. Push Rank is proactive, it comes to your inbox", daily email digest on status change with a single click back to the relevant job.

  4. Cost-conscious architecture that fits in the GCP free tier. Watchlist refresh on Gemini 3.6 Flash background workload = ~$7.50/month for 50 watched jobs. 95% cheaper than a single human CV consultant.

  5. Submitted a working, deployed, demoable product, not a mockup. Live Cloud Run backend, working Chrome extension, real emails arriving in our test inboxes, real watchlist status changes. Every claim in this submission is backed by an implementation, not a slide.

What we learned

Three lessons that will stay with us beyond this hackathon:

  1. Less is more, and cutting features is the hardest engineering decision. We could have shipped 6 features at 50% quality. We shipped 2 at 100%. The constraint forced focus, and the focus produced something memorable.

  2. Dynamic orchestration beats hardcoded routing. Our first architecture tried keyword/regex intent classification on the client. It broke on ambiguous inputs ("can you make this shorter?" meant 4 different things). Universal Turn Orchestrator (PRD F015) with ADK dynamic tool selection handled the same input cleanly across every test case.

  3. Trust is a feature, not an afterthought. Three separate consents, no PII in emails, one-click unsubscribe, evidence- grounded CV claims, deterministic validators, these aren't "compliance" things we bolted on at the end. They shaped the architecture. A user-trust failure would have killed the product faster than a feature gap.

What's next for PushRank Agentic Linkedin Jobs

Three concrete post-hackathon directions:

Pilot phase (next 2-4 weeks): Add Indeed and Glassdoor board support via per-board extraction scripts (architecture is already extensible, backend is board-agnostic). Introduce version-history editing, retry policy, per-job alert frequency preferences, and instant email for green→red transitions (P1 features already specified in PRD §2.2).

Team / coaching tier (next 1-2 months): A coach/recruiter workspace where multiple candidates can be coached side-by-side, with team-level analytics and shared memory patterns.

Multi-agent extensions (next 3-6 months): Cover letter generation, interview-prep agent (pulls from job description + candidate experience to generate likely interview questions), and application tracker (where each applied job sits in the pipeline). All built on the same Universal Turn Orchestrator foundation so each new agent inherits the safety properties (typed mutations, deterministic validators, audit trail) for free.

Built With

Share this project:

Updates

Submission history