From WordPress to Attentti: Custom Django Development

Juan Pablo Mora 4 min read

From WordPress to a Scalable Platform: How Custom Django Development Brought Attentti to Life

TL;DR: Attentti had been running on WordPress, buried under years of plugins, patched themes, and per-client report customizations. Pages were slow, every change was risky, and adding new clients meant more dev work just to keep things functional. We rebuilt Attentti on a custom Django stack with configurable ticket forms, automated SLA tracking, and a white-labeled portal for each company they serve. The team now manages their own configuration without involving a developer.


Plugins pile up. Themes get patched. A WordPress site that started as a reasonable solution quietly turns into something nobody fully understands anymore, loading slower with every new customization, breaking in places you didn't expect whenever something needs to change.

That's what happened to Attentti. Each new customer needed reports formatted slightly differently. Each report became another plugin, another overridden template, another block of conditional logic buried in the theme. Load times crept up. The dev team spent most of their time keeping things from breaking rather than building anything new.

By the time they came to us, the codebase was difficult to reason about and expensive to change. The business was growing. The platform wasn't keeping up.

So we rebuilt Attentti on a proper stack.

Why WordPress Had Become the Problem

The setup hadn't been built badly. It had been built incrementally over several years, which produces the same result. Nobody made a single bad decision, but after enough layers of customization, the original structure was buried under additions that nobody had time to clean up.

The specific problems by the time we got involved:

  • Performance. Dozens of active plugins and a database that had grown without structure produced slow load times for both clients and internal staff.
  • Reports. Every client had a slightly different reporting layout, each built by customizing the same WordPress templates. Changing one risked breaking another. Adding a new one required a developer every time.
  • Ticket handling. The platform had never been designed for ticketing. Submissions came in through contact forms, were manually sorted, and tracked in spreadsheets alongside the WordPress dashboard.
  • Access control. WordPress's user roles couldn't represent the client's actual team structure. People either saw too much or too little.
  • Capacity. Every new client added load to a system already at its limit. The architecture had been designed to publish pages, not run operations.

Patching it further had no clear endgame. The right move was a clean rebuild using custom Django development, starting from what the business actually needed.

Building Attentti: What We Delivered

Attentti is a multi-tenant ticketing and workflow management platform. The client's team uses it to receive, triage, assign, track, and close tickets across their operation.

Configurable intake forms. Each ticket type has its own form. Field types, validation rules, and required information are managed through an admin panel builder. When the client's process changes, they update the form themselves.

SLA tracking. Every ticket is measured against the client's defined commitments. Attentti calculates time spent at each stage, flags tickets approaching deadlines, and gives team leads a current view of the queue.

A public portal per company. Each company gets a white-labeled submission portal. Customers submit and track tickets without accessing any internal tooling.

Role-based permissions. Managers see reports. Agents see their queue. Clients see their status. The permission model was built to reflect how the client's teams are actually structured.

Live updates. Status changes, internal messages, follow-up tasks, and team notes update in real time.

The Impact

The main impact point was that the team could finally see the full picture: where each ticket was, who owned the next step, and how much time was left. That information had always existed. It just lived in too many places before.

Onboarding got faster too. New agents could sit down with Attentti and understand it without much explanation, because the system reflects how the team already works.

The client also gained direct control over their setup. New ticket categories, updated SLA targets, form changes — they handle all of that themselves, without a developer involved.

Why Django

The platform needed multi-tenant data separation, real-time updates, background task processing, and a documented API. Django handled all of that without introducing risk. It has been in production long enough that the hard edge cases are well-understood.

That stability mattered here. We were solving a specific set of problems for a business that had already spent too long on fragile infrastructure.

What This Means for Your Business

If your team has built up years of workarounds in a platform that was never quite the right fit, the cost shows up gradually: slower deploys, hesitation before making changes, features that can't get built because the foundation won't support them. If you're still deciding whether to build custom or hire in-house, that decision has its own tradeoffs worth reading about.

Custom Django development means building for your actual requirements. If that sounds like the right direction, we'd like to hear from you.


Building something complex on Django? Get in touch.