Skip to main content

Revally · Product development · AI-assisted delivery

A delivery pipeline for building Revally with AI

How three founders with no engineering team are replacing a white-label platform with a Next.js 16 product, using single-task PRs checked by GitHub Actions and tested in Coolify previews.

Explore Revally.fr
Revally homepage presenting its AI local visibility solution for physical locations

Client case study · Founding CTO

By Byrds ConsultingUpdated on 6 min read

At Revally, AI accelerates the first pass; the delivery pipeline still has to make every change understandable, testable and maintainable by the CTO.

The company

Three co-founders, one serving as CTO

Revally helps restaurants, bars, pharmacies and other physical locations manage their online presence. The product brings together local search, syndication of business information to more than 50 platforms, review management, social content and AI-assisted capabilities.

Since early 2026, one of the three co-founders has served as CTO. The company has no dedicated engineering team.

A white-label partner solution made it possible to launch the service and learn from the market. The company is now building its own platform to own the experience, data and workflows that make the product different.

The founding constraint

Use AI to increase output without accumulating code the CTO cannot review or maintain.

  • Grow the proprietary product without interrupting the existing service.
  • Keep every change small enough for the CTO to understand, test and revise.
  • Automate mechanical checks without delegating product choices or merge approval.

Product transition

The white-label product validated demand, not the new architecture

The partner product validated demand before the company committed to a full build. The new platform is therefore not a page-by-page reproduction. Revally is progressively rebuilding the capabilities where it needs to own the data model, user experience and pace of change.

Code can be proposed quickly, but the CTO still has limited review time. Each task must be precise enough for him to inspect the diff, test the behaviour and take over the implementation when needed.

Differentiation

Which data, experiences and AI capabilities should Revally own rather than the existing provider?

Continuity

How can the new product be built while the white-label solution continues to support existing use cases?

Review capacity

Does the pull request have one clearly scoped objective that the CTO can genuinely review and test?

Merge readiness

Does every PR have checks, a Docker image built by CI and an isolated preview environment?

This leaves review time for product behaviour, architecture and risk.

Technical foundation

Make every change reviewable before merge

The platform runs on Next.js 16 and the App Router. Durable workflows run through Vercel’s Workflow SDK on Revally’s own infrastructure. The application is packaged with Docker, deployed through Coolify and hosted by OVH in France.

GitHub Actions runs linting, type checking, tests and the Next.js build, then builds the Docker image. Coolify deploys a preview for the pull request. The diff, check results and live environment give the CTO concrete material for review.

Single-task PR

Goal, acceptance criteria and boundaries defined by the founders before code is produced.

Next.js 16 and Workflow

Product features and durable workflows built on the App Router with extensive AI assistance.

GitHub Actions and Docker

Linting, type checking, tests and application builds for every pull request, with a Docker image built by CI.

Coolify preview on OVH

An isolated environment for testing each change before merge.

Handwritten and AI-assisted code follow the same path.
The merge contract, summarised in TypeScriptTypeScript
type RequiredCheck = 'lint' | 'typecheck' | 'tests' | 'build' | 'docker'
type CheckStatus = 'pending' | 'passed' | 'failed'
type ReviewFinding = { blocking: boolean }
type AutomatedReview = {
    status: CheckStatus
    findings: ReviewFinding[]
}
type Preview = {
    status: CheckStatus
    url?: string
    commitSha: string
}

type PullRequest = {
    headSha: string
    scope: {
        kind: 'single-task' | 'multi-task'
        check: CheckStatus
    }
    checks: Record<RequiredCheck, CheckStatus>
    preview: Preview
    automatedReview: AutomatedReview
    humanDecision: 'pending' | 'merge' | 'request-changes'
}

const requiredChecks: RequiredCheck[] = [
    'lint', 'typecheck', 'tests', 'build', 'docker',
]

const canMerge = (pullRequest: PullRequest) => {
    const allChecksPassed = requiredChecks.every(
        (name) => pullRequest.checks[name] === 'passed',
    )

    return (
        pullRequest.scope.kind === 'single-task' &&
        pullRequest.scope.check === 'passed' &&
        allChecksPassed &&
        pullRequest.preview.status === 'passed' &&
        Boolean(pullRequest.preview.url) &&
        pullRequest.preview.commitSha === pullRequest.headSha &&
        pullRequest.automatedReview.status === 'passed' &&
        !pullRequest.automatedReview.findings.some(
            ({ blocking }) => blocking,
        ) &&
        pullRequest.humanDecision === 'merge'
    )
}

This type illustrates the process; it does not reproduce the GitHub Actions file. The scope must be valid, every check must pass, the automated review must pass with no blocking findings and the preview must be ready for the current commit. The CTO then reads the diff, tests the relevant flow and chooses whether to merge or request changes.

Public Revally section presenting the local presence platforms synchronised by the product
The public product covers search engines, assistants and directories where locations need to keep information consistent.

How a change ships

From idea to merge in four checkpoints

AI assists with triage, preparation, development and review. A founder defines the expected outcome, and the CTO remains responsible for merging into the main branch.

  1. 01

    Scope one task

    A founder defines the goal, acceptance criteria and what the pull request must not change.
  2. 02

    Produce a first draft

    AI proposes an implementation, tests and revisions. Most of the initial code can come from this assisted work.
  3. 03

    Run the automated checks

    GitHub Actions runs linting, type checking and tests, then builds the application and Docker image. Coolify deploys a pull-request preview.
  4. 04

    Review and decide

    Automated reviews flag potential issues. The CTO inspects the diff, tests the user flow in the preview, then merges or requests changes.

Time already spent on a proposal is not a reason to keep it. If the result is unconvincing, the task goes back for revision or the implementation is discarded.

What actually changes

AI increases delivery capacity, not accountability

Most first-pass code is produced with AI assistance, but human review remains the limiting factor. Automation filters mechanical issues so that the CTO can focus on behaviour, architecture and product impact.

What the setup enables today

These outcomes describe the current process; they are not a productivity benchmark.

  • The proprietary product is developed by the three founders without a dedicated engineering team.
  • Handwritten and AI-assisted code pass the same GitHub Actions checks.
  • Every pull request gets its own Coolify preview environment before merge.
  • Automated reviews produce findings that the CTO verifies before merging.

The principle that guides the team

At Revally, the goal is not to accept more code. The repository, CI and previews make weak implementations cheap to discard, leaving only code the CTO understands and can deploy.

Product and technical documentation

  1. Revally. Product website. Public positioning, target sectors and local presence, reviews, content and AI capabilities.
  2. Workflow SDK. Vercel. SDK used to build durable and observable TypeScript workflows.
  3. GitHub Actions. GitHub Docs. Reference documentation for pull request checks and automation.
  4. GitHub Preview Deploy. Coolify Docs. Documentation for isolated environments created from pull requests.
  5. Self-hosting. Next.js documentation. Official constraints for independently deploying a Next.js application.

Want to move faster with AI without increasing the risk of every PR?

Let’s establish the checks, previews and review rules that make AI-assisted code verifiable in your stack.