Projects

Systems I run in production.

Three systems that run unattended, on one server, against real users and real schedules. Each one is here for the part that keeps it alive when nobody is watching.

The source is not public. Two of these are products on the services page, and the code is the thing being sold. If you are weighing up a build and want to read some of it first, ask — I will walk you through it.

Built, deployed and operated by Keeps Running

Shayaak — Wellness Web App

A consent gate the model cannot get past, enforced at four call sites, with a provider swap behind one setting.

Live at shayaak.com4 App Store review cyclesDual billing rails
The problem
An app you write your private thoughts into is only worth trusting if those thoughts stay private — and most of them post everything to a third-party model by default.
What I built
A complete consumer product: web and iOS, accounts, two billing rails, and an AI companion that runs against either a hosted model under zero data retention or a local one, switched by a single setting. Journal text never leaves the server.
Where it is now
Live at shayaak.com, through four App Store review cycles, running on a server I administer with nightly backups.
Technical detail

React (Vite) frontend, Node/Express REST backend with 10 route modules, SQLite persistence, and session-based auth with bcrypt, Helmet, and rate limiting. The AI companion "Saya" runs over a provider-neutral adapter — one env var switches between hosted model under zero-data-retention and local Ollama fallback.

Privacy architecture: journal text never leaves the server, note access is a single user-facing switch enforced at four call sites, and an explicit consent gate blocks the provider call until the user agrees. Dual-rail subscription billing: Stripe on web + Apple In-App Purchase on iOS with server-side JWS receipt verification.

ReactNode.jsExpressSQLiteTogether AIOllamanginxsystemdStripeStoreKit 2CapacitorSwift

YouTube Content Agent

Per-channel failure isolation, alerts that fall back Discord to Telegram to email, and a check that the video is still live a week later.

190+ published since May97% success before retries11 publishes a week
The problem
Publishing on a schedule means research, a script, a voice, an edit and an upload — every week, for every channel. Doing it by hand is the reason most channels quietly stop.
What I built
Seven stages end to end across four channels, where a channel is one config file over shared defaults. A failure in one channel does not stop the others, and alerts fall back from Discord to Telegram to email until a human sees them.
Where it is now
Over 190 videos published since May 2026, better than 97% working on the first try, eleven publishes a week, from one $15-a-month server. The numbers on the front page are read from its database every Monday.
Technical detail

7-agent production pipeline on cloud Linux across 4 YouTube channels: RSS + LLM trend discovery, Tavily research, length-validated scriptwriting, neural TTS, moviepy video assembly, and scheduled YouTube Data API uploads. Config-overlay channel system — each channel is a single profile file overriding shared defaults.

Sequential multi-channel runner with per-channel failure isolation and multi-fallback notifications (Discord → Telegram → email → log). Outcome checks verify the last seven days of uploads are still live, not just that a run finished.

PythonGemini 2.5 FlashTavilyEdge TTSmoviepyYouTube APIOAuthSQLitecron

Lumen — Data Analysis Dashboard

A leak-proof split enforced before the model ever sees the data, so the accuracy score means what it says.

10/10 tests passingAutoML pipeline
The problem
Upload-your-data tools tend to give you charts nobody asked for, or a model whose accuracy score is meaningless because the pipeline leaked the answer into the training set.
What I built
Upload to dashboard in one step: KPIs, plain-English findings, anomaly detection with adjustable sensitivity, and a cross-validated AutoML pipeline built so it cannot leak. The cleaning steps export as runnable pandas.
Where it is now
The analysis engine is tested (10 of 10 passing), and every cleaning workflow reproducible outside the app.
Technical detail

End-to-end automated data-analysis web app turning any uploaded dataset into a dashboard with KPIs, plain-English insights, and charts. Dataset-agnostic anomaly detection using scikit-learn Isolation Forest with adjustable sensitivity. Leak-free AutoML pipeline with Pipeline + ColumnTransformer, cross-validated.

Pure-function analysis engine with full pytest coverage (10/10 passing). Reproducible cleaning workflows that export as runnable pandas code.

PythonStreamlitscikit-learnPandasPlotlypytest

What that looks like from the inside.

Not a mockup and not a demo. This is one of the systems I operate in production — a real scheduled run, replayed, with the health checks that watch it.

You do not have to read any of it. Anyone technical will know what it proves.

aryan@production:~/youtube-agent
$ run_sequence.py channel_03 --publish-at 12:30
[channel_03] profile loaded · overlays: voice=calm_expert length=9m
✓ trend discovery rss + llm, 14 candidates 1 picked · 13 deduped against 33 used topics
✓ research tavily, 6 sources 6 sources · 2 discarded, older than 30d
✓ script length-validated 1,412 words · 8m50s est · voice ok
✓ voiceover neural tts 8m47s audio
✓ render moviepy, 11 cards, b-roll 1080p · 9m02s · 412 MB
✓ thumbnail temp/thumbnail_168.jpg
✓ upload youtube data api, private scheduled 12:30 PM MT
✓ verify watch page reachable live · id recorded
✓ published channel_03 job 168 status=done
notify → discord ok · db updated · temp purged in 6h
$
replay · run_sequence.py · real output, job 168cron · 0 2 * * 2

The month this went quiet, and what it changed.

In July my own uploads stopped for a month, and every run still reported success — because the code checked that it had finished, not that anything had actually been published.

Checking the process is not the same as checking the outcome. Every build I ship now verifies that the thing actually happened, and tells a person when it did not. That is what the numbers above are a record of.

Publish scheduleFrom the crontab, times MT
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Property
Finance
Investing
Business
Four channels across property, finance, investing and general business subjects. The channel names stay private, but the schedule is transcribed from the real crontab — eleven publishes a week from one box, staggered so no two land in the same hour.