Pointer app — the code lives in the dashboard.ashkaan.me repo (github.com/Ashkaan/dashboard.ashkaan.me, checked out at ~/code/dashboard.ashkaan.me).
Apps
AI
5Cross-provider AI prompt router.
Pointer app — the code lives in the for-anthropic.ashkaan.me repo (~/code/for-anthropic.ashkaan.me).
Weekly Monday comprehensive system update of Daedalus: full apt dist-upgrade (all packages, reboot-if-kernel), Claude Code, Gemini CLI, Codex, HAPI, Wrangler, Playwright Chromium, yt-dlp, grok, impeccable, VS Code CLI + extensions, and a context-repo git pull.
Weekday 5:24 AM PT trigger.dev task that emails repo-optimization recommendations produced by a Codex agent running INSIDE the repo on Daedalus.
Finance
2Monthly portfolio review email (1st Monday).
Nightly QBO + Monarch fetch for the WSP business finance snapshot — canonical JSON committed to the repo (via SSH+commitViaSsh), envelopes written to Cloudflare KV (dashboard:finance, profitability:*, cashflow:latest, ar-aging:latest).
Growth
6Daily 5:30 AM PT morning briefing — Calendar + Todoist + goals + projects → HTML email
Daily email reminder with weighted-random picks from Jess's caring behaviors list (Imago Exercise 10).
Personal and professional goal tracking with quarterly review protocol.
Daily HTML email roundup curating stories from 30+ RSS feeds across 7 topics (Game Reviews, Album Reviews, Tech, Cybersecurity, Science, Politics, World News) via the cross-provider AI router.
Daily HTML email digest clustering cross-perspective debate topics from 24 opinion sources, with Sunday New Voice Spotlight.
Weekly HTML email spotlighting the 1-3 upcoming technologies worth paying attention to this week, synthesized from 13 curated YouTube channels via a two-pass AI pipeline (per-video extraction + cross-video synthesis).
Health
1Comprehensive health tracking: biomarkers, supplements, genetics (APOE e4/e4), diet, fitness, sleep.
Homelab
16Daily read-only Uptime Kuma alert digest.
Daily passive probe of every homelab backup's freshness.
Runtime-neutral date/time formatting helpers (Pacific Time defaults).
The durable deploy guarantee for the repo.
Resend-backed send service that other trigger.dev apps call to email a user, via tasks.triggerAndWait("email-sender", { to, subject, html, from?, replyTo?
Invocation-only trigger.dev task that patches + reboots the whole homelab in one pass via a durable KV state machine resumed by a delayed (+5m) self-trigger that survives the only two runner-killers (Hermes OS reboot + trigger-stack update).
Daily dump of 9 Cloudflare KV namespaces (portal-site prefs + nulegal-com intake) to gzipped JSON files in Garage S3 bucket `cloudflare-kv-backup`.
Daily audit of 36 data-SLA KV rows (freshness, completeness, envelope presence, attendance week-coverage) that pushes one Uptime Kuma push monitor per row.
Weekly audit that flags any scheduled task whose p95 runtime is creeping toward its own maxDuration ceiling (the latent-Emma precursor) and pushes one Uptime Kuma heartbeat.
Generic OAuth2 refresh-token flow with 1P-backed storage and verify-after-write.
Keeps every 1P-rotating OAuth credential's access_token fresh in 1Password via Connect — Strety, QBO, and five Google OAuths.
Daily mirror of every Ashkaan-owned GitHub repo to hermes:/mnt/pool/backup/github via `git clone --mirror` / `git remote update`.
Generic RSS / Atom feed primitives (CDATA/tag stripping, item parsing, feed fetch).
Sunday 3:00 AM PT weekly backup of 11 service exports + network-device configs to 11 fixed Google Drive folders, plus an Uptime Kuma heartbeat per target.
Shared SSH execution helper for cross-host commands (truenas, home-assistant, proxmox, daedalus).
Renders and pushes content to the TRMNL OG e-ink display, across five trigger.dev v4 schedules.task.
Legal
6Generates and publishes one fresh mass-tort blog post for nulegal.com every Wednesday 09:00 AM PT.
Pointer app — the code lives in the nulegal.com repo (~/code/nulegal.com).
Autonomous lead-lifecycle engine for NuLegal mass-tort referrals.
Sends one approved TCPA demand letter via Resend sendEmail, from NuLegal <a@nulegal.com>.
Daily trigger.dev scheduled task that reads each open TCPA claim's response-deadline + status from the context repo (GitHub API) and pushes one Uptime Kuma monitor DOWN + email when any open claim is past its deadline.
TCPA escalation approval flow — emails Ashkaan a final-notice draft with click-to-trigger Approve/Reject buttons (GET → actions.wesolve.tech Worker → trigger.dev task), Approve sends the letter to the company from a@nulegal.com via Resend.
Media
12Daily 5:00 AM PT trigger.dev v4 schedules.task — reads the book-club card tree, enriches each book's Audible cover + rating (cache-first; Audible is the rating source of truth), scores via the taste-based v2 formula, stamps the rating into queue cards + commits cards + top-20.md via commitViaSsh, and writes the atomic scores/covers/completed dataset to Cloudflare KV (media-book-club-DATA).
Monthly book-discovery email.
Daily 6:30 AM PT trigger.dev v4 schedules.task — reads food-club cards from Daedalus, gates due cards, runs the headed-Chrome Google delivery scrape on Daedalus, sticky-merges the per-app Delivery list, and commits changed cards via commitViaSsh (fans the dashboard:food sync).
Daily 5:00 AM PT trigger.dev v4 schedules.task — fetches the three HowLongToBeat lists, renders game-club cards, enriches queue games (series/blurb/genre/developer/ ggdeals via the AI router; Metacritic critic deterministically), ranks via the frozen formula, commits cards + top-20.md via commitViaSsh, and writes the atomic scores/covers/completed dataset to Cloudflare KV (media-game-club-DATA).
Monthly game-discovery email.
Event-triggered trigger.dev v4 task — flips one media-club queue item's interest flag at its canonical source (queue card via commitViaSsh for game/book, Plex Watchlist via the Discover API for movie), then triggers the owning club ranker's lightweight rescore and waits (bounded poll) for the real recomputed order.
trigger.dev v4 schedules.task for daily *arr queue cleanup, qBittorrent + SABnzbd download hygiene, and Apollo orphan cleanup over SSH.
Daily 6:30 PM PT trigger.dev v4 schedules.task — reads the Plex [Beta] Movies section as the scored universe + the Movies Collection for star ratings, enriches each movie via TMDB + the IMDb ratings dataset (stream-filtered), runs the v3 watchlist-derived base scoreMovie formula, commits cards + top-20.md via commitViaSsh, and writes the atomic scores/covers/completed dataset to Cloudflare KV (media-movie-club-DATA).
Monthly movie-discovery email.
Event-triggered trigger.dev v4 task — on a gaming-PC Playnite library push, moves newly-owned games out of the HowLongToBeat wishlist (custom list) and into the HLTB backlog via /api/submit, year-aware so a wrong-edition match is never moved.
Daily 5:30 AM PT trigger.dev v4 schedules.task that runs the Stash media library maintenance pipeline: scan, generate phashes, deduplicate via DupFileManager, generate covers/sprites/previews, clean orphaned metadata, and optimise the SQLite database.
trigger.dev v4 schedules.task that discovers new Pinchflat YouTube downloads and imports them into Sonarr via the ManualImport API (Sonarr does the file move).
WSP
32Deterministic CA-labor-code attendance auditor for the 3-person WSP roster.
Builds wesolve.tech's blog into the best GEO-citable answer surface for LA business IT buyers.
On-demand trigger.dev task that pulls Autotask ticket metrics (current + prior quarter), NinjaOne hardware lifecycle, and wsp-assessments findings for one client + review period, then writes the assembled review-snapshot to SALES_DATA KV for the sales portal's QBR detail view.
Weekly WSP client security assessment.
Emails one Connector Program reminder per due connector to a@ashkaan.me via in-process Gmail.
Weekly scan of every Autotask action Emma Mayberry (Ops/HR, Autotask resource 29682898) took on tickets the prior week.
PUSH-triggered trigger.dev task that turns a WSP portal feature-request or bug-report into an AI implementation plan (or triage analysis) and emails it.
Computes a deterministic rolling 13-week First-Time-Resolution percentage from Autotask help-desk tickets once nightly and writes the single ops:ftr-weekly key to the OPS_DATA namespace.
Pulls Google Search Console search-analytics for sc-domain:wesolve.tech once daily and writes 8 marketing:* KV keys to the SALES_DATA namespace.
Auto-generates WSP LinkedIn posts on Mon/Tue/Wed mornings — AI drafts a post + branded quote-card image, emails Ashkaan approve/reject buttons, publishes on approve or regenerates on reject.
Performs a single nightly read-modify-write cycle on FINANCE_DATA/mrr:clients across three ordered phases — contracts (Autotask contract end dates + WiFi/BPW entries), amounts (Autotask BLK/COM/WiFi MRR), and sheet-counts (per-client Google-Sheet user counts).
Nightly, AI-extracts the per-user onboarding date/email/name from Autotask new-user and new-mailbox tickets over a 400-day rolling window, groups the resulting events by calendar month, and writes one onboarding:events:YYYY-MM key per month to FINANCE_DATA.
Every-5-minute WSP service-desk operations snapshot.
LA law-firm sourcing + AI ICP qualification via a public-source scrape pipeline (Justia + CA State Bar + firm sites) — qualified list to Cloudflare KV, no sending
Phase 3b direct-hire scorer — invite passing applicants to the video screen + score completed screens with Gemini multimodal
Candidate sourcer with two tasks — (1) hourly INBOUND pull (Get on Board / Torre / LinkedIn) → wesolve.tech/api/careers/ingest, and (2) weekday LinkedIn OUTBOUND (Sales Nav rate-governed invites → careers funnel).
Tracks re-opened Autotask tickets grouped by ISO week and publishes the grouping to Cloudflare KV (ops:reopened:index + ops:reopened:week:{iso}, OPS_DATA).
Every 30 minutes, polls Zoom Scheduler "Introductory Meeting" bookings and POSTs each to the sales.wesolve.tech intake endpoint, which creates/updates the sales pipeline (deals/companies/contacts in SALES_DATA KV).
TEMPORARY weekly delta-analyzer (App 2 of the 3-app WSP scorecard rebuild).
Monthly WSP EOS-scorecard finance-concentration sync (App 3 of 3).
Weekly WSP EOS-scorecard writer (App 1 of 3).
Nightly per-client service-satisfaction snapshot for the WSP service desk.
6:00 PM PT capture of the WSP "Service Desk Monitoring" Autotask dashboard.
Keeps the vendor-status board on operations.wesolve.tech current by calling the portal's own refresh endpoint every 5 minutes, so the page stops depending on a human opening it.
Triages new Autotask tickets every 5 minutes — one Gemini classification per human ticket plus a deterministic rule chain — and records the proposed actions to Cloudflare KV (OPS_DATA).
Nightly onboarding time-estimate classifier for the WSP operations portal.
Daily per-tech weekly timeline KV writer for operations.wesolve.tech /tech-time.
Weekly TE (time-entry) quality-review email.
Nightly Autotask timesheet quality-flag engine for the configured WSP technicians — 14 flag types over the last 4 ISO weeks, per-tech / team stats, rolling trend, and coaching recommendations.
Weekly triage-bot accuracy reviewer.
On-demand trigger.dev task (wsp domain-bundle member) that reads the Hudu Company-Overview "VIPs" field, name-matches each VIP to an Autotask contact ID, and updates priority_signals.vip_contact_ids in the triage:config KV key.
Every 2 hours, syncs Zoom AI Companion meeting summaries (plus the cloud-recording transcript when one exists) into the context repo as browseable markdown under knowledge/wsp/meetings/.