Back to selected work

Python · AI workflow automation

An AI pipeline that ranks opportunities and prepares applications

A Python workflow that gathers remote data jobs, removes duplicates, evaluates fit with several AI providers, prepares tailored documents and sends the strongest matches to Telegram.

Data EngineeringApplied AI
Historical scheduled workflow
236historical workflow runs
220successful runs
142tests in the latest run
3AI provider groups

The problem

What needed to change

Searching for relevant jobs means visiting several sources, reviewing repeated listings and preparing the same documents again and again. I wanted one workflow that could handle those steps and keep a clear record of every result.

My approach

How I approached it

The workflow applies simple rules before calling an AI model, stores every stage in Supabase and tries another provider when the first one is unavailable.

System flow

How the pieces connect

  1. 01Remote job sources
  2. 02Async fetch + normalize
  3. 03Supabase deduplication
  4. 04Deterministic prefilter
  5. 05LLM score + tailor
  6. 06DOCX + Telegram delivery

What I built

What is included

  • Async adapters for multiple job feeds with in-batch and database deduplication.
  • Heuristic prefiltering before LLM scoring to control cost and noise.
  • A Gemini, Groq and OpenRouter fallback sequence with usage-limit tracking.
  • Token, latency, success, and error telemetry for every model attempt.
  • Tailored résumés and cover letters rendered to DOCX with atomic writes.
  • Telegram delivery and persistent notification state to prevent repeats.

Key decisions

Choices that shaped the project

01

Use rules before AI

Simple rules remove obvious mismatches before any model call. This saves time and makes the first stage easy to explain.

02

Record every fallback

Provider changes, usage limits, response time and token use are recorded instead of being hidden inside a retry loop.

03

Guard against invented résumé claims

Returned highlights are checked against the structured profile; unsupported output falls back to a deterministic selection.

Result

What I delivered

The project shows a complete AI automation workflow with source collection, deduplication, model monitoring, document generation and delivery.

Next improvement

What I would do next

I would add a fixed evaluation set for scoring quality, reactivate the schedule and build a small monitoring page for source results, provider reliability, cost and application outcomes.

Tools and methods

PythonSupabaseGitHub ActionsGeminiGroqOpenRouterTelegrampython-docx

Next case study

Battery Lifecycle

An interactive Power BI report that helps operations teams review battery life, compare consumption with historical averages, inspect individual devices and plan maintenance by location.

Continue exploring