App Building for Citizen Developer

Citizen developer infrastructure

A structured framework to guide colleagues from first idea to secure deployment, balancing innovation speed with corporate governance.

Security-firstLow-frictionAutomated pipelineGuided intake
Where we are today

Current state

The full ABCD framework described below is the target end state. Today only some pieces are in place; the rest is being designed and evaluated.

What we have now

📋

Project intake skill

A Claude Code skill that guides citizen developers through scoping their idea: audience, data sensitivity, integrations, AI usage. Produces an assessment markdown that becomes the starting point for review.

Available
🦊

Citizen developers GitLab group

A dedicated GitLab group at gitlab.com/docebo/internal-citizen-developers where citizen-developer projects live, with branch protection and standard templates (agents.md, .gitignore, push guidelines) ready to clone. See Source code repository below for the full flow.

Available

Source code repository

Citizen-developer projects must live in a single, centralized place so AI Ops can apply branch protection, CI/CD pipelines, and security scanning uniformly across all of them.

If you have GitLab access, push your project to the dedicated group: gitlab.com/docebo/internal-citizen-developers.

The intake skill scaffolds a new repo there with the standard templates (agents.md, .gitignore, branch-protection rules) so you don’t start from scratch.

If you don’t have GitLab access, we’re actively working on a path for non-engineering colleagues — likely a managed flow where AI Ops creates the repo on your behalf and gives you a controlled write surface (GitLab Web IDE, MR-based pushes from Claude Code, or similar). In the meantime, reach out to AI Ops on Slack or via #ai-ops and we’ll set the project up manually.

Deployment platforms

These are the enterprise deployment platforms either in active use or under evaluation for citizen-developer projects. None of them is yet wired to a self-service pipeline — every deployment today still goes through AI Ops.

▲

Vercel

Hosting frontend / static / serverless apps. Pro plan with SSO. Used as preview environment for some projects.

Production
🌐

Render

Vercel alternative under evaluation as a potential all-in-one solution (hosting + database).

Evaluation
🛠️

Coolify

Self-hosted deployment platform. Already used to deploy the Performance Index for Inspire 2026 project. Provides nginx, IP allowlists, and Let’s Encrypt out of the box.

Internal Use

AWS

Existing enterprise cloud account. Already used in production for custom internal projects (ECS / Lambda / Amplify). Default target for workloads with heavier compliance or scale requirements.

Production

Default network access: behind CATO

Apps built by citizen developers should be placed behind CATO by default, so they’re only reachable from the corporate network (employees on the Docebo SASE/SSE). Exceptions — public-facing apps, third-party integrations, partner access — must be discussed up-front with AI Ops and the Security team.

When configuring an IP allowlist (in nginx, Coolify, Vercel Trusted IPs, AWS security groups, etc.), use these CATO egress IPs:

185.114.123.133/32
45.62.188.108/32
209.206.13.74/32

Document any deviation from this default in the project’s repo (a short note in the README or ACCESS-CONTROL.md is enough), so it’s clear later who approved the exception and why.

How to enforce this on Vercel (Trusted IPs)

Vercel has a built-in Trusted IPs allowlist under Deployment Protection. No edge middleware needed.

  1. Open your project on Vercel → Settings → Deployment Protection.
  2. Scroll to the Trusted IPs card.
  3. Flip the toggle to Enabled and pick the scope (Production Deployments is the typical default; pick All Deployments if you want preview URLs gated too).
  4. Under IP / CIDR, add the three CATO IPs one per row (Vercel’s UI accepts plain IPs and treats them as /32, so you can paste either 185.114.123.133 or 185.114.123.133/32). Label each row CATO so it’s obvious later who put them there.
  5. Click Save.

Result: only requests originating from those three IPs hit the deployment. Anyone else gets a Vercel auth challenge.

Notes:

  • Trusted IPs is a Vercel Pro / Enterprise feature. If your project is on Hobby it won’t show up — check with AI Ops to move the project to the Docebo team plan.
  • Maximum 20 IPs per project; we use 3.
  • Leaving the scope on Production Deployments keeps preview URLs publicly reachable, which is usually what you want for stakeholder review. Switch to All Deployments if previews must be gated too.
  • If a single endpoint must remain public (e.g. /api/webhook for a third-party integration), use Deployment Protection Exceptions in the same panel rather than turning the whole allowlist off.

How to enforce this on Coolify / nginx

See ACCESS-CONTROL.md for the full nginx config the AI Hub itself uses (X-Real-IP checks against the same three CATO IPs, plus a Glean crawler exception). Use it as the template for any internal app deployed on Coolify.

Autonomous deployment is not yet possible. Citizen developers cannot currently push code to a production environment without involvement from the AI Ops team. The framework below describes the workflow we are building toward — see the step-by-step deploy guide for the linear checklist of how that target flow will look in practice.


Future plan

Where we want to go

The sections below describe the target App Building for Citizen Developer (ABCD) — the end-to-end flow from idea to autonomous, governed deployment. These pieces are in design and not yet operational.


Why this framework

The problem we’re solving

Rapid AI adoption has led to tech sprawl: apps built without review, unauthorized deployments, fragmented tooling. ABCD introduces a clear path from idea to production, with the right security checkpoints along the way.

💡

Idea

A colleague has an idea for an app or tool

📋

Qualify

Conversational intake assesses scope and risk

Review

Security and Legal verify automatically and manually

🚀

