Ensemble was inspired by the everyday chaos inside marketing and advertising agencies: multiple clients, overlapping deadlines, specialist skills, approvals, holidays, and a team that is always close to capacity. The problem I wanted to solve is that agencies often say yes to new work before they have a clear picture of whether the team can actually deliver it. Resource decisions are usually spread across spreadsheets, project boards, calendars, Slack updates, and people’s memory. That makes it easy to miss overload, skill gaps, delayed approvals, or hidden delivery risks. Ensemble is built for agency project managers, resource leads, and operations teams who need to answer a simple but high-stakes question: Can we take on this work and still deliver well? The app gives agencies a live view of workload, capacity, client progress, and delivery risk. When a new brief comes in, Ensemble turns it into structured tasks, estimates effort, recommends best-fit team members, and shows the impact on agency health before the agency commits. I built Ensemble with Next.js, React, TypeScript, Tailwind CSS, Prisma, PostgreSQL, AWS Aurora/RDS, and Vercel. I chose AWS Aurora PostgreSQL because the project depends on relational, connected data: clients have projects, projects have tasks, tasks need skills, employees have capacity and holidays, and assignments affect delivery risk. A relational database made the most sense for modelling those relationships clearly and querying them together. Aurora also gives the project a realistic production-style database foundation for scaling beyond demo data. The interface is designed around the workflow of an agency resource lead: review the dashboard, analyse a brief, build the scope, optimise resources, check the impact, and assign tasks. The backend data model supports clients, employees, projects, briefs, tasks, skills, languages, holidays, approvals, risks, and assignments. The biggest challenge was making the product feel realistic rather than like a static demo. Agencies do not make decisions from one data point, so Ensemble needed to connect many moving parts: workload, skills, languages, deadlines, approvals, leave, client priority, and team capacity. I learned a lot about translating messy operational decisions into a clear product flow. What I am most proud of is that Ensemble does not just show data. It helps teams make a decision. It gives agencies a clearer way to protect their people, avoid delivery surprises, and say yes to the right work with confidence.

Built With

Share this project:

Updates