Inspiration

Every project manager has lived this nightmare: you're 70% through a project, 90% through the budget, and nobody saw it coming. Existing tools either track tasks (Jira, Linear) or track money (QuickBooks, Xero) — but nothing connects the two and tells you before it's too late that you're heading for a breach.

BurnSignal was built to close that gap: a budget burn intelligence platform that predicts overspend weeks in advance, not days after.

What it does

BurnSignal gives engineering managers and PMOs a real-time view of budget health across all active projects, with:

  • Predicted breach dates — not just "you're at 45% utilization" but "you will exceed budget on Nov 19, 2026 at 65% confidence"
  • 4-tier forecast engine that automatically selects the right model based on available data (linear extrapolation → weighted moving average → phase-adjusted → velocity-calibrated)
  • 7 pressure signals — Velocity Gap, Overdue Ratio, Headcount Delta, Phase Slip, Scope Creep Rate, Timeline Pressure, Budget Acceleration — each normalized 0–100 and feeding the forecast as risk multipliers
  • Trello OAuth integration — connect your Trello board, sync cards as tasks, and watch pressure signals update in real time
  • Portfolio-level burn overview — cross-project risk in one view with a cumulative spend forecast showing when the portfolio breaches its total approved budget

How we built it

Frontend: Next.js 14 (App Router) on Vercel, built and iterated via v0.dev

Backend: FastAPI (Python) on Railway with async SQLAlchemy

Database: AWS Aurora PostgreSQL (serverless v2) — primary data store for all projects, time entries, tasks, forecasts, and integrations

Auth: Clerk with JWT middleware, webhook-based user/org sync to Aurora

Integrations: Trello OAuth 1.0a — full connect/callback/boards/sync flow using requests-oauthlib, storing access tokens in Aurora and syncing cards into an imported_tasks table that feeds the pressure signal engine

Forecast engine: A Python module that runs on every new time entry or Trello sync — pulls spend history, task velocity, phase transitions, and contractor additions, selects the appropriate tier (T1→T3b), projects the burn curve forward, finds the intersection with the budget ceiling, and writes a forecast_snapshots row with confidence score and all 7 signal values.

Key Aurora tables:

  • projects — budget, duration type, department, dates
  • time_entries — logged hours + cost per person per project
  • project_phases — planned vs actual phase timing (feeds Phase Slip signal)
  • contractor_costs — contractor additions (feeds Headcount Delta signal)
  • tool_connections — OAuth tokens per org per provider
  • imported_tasks — synced Trello cards with status, due date, overdue flag
  • forecast_snapshots — full forecast curve + confidence + 7 signal values

Challenges

OAuth 1.0a complexity: Trello uses OAuth 1.0a (not 2.0), which requires HMAC-SHA1 signed requests and a two-step token exchange. Getting the request-token → authorize → callback → access-token flow working end-to-end, including storing the request token secret ephemerally and the allowed-origins configuration in Trello's Power-Up admin, took significant debugging.

Forecast engine calibration: The 4-tier model required careful handling of edge cases — projects with <7 days of data, projects mid-phase-transition, projects where task velocity and spend velocity diverge significantly. The confidence score (0–100) needed to reflect not just model fit but data availability and signal consistency.

v0 + backend contract mismatches: Building the frontend via v0.dev while the backend evolved meant several rounds of fixing field name mismatches (e.g. the Cost Breakdown tabs expecting vendor/hours/category while the backend sent role/daily_rate/reason_added/monthly_cost/active_from). Systematic Network tab auditing became essential.

Aurora cold starts: Aurora Serverless v2 has occasional cold start latency on the first query after idle periods. Managed with connection pooling via asyncpg and SQLAlchemy's async engine.

What we learned

  • v0.dev is extraordinarily fast for UI iteration but requires explicit API contracts in prompts — vague prompts produce components that look right but fetch the wrong endpoints
  • OAuth 1.0a is significantly more complex than OAuth 2.0 and worth avoiding in future unless the target API requires it
  • Aurora Serverless v2 is an excellent choice for hackathon projects — scales to zero, fully managed, and the async SQLAlchemy integration is clean

What's next

  • Time tracking integrations: Toggl, Harvest, Clockify — same OAuth pattern as Trello, writing to time_entries instead of imported_tasks
  • Jira integration: Task sync from Jira for teams not on Trello
  • Slack alerts: Webhook notifications when a project crosses burn ratio thresholds or a breach is predicted within 30 days
  • AI narrative summaries: Natural language explanation of why a project is at risk, generated from the pressure signal combination

Built With

Share this project:

Updates