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, datestime_entries— logged hours + cost per person per projectproject_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 providerimported_tasks— synced Trello cards with status, due date, overdue flagforecast_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_entriesinstead ofimported_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
- aws-aurora-postgresql
- clerk
- fastapi
- next.js
- oauth-1.0a
- python
- railway
- react
- requests-oauthlib
- sqlalchemy
- tailwind-css
- trello-api
- typescript
- v0.dev
- vercel
Log in or sign up for Devpost to join the conversation.