How a solo developer built a 51,000-line enterprise HR platform with 2,079 tests across 9 iterations using Claude Code, GitHub Copilot, and modern AI-powered workflows.
A development philosophy where AI handles the bulk of code generation while the human focuses on architecture, quality, and product direction.
Vibe coding isn't about letting AI write random code. It's a disciplined workflow where you describe what you want at a high level — the architecture, the constraints, the user experience — and then collaborate with AI tools to produce production-quality code at a pace that would be impossible alone.
The key insight: AI excels at the "how" (implementation) while humans excel at the "what" and "why" (product decisions, architecture, quality standards).
Five tools working in concert, each playing a distinct role in the development workflow.
Primary development engine. Architecture design, multi-file code generation, complex agent logic, testing strategies, and iterative refinement.
of total code output
In-editor companion for real-time autocomplete, inline suggestions, and maintaining code consistency across modules.
inline completions
Visual design tool for UI mockups and component layouts. Designs are translated to code via Claude Code, ensuring pixel-accurate implementation.
design-to-code pipeline
Manual UI testing tool for visual QA, interactive flow validation, and catching UX issues that automated tests miss. The human-in-the-loop quality gate before deployment.
manual UI verification
Automated browser testing with 14 spec files covering login, dashboard, chat, role switching, mobile responsiveness, and API health.
browser test suites
Each tool has a sweet spot — the key is knowing when to use which.
| Task | Primary Tool | Why |
|---|---|---|
| Design new agent architecture | Claude Code | Multi-file reasoning, understands system-wide implications |
| Implement agent from spec | Claude Code | Generates complete modules with tests in one pass |
| Fill in function bodies | Copilot | Fast inline completions from surrounding context |
| Write API route handlers | Claude Code + Copilot | Claude generates structure, Copilot fills patterns |
| Fix integration issues | Copilot | Real-time suggestions while debugging in editor |
| UI/UX design mockups | Figma | Visual component design before writing any code |
| Design → code translation | Figma → Claude Code | Figma provides the visual spec, Claude generates the code |
| Generate test suites | Claude Code | Comprehensive edge case coverage from spec understanding |
| Manual UI testing | Antigravity | Visual QA, interactive flows, catches what automation misses |
| Browser E2E testing | Playwright | 14 spec files testing real user flows across browsers |
| CI/CD pipeline debugging | Claude Code | Log analysis, config fixes, deployment troubleshooting |
The iterative cycle used for every feature and iteration.
Each iteration follows this cycle: human writes the spec → AI generates code + tests → run tests → review, fix, iterate. The human stays in the driver's seat on architecture and quality.
From a simple chatbot to an enterprise-grade multi-agent platform, one iteration at a time.
Transformed the Human Rights Education chatbot into a multi-agent architecture. Built auth system, RBAC with 5 permission levels, 7 core agents, RAG with ChromaDB, and HRIS connectors for Workday & BambooHR.
Added leave request workflows with multi-level approval chains, GDPR compliance framework, bias audit logging, policy violation detection, and employee lifecycle management.
PostgreSQL schema with 15+ tables, SQLAlchemy ORM models, Alembic migrations, Flask integration with session management, conversation history, and frontend UI rebuild.
OpenAI GPT-4 integration as primary model, Google Gemini fallback, cost tracking per request, streaming support, token counting, and LangSmith tracing integration.
Docker + Docker Compose setup, GitHub Actions CI/CD, Slack bot with /hr commands, Microsoft Teams adaptive cards, Redis conversation memory, and env-specific configs.
PII detection and automatic masking, API rate limiting (60 req/min), security headers, request encryption, Prometheus metrics, and Grafana dashboards.
CCPA implementation, multi-jurisdiction engine (US, EU, Canada, Australia), data localization enforcement, right-to-erasure automation, WebSocket support, Redis caching.
Admin API, health check endpoints (live/ready), feature flags, SLA monitoring, audit reports with export, backup/restore system, feedback collection.
Expanded from 3 demo users to 67-employee org (8 departments, management hierarchy). 6 multi-role case studies, auth upgrade to resolve real tokens, file reorganization.
Google Cloud Run deployment, CI pipeline with Black/Flake8, 17 CI bug fixes in one day, Playwright E2E tests adapted for cloud, gap analysis and final polish.
How AI-generated tests evolved from basic assertions to comprehensive coverage.
| Layer | Files | What It Tests | AI Tool Used |
|---|---|---|---|
| Unit Tests | 68 files | Every module individually — agents, core services, middleware, APIs, connectors | Claude Code generated, human reviewed |
| Integration Tests | Frontend flows | Full user journeys through the web interface | Claude Code + manual validation |
| E2E Chatbot Tests | Conversation runner | Multi-turn agent conversations with expected output validation | Claude Code designed scenarios |
| Playwright Browser Tests | 14 spec files | Login, dashboard, chat, roles, leave, analytics, documents, mobile, API | Playwright framework + Claude Code specs |
| Case Study Tests | 6 scenarios | Multi-role HR scenarios across departments (50 assertions, 100% pass) | Claude Code + domain knowledge |
14 browser test suites testing the real deployed application
Quantified output from the vibe coding approach.
| Metric | Value | Notes |
|---|---|---|
| Total source code | 51,423 lines | 111 Python modules in src/ |
| Total test code | 29,515 lines | 68 test files + 14 Playwright specs |
| Test functions | 2,079 | Unit + integration + E2E + case studies |
| Frontend | 31 files | HTML/Jinja2 templates + CSS + JS |
| Development iterations | 9 iterations | Each with progress report and test suite |
| Agents built | 8 + router | Policy, Benefits, Leave, Employee, Onboarding, Performance, Compliance, Analytics |
| HRIS connectors | 4 | Workday, BambooHR, Payroll, Custom DB |
| Compliance frameworks | 4 | GDPR, CCPA, HIPAA, multi-jurisdiction |
| CI/CD pipeline | GitHub Actions → Cloud Run | Lint, test, build, deploy — fully automated |
| Git commits (deploy day) | 17 commits in 1 day | Feb 17: CI fixes, bug fixes, final polish |
The most important skill in vibe coding isn't prompting — it's knowing where LLMs break down and designing your workflow around those limits.
Building a 51K-line platform with AI taught me that effective AI-assisted development requires understanding exactly where hallucination creeps in, which models excel at which tasks, and when to bring in manual human verification. Blindly trusting any single model is how projects fail.
Hallucination isn't random — it follows patterns. Knowing the patterns lets you build guardrails.
| Hallucination Pattern | Real Example from This Project | How I Caught / Prevented It |
|---|---|---|
| Confident but wrong API usage | Generated LangGraph code using deprecated .add_node() signatures that looked correct but failed at runtime | Always run generated code immediately; never trust "it looks right" |
| Phantom imports | Referenced non-existent Flask extensions and SQLAlchemy methods that don't exist in the installed versions | CI pipeline with strict linting catches import errors before merge |
| Plausible but wrong logic | GDPR compliance checks that passed tests but missed edge cases — e.g., data retention for terminated employees | Domain-specific code review; AI doesn't understand legal nuance |
| Test hallucination | Generated tests that asserted the wrong thing — tests passed but didn't actually validate the feature | Manual review of every test assertion; check what's being tested, not just pass/fail |
| Configuration drift | Docker configs that worked locally but had subtle env var differences for Cloud Run | 17 CI commits in one day to fix deployment — some things need hands-on debugging |
No single LLM is best at everything. The key insight: treat models like specialized team members, each with their own strength.
Claude Code (Sonnet / Opus)
Figma → Claude Code → Antigravity
GitHub Copilot
Antigravity
A real feature built using all tools in their optimal roles.
Example — Leave Management Dashboard: Designed layout in Figma → Claude Code generated Flask route + Jinja2 template + JS → Copilot refined in-editor styling → Antigravity tested interactive flows manually → Playwright automated the regression suite.