Vantage

About the Project

Inspiration

On large software teams, answering the question "Who is actually working today?" is deceptively hard. Time-off data lives across a myriad of disconnected systems like Google Calendars that collapse into unreadable noise at scale. Managers spend their mornings reconstructing who is available and who can take over, rather than doing the work that actually matters. The result is missed deadlines, rushed handoffs, and a team quietly burning out under invisible coordination overhead.

Vantage is a direct intervention to this friction. We wanted availability to be something teams could use and trust - without having to piece together.


What Vantage Does

Vantage is an AI-powered team coverage intelligence dashboard built for enterprise project managers. It gives managers a clear, real-time picture of who is available, which tasks are at risk due to absent assignees, and how work can be intelligently reassigned - ranked by skill match, current workload, and availability confidence. Vantage is built to guide managers toward the next best action with clarity and speed.


How We Built It

Backend

  • FastAPI + SQLModel on SQLite (local) / PostgreSQL (production, DigitalOcean Managed)
  • Identity resolution via fuzzy string matching between AI-extracted names and real team member records
  • Task-risk detection and ranked reassignment scoring based on skill overlap, workload, and availability confidence

AI Layer

  • Google Gemini via pydantic-ai for NLP-based OOO classification from Slack messages and Gmail auto-replies
  • Signal normalization across calendar, messaging, and email sources so no single input needs to be perfectly reliable
  • Manual manager overrides always take precedence over automated sync data

Frontend

  • Next.js 15 (App Router), React 19, Tailwind CSS 4, shadcn/ui, Recharts
  • Zustand for client-side override state, enabling instant UI feedback without waiting on backend round-trips
  • Clerk authentication protecting all routes; a DashboardShell component conditionally renders the sidebar and post-login loading animation

Challenges We Faced

Deploying on DigitalOcean App Platform required carefully wiring the App Platform services, Managed PostgreSQL instance, and environment-specific secrets across local and production environments, including handling database migration state on cold starts.

Integrating fragmented availability signals from calendars, Slack, and Gmail into a single coherent model meant building a normalization layer that treated each source as probabilistic rather than authoritative, to avoid stale or conflicting reads producing false availability states.

Managing rapidly changing frontend state while supporting manual overrides required a two-layer state model — Zustand for instant client-side feedback, reconciled asynchronously with the backend — and significant iteration to keep both layers coherent.


What We Learned

Real-world enterprise data is structurally messy not because of bad engineering, but because the tools that generate it were never designed to interoperate. AI is most effective here as an augmentation layer - handling repetitive signal extraction so managers can focus on decisions rather than administrative reconstruction. We also learned that state management is a product problem as much as a technical one: the decision to let overrides win immediately was fundamentally about where trust should live in the system. Finally, deployment is part of the product - getting Vantage running reliably on DigitalOcean pushed us to harden assumptions we'd taken for granted in local development.


Why It Matters

When someone goes out unexpectedly, the downstream cost isn't just the missing person — it's the coordination overhead that follows. At enterprise scale, this is a recurring, compounding liability that organizations pay silently. Vantage makes availability information legible and actionable at exactly the moment it's needed, so managers can see risk as it emerges and act timely. When teams can adapt quickly to shifting availability, they stop absorbing coordination failures — and start actually scaling.

Built With

Share this project:

Updates