yk.camelcase.work

Recent Work

Recent products, built end to end. Each entry names the engineering decision that shaped it, not the feature list.

Every project below started from a real problem. From there the role is the same: product concept, system architecture, implementation, infrastructure, deployment and continuous delivery - each product keeps evolving well past its first release.

Velora - Event-centric news intelligence

An aggregator whose unit of display is the event, not the article: hundreds of publications collapse into one model of what happened, and keep it evolving. Velora owns its whole supply chain - it discovers publishers, verifies them, finds their feeds and polls them itself - then extracts, deduplicates, clusters, scores, merges and ranks everything it collects. Around forty background actors; every operational limit is a runtime setting, not a constant.

Problem

One event produces hundreds of near-identical articles: outlets rewrite each other, swap the headline and publish again. A reader spends time on duplicates and still cannot tell which piece broke the story, which one adds new facts, or what changed since yesterday. Aggregators group headlines, but the event itself - its sources, its new facts, how it evolved - stays invisible.

Event clusteringpgvector HNSW, bge-m3 1024dMerge adjudication3-way retrieval + LLM verdictCrawl pipelineDramatiq, separated async lanesRuntime settingsDB-backed, audited, live-read by alerts

Architecture

  • Depth grows an event, breadth creates a related one - more coverage of the same occurrence attaches, a different occurrence becomes its own event, linked but never merged.
  • Clustering is an explicit three-way decision - attach, seed, or wait as a bounded singleton - with a higher bar for creating an event than for joining one.
  • Deduplication keeps wire copy: identical text inside one publisher is a duplicate, the same text across publishers is signal.
  • Merging is retrieval plus adjudication, not a threshold - events are compared on a short identity sentence, and similarity only shortlists candidates.
  • Time windows are derived from the pipeline's own measured latency, not chosen, and coupled by invariants enforced on write.
  • Anything a mechanical check can own is never left to the model - derived, then verified in code.
  • Ranking is deterministic arithmetic; the LLM only ever scores text.
  • Operational limits are audited rows, not constants - including the values the alert rules read.
  • One event loop and one connection pool per worker process, with publisher fetching isolated on its own queue.
  • Velora publishes its own words and a link out, never the publisher's text.

Editron

An API-first text transformation service. Its own web editor is a first-party client of the same public API and is forbidden from bypassing it, which is what keeps the integration surface honest; the processing engine is swappable behind one internal contract, with tenancy, API keys, quotas and usage accounting as first-class concerns, plus a published TypeScript SDK.

Lernklang

A gated listening platform for language learning with a school-facing analytics dashboard. One image, three roles: scheduled work runs as its own container, so restarting or scaling the web app never skips or double-runs a job - and configuration is validated at startup, the process refusing to boot on an invalid variable rather than failing quietly in production.

Herald

Topic-driven news collection, processing and delivery. Deduplication is enforced at delivery, keyed per channel by content hash with URL as fallback over a rolling window, so syndicated and live-updated articles are never sent twice; each article yields three independently produced formats, every one stamped with the exact pipeline version that made it, for reproducibility and cost accounting.

Smaller products and focused experiments are part of the same practice: they let an idea, an interaction pattern or a new workflow be validated quickly, before a larger system is committed to.