How the pipeline is supposed to be scheduled.
Two cron entries cover the entire pipeline. The first fires the full pipeline once every 30 days — intake plus all enrichment tiers in one chain. The second fires the lighter enrichment tiers every Monday and Thursday in between.
The two cron lines (spec)
0 10 1 * * python orchestrator.py --cadence allFires 10:00 UTC on the 1st of every month. Runs everything (intake + monthly + weekly + biweekly) as one atomic chain.
30 10 * * 1,4 python orchestrator.pyFires 10:30 UTC every Monday and Thursday. Orchestrator picks the tier from the calendar (weekly on Mon, biweekly on Thu). Skips intake.
What each calendar day looks like
For a representative 30-day cycle, where Day 1 = the 1st of the month:
Click any fire-day row to expand the exact list of external API endpoints that step calls on that day.
▼
Day 1
1st
FULL INTAKE — intake + monthly + weekly + biweekly (every step)
~$200–300
Intake — 4 paid API calls
- 001aDataForSEOGoogle Maps SERP fetchDFS SERP · maps
- 002aDataForSEODomain HTTP verificationDFS OnPage
- 003cAnthropicClassify with Haiku — “is this a PI firm?”Anthropic · claude-haiku
- 004aAnthropicDetect practice areas with HaikuAnthropic · claude-haiku
Monthly enrichment — 13 paid API calls
- 005aDataForSEODeep page crawl (every URL of every firm)DFS OnPage · task_post / task_get
- 005hDataForSEOLighthouse audit (perf / accessibility / SEO)DFS OnPage · lighthouse
- 005iGoogle PSIPageSpeed Insights (real-user Core Web Vitals)Google · pagespeedonline v5
- 005jAnthropicHaiku attorney count (per firm's Our-Team page)Anthropic · claude-haiku
- 006aDataForSEOWHOIS lookup (registration date / registrar)DFS Domain Analytics · whois
- 006bDataForSEOTech-stack detection (WordPress, React, GA, etc.)DFS Domain Analytics · technologies
- 008aDataForSEOMaps SERP grid (firm + 12 GPS neighbors)DFS SERP · maps task_post
- 008bDataForSEOOrganic SERP — who outranks the firmDFS SERP · organic task_post
- 009aDataForSEOBacklinks summary (totals, ref domains, rank)DFS Backlinks · summary
- 009bDataForSEOBacklinks live — every URL pointing at the firmDFS Backlinks · backlinks
- 010aDataForSEORanked keywords (every keyword each firm ranks for)DFS Labs · ranked_keywords
- 010cDataForSEODomain rank overview (organic visibility score)DFS Labs · domain_rank_overview
- 010hDataForSEOTopical categories per domainDFS Labs · categories_for_domain
Weekly (also fires on Day 1) — 6 paid API calls
- 007aDataForSEOGBP info (address, hours, rating, categories)DFS Business Data · my_business_info
- 007bDataForSEOPull every Google review per firmDFS Business Data · reviews
- 007cDataForSEOPull every Google Post / GBP updateDFS Business Data · my_business_updates
- 008cDataForSEOLocal Finder (expanded local pack)DFS SERP · local_finder
- 008dDataForSEOAutocomplete suggestions (firm name / category)DFS SERP · autocomplete
- 010bDataForSEOBulk organic traffic estimateDFS Labs · bulk_traffic_estimation
Biweekly (also fires on Day 1) — 11 paid API calls
- 009cDataForSEOBulk Domain Rank (DFS authority score)DFS Backlinks · bulk_ranks
- 009dDataForSEOBulk total backlinks countDFS Backlinks · bulk_backlinks
- 009eDataForSEOBulk spam scoreDFS Backlinks · bulk_spam_score
- 009fDataForSEOBulk referring-domains countDFS Backlinks · bulk_referring_domains
- 009gDataForSEOBulk new / lost referring domainsDFS Backlinks · bulk_new_lost_referring_domains
- 009hDataForSEOBulk indexed pages countDFS Backlinks · bulk_pages_summary
- 010dDataForSEOBulk keyword difficulty scoresDFS Labs · bulk_keyword_difficulty
- 010eDataForSEORelated keywordsDFS Labs · related_keywords
- 010fDataForSEOKeyword suggestions (autocomplete-style)DFS Labs · keyword_suggestions
- 010gDataForSEOLong-tail keyword ideasDFS Labs · keyword_ideas
- 010iDataForSEOKeyword overview (per-firm performance summary)DFS Labs · keyword_overview
▼
Day 4
Thu
biweekly — bulk backlinks + bulk keywords
~$2.30
11 paid API calls
- 009cDataForSEOBulk Domain RankDFS Backlinks · bulk_ranks
- 009dDataForSEOBulk total backlinks countDFS Backlinks · bulk_backlinks
- 009eDataForSEOBulk spam scoreDFS Backlinks · bulk_spam_score
- 009fDataForSEOBulk referring-domains countDFS Backlinks · bulk_referring_domains
- 009gDataForSEOBulk new / lost referring domainsDFS Backlinks · bulk_new_lost_referring_domains
- 009hDataForSEOBulk indexed pages countDFS Backlinks · bulk_pages_summary
- 010dDataForSEOBulk keyword difficulty scoresDFS Labs · bulk_keyword_difficulty
- 010eDataForSEORelated keywordsDFS Labs · related_keywords
- 010fDataForSEOKeyword suggestions (autocomplete-style)DFS Labs · keyword_suggestions
- 010gDataForSEOLong-tail keyword ideasDFS Labs · keyword_ideas
- 010iDataForSEOKeyword overview (per-firm performance summary)DFS Labs · keyword_overview
▼
Day 8
Mon
weekly + biweekly — GBP + local + traffic + bulk backlinks + bulk keywords
~$25
Weekly — 6 paid API calls
- 007aDataForSEOGBP info (address, hours, rating, categories)DFS Business Data · my_business_info
- 007bDataForSEOPull every Google review per firmDFS Business Data · reviews
- 007cDataForSEOPull every Google Post / GBP updateDFS Business Data · my_business_updates
- 008cDataForSEOLocal Finder (expanded local pack)DFS SERP · local_finder
- 008dDataForSEOAutocomplete suggestions (firm name / category)DFS SERP · autocomplete
- 010bDataForSEOBulk organic traffic estimateDFS Labs · bulk_traffic_estimation
Biweekly (also fires every Monday) — 11 paid API calls
- 009cDataForSEOBulk Domain RankDFS Backlinks · bulk_ranks
- 009dDataForSEOBulk total backlinks countDFS Backlinks · bulk_backlinks
- 009eDataForSEOBulk spam scoreDFS Backlinks · bulk_spam_score
- 009fDataForSEOBulk referring-domains countDFS Backlinks · bulk_referring_domains
- 009gDataForSEOBulk new / lost referring domainsDFS Backlinks · bulk_new_lost_referring_domains
- 009hDataForSEOBulk indexed pages countDFS Backlinks · bulk_pages_summary
- 010dDataForSEOBulk keyword difficulty scoresDFS Labs · bulk_keyword_difficulty
- 010eDataForSEORelated keywordsDFS Labs · related_keywords
- 010fDataForSEOKeyword suggestionsDFS Labs · keyword_suggestions
- 010gDataForSEOLong-tail keyword ideasDFS Labs · keyword_ideas
- 010iDataForSEOKeyword overviewDFS Labs · keyword_overview
▼
Day 11Thu
biweekly — same 11 endpoints as Day 4
~$2.30
Same endpoint set as Day 4. Click that row above for the list.
▼
Day 15Mon
weekly + biweekly — same 17 endpoints as Day 8
~$25
Same endpoint set as Day 8. Click that row above for the list.
▼
Day 18Thu
biweekly — same 11 endpoints as Day 4
~$2.30
Same endpoint set as Day 4.
▼
Day 22Mon
weekly + biweekly — same 17 endpoints as Day 8
~$25
Same endpoint set as Day 8.
▼
Day 25Thu
biweekly — same 11 endpoints as Day 4
~$2.30
Same endpoint set as Day 4.
▼
Day 29Mon
weekly + biweekly — same 17 endpoints as Day 8
~$25
Same endpoint set as Day 8.
Day 1 of every cycle is the heavy day. Exact day-of-week and exact non-Day-1 fire days shift each month, but the rhythm is always: 1 intake + ~4 weekly Mondays + ~4 biweekly Thursdays.
What each tier actually does
gold_domains from scratch. New firms in, lost firms out.Monthly cost spec
| Cron fire type | Per fire | Fires / month | Subtotal |
|---|---|---|---|
| Full intake (Day 1) | ~$250 | 1 | ~$250 |
| Weekly Mondays (Mon, not first-of-month) | ~$25 | ~4 | ~$100 |
| Biweekly Thursdays | ~$2.30 | ~4 | ~$9 |
| Total per month | ~9 fires | ~$359 |