Deploy

Automated pipeline from repo to production


The end-to-end process

Complete workflow

Every step is designed to be as frictionless as possible for business users while maintaining the governance required.

1

Conversational intake

The citizen developer starts a guided session (skill/plugin in Claude) that works as a structured interview. The tool collects information about: data type (internal/external), audience, business criticality, required integrations, and AI usage. The output is an assessment document (markdown) containing all the context needed for subsequent reviews.

Claude SkillAutomatedSelf-service
2

Routing and project creation

Based on the assessment, the project is routed to the correct path. A repository is automatically created in the dedicated citizen developer GitLab group. The repo contains preconfigured templates: agents.md (AI instructions), .gitignore, and push guidelines. Only the master branch is controlled by the AI Ops team; colleagues work on separate branches.

GitLabTemplate repoBranch protection
3

Development and assisted push

The citizen developer builds the app using approved tools (Claude Code as the primary platform). The development skill guides the user through pushing code to GitLab, minimizing the need to know Git. Authentication happens via OAuth with a simple flow (click a button). The AI performs automatic code reviews during development, using “software architect” and “security engineer” profiles.

Claude CodeAI code reviewOAuth
4

Pull request and automated review

When the app is ready, the citizen developer opens a Pull Request to master. This trigger automatically activates: security code scanning (Wiz), data exposure checks, and dependency/package verification. The Security and Legal teams receive notification and perform the required manual checks. An estimated completion time (4–14 days) is communicated to the requester.

Security scanWizLegal reviewAuto-merge checks
5

Automated deployment

Once the PR is approved and code is merged to master, the CI/CD pipeline automatically deploys the app to the hosting platform (Vercel, Render, or AWS ECS). The citizen developer doesn’t need direct access to the hosting platform — everything goes through the repo. The AI Ops team maintains control over the repo-to-platform connection.

CI/CD PipelineAutomated hostingZero-touch deploy

Intake process

How projects get assessed

The conversational intake guides the citizen developer through a series of questions that determine the required review level and deployment path.

🚀 The citizen developer describes their idea

The AI skill collects basic information: purpose, audience, functionality

↓

Does the app handle external data or PII?

Customer data, personal information, financial data, etc.

↓
Yes — External data

Full review

Mandatory Security + Legal review. Deep code scanning. Estimated time: 7–14 days.

No — Internal data only

Lightweight review

Maximum automation. Automated scans with fast-track approval. Estimated time: 4–5 days.

↓

✅ Output: assessment document

Markdown with all collected information, inserted into the Jira ticket as a text field. Becomes the foundation for all subsequent reviews.


Technical architecture

How the pieces connect

The infrastructure is designed to separate citizen developer work from operational control, keeping the pipeline secure and automated.

Citizen developer

🧑‍💻 Claude Code

Primary development platform. Integrated skills and plugins guide the end-to-end process.

📋 Intake skill

Conversational interview that produces the assessment markdown and opens the ticket.

📤 Assisted push

AI handles OAuth, commit, and push to GitLab. The user doesn’t need to know Git.

Platform

🦊 GitLab

Centralized repository. Dedicated top-level group for citizen devs. Branch protection on master.

🔀 Pull request

Automatic trigger: security scan, AI code review, notification to Security and Legal.

⚙️ CI/CD pipeline

GitLab pipeline deploying to Vercel/Render/AWS ECS after merge to master.

Governance

🛡️ Security team

Mandatory review. Wiz for automated scans. Data exposure and dependency verification.

⚖️ Legal / Compliance

Review for apps with external data. Coordination with Raj for compliance.

👥 AI Ops team

Master branch owner. Manages templates, skills, enablement, and overall governance.


Who does what

Roles and responsibilities

Every actor has a clear role in the process. The goal is to minimize the burden on citizen developers by shifting complexity to the operational teams.

🧑‍💻 Citizen developer

The colleague building the app. No Git or DevOps knowledge required.

Starts the intake session · Builds the app with Claude Code · Uses the assisted push skill · Opens the Pull Request

🔧 AI Ops team

Defines the process, creates the materials, and maintains control.

Manages the GitLab group · Develops and maintains skills · Controls the master branch · Coordinates with Security and Legal

🛡️ Security team

Validates app security before production deployment.

Runs code scanning (Wiz) · Verifies data exposure · Checks dependencies and packages · Approves or blocks deployment

⚖️ Legal / Compliance

Ensures compliance for apps handling sensitive or external data.

Review for external data/PII · Regulatory compliance verification · Coordination with Raj · Final sign-off when required


Tech stack

Tools and platforms

The strategy is to consolidate on a few quality tools, avoiding the tech sprawl that created confusion in the past.

Claude Enterprise

Primary AI platform. $20/seat with configurable per-user caps. Replaces the current multi-tenant model.

Strategic
💻

Claude Code

AI-powered development IDE. Integrated skills and plugins for the citizen dev workflow.

Active
🦊

GitLab

Centralized repository. Dedicated top-level group with branch protection and CI/CD pipelines.

In setup
▲

Vercel

Web app hosting. Pro plan (~$15K/year with SSO). Enterprise too expensive at $50K.

Active (Pro)
🌐

Render

Vercel alternative under evaluation. Potential all-in-one solution (hosting + database). Target budget: $25K.

Under evaluation
🛡️

Wiz

Automated security scanning in pipelines. Can lead to automatic approval for low-risk apps.

Integration planned