Standalone design mock — v10.0.0 email source + parser management. Buttons/HTMX
are inert here; see email-ui-spec.md for the live routes & swap targets. Toggle OS
dark mode to preview both themes.
Inbox sources for job alerts. Passwords / app-passwords / OAuth tokens live in
secrets.toml — never entered here (presence shown per account).
| Date | From | Subject | Parsed? |
|---|---|---|---|
| 06-25 09:12 | LinkedIn Job Alerts | 5 new jobs for "DevOps Engineer" | ✓ 5 jobs |
| 06-25 07:40 | Otta | Roles matched to your profile | ✓ 2 jobs |
| 06-24 18:03 | Welcome to the Team | Your weekly digest | — no parser |
imaplib.IMAP4.error: b'[AUTHENTICATIONFAILED] Authentication failed.' host=imap.fastmail.com:993 user=me@fastmail.com auth=basic hint: app_password in [secrets.email.fastmail] may be revoked/expired. re-issue an app password and update secrets.toml.
Global #action-status poller span lives here
(identical to config.html) so background OAuth / Fetch-now progress surfaces consistently.
| Name | Matcher | Extracts | Actions |
|---|---|---|---|
| sender ~ "linkedin.com" | title, company, url, location | Test · Disable · Delete | |
| otta | subject ~ "matched to your profile" | title, company, url | Test · Disable · Delete |
Inbound emails that produced no job — either no parser matched, or a matched parser errored. Seed a new parser from one, or ask the LLM to draft a spec.
| Received | From | Subject | Reason | Actions |
|---|---|---|---|---|
| 06-25 11:20 | Glassdoor | New jobs matching "SRE" | no parser matched | |
| 06-25 08:55 | LinkedIn Job Alerts | Senior roles for you | parser "linkedin" extracted 0 jobs |
Proposed by LLM from email #4821 (Glassdoor — "New jobs matching SRE"). Nothing is saved yet — review, edit, then Save.
linkedin| Field | Value |
|---|---|
| title | Senior DevOps Engineer |
| company | Northwind Ltd |
| location | Remote (EU) |
| url | https://linkedin.com/jobs/view/123456 |
| (2nd job) | Platform Engineer · Globex · Stockholm |
Error state of the same panel:
otta raised while extracting.AttributeError: 'NoneType' object has no attribute 'get_text' parser=otta selector=".job-card .title" the email's markup changed — selector matched nothing.
Empty states (when nothing configured / clean inbox):
No parsers configured.
Misses above can seed one — or paste a sample below and let the LLM draft a spec.