Back to blog

· RefRef team

Build vs. buy a referral system: what AI changes, and what you still own

Compare a custom referral system, a platform and a hybrid approach using a worked cost model, ownership boundaries and a failure-case evaluation.

A referral link is a small feature. Deciding which account deserves a reward after a payment is retried, refunded or disputed is a longer-lived responsibility. That distinction matters more than whether your first version was written by a person or a coding assistant.

AI-assisted development makes the build option worth evaluating again. You can ask an assistant to inspect an existing billing handler, sketch a data model and write tests around a proposed policy. But an estimate that ends at the first working demo leaves the operating work unpriced. Buying software can leave some of that same work with you.

The useful comparison is between three complete operating plans: build, buy, and use a platform for a defined part of the journey while keeping the rest in your application. Start with the SaaS referral program brief. Without a policy, each option will quietly estimate a different product.

Write down the boundary you are buying

Consider a team subscription product. An existing customer shares a link; a member of another company opens it and creates an account. That company later pays. The referrer earns account credit after a review period.

Who is the customer in that sentence: the person or their company? Does a second employee joining the same company create another reward? Which record establishes that the payment happened? Can a link visit replace an earlier referral? Who applies the credit, and how does support confirm that it reached an invoice?

These are decisions to settle before comparing prices. A platform may supply referral attribution and reward calculation while leaving billing credits to your backend. That can be a sensible boundary. It just needs a named owner on both sides.

ResponsibilityEvidence to request from a build or vendor proposal
Customer identityA documented mapping from your individual or company account to the referral identity
AttributionThe exact rule when more than one referral source exists
QualificationA trusted payment or application fact, including retry behavior
Reward calculationThe terms used and an explanation of the resulting amount
DeliveryA provider reference that shows the benefit was actually applied
Support and exitA traceable timeline and export of the records you need to reconcile

Do not mark a responsibility “covered” because a demo has a screen with the right label. Ask where its data comes from and run a failure case.

Put AI in the cost model where it belongs

An assistant may reduce time spent on scaffolding, glue code or initial tests. The size of that reduction depends on your repository and review process; it is not a fixed percentage to subtract from the entire project. Record the time your team actually spends on a representative slice.

Vibe coding is useful for discovering whether the interaction makes sense: where the share button belongs, whether the invitation explains the offer, and what a support timeline needs to show. Promote that prototype into production through explicit checks of its trust boundaries and behavior. Code generated quickly can still be reviewed carefully; code written manually can still be wrong.

GitHub's own Copilot code review guidance says AI review should supplement human review and describes the possibility of missed issues. Treat an assistant's “looks good” as input to review, not a release decision.

Ask the assistant to help expose the expensive cases. Stripe documents that webhook events can be duplicated and delivered out of order. An integration that awards a benefit whenever a webhook arrives needs a stronger model than a successful screenshot. Test repeated and concurrent delivery of the same business fact, not only a single HTTP request.

The AI referral program prompt provides a reusable brief for that work. It is intentionally tool-neutral; this article is a decision framework, not a setup tutorial for a particular agent.

Compare twelve months on equal terms

Here is an illustrative planning model, not a vendor quote, industry benchmark or measured implementation. Assume $120 per engineering hour and the same customer-facing scope in every option. “Maintenance” includes normal fixes and operational changes. Subscription estimates are placeholders to replace with current written quotes.

Cost over twelve monthsBuildBuyHybrid
Initial engineering160 h × $120 = $19,20040 h × $120 = $4,80070 h × $120 = $8,400
Ongoing engineering8 h/mo × 12 × $120 = $11,5203 h/mo × 12 × $120 = $4,3205 h/mo × 12 × $120 = $7,200
Hosting or platform fees$100/mo × 12 = $1,200$300/mo × 12 = $3,600$200/mo × 12 = $2,400
Total in this model$31,920$12,720$18,000

The table excludes the common reward budget, taxes, separate legal/security review and unusual incidents. Add those before approving a budget. If a vendor charges by participants, conversions or revenue, model that unit against your expected usage rather than treating the fee as fixed.

Now suppose AI cuts the build's initial engineering estimate in half, from 160 hours to 80, but changes nothing else. Its total becomes $22,320. That remains $9,600 above the buy scenario here. This does not prove buying is cheaper for your team. It shows why a faster first implementation does not by itself settle the decision. A platform with an expensive usage curve or a poor fit can reverse the result.

Avoid double counting opportunity cost: loaded engineering cost already prices the time used. If the delayed product feature has additional strategic value, describe that separately instead of adding the same hours twice.

Use a small evaluation that can fail

Run the same synthetic customer journey through each serious option. A useful evaluation ends with evidence for these cases:

  1. A new paying company earns the intended reward; another member joining it does not earn a second acquisition reward.
  2. Replaying a payment, including concurrent requests, does not create duplicate value.
  3. A refund before release follows the policy. A refund after delivery is visible to an operator and has an explicit recovery or write-off procedure.
  4. A failed external credit can retry without reissuing successful credits.
  5. A user cannot read or mutate another customer's records by changing an ID.
  6. An export lets the team reconcile the final result without relying on a dashboard screenshot.

For a purchased service, document which cases it handles and which your app must handle. For a build, name the person who will own them six months after launch. The smallest credible pilot may use manual delivery with a controlled review process; do not describe it as automated delivery.

Choose by the responsibility you want to retain

Build when a specific requirement creates enough value to justify operating the system, and a team has time to own it. Write down the requirement that a platform cannot meet. “Our UI is different” may justify a custom UI without justifying a custom reward system.

Buy when a product demonstrably covers the required boundary at an acceptable cost, and the remaining integration is understood. Check export, access control, support and reconciliation before relying on it.

Choose a hybrid when you can state a durable division: for example, the platform records the referral and calculates a reward while your billing service owns applying and reconciling the credit. Avoid a split where two systems can independently decide that the same customer earned a reward.

Make the decision reviewable. Record the assumptions, test evidence, owner and a date to revisit real costs. Use the program brief to define the scope, then run your acquisition assumptions through the referral ROI calculator. Neither a prototype nor a calculator result substitutes for operating evidence, but both can make the next decision more precise.