Marketplace Monitoring & Alerting

Watches marketplaces for new listings, emails a structured digest the moment one appears.
COMPLETE
Note
Deployed privately against real marketplace accounts, so the source and target sites aren't linked publicly here. Everything below (the architecture, the test counts, the reliability design) is accurate to the actual system.

New listings on a job board, tender portal, or marketplace get buried under old ones within hours, checking manually means missing most of them.

This system periodically scans one or more listing feeds, extracts structured fields (title, rate, duration, location, contract type) from each posting, deduplicates against everything already seen, and emails a digest only for what's genuinely new. Built and run against three job and opportunity marketplaces; the architecture generalizes to any page that publishes a changing list of items: tenders, classifieds, inventory, pricing pages.

Key Decision
Every external dependency (the browser session, the database, the mail server) fails closed. If a feed can't be verified as loaded correctly, the cycle skips it and records why, instead of silently sending an empty or wrong result.

A resilient scanning layer captures listing and detail pages, a parsing layer resolves structured fields through a fallback chain, and a WAL-journaled SQLite database deduplicates by canonical URL while keeping full snapshot and observation history. An alerting layer sends HTML email digests only after the mail server confirms acceptance, never before. A first-run safety gate refuses to send a flood of alerts for an already-populated feed; it requires an explicit baseline first.

299 unit tests, a 1,000-input property-based fuzz suite, and a dedicated adversarial suite (malformed HTML, split DOM nodes, hidden modals) run in CI across 4 Python versions and 2 operating systems on every push.

The lesson that generalized best: reliability work is mostly about the failure paths, not the happy path: resuming an interrupted scan safely, marking a cycle degraded instead of pretending it succeeded, and never emailing before the send is actually confirmed.

B.L.A.S.T.LIVE

Drop in a PDF, PowerPoint, or image and it extracts the text into clean Markdown/Word files: measured 61.6% CER reduc...

PythonRapidOCR / ONNXStreamlit
Menu Data PipelineCOMPLETE

Concurrently pulls menu data from 17 restaurant sites, validates and cleans it with Pydantic and pandas, and pushes a...

Pythonhttpx (HTTP/2)Pydantic

Need a source tracked and turned into structured alerts? →

Hire Ibrahim / Discuss Scope