# reaferral: I built a free referral tracker so agents stop bleeding commissions into spreadsheets

Source: https://www.michaelchurley.com/blog/reaferral-agent-referral-platform  
Published: 2026-08-08  
Author: Michael C. Hurley  
Tags: reaferral, real-estate, referrals, convex, clerk, nextjs, martech, vercel, mdx, saas

![Reaferral Inman-style landing. BREAKING referral tracking hero](/blog/reaferral-agent-referral-platform/screenshots/home.png)

## Who

I watch real estate agents make a quarter to a third of their income on referrals and still track those deals in spreadsheets, group texts, and vibes.

That is not a CRM problem. That is a **referral accountability** problem. Who sent it. What fee was agreed. What stage the deal is in. Whether the check showed up when it closed.

Reaferral is for licensed agents who are tired of losing money to ambiguity. Solo producers who want a link in the email signature that actually attributes. Team leads who need roles and a shared pipeline. Builders who already speak Next.js, Convex, and Clerk and want the vertical product without another Electron tray.

If your week includes "did that referral ever close" and a half-finished Google Sheet. that is the room.

## What

I built **Reaferral**: an agent-to-agent real estate referral platform.

Stack on the wire: **Next.js 16.1.6** (App Router, Turbopack), **Convex** for the reactive backend, **Clerk** for auth, Tailwind v4, Radix/shadcn-style UI, Recharts, PostHog, Sentry configs, Resend, Stripe Connect routes. Bun monorepo. Workspaces: `web` (`reaferral-web` 0.1.0) and `mobile` (Expo `reaferral-app` 1.0.0). Hosted at [reaferral.vercel.app](https://reaferral.vercel.app). GitHub repo private under HurleyUS.

![Features page: product surfaces and mockups](/blog/reaferral-agent-referral-platform/screenshots/features.png)

What ships in the product surface:

**Referral tracking**. create, send, receive; fee percent or flat; status through the deal.

**Trackable links**. short codes under `/r/[code]`, click analytics, campaign names.

**Pipeline**. lead to active to under contract to closed (and payout adjacency in schema).

**Teams**. slugs, invites, roles (owner/admin/financial/assistant/member), pending joins that survive signup.

**Messaging**. per-referral threads in Convex.

**Twelve dashboard themes**. neumorphism, gradient-wave, dark-pro, inman-style, minimal-light, plus brokerage-inspired skins (Keller Williams, RE/MAX, Zillow, eXp, Trulia), Raycast, Brutalist.

**Content engine**. **423** MDX files under `web/content/stories/`. Linguist says MDX is ~76% of the repo by bytes. The landing still says "66+ Expert Articles." The filesystem disagrees in the agent's favor.

![Stories journal index](/blog/reaferral-agent-referral-platform/screenshots/stories.png)

![Example story. 47-second setup](/blog/reaferral-agent-referral-platform/screenshots/story-47.png)

Public GTM pages: Inman-style editorial landing (orange LIVE strip, green REA**FERRAL** wordmark, navy stats band), Features, Stories, Investors. Auth: Clerk sign-in/up to `/dashboard`.

![Clerk sign-up](/blog/reaferral-agent-referral-platform/screenshots/sign-up.png)

![Investors page](/blog/reaferral-agent-referral-platform/screenshots/investors.png)

Positioning in the ProductHunt/HN drafts on disk: core tracking **free forever**; premium later (follow-ups, agreements, payment tracking). I am not pretending the Stripe Connect routes mean the billing story is finished.

![Illustrative pipeline mock, not a live authenticated dashboard](/blog/reaferral-agent-referral-platform/screenshots/pipeline-mock.png)

## Where

It runs on Vercel at **reaferral.vercel.app**. Clerk on the live deploy is still a **dev** instance (`pk_test_…`), the marketing pages render signed-out; the dashboard sits behind auth.

Repo: [HurleyUS/reaferral](https://github.com/HurleyUS/reaferral). Private. Branch `main`. HEAD at pack time `8ba157a`. **501** commits. Zero GitHub Releases. MIT license file present (copyright line dated 2021).

![Monorepo map](/blog/reaferral-agent-referral-platform/screenshots/repo-structure.png)

The audience sits next to agent networks, Inman-shaped media, and the same Convex/Clerk/Vercel family I use elsewhere, not next to "what is a referral fee" explainers.

Chrome extension lives in a **sibling** repo (`michaelmonetized/reaferral-chrome-extension`). Not this pack.

## When

**2024-08-07.** `init`.

**2026-01-08.** Docs snap into focus: OPPORTUNITIES, PLAN, README. this is a real-estate referral platform, a tracked referral pipeline.

**2026-02-04.** The real ship week. `feat: complete Convex backend and core web app`. GitHub repo created. Landing design variants. Vercel monorepo wiring. Clerk to Convex user sync.

**2026-02-05–06.** Theme system expands. Features + Stories infrastructure. Investors, privacy, terms. Shared chrome. Mobile-friendly dashboard.

**Late February through April.** The content firehose. Hundreds of `content: add new story` commits. 413 of them by pack count. Journal becomes the bulk of the tree.

**2026-02-27 onward.** Security passes. auth checks on mutations, collect bounds, Svix verification on Clerk webhooks, console cleanup for production.

**2026-05–06.** CI thrash (Blacksmith) then removal; promo banner overlap fix; nightly commits.

**2026-08-08, morning Eastern.** X-Robots-Tag set to `index, follow`, then three unblock fixes so production deploy stops choking. Last push. That is the clock stop for this pack.

**2026-09-08.** Pack day. Site up. `og-image.png` 404s. Draft only. no blog publish, no social blast, no git push from this task.

## Why

Because referral income is real and the tooling agents use for it is mostly improvisation.

Because I already had the Convex/Clerk/Next pattern and the missing piece was the vertical: links, fees, stages, teams, and a journal that attracts the people who feel the spreadsheet tax.

Because shipping 423 MDX stories into a private monorepo is a weird flex and also a concrete SEO loop, even when the hero still says 66+.

Because the badge of honesty here is the timeline: February MVP, spring content factory, August robots unblock, still private, still free-forever core, still no tagged release.

What dashboard or sheet are you still using to remember who owes whom on a referral?
