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:
- A curriculum cursor selects the next chapter.
- Workflow state stores titles, summaries, stage, and sequence between runs.
- A structured outline locks the bridge from the previous post, the field experiment, and the next teaser.
- The article is written against that contract and validated before media generation begins.
- Brand-constrained hero and inline images are uploaded with unique object keys.
- 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