Inspiration
AI coding tools let developers write code much faster than before. But speed without oversight creates real problems: duplicated logic, bloated functions, poor structure, and bugs that only show up in production. We built Cenli to catch these issues automatically before code gets merged.
What it Does
Cenli reviews and refactors AI-generated code before it reaches production. Here's what it does step by step:
Takes in code from a new submission or a failing CI/CD pipeline.
Checks its own history using Arize Phoenix to see if similar code caused issues before. Refactors the code using Gemini to break large scripts into smaller, cleaner modules. Scores the result against three metrics: technical debt reduction, cyclomatic complexity, and architectural drift. Logs everything, traces, prompts, and scores, to Arize Phoenix and displays it on a dashboard. How We Built It AI model: gemini-2.5-flash via the Google GenAI SDK for reasoning, function calling, and structured outputs.
- Observability: openinference-instrumentation-google-genai and arize-phoenix-otel for trace streaming over OTLP.
- MCP server: @arizeai/phoenix-mcp lets the agent read its own runtime logs at query time.
- Frontend: React, Tailwind CSS, and Vite, showing live pipeline activity, code diffs, and audit scores.
Challenges
Running Arize Phoenix locally with heavy telemetry storage caused dependency conflicts and environment bloat. We solved this by switching to arize-phoenix-otel for a streaming-only client model and using uv for fast, clean dependency resolution. This removed the reliance on native binary packages tied to the local OS.
What We're Proud Of
Getting the agent to read its own past traces and use that context to make better refactoring decisions in the present. That feedback loop, where the agent improves code based on what it learned from previous runs, is the core of what makes Cenli useful.
What We Learned
Connecting an agent to its own operational history changes what it can do. Instead of just generating code from a prompt, it can learn from past failures and apply that to new decisions. Tool design matters more than prompt design.
What's Next
We plan to connect Cenli directly to GitHub via a GitHub App webhook. This would let it post inline code review comments, apply syntax fixes, and surface Arize Phoenix metrics directly inside pull requests, without any manual steps.

Log in or sign up for Devpost to join the conversation.