LifePulse + Job Radar
Creator and sole developer
A local-first personal operating system with an evidence-driven job-search assistant. It combines tasks, calendar context, reminders, projects, relationships, and an application pipeline with first-party ATS ingestion and structured job-fit scoring.
Architecture walkthrough
How the system stays useful and trustworthy
A modular monolith keeps the product operable by one developer while separating interactive requests, durable state, background work, and model-assisted judgment.
- 01
Capture & clients
React web surfaces and a Kotlin Multiplatform companion collect explicit user intent.
- 02
Domain API
Typed modules own tasks, scheduling, relationships, projects, and career workflows.
- 03
Durable state
PostgreSQL stores status, timing, claims, model runs, and append-only audit history.
- 04
Workers
Idempotent jobs handle recurrence, source ingestion, catch-up, scoring, and notifications.
- 05
Constrained AI
Hosted or local models propose classifications and summaries against verified facts.
- AI output is inspectable and never the system of record.
- External writes require an explicit action or approval boundary.
- Retries, sleep, reboot, and duplicate workers are normal operating conditions.
Outcome: Actively used as my personal system. Durable schedules, claims, audit history, model invocations, and notifications remain in PostgreSQL, while AI produces constrained proposals rather than becoming the source of truth or submitting applications autonomously.