Inspiration
Applying for jobs often means repeating the same profile details, rewriting similar answers, and moving between an application form, a resume, and a separate writing tool. We wanted to turn that fragmented process into one continuous workspace—and eventually make it faster with every application.
That idea became ApplyFlow, a Chrome extension that brings profile autofill and resume-powered writing directly into job application pages. ApplyFlow starts with the candidate's experience, helps adapt it to each role, and keeps the result editable where the application is actually being completed.
Our longer-term vision is an application assistant that learns from the user. When a candidate answers a new question or selects a new option, ApplyFlow can offer to remember it and reuse its meaning when another application asks the same thing differently.
What it does
ApplyFlow adds a compact side panel and page-native writing controls to job application forms.
Candidates can create an editable profile, import a Word or text-based PDF resume, or explore the product with the fictional Maya Chen demo profile. When they click Scan & Autofill, ApplyFlow:
- recognizes application fields from labels, accessibility attributes, input metadata, options, and nearby question text;
- fills profile details, education, links, preferences, and other saved answers;
- attaches the locally saved resume to compatible upload fields;
- drafts answers to open-ended questions using relevant resume experience;
- places those drafts directly in the application fields;
- supports optional instructions and in-place regeneration; and
- adapts generated text to the field's live character limit.
For cover letters, ApplyFlow combines the current job description with selected resume experience to create a role-specific draft. A fictional Northstar Labs application and keyless fixture mode give judges a complete, repeatable workflow with built-in sample data.
The current product already remembers scoped work-authorization answers by semantic meaning. The next milestone expands that foundation into general application memory: a floating Save this answer? card beside newly completed fields and a New answers to remember section in the side panel. Candidates will be able to save one suggestion, select several, or choose Save all, then reuse those answers across sites even when the wording changes.
How we built it
ApplyFlow is a Chrome Manifest V3 extension built with React and TypeScript. The monorepo also contains a React/Vite demo application, shared Zod contracts and sample data, and a Python FastAPI service with Pydantic validation.
The extension scans focused field metadata and translates different form structures into a shared field model. Direct profile facts use deterministic mappings, while written questions are matched with relevant profile and resume evidence before generation. Native page setters and browser events make the resulting values work with React forms and custom ATS components.
Resume files are imported through the extension and stored in IndexedDB. Extracted profile data remains editable, and relevant resume sections can support later answers and cover letters. The generation layer supports a deterministic fixture provider for the judging demo, plus optional OpenRouter and Gemini providers behind the same structured response contract.
We built ApplyFlow collaboratively with Codex using GPT-5.6. Codex helped turn the initial idea into a complete vertical slice across the Chrome extension, API, shared schemas, tests, and documentation. It also accelerated browser debugging and helped convert issues found on real application sites into reusable regression coverage.
GPT-5.6 was especially useful for reasoning across several systems at once: Chrome permissions, accessibility semantics, custom controls, iframe routing, provider schemas, semantic question matching, and the interaction between page-level assistants and side-panel state. The human builder selected the product direction, decided which workflows mattered most, tested real sites, reviewed tradeoffs, and made the final implementation decisions.
Challenges we ran into
Job application forms represent the same ideas in many different ways. During development, we encountered generated field identifiers, opaque option values, custom country and state controls, delayed ARIA comboboxes, masked dates, unusual character limits, and applications rendered inside Greenhouse frames.
Each case required more than matching a field name. ApplyFlow had to understand the field's meaning, choose the correct option, update the framework-managed form state, and coordinate actions across the extension, page, and embedded frames. We combined accessible labels, DOM context, semantic classification, native page events, and platform-specific fixtures to build a reusable compatibility layer.
Greenhouse embeds were a particularly valuable challenge. The job description could live on the employer's top-level page while the application fields lived inside a separate frame. We added frame discovery, field routing, permission handling, and top-page job-context sharing so autofill and inline writing could operate as one workflow.
Written answers introduced another design challenge: they needed to feel like part of the form rather than a separate chatbot. Shadow DOM assistants let ApplyFlow place Generate, Regenerate, and optional-instruction controls beside each textarea while keeping the application itself as the main editing surface.
Accomplishments that we're proud of
- Built a complete local judging workflow with an editable fictional profile and keyless generation mode.
- Combined profile autofill, resume attachment, cover letters, and inline writing in one Chrome extension.
- Created page-native drafts that can be edited and regenerated inside the application.
- Added Word and PDF resume import, local storage, profile extraction, and reusable evidence selection.
- Developed compatibility pilots for Workable, BambooHR, and direct and embedded Greenhouse applications.
- Built semantic memory for scoped work-authorization answers as the foundation for broader answer learning.
- Reached 129 passing tests across the extension, demo, shared packages, and API, alongside formatting, linting, type checking, and production builds.
What we learned
We learned that browser automation is fundamentally a problem of preserving meaning. The same question can appear as a native input, a custom dropdown, a radio group with opaque values, or a control rendered inside another frame. A reusable system has to understand the concept behind the interface.
That insight also shaped our future direction. A candidate should not have to save the same answer separately for every website's wording. By storing semantic meaning together with the confirmed answer and its context, ApplyFlow can turn completed applications into reusable knowledge.
We also learned that AI writing feels most useful when it is embedded directly in the workflow. Candidates can see the question, draft, character limit, and optional instruction together, making refinement feel like part of completing the application rather than a separate task.
What's next for ApplyFlow
The next milestone is adaptive application memory. After a candidate completes a new question, ApplyFlow will offer a lightweight Save this answer? card beside the field. When several new answers are available, the side panel will collect them into a batch inbox with Save, Skip, Save selected, and Save all actions.
ApplyFlow will store the meaning of each question, its answer, original wording, source site, confirmation time, and useful context such as country or role. Later applications will be able to reuse that answer when they express the same meaning differently. Search, edit, refresh, and remove controls will make My Profile an evolving application workspace.
Beyond memory, we plan to expand ATS compatibility, add more reusable custom-control patterns, improve provider observability, and prepare ApplyFlow for Chrome Web Store distribution. The goal is for each completed application to make the next one faster, more personalized, and easier to finish.
Built With
- ai
- chrome
- fastapi
- python
- react
- typescript
Log in or sign up for Devpost to join the conversation.