{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "profile_name": "internal-tool",
  "description": "Internal-only application (admin panel, ops dashboard, employee tool). Auth-walled, low traffic (< 100 DAU), no SEO, no public a11y requirements. Goal: ship features fast, not engineer for scale.",
  "version": "1.0.0",
  "constraints": {
    "team_size_max": 5,
    "deployment_cadence": "weekly-or-on-demand",
    "cloud_budget_monthly_usd_ceiling": 500,
    "user_facing": false,
    "data_sensitivity_tier": "internal-or-pii-only"
  },
  "stack_recommendations": {
    "primary": "internal-tool-platform-or-thin-stack",
    "consider_no_code_first": [
      "retool",
      "appsmith-self-host",
      "budibase-self-host",
      "tooljet-self-host"
    ],
    "if_custom_required": {
      "frontend": "next-pages-router-or-vite-react-with-shadcn",
      "backend": "next-api-routes-or-fastapi-or-django-admin",
      "database": "postgresql-shared-with-prod-via-read-replica-OR-supabase",
      "auth": "okta-saml-or-google-workspace-sso"
    }
  },
  "anti_recommendations": {
    "design-system-investment": "kill — four-user audience does not measure design polish",
    "wcag-aaa-compliance": "kill — auth-walled means screen-reader audience is known and small",
    "edge-cdn-for-mobile-4g": "kill — internal users are on corporate networks",
    "feature-flags": "warn — usually unnecessary at this scale, push-and-pray is fine for non-customer-facing changes",
    "kubernetes": "kill — single container on Fly.io / Render / EC2 t3.small is overkill already",
    "microservices": "kill — full-stop"
  },
  "success_thresholds": {
    "p50_api_latency_ms": 300,
    "p95_api_latency_ms": 1000,
    "p99_api_latency_ms": 3000,
    "frontend_lcp_ms_corporate_network": 3000,
    "uptime_target": 0.99,
    "deployment_time_minutes_max": 30,
    "test_coverage_min": 0.3
  },
  "ci_cd": {
    "platform": "github-actions-minimal",
    "stages": ["lint", "test", "build", "deploy"],
    "gates": ["tests-pass"]
  },
  "named_approver_chain": {
    "stack_change": "tech-lead",
    "production-data-migration": "tech-lead",
    "external-service-add": "tech-lead"
  },
  "canon_references": [
    "Donald Reinertsen, Principles of Product Development Flow (2009) — minimize WIP and ceremony",
    "Basecamp / 37signals, REWORK (2010) — under-engineer internal tools",
    "Retool internal benchmarks (2024) — 80% of internal-tool teams over-invest in a custom build"
  ]
}
