blog.spelvin.devspelvin.dev →

Field Notes

Selected work on automation, threat intelligence, and infrastructure — some of it paid, most of it not. The same instinct runs through both: find the step that's still manual, understand why, and remove it.


Professionally, that means leading automation and threat-intelligence platform work inside a critical-infrastructure enterprise SOC. After hours, it means a growing stack of self-hosted services that do the same thing for a house: watch, decide, and act, without anyone having to remember to do it manually. Below is a walk through both, organized by what the work actually is rather than who signed the paycheck.


Automate

At the SOC, phishing tickets were a fixed tax on analyst time — roughly 30 a week, each triaged by hand. Automating the intake pipeline dropped that to under 5, cut the average time-to-verdict from around 30 hours to under a minute, and gave analysts back about 15 hours a week for work that actually needed a human.

30 → <5tickets / week30h → <1mtime to verdict~15hanalyst-hours/wk reclaimed

The same reflex runs the recipe site listed below: an LLM drafts a dish, a self-hosted image model illustrates it, and a second model checks the photo actually looks like the dish before anything gets near a commit. When the retry logic turned out to be quietly re-running failed attempts every four hours forever, the fix wasn't a bigger budget — it was the same move as the phishing pipeline: find where the loop doesn't know when to stop, and teach it.


Own

Standing up a threat-intelligence platform from scratch — vendor selection, procurement, deployment, and integrating it with over 40 intelligence feeds, up from three — was less about the tool than about making sure it actually got used: documentation, training, and wiring it directly into the ticketing and SIEM systems analysts already lived in.

3 → 40+intel sources integrated

Same pattern runs the homelab: evaluating, deploying, and actually integrating a growing stack of self-hosted services — a single sign-on layer now sitting in front of a dozen-plus apps, a self-hosted AI gateway routing between local and hosted models depending on what's being asked, an image-generation pipeline with its own QA step. None of it is interesting in isolation; the point is that nothing has to be logged into separately.


Measure

Reporting shifted from ticket-volume counts to outcomes leadership could actually act on — what risk got reduced, what got faster, what capacity got freed up. That's the version of a metric that survives contact with a budget conversation.

The habit travels. A homelab AI pipeline's bill crept up without anyone noticing why — the fix wasn't guessing, it was pulling the raw spend ledger straight out of the gateway's own database, breaking it down by call type and time of day, and finding the actual pattern: a handful of stubborn image-generation attempts silently re-running at full cost every four hours. Full writeup →


Integrate

Threat intelligence, detection, and response only work as one system if they're actually wired together — in practice that meant partnering directly with Physical Security on vendor evaluation, aligning with Engineering on OT-specific intelligence, and running joint incident-response exercises across teams and, in one case, other organizations entirely.

The homelab version: a solar/battery optimizer, an HVAC controller, and a financial-analytics advisor that don't just coexist — they share a data layer and a lightweight signaling protocol, so a decision made by one (pre-cooling the house ahead of a battery-heavy afternoon) is visible to the others instead of being three unrelated scripts pretending to be a system.


Stack

Security & SOC

SplunkOpenCTIServiceNowCrowdStrike / DefenderOntic

Platform & infra

Docker ComposeCloudflare Access / Tunnel / PagesAuthentikGitea + ActionsPostgreSQL / TimescaleDB

AI & automation

LiteLLMClaudeComfyUIPython

Web

AstroTypeScript

Selected projects

Self-hosted service mesh

SCM, CI/CD, project tracking, workflow automation, an AI gateway, and identity — a dozen-plus services behind one reverse proxy and a single sign-on layer, so nothing is logged into separately.

Docker ComposeCloudflareAuthentikGitea Actions

Solar & battery optimizer

Forecasts solar generation and household load, then decides how to dispatch a home battery, advise EV charging, and pre-cool the house ahead of demand — six phases from data pipeline to a live control loop with its own dashboard.

PythonTimescaleDBHome AssistantFastAPI

Household AI advisor

Watches two other automation systems, plus personal finances, and narrates what it finds — under a hard rule that the model only narrates numbers a deterministic analyzer already computed. It never does the math itself.

PythonPostgreSQLLiteLLMDiscord

Comfort & air controller

Ceiling fans and whole-house ventilation, driven by live air-quality and occupancy sensors on a 15-second control loop — rules-based, not ML, on purpose.

PythonHome AssistantTimescaleDB

Load forecaster

Time-series forecasting for home energy load using Amazon's Chronos-2 model, run as two small on-demand jobs rather than a persistent service.

PythonChronos-2InfluxDB

Nothing Wilts →

A recipe site that writes itself — new dishes, weekly meal plans, and their own photography generated on a schedule, with a vision model checking its own image-generation work before anything publishes.

AstroLiteLLMComfyUI

Lunar Outpost →

The design system behind every surface above — one signal-color pair, three surface states, and the token table each of them actually matches.

Design system

Log

  • Diagnosing a Runaway AI Bill

    A side project's LLM costs crept up for weeks. The fix wasn't a smaller model — it was reading the actual spend ledger instead of guessing.

All entries →