Native Android application · Complete v1.0.0
ApplyWindow
An execution cockpit for staging and submitting time-sensitive job applications from a phone - for roles that open at a scheduled moment and fill within minutes.
Overview
Calm execution under a closing window
ApplyWindow turns the scramble of applying to a competitive, time-boxed job posting into a calm, staged routine. Built with Jetpack Compose and Material 3 on a local-first Room database, it schedules exact-alarm reminders, then presents a one-handed execution cockpit that pairs a WebView of the real application portal with instant access to prepared answers, salary figures, résumé attachments, and a readiness checklist.
An optional Gemini screenshot import extracts posting details for review. It is deliberately not a bot: no auto-submission, no autofill, no CAPTCHA handling, no password storage - the user presses the real submit button, on time.
What it does
Highlights
Local-first, no backend
Room plus Kotlin Flow - no account, no server, no analytics. Every piece of data stays on the device.
Exact-alarm reliability
Schedules T‑15 / T‑5 / T‑0 alerts, detects when Android downgrades alarm precision, and surfaces an exact/fallback indicator with a reboot-aware rescheduler.
Split-screen execution mode
A live application-portal WebView over an always-visible cockpit - answers, documents, and checklist - built for one-handed submission under time pressure.
Human-in-the-loop by design
Explicit safety boundaries: no auto-submit, no autofill, no CAPTCHA bypass, no password storage, no scraping.
Optional AI import
Gemini Vision extracts job-posting fields from a screenshot into a reviewable draft (never auto-applied). The user supplies their own API key, stored encrypted on device.
Spec-driven, reproducible
Developed from a detailed written specification through a sequenced, multi-model process, with GitHub Actions building and publishing the release.
Where the line is drawn
Deliberately not a bot
The hard part of a time-boxed application isn’t clicking - it’s being ready and on time. ApplyWindow removes the scramble without ever removing the human. It stages, reminds, and organizes; the person still reads, decides, and submits. By design, it does not:
- auto-submit
- autofill forms
- bypass CAPTCHAs
- store passwords
- scrape portals
How it was built
Specification-first, multi-model
ApplyWindow was built spec-first: a detailed written specification defined the behavior, acceptance criteria, and test checklist up front, and the app was implemented through a sequenced, multi-model process with that checklist as the definition of done. It exercises the harder edges of Android on purpose - the exact-alarm permission model, the Storage Access Framework with persistable URI permissions, edge-to-edge insets, and orientation-lock to protect an in-progress WebView session.
Every push runs GitHub Actions CI, and tagging a version builds and publishes a downloadable release - so the build is reproducible rather than a one-off on my machine.
Under the hood
Build facts
- Platform
- Android 8.0+ (API 26+)
- Language
- Kotlin - 23 source files, single-activity Compose architecture
- Toolchain
- AGP 8.6.1 · Gradle 8.7 · Kotlin 2.0.20 · Compose BOM 2024.09.01 · Room 2.6.1
- SDK
- minSdk 26 · target SDK 35
- Network
- WebView (application portals) and the optional screenshot-import call only - no backend, no analytics
- Distribution
- v1.0.0 release · debug APK (~18 MB), SHA-256 published in the repo’s build-verification doc
- License
- MIT
Take a look
The full source, docs, and a downloadable build are public.