Skip to content

Case study · Built by our founder

Code Cleanse

A live SaaS with a working paid funnel, built full-stack and solo.

Code Cleanse gives non-technical founders an independent audit of the code their outsourced team ships, sold as one-time and recurring review tiers. Marketing site, four-step hire funnel, and Stripe subscription checkout, all live at codecleanse.com.

  • Founder portfolio
  • Productivity / dev tools
  • SaaS marketing site
  • Next.js + TypeScript
  • Stripe subscriptions
  • Full-stack
Code Cleanse marketing landing page
Engagement type
Founder portfolio (pre-Inseed, Rehan project via Upwork)
Platform
Web (Next.js Pages Router)
Role
Sole full-stack engineer (frontend + backend)
Industry
Productivity and developer tools / SaaS
Live at
codecleanse.com
Status
Marketing site and paid funnel live; internal dashboard partially built
Key integrations
Stripe, Firebase / Firestore, Contentful, SendGrid, Calendly

The story

A founder who cannot read code cannot judge the code they pay for.

Code Cleanse predates Inseed. Our founder built it as the sole full-stack engineer on Rehan’s project, an Upwork connection, before Inseed existed. It is founder-portfolio work, not an Inseed client project, and it is the story the team leans on for shipping a live SaaS end to end.

The product solves a specific trust problem. A non-technical founder who outsources development has no way to judge the quality of what their dev team ships, so quality can erode quietly while the invoices keep coming. Code Cleanse gives that founder an independent audit and review of their outsourced code, sold as a one-time review or an ongoing subscription.

The build had to do two jobs at once. It had to sell the service convincingly to a non-technical buyer, through a marketing site with real social proof, and it had to actually take money and fulfil across one-time and recurring plans, which is where most of the engineering weight sat.

What we built

A marketing site that also runs the whole paid funnel.

The public site carries the pitch: an animated typewriter hero, social-proof stats, an engineer-roster carousel, a feature grid covering the six audit dimensions, and a CTA funnel that leads into the hire flow. Three founder video testimonials play inline with single-play switching, and the blog is powered by Contentful so non-engineering content can ship without a deploy.

Buying is a four-step hire funnel: sign up, describe the project, pick a plan, pay. Every step is validated with Formik and Yup, and the lead is written to Firestore as it moves through. The plan step recommends a tier dynamically based on whether the founder wants ongoing help rather than a single review.

Checkout runs on Stripe in subscription mode, and the post-purchase flow closes the loop server-side: it verifies the Stripe session, sends a SendGrid welcome email, fires a server-side Facebook Conversions API purchase event, marks the Firestore record paid, and drops the buyer into a Calendly booking with an onboarding video. The audit deliverable itself is handled off-platform, so the app owns acquisition and fulfilment, not the review workflow.

Architecture

Next.js front to back, with the payment logic on the server.

The site is Next.js 13 on the Pages Router with React 18 and TypeScript, styled with Tailwind and animated with framer-motion and a typewriter effect. Firebase acts as the datastore: the client writes leads and hire records to Firestore, and firebase-admin reads and updates them server-side. There is no user login or auth system, because the funnel does not need one; the record is keyed to the purchase.

The load-bearing logic lives in the Stripe integration. Checkout is subscription-mode against product and price IDs per environment, with coupon support, and a webhook (reading the raw body via micro) builds the correct subscription schedule for the plan the buyer chose. Contentful drives the blog with typed codegen, SendGrid handles transactional email, and the tracking stack layers Google Analytics, Google Ads conversions, Microsoft Clarity, the Meta Pixel, and the server-side Facebook Conversions API. Deployed on Vercel with next-seo and next-sitemap.

One part is deliberately not claimed as finished: the internal dashboard was designed and partially coded but never completed. In production the audit is delivered off-platform over email, Calendly, and GitHub, so the shipped surface is the marketing site plus the funnel, not a full product app.

Selected screens

Selected screens.

Marketing landing page
Marketing landing page
Developer landing
Developer landing
Services
Services
Pricing tiers
Pricing tiers
Hire funnel: developer onboarding
Hire funnel: developer onboarding
Hire funnel: developer onboarding, step two
Hire funnel: developer onboarding, step two
Hire funnel: user onboarding
Hire funnel: user onboarding
Completed profile
Completed profile
Sample project report
Sample project report

Stack

Stack and integrations.

Framework
Next.js 13 (Pages Router), React 18, TypeScript
Styling
Tailwind CSS, framer-motion, typewriter and animate.css
Forms
Formik + Yup (with yup-phone) across the four-step funnel
Payments
Stripe subscription checkout + schedule-building webhook (micro for raw body)
Data
Firebase Firestore (client) + firebase-admin (server), lead and hire records
CMS
Contentful with typed codegen for the blog
Email
SendGrid (transactional welcome and success)
Scheduling
Calendly (react-calendly) for the post-purchase onboarding call
Tracking
GA, Google Ads, Microsoft Clarity, Meta Pixel, Facebook Conversions API
Deploy
Vercel, with next-seo and next-sitemap

One decision worth telling

One webhook, three subscription shapes.

The pricing had three tiers with genuinely different billing behaviour: a one-time review, a monthly plan that starts with a larger first payment and then continues, and an annual plan billed yearly. Stripe subscription mode is happy to start a subscription, but making each plan behave correctly after the first charge is where the real work is.

The fix was to move the logic into a webhook that builds the right subscription schedule per plan: a one-time purchase cancels the schedule after it fulfils, a monthly plan adds the remaining iterations, and the annual plan bills on its own cadence. Pairing that with a post-purchase flow that verifies the session, emails the buyer, fires the server-side conversion event, and marks the record paid meant a single funnel could sell and correctly bill three different commercial shapes without manual cleanup.

Outcome

What shipped.

  • A live SaaS marketing site at codecleanse.com with a working end-to-end paid funnel.
  • Tiered subscriptions handled correctly across one-time, monthly, and annual plans.
  • Real founder video testimonials with inline single-play switching as social proof.
  • Full server-side fulfilment: Stripe session verify, SendGrid email, Facebook Conversions API, Firestore update, Calendly booking.
  • A Contentful-powered blog so marketing content ships without a code deploy.

What we would do differently

What we would do differently.

Most agencies skip this section. We include it because honest hindsight is the kind of credibility you cannot buy.

Finish the fulfilment surface, or commit to off-platform sooner.

The internal dashboard was designed and partially coded, but the audit deliverable ended up handled off-platform over email, Calendly, and GitHub. That split left work half-built. The cleaner call is to decide early whether the review lives in the app or outside it, and to build only the version you will actually ship.

Model the subscription schedules before wiring the checkout.

The three plans behave differently after the first charge, and the schedule logic is where the complexity lives. Sketching each plan’s full billing lifecycle up front, rather than discovering the edge cases at the webhook, would have made the Stripe integration faster to get right.

Instrument the funnel steps, not just the purchase.

The tracking stack is thorough at the point of purchase. Adding step-level events across the four-step hire funnel would have shown where non-technical buyers hesitate, which is exactly the insight a conversion-focused SaaS site wants most.

Related work

Other case studies.

Built by Inseed

The LYVE App

Zero to App Store in under 4 months. Past 3,000 users in the next 3.

Read the case study

Built by Inseed

Playlists

Vibe search shipped in 3 weeks. AI searches up ~200%.

Read the case study

Shipping a SaaS with a paid funnel?

Marketing sites, subscription and pricing flows, Stripe fulfilment, conversion tracking. Tell us what you are launching and we will tell you what the first four weeks can de-risk.

Book your audit