Inspiration

Job hunting is messy and repetitive. We noticed that applicants constantly rewrite the same CV for different roles, manually track applications in scattered places, and struggle to understand why they’re getting rejected. Most tools either focus on tracking applications or building resumes—but not both. We wanted to combine these into a single, intelligent system that not only organizes the job search but actively helps improve outcomes.


What it does

JATS (Job Application Tracking System) is a desktop application that helps users manage their job search end-to-end. It allows users to:

  • Track job applications (status, company, role, notes)
  • Create and manage multiple CV templates
  • Edit CVs in an integrated rich text editor
  • Analyze job descriptions and compare them with CV content
  • Get AI-powered suggestions to improve and tailor resumes
  • Identify missing keywords and receive an ATS-style match score
  • Export polished CVs as professional DOCX files

The system acts as both a tracker and an intelligent CV assistant.


How we built it

We built JATS as a desktop application using:

  • React for the user interface
  • A rich text editor (TipTap) for CV editing
  • A structured CV data model to ensure consistent formatting and reliable export
  • The Groq API for fast LLM-powered suggestions and CV optimization
  • A rule-based keyword matching system for ATS-style scoring
  • The docx library to generate high-quality Word documents programmatically

A key architectural decision was separating the editor UI from the data model, allowing us to avoid unreliable HTML-to-DOCX conversions and maintain full control over formatting.


Challenges we ran into

  • DOCX formatting issues: Converting editor content directly into DOCX caused broken layouts and inconsistent styling. We solved this by introducing a structured data model and generating documents programmatically.
  • Editor synchronization: Keeping the rich text editor in sync with structured CV data required careful state management.
  • Balancing AI and control: Raw AI output can be noisy, so we designed the system to provide suggestions that users can review and apply selectively.
  • No backend constraint: Integrating LLM APIs directly from a desktop environment required handling API keys and errors carefully.

Accomplishments that we're proud of

  • Designing a hybrid system that combines rule-based ATS scoring with AI-powered suggestions
  • Building a clean, side-by-side editing experience with a live AI assistant
  • Creating a reliable DOCX export pipeline with consistent formatting
  • Delivering a tool that feels like a real product, not just a prototype

What we learned

  • Good UX is just as important as powerful AI—how suggestions are presented matters more than the model itself
  • Structured data models are critical when working with document generation
  • LLMs work best when combined with deterministic systems rather than used alone
  • Small design decisions (like where to place AI in the UI) have a huge impact on usability

What's next for JATS (Job Application Tracking System)

  • Real-time CV scoring that updates as users edit
  • More advanced AI features like full section rewriting and personalization
  • PDF export with pixel-perfect templates
  • Smarter analytics on application success rates
  • Cloud sync and multi-device support
  • Integration with job platforms for automatic application tracking

Share this project:

Updates