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
Client case study · Founding CTO
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.
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.

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.
01
Scope one task
A founder defines the goal, acceptance criteria and what the pull request must not change.02
Produce a first draft
AI proposes an implementation, tests and revisions. Most of the initial code can come from this assisted work.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.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
- Revally. Product website. Public positioning, target sectors and local presence, reviews, content and AI capabilities.
- Workflow SDK. Vercel. SDK used to build durable and observable TypeScript workflows.
- GitHub Actions. GitHub Docs. Reference documentation for pull request checks and automation.
- GitHub Preview Deploy. Coolify Docs. Documentation for isolated environments created from pull requests.
- Self-hosting. Next.js documentation. Official constraints for independently deploying a Next.js application.