Local-first · IMAP + Ollama

ApplyX

Your inbox becomes your pipeline — and nothing ever leaves your machine.

TypeScriptReactFastifyPostgreSQLOllamaIMAP
Scroll to explore
01 — Ingest

An email becomes an application

no-reply@acme.io

Thanks for applying to Acme

We received your application for the Frontend Engineer role in Berlin and will be in touch soon.

Reading over IMAP…Classifying locally…Classified

Ollama · on your machine

AcmeTracked
Role
Frontend Engineer
Location
Berlin
02 — Pipeline

Watch it move — with real signal

  1. Confirmation email

    Applied

    Detected from the confirmation email and slotted in automatically.

  2. Reply detected

    Under review

    Soft rejections like "we'll keep your profile on file" get caught right here.

  3. Scheduling email

    Interview

    Scheduling emails move it forward on their own.

  4. Offer detected

    Offer

    And if a closed one reopens, ApplyX reopens with it.

03 — The Indeed problem

Recover the employer Indeed hides

Indeed's apply-confirmation emails never name the company. So ApplyX looks it up.

Indeed Apply

Employer

Northwind Labs▓▓▓▓▓▓▓▓▓

Scraping message center…

04 — Signal, not vanity

Stats that actually mean something

Funnel
8

Applied

100% of total

6

Replied

75% of previous stage

4

Interview

67% of previous stage

1

Offer

25% of previous stage

Applications

8
75%

Reply rate

Interviews

4
Outcomes
8
  • Active4
  • Rejected2
  • Offer1
  • Ghosted1
Time to first responseMedian: 13 days
0
< 3 days
2
3–7 days
3
7–14 days
1
14–30 days
0
30+ days
2
No response yet
05 — Your machine

Local where it counts

Cloud AI · OAuth · email forwarding
blocked
localhost
nothing leaves this box
IMAP
Ollama
Postgres

Local by default. Self-hosted, not a line leaves your machine. The public demo chat runs its reasoning through a swappable provider (OpenRouter, OpenAI-compatible) for performance — same prompts, same validation. Even there, the semantic-search embeddings stay local on Ollama.

06 — The posting finds itself

The posting finds itself

From the links in your emails, ApplyX works out the company's applicant system, pulls its open roles, and attaches the matching posting to your application — automatically, while scanning.

Systems recognisedGreenhouseLeverAshbyRecruiteeSmartRecruiters
no-reply@acme.io

Thanks for your application! You can track its status here:

boards.greenhouse.io/acme
Board detectedGreenhouse · acme
  • Frontend Engineer0.82
  • Backend Engineer0.28
  • Product Designer0.11
The right match — or none
Frontend Engineer (m/f/d)
frontend engineer
Frontend Engineer
Title similarity 0.82Threshold 0.60

Fuzzy-matched on the role title, with (m/f/d) and dashes normalised. Below 0.60 nothing is attached — the wrong posting is worse than none.

Responsibilities
  • Build and maintain React frontends
  • Evolve the design system
  • Code reviews and mentoring
€65,000–80,000Deadline: June 30Full-time
Other open roles at the company
  • Backend EngineerBerlin
  • Product DesignerRemote
  • Engineering ManagerMunich

ATS-first via the public jobs API, otherwise extracted from the career page — cached per company for a day.

When a login wall is in the way

Pages behind a login (like LinkedIn) are never scraped. When ApplyX detects a login wall, you just paste the URL or the posting text — extraction takes it from there.

JS-heavy postings get rendered by a headless browser (Playwright) only on demand — never in the scan loop, always account- and ToS-safe.

07 — Answers, not filters

Answers, not filters

Ask your applications in plain language. Instead of setting filters, you get a sentence plus a typed block — and the numbers come from the code, not the model.

How many rejections did I get this month?

3 rejections — out of 11 applications.

stat
3of 11
6 active3 rejected2 interview
How do the outcomes break down?

6 active, 3 rejected, 2 in interview.

breakdown
active
6
rejected
3
interview
2
Show me all active applications.

4 active applications.

list
  • AcmeIn review
  • Northwind LabsInterview
  • GlobexApplied
  • InitechInterview
What does my funnel look like?

Of 8 applications, one reached an offer.

funnel
Applied
8
Replied
6
Interview
4
Offer
1
Where do things stand with Northwind?

Northwind Labs — in interview, last active 3 days ago.

detail
Northwind LabsInterview
Interview invitation· 3 days ago
Who wrote about salary?

Two companies named figures.

messages

Northwind Labs

The salary range is 65–80k, depending on experience.

Acme

We'll discuss the exact range in the first call.

Block types
statbreakdownlistfunneldetailmessages
Full-text questions · local embeddings

The question is embedded locally; the code pulls the semantically nearest emails by cosine similarity.

Who does what
  1. 1
    Classify intentModel

    Count, list, detail or emails — plus any filters from the question.

  2. 2
    Gather factsCode

    Code filters, counts, groups and retrieves via local embeddings — deterministically.

  3. 3
    Phrase a sentenceModel

    The model pours the finished facts into one sentence.

  4. 4
    Emit a blockCode

    The server sends a typed block, the frontend renders it.

The model never counts — a 7B model miscounts, especially in German. It only classifies the intent and phrases the answer. Everything countable is deterministic code.

08 — The assistant

The assistant

What needs attention right now — and what there is to learn from your own data.

3 open

Action queue

Reply needed, decide an offer, follow up, or revisit a soft rejection — sorted by urgency.

Weekly digest

A short summary of your funnel plus concrete recommendations — from exact numbers, not a hunch.

Rejection patterns

Recurring themes across your rejections — by stack, work mode, and how far you got.

Urgency

Emails that need a timely reply get flagged — including any stated deadline.

Duplicate detection

Semantic embeddings of “company + role” catch the same application, even worded differently.

Enrichment

Seniority, work mode, salary and tech stack — extracted automatically from the emails.

See it for yourself

A public demo, reset on every visit. No account needed.

https://applyx.projects.manu-web.de
ApplyX