Gig Alert Feed
A private daily feed for the opportunities worth noticing.
Gig Alert Feed turns Craigslist alert emails you already receive into a calm, organized Obsidian workflow—without scraping listing pages or handing your inbox to a hosted dashboard.
It is built for independent workers who want to scan new leads quickly, keep useful history, and spend less time reopening the same noisy alerts.
- No Craigslist scraping
- Gmail stays read-only
- Processing stays under your control
- Obsidian remains the review surface
Open one feed, not a morning of inbox tabs
Saved-search alerts are useful, but the inbox is a poor place to review them. New leads arrive beside duplicates, irrelevant matches, old posts, and listings you have already considered.
Gig Alert Feed turns that stream into a run-based review note. The newest run appears first, listings are grouped into Local, Priority, and Other sections, and a run with no new matches stays compact instead of filling the page with empty headings.
Each entry can carry a clickable title, source label, distance when available, suggested score, manual score, review checkbox, and the time it was observed.
How the workflow works
- Craigslist sends saved-search alerts to a dedicated Gmail inbox.
- Gig Alert Feed reads already-received messages with Gmail read-only access.
- The alert text is normalized, deduplicated, scored, and evaluated against your filters and priority terms.
- Immutable event files preserve the listing history inside your synchronized Obsidian vault.
- Each device rebuilds its own feed, ignored, archive, and quarantine notes from that shared history.
The canonical history is separate from the rendered notes. A projection can be deleted and rebuilt without losing the underlying listing record.
Four views, each with a clear job
- Feed — active opportunities, organized by the run that first introduced them.
- Ignored — listings excluded by the current filters, with a visible reason instead of silent disappearance.
- Archive — older or explicitly closed listings kept outside the active review flow.
- Quarantine — malformed or unsafe candidates held apart rather than accepted quietly.
A separate shared status note lets you mark listings active, closed, dead, or archived while preserving the event history.
Designed for more than one device
The current system runs on Android through Termux and on Windows. Events and four human-authored notes synchronize through the vault; credentials, local state, logs, backups, and rendered projections remain device-local.
Both devices independently reduce the same synchronized history into the same UTF-8, LF-only Markdown bytes. Cross-platform CI and real two-device fingerprint validation protect that deterministic contract.
You can review on the tablet, run the workflow from Windows, or switch devices after synchronization without treating either machine's temporary state as the source of truth.
Built to fail closed
- Dry-run is the default before ingest, rendering, migration, reconciliation, status changes, and undo.
- Gmail authorization is read-only; the tool cannot send, delete, archive, label, or mark messages read.
- It never fetches live Craigslist listing pages.
- Malformed configuration, unsafe vault paths, missing required notes, conflicted files, or invalid events stop the write.
- Atomic replacements and local snapshots protect multi-file updates and support bounded rollback.
- An explicit vault-name guard prevents an unrelated vault from becoming the target because a folder name drifted.
Your filters and decisions stay visible
Filters, priority terms, shared settings, and listing-status requests live in ordinary Markdown notes you can edit in Obsidian. The system reads those notes; it does not hide the decision logic inside a remote service.
Manual review state and scores are captured back into immutable events. Undo can revert a prior run without broadly rewriting the history that other devices rely on.
Current working scope
The implemented workflow is intentionally focused on Craigslist saved-search alert emails already delivered to Gmail or imported locally as email files.
It currently includes:
- read-only Gmail ingestion and explicit local email import
- stable listing identity and duplicate suppression
- configurable filters and priority terms
- run-based active review
- ignored, archive, and quarantine projections
- manual review annotations and listing status
- undo and device-local Gmail reconciliation
- Windows and Android/Termux operation
- vault-root detection and fail-closed path guards
- automated Python tests on both Ubuntu and Windows
Additional alert sources or export surfaces remain future work. They will be added only when a real workflow justifies them rather than as a long list of speculative integrations.
Interested in a guided private setup?
The current system is working software, but it is not yet presented as a one-click hosted product. Early access is for people interested in a local-first setup, feedback on the existing workflow, or helping identify the next alert source worth supporting.
No public payment flow or automatic fulfillment is implied. Setup, scope, and expectations would be discussed directly before any work begins.
The point is not another dashboard
The point is a small, dependable system that helps good opportunities reach a place you already review.
- alerts you already receive
- processing under your control
- history that survives device changes
- transparent filters and review state
- no Craigslist scraping
- no hosted-inbox requirement