← Projects

Flirtmetrics·Dec 2025 - Present

Flirtmetrics

NestJS · MongoDB · LiveKit · Socket.io · n8n · Next.js · LLM APIs · REST APIs

The product

Flirtmetrics is a cold-approach analytics product. Users can track activity, run live sessions with participants, and coordinate in real time. My role began in backend engineering and expanded into real-time communication, frontend delivery, and publishing automation.

Real-time product work

Audio and video calling

Implemented audio and video calling with a self-hosted LiveKit deployment. The work connects call behavior to the product's own session and participant model rather than treating calling as a separate feature.

Live sessions and chat

Built live-session and participant flows alongside Socket.io chat. The result is one real-time experience for session state, participant activity, and conversation.

Product integrations

Integrated the BestTime API into the backend and continued the NestJS and MongoDB work supporting the wider product.

A publishing pipeline with memory

The first version could generate content, but generation alone did not produce a coherent series. The workflow needed order, continuity, media that reached the CMS correctly, and failures that did not disappear behind a successful run status.

I rebuilt the n8n flow as a sequence of explicit stages:

  1. A curriculum cursor selects the next chapter.
  2. Workflow state stores titles, summaries, stage, and sequence between runs.
  3. A structured outline locks the bridge from the previous post, the field experiment, and the next teaser.
  4. The article is written against that contract and validated before media generation begins.
  5. Brand-constrained hero and inline images are uploaded with unique object keys.
  6. The NestJS publishing step uses idempotency keys so a retry does not create duplicate posts.

Media reliability

Multipart upload responses did not always expose the final URL at the same depth. I added deep URL extraction, unique storage keys, and HTML injection only after a valid asset URL was available. Live blog fetches use fresh data, while URL fingerprinting prevents production from serving an older image under a reused path.

Failure isolation

Media generation and upload can retry or fall back without discarding an otherwise valid article. Validation blocks generic prompts and burned-in text before publication. Pagination remains API-driven, and the workflow never silently swaps in unrelated stock media.

Frontend ownership

After completing an initial set of website fixes, I redesigned and implemented the wider site experience. That work made frontend delivery a regular part of the role while keeping the product and its positioning as the constraint.

The result

The work now spans the product's backend, real-time calling and chat, website, and publishing operations. The common thread is systems ownership: explicit state, clear contracts, durable storage, predictable retries, and behavior that can be traced when something fails.

Stack

NestJS · MongoDB · LiveKit · Socket.io · n8n · Next.js · LLM APIs · REST APIs