Skip to content

ducktyper17/loopin

Repository files navigation

LoopIn - the matching layer for real-life intent

Live demo: https://loopin-pied.vercel.app Video: https://youtu.be/v37ixsdrwz8

You don't browse people. You post a plan. One engine matches any intent (coffee, sports, travel, and beyond) on timing, location, vibe, and trust, then honestly tells you who fits, who doesn't, and why.

Built for H0: Hack the Zero Stack (Vercel + AWS Databases). Track: Monetizable B2C. Backed by Amazon Aurora PostgreSQL + pgvector.

The thesis: intents → intents (one engine, N configs)

A category is just a config object (src/lib/categories.ts). The matching engine (src/lib/engine.ts) is generic — it never mentions coffee/sports/travel by name. Adding pickleball, roommate, or coworking is a new object, not new engine code. That's the platform.

The engine has three layers

  1. Hard filters — deal-breakers eliminate, never rank (time overlap, budget overlap, verified-only, city). Wrong matches never appear.
  2. Soft signals — a transparent weighted 0–100 score. Every point is traceable to a field. No black box.
  3. Conflict rules — the honesty layer. Surfaces why not even on strong matches, and flags some matches "we don't recommend this one." No other matching app tells you no.

Vibe (the fuzzy 20%) uses pgvector cosine similarity computed in SQL (src/lib/matches.ts). The LLM, when present, only phrases the result — the database decides.

The database matters to the product

Amazon Aurora PostgreSQL (pgvector) isn't just storing users — it is the engine: hard constraints in WHERE, soft ranking over attributes JSONB, and vibe similarity via the <=> operator, in one query.

Run it locally

cp .env.example .env
npm install
npm run db:up      # Postgres + pgvector via Docker (port 5433)
npm run seed       # realistic demo data (incl. a deliberately bad match)
npm run dev        # http://localhost:3000

Optional: set ANTHROPIC_API_KEY to enable LLM extraction of the one-sentence intent. Without it, a deterministic heuristic fills the card.

Demo flow

  1. Pick a category → write one sentence → watch it become a structured Intent Card.
  2. See ranked matches with a traceable score breakdown.
  3. See a great match, and a ⚠️ "don't recommend" match (the moat).
  4. Same engine across coffee / sports / travel — three contrasting axes.

Stack

  • Next.js 16 (App Router) on Vercel
  • Amazon Aurora PostgreSQL + pgvector (local: dockerized pgvector/pgvector:pg16)
  • pg for queries; local hashing embedding (swap for Voyage AI in prod)

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors