All projects
Haziq Nazeer
BackendAI Social Platform Backend2025 — Present

Vybstack

The backend for a social app that ranks by “vibe”, not likes — a Claude-powered engine that auto-tags posts, profiles user personality “archetypes”, and flags each post's bias, over a feed tuned with composite indexes for scale.

Backend Engineer
V

01 — Overview

The project

Vybstack is the backend for a mobile social platform organised around emotional “vibes” rather than likes. Users react with one of three vibe levels, join interest “Tribes”, and attach music to posts. Two AI hooks set it apart: an “archetype” system that profiles a user's personality from their liked content, and an AI “Bias Indicator” that classifies each post's political lean, agenda risk and emotional framing — “context, not truth”. It's a Node.js / Express + Prisma / PostgreSQL API.

Role

Backend Engineer

Timeline

2025 — Present

Stack

8 technologies

02 — Context

Problem & approach

The problem

A personalized feed has to rank content cheaply and stay fast as posts and reactions scale, enrich every post with unreliable LLM output without blocking the writer, and evolve its schema without breaking live mobile clients.

My approach

I built the entire backend. The hybrid feed ranks candidates by a weighted blend of interest match, tag preference, recency and engagement, served with cursor pagination over a composite (isDeleted, visibility, createdAt) index added in a dedicated index migration. AI enrichment (Claude + Claude Vision auto-tagging, archetype assignment, the Bias Indicator) runs in the background after a fast write, with strict enum and numeric-clamp validation so a misbehaving model can't poison the database. I refactored a per-interest N+1 loop into two batched queries, added global and per-route rate limiting, and shipped continuously via GitHub Actions to EC2 / PM2.

03 — Showcase

A closer look

Personalized feed engine — weighted blend of interests, tags, recency & engagement

Personalized feed engine — weighted blend of interests, tags, recency & engagement

AI Bias Indicator — Claude classifies each post's lean, agenda risk & framing

AI Bias Indicator — Claude classifies each post's lean, agenda risk & framing

Tribes v2 — community spaces with per-tribe moderation rules

Tribes v2 — community spaces with per-tribe moderation rules

04 — Capabilities

Key features

01

Vibe-based reactions

Three vibe levels that feed a personalized tag-preference model.

02

Hybrid feed ranking

Weighted blend — interest 0.4 / tag 0.3 / recency 0.2 / engagement 0.1.

03

AI archetypes

Claude profiles a user's personality from the content they vibe with.

04

AI Bias Indicator

Claude + Vision classify lean, agenda risk, persuasion and emotional framing.

05

Interest “Tribes”

Community spaces with per-tribe moderation rules (v2).

06

Music & safety

Music via Jamendo + Deezer; blocking, hidden posts, reports and soft-delete purge.

05 — Contribution

My role

As Backend Engineer, here is exactly what I owned and delivered on this project.

  • Architected and built the entire Node / Express + Prisma backend end to end.
  • Built the weighted, cursor-paginated personalized feed engine.
  • Integrated Claude for auto-tagging, archetype profiling and the multi-dimensional Bias Indicator — including a Clarifai → Claude Vision migration that halved image-post latency.
  • Hardened LLM output with regex JSON extraction, enum validation and numeric clamping.
  • Tuned performance: a composite-index migration, an N+1 → batched-query refactor and rate limiting.
  • Set up CI/CD via GitHub Actions to AWS EC2 / PM2.

06 — Engineering

Challenges I solved

Challenge

Enriching every post with AI without slowing down posting.

Solution

createContent returns immediately, then runs tagging and the Bias Indicator in a background setImmediate block with a foreground / background retry strategy.

Challenge

LLMs return malformed or out-of-range data that could poison the feed.

Solution

Wrapped every AI response in regex JSON extraction, enum validation and numeric clamping, with a null sentinel for “not yet classified”.

Challenge

Creating a post ran 2×N queries to associate interests.

Solution

Refactored the per-interest loop into two batched queries (findMany IN + createMany skipDuplicates).

Challenge

Evolving the schema without breaking shipped mobile clients.

Solution

Dual-wrote the deprecated field alongside new bias columns during the client rollout window.

07 — Toolbox

Built with

Node.jsExpressPrismaPostgreSQLAnthropic ClaudeClaude VisionAWS S3Firebase FCM

08 — Impact

Outcomes

4-signal

Weighted feed ranking

Claude

AI tagging, archetypes & bias

2× faster

Image posts after AI migration

Next project

Premier Resolution

BPO & Debt-Recovery Company Website

Want something like this built?

I'm available for freelance work. Let's build yours.

Hire me