SignalDrift: evidence-first products that can be shared, trusted, and operated.
SignalDrift is the shared codebase behind TechDrift, GamingDrift, and SportsDrift. Each product collects coverage from a curated catalog, groups related stories, and promotes a topic only when it holds across independent sources over time.
The web products are live. Native Android and iOS apps are in development and coming soon.
About this page. This is a public-safe account of a private repository I built and operate solo. It describes real architecture, numbers, and feature names from the codebase. It leaves out hostnames, credentials, internal infrastructure addresses, and anything else that would expose the operating environment, the way my other engineering write-ups do.
About the screenshots. The public product captures below are current views from the live deployed apps. The operator view contains no customer data.
- Project
- SignalDrift, a shared evidence-first trend-discovery engine
- Live brands
- TechDrift (23 sources), GamingDrift (25 sources), SportsDrift (60 sources)
- Clients
- Web app per brand. Native Android and iOS apps are in development.
- Recent product work
- Inspectable public signal pages, private-by-default accounts, brand-scoped administration, lifecycle email, and onboarding hardening
- AI usage
- Laya, a self-hosted LLM service used only for bounded, advisory tasks. It never gates deterministic feed delivery.
- Tests
- 922 automated tests: 914 passing, 8 intentionally skipped, 0 failing
- Release model
- Every change is verified in
devbefore approved promotion tomain, with brand-isolated deploy workflows
Evidence first, scoring second.
Scheduled workers pull from each brand's configured catalog, normalize the items, and record every collection run. The system groups related coverage into topics and scores persistence across independent sources instead of raw popularity. One loud story from one publisher does not become a signal just because it is loud.
Coverage is bounded by publication time and comparison windows, so backdated or republished RSS items cannot inflate a topic. The public product shows the evidence trail behind a signal rather than asking readers to trust a black-box score.
A shareable product without giving the product away.
Each published signal has a lightweight public teaser route designed for a link, mobile share sheet, or pasted URL. It shows the signal, status, story count, and a small set of source-labelled headlines. The next action is clear: add the signal to your own board. For a signed-in reader that goes straight to the matching topic. For everyone else it preserves the topic through signup.
Daily briefs also have a token-gated online view that expires after 48 hours. Public profiles have an explicit, private-by-default sharing model, and a native share button with clipboard fallback. These surfaces make the product legible and shareable while keeping full reading, personalization, and account data inside the product.
Shared engineering, separate customer products.
TechDrift, GamingDrift, and SportsDrift run from one codebase, selected by an explicit brand configuration. It owns product identity, source catalog, topic lexicon, scoring thresholds, public copy, cookie namespace, domains, legal contact, branding, and email presentation.
- TechDrift. Technology coverage from 23 configured sources.
- GamingDrift. Gaming coverage from 25 configured sources.
- SportsDrift. Multi-sport coverage from 60 configured sources.
Isolation is deliberate. Each brand has its own database, role, storage, customer-facing domain, and browser state. Shared code reduces repeated engineering work, but one brand's identity, account state, or source catalog does not bleed into another.



Three customer products, one shared platform, and independent source catalogs.
Laya advises. It does not decide what readers see.
Laya is a self-hosted LLM service used for bounded advisory work, including topic-pair clustering, saved-keyword normalization, and capped per-user analysis. Deterministic collection and feed delivery do not depend on it. If the model is unavailable, readers still get the evidence-backed product.
Its calls are capped, time-bounded, typed, and logged with a prompt version, status, and attempt count. That keeps model behavior inspectable and prevents it from quietly becoming an unbounded dependency in the collection path.
A slow board should not become a broken product.
The shared board is persisted as a durable, brand-scoped snapshot after successful collection. If an expensive trends query hits its database timeout, the app serves the latest known-good board instead of returning an error. If there is no board yet, it returns an honest preparing state while refresh work happens in the background.
Recent onboarding work keeps that same principle at the front door. A new account gets a usable starter board without waiting for full personalization or synchronization, then lands on the board after setup rather than being stranded in profile management. Article and collection paths also deduplicate by canonical identity, preventing repeated source items from turning into repeated cards.
An operator surface, not just a product.
A separate admin service manages source health, collection jobs, topic clustering, user access, invitations, feedback, digest runs, operational settings, and application errors. The Today view is built around decisions: source exceptions, activation milestones, recent delivery results, feedback needing review, and the newest bounded error records.
Lifecycle email is part of that operating model. Verification, password recovery, account changes, plan changes, invitations, digests, and administrator notices now use brand-aware presentation with the product logo and a safe return path into the app. Admin notices include an account identifier when an operator needs to act, without leaking it into public surfaces.
Small team, production habits.
The product now has 922 automated tests, with 914 passing and 8 intentionally skipped integration checks. The suite covers account isolation, public pages and sharing, email rendering, onboarding, source collection, deduplication, durable board snapshots, operational controls, and the three brand configurations. Database migrations are versioned and every rollout is verified in development before an approved production promotion.
The important rule is practical: a successful deploy command is not enough. A change is not done until the relevant customer route, public surface, and protected boundary have been read back on the deployed brand.
The next product surface.
The immediate roadmap is native Android and iOS clients that stay aligned with the web product. The platform work continues underneath them: richer source selection, careful handling for private or paid feeds, more operator-facing diagnostics, and retention controls for long-running operational data. The product remains web-first today, with the mobile experience being built to match it rather than become a second, divergent product.