Thea

Self-taught programmer. I build Discord bots and Unity games, and I like systems that work end to end: events in, state in a database, something useful out.

GitHub: theruvial  ·  Python strongest, also C# / .NET and Unity  ·  No degree, no professional software experience — all experience is personal projects plus a self-run homelab.

About

About six years of shipped personal projects, 2019 to now. Strongest in Python; also C#/.NET and Unity, SQL, Git, PowerShell and bash, nginx and Linux server administration. Currently an Amazon delivery station associate (about a year); previously an automotive service technician — mechanical and electrical diagnostics and repair.

Every project below is backed by a commit audit of the default branch, checked 2026-11-11: 685 commits authored by me across 16 projects (656 as Thea Arcadia, 29 under my older timmay237 identity — that identity has no GitHub login, so counting by login alone misses those 29). Astrabot was rebuilt as a public repo on 2026-11-11 with a rewritten, secret-free history; the old private history lives on as theruvial/Astrabot-old and isn't double-counted. Non-default branches were not counted.

PythonC# / .NETUnitySQL — PostgreSQL / SQLiteGitdiscord.py / Discord.NETasync / event-drivennginxProxmox / ZFS

Strengths: end-to-end systems (bot + database + web UI + hosting), async and event-driven code, SQL, data-driven design, persistent debugging across bot, server and network layers. Privacy and security instincts: loopback-only APIs, fail-closed auth, secrets kept out of git (I rewrote Astrabot's history to remove earlier mistakes), HMAC webhook verification.

Honest gaps: no CI yet — my tests (about 190 in Astrabot and about 50 in AstraThought) only run when I run them, and that is the biggest gap; no transactions/locking in the economy code; uneven null handling; no hardware, embedded or PLC code; no hands-on Microsoft 365 / Power Platform yet. I have not typed code myself since Rouge, about 18 months ago — the 2026 work below was directed by me, not typed by me.

Hand-written work, 2019–2025

Written by me, before AI assistance. This is the proof of ability — lead with it.

Astrabot — Discord bot, Python, 2019–2021

Python · discord.py · PostgreSQL / SQLite · async, event-driven

Long-running personal Discord bot, shipped and run for years, still in active use and being extended in 2026. Append-only ledger economy — every movement of currency is recorded, and balances are worked out from the ledger rather than stored and overwritten. A window-function CTE in roles.py — non-trivial SQL, written by hand. 123 of 128 commits on the default branch (as of 2026-11-11) are mine: 39 hand-written pre-AI (2019–2021, last one 2021-04-18) and 84 directed AI-era commits from 2026-10-22 on. The other 5 are Steven Gin (3) and Justin Wong (2).

github.com/theruvial/Astrabot — public, rebuilt 2026-11-11 with a rewritten, secret-free history. The old private history is kept as theruvial/Astrabot-old.

theaBot — Discord bot, C#, 2022

C# · Discord.NET · PostgreSQL

Rebuilt Astrabot's features in .NET, back when discord.py's future was kind of up in the air. Dependency-injection bootstrap and a points/economy system. All 11 of 11 commits are mine. Known flaw, disclosed: SQL string interpolation in Points.cs — values are system-generated so the risk is latent, not live — plus a MAX() NULL crash. Fixing that is first on my improvement plan.

github.com/theruvial/theaBot

FTL combat system — Unity, C#, 2019

C# · Unity · ScriptableObjects

ScriptableObject-based weapon system for a Faster Than Light-style combat prototype. 27 of 31 commits are mine, all from 2019 under my old timmay237 identity.

Private, archived repo — described here, code not linked.

Rouge — Unity game, 2023–2025

C# · Unity

UI systems and trait/character systems for a team game project. 381 commits — 24% of the repo — are mine, alongside Justin Wong (430), Aydin Ngo (380) and Steven Gin (115). Work in progress, not finished or shipped.

Team repo (SteveGinGames/Rouge) — my contribution only; this was the last code I wrote myself.

subscriptionParser — Python, 2023

Python

Small script that transfers YouTube subscriptions from one account to another. All 8 of 8 commits are mine.

github.com/theruvial/subscriptionParser

Directed work, 2026

I directed and designed this work and can explain every design decision, but the code was largely AI-generated under my direction, not typed by me. Presented as directed work, never as sole authorship.

AstraThought — local AI task classifier

Python · SetFit (all-MiniLM-L6-v2) · PyTorch · runs locally on a GTX 1070 host

Small local classifier that decides whether a Discord message is a task. I trained the model myself. All 33 of 33 commits in the repo are mine. Training data: 1,911 hand-labelled rows plus 1,000 synthetic rows; retraining is batched at 50 new human labels. Runs as a loopback-only service; a Discord cog posts triage embeds with approve/disagree buttons, and rulings feed back as training labels.

Final figures, both at the 0.5 line:

Test setPiecesPrecisionRecall
Real #astra-feedback (human rulings)6098% (46 of 47)92% (46 of 50)
Stress set (reviewed by me)10094% (51 of 54)98% (51 of 52)

The real set is the headline — 60 messages from the channel with human rulings. The stress set is 100 AI-written rows I reviewed, a harder test of what the model rejects. Earlier held-out test (test.jsonl, 86 rows, model v2): 77% precision / 93% recall.

github.com/theruvial/AstraThought — public: code, tests and docs. The training data and the model stay on my machine because they come from real team messages.

Aboard the Astra Remake — mechanics wiki + backend

Python (stdlib-only HTTP server) · HTML · GitHub webhooks (HMAC)

19-page mechanics wiki for a Unity co-op remake (SteveGinGames/Aboard-the-Astra---Remake, private; I am an admin). My 64 commits (7.8% of the repo) cover the wiki site and design docs; the wiki branch has since been merged into main. Backend: Astrabot-only API via shared-secret header, fail-closed (no key = 503), bound to loopback; GitHub webhook with HMAC signature check; tasks API with JSON storage. Astrabot's /wiki cog fetches the fresh page from the backend, falling back to a bundled copy.

The standalone wiki-site repo is no longer public, so there is no link here.

Audiobook requests system — Discord cog + web UI

Python · discord.py · SQLite · Material dark web UI · SMTP email

Discord cog plus a web UI for requesting audiobooks, with Fulfill / Reject / Request Fulfilled buttons. Notifications migrated from SMS to email (users keyed by email). Admin dashboard restricted to my account, including an admin-only email-a-user feature.

Runs on the bot host; UI served by Astrabot, like this site.

absLogin — Audiobookshelf signup backend

Python · Audiobookshelf API

Signup service for my Audiobookshelf instance: creates users with scoped permissions, plus a password-change page. Runs on the bot host behind nginx. All 9 of 9 commits are mine.

Private repo — described here, code not linked.

Astrabot operations

Python · PowerShell / batch

Crash tracking with auto-restart, self-update watcher (polls git, reloads changed cogs), decisions panel for classifier rulings, per-guild command scoping.

Torrent mover

Python · system tray

Small laptop app: watches Downloads for .torrent files and moves them to the Transmission folder.

Smaller utilities

Python · Shell

systemBackup — config restoration script, 5 of 5 commits mine. dotfiles — my shell/dotfile configs, 5 of 5 commits mine. Arcadium — one initial check-in commit, barely started.

Left out on purpose: Android-Auto-Efficiency (empty repo, no commits by anyone) and astra-web (only 2 of its 11 commits are mine — the rest are Asbjørn Faurholt's).

Infrastructure — self-run homelab

Counts as direct infrastructure experience:

What I am working toward

Improvement plan, in order: (1) fix the SQL string interpolation in theaBot Points.cs; (2) add a CI workflow that runs the existing tests on every push; (3) make one economy operation atomic; (4) build a small ASP.NET Core Web API + EF Core project; (5) hygiene sweep and profile framing.

Best-fit target: Junior AI and Automation Engineer — my automation, API and classifier work maps directly; the gap to close is Microsoft 365 / Power Platform, via a documented Zapier automation and a Power Automate flow in a free M365 dev tenant.