Skip to content
GUILHERME

Clinical software

Nexo Dental

A founder-built product connecting the clinical, operational, and financial work of a dental clinic

As founder and sole developer, I designed and built Nexo Dental end to end: product and interaction design, frontend, API, data model, security boundaries, clinical and financial workflows, and reviewable AI assistance. One product serves reception, dentists, and managers without forcing them into one generic workflow.

Role
Founder and sole developer
Period
July 2026–present
State
Active development
Source
Private
The Nexo Dental application shell on Clinic Pulse, with brand identity, role navigation, and an operational home dashboard populated from fixture data.
Authenticated shell and Clinic Pulse home. The product interface is in Portuguese.

One patient record. Three ways of working.

A clinic does not operate through one generic dashboard. Reception works in minutes, keeping appointments and conversations moving. Dentists work around the clinical record at the chair. Managers need the financial and operational picture that emerges from both.

I saw a product opportunity in those handoffs: one shared system could preserve the same patient and financial context while giving each role a surface designed around its own decisions. I founded Nexo Dental to build that product from the data model outward, rather than stitching separate screens onto disconnected records.

Built around the people who run the clinic

Nexo Dental follows work from the first appointment through clinical care, payment, claims, and follow-up. The interface changes emphasis by role, while the underlying patient, treatment, and financial records remain connected. That product boundary shaped the three workspaces below.

Reception — keep the day moving

Reception starts with time and attention. The agenda organizes appointments across professionals and statuses; the conversations workspace keeps patient communication beside the operational context; and the action queue turns open work into explicit next steps.

The goal is not another notification feed. A receptionist can move from a pending confirmation to the relevant conversation or patient balance without reconstructing why the item matters. The product keeps the queue actionable while a person remains responsible for every response and change.

A week-view dental agenda showing multi-professional appointment cards and a status strip, populated from seed fixture data.
The receptionist agenda brings professional availability, appointments, and status into one weekly view.
A WhatsApp-style conversations inbox with a synthetic thread open beside the conversation list.
Fixture conversations keep communication in the same operational surface as the patient workflow.
An operational action queue listing prioritized items with actions for reviewing a claim issue, replying on WhatsApp, and opening patient balances.
The action queue pairs prioritized work with the next useful destination; it does not act on a person's behalf.

Clinical care — carry truth from chart to treatment

The patient workspace gives dentists one clinical context rather than a trail of isolated forms. Identity, history, odontogram, encounters, files, treatment proposals, and financial context remain reachable from the same record.

The odontogram is structured clinical data, not a drawing pasted onto a profile. Tooth conditions and procedures feed the clinical timeline and treatment proposal, preserving attribution as the record moves from diagnosis to the front desk. That reduces duplicate interpretation at the handoff between care and administration.

A patient workspace header with identity overview and clinical tabs for a fixture patient record.
The patient workspace anchors clinical and financial work to one synthetic record.
An odontogram workspace with an FDI tooth chart, tooth 16 highlighted, in a populated seed clinical state.
The FDI odontogram represents tooth state as information other workflows can use.
A chronological clinical timeline of seed encounters with attribution in the patient clinical workspace.
The clinical timeline preserves sequence and attribution across fixture encounters.

Management — connect care to the ledger

Managers need to understand what clinical and reception work produced: treatment proposals, installments, payments, commissions, insurance claims, and reporting. Nexo Dental keeps those records connected to the patient and clinic tenant instead of treating finance as a separate back-office product.

The management surface exposes the operational trail behind a balance or claim. Reporting routes are present in the implementation, but I describe them as active development rather than presenting the product as a finished analytics program.

A patient financial ledger showing synthetic installment balances and debits in the finance workspace.
The fixture ledger keeps installments and balances attached to the patient workflow that created them.

One product, isolated at the data boundary

A React and TypeScript application talks to a FastAPI service under `/api/v1`; PostgreSQL owns application state and Alembic evolves the schema. The boundary is deliberately conventional so product complexity stays in explicit domain modules rather than leaking into the client.

Every tenant-scoped database session sets `app.tenant_id`, and row-level security is enabled and forced on tenant tables. The application still scopes requests deliberately, while PostgreSQL rejects cross-clinic access if a query path forgets. A guarded MSW mode supplies deterministic fixture data for interface development and public captures without a real clinic session.

01 — Make tenant isolation a database guarantee

Clinical and financial data made application-only filtering an unacceptable boundary. A missed condition on a new query should not be enough to expose another clinic's records.

I built tenant identity into the schema and session lifecycle, then enabled and forced PostgreSQL row-level security through reusable Alembic helpers. That choice adds migration discipline to every tenant-owned table, but it moves the final refusal to the layer that stores the data. Claims fields add AES-GCM protection and masked API representations for another sensitive boundary.

02 — Model the odontogram as a domain, not a widget

A visual tooth chart would have been faster to ship, but it would stop being useful as soon as encounters, treatment proposals, and finance needed the same facts. I modelled teeth, conditions, and procedures as structured clinical records instead.

The interface can still present an intuitive FDI chart, while the system retains history, attribution, and links to downstream work. The trade-off is a richer clinical model and more careful state transitions. The benefit is one source of clinical meaning across the chart, timeline, proposal, and ledger.

03 — Put AI behind a human decision boundary

Nexo Dental uses AI assistance beside role-specific work rather than presenting it as an autonomous operator. The action queue ranks open items and deep-links to the next useful surface; adjacent panels can draft assistance, but a person reviews and acts.

That boundary also shapes the backend. Clinical AI inputs are checked for PII before a provider call, and operator capabilities remain role-aware. I chose a narrower, inspectable interaction because clinical, communication, and financial actions need accountable human judgment more than they need the appearance of automation.

What I owned

I founded, designed, and built Nexo Dental as the sole developer: product direction, interaction system, React application, FastAPI service, PostgreSQL model, tenancy and permissions, clinical and financial domains, communications, claims, AI boundaries, automated tests, and local development tooling.

AI accelerated scaffolding, refactoring, test generation, and review. The product thesis, architecture, implementation, validation strategy, security decisions, and final trade-offs remained my responsibility.

What the implementation proves

The private repositories contain working paths for scheduling, patients, odontogram and clinical records, finance and treatment proposals, WhatsApp communication, CRM, TISS claims, reporting routes, role-aware navigation, and the action queue. At this revision, 50 backend and 134 frontend test files exercise those domains, tenancy, authentication, runtime guards, and interface behavior.

The engineering safeguards are concrete: forced row-level security, encrypted and masked claim fields, pre-provider PII validation for clinical AI, no-PII assertions on operational payloads, and a production guard against mock data. Nexo Dental remains in active development, its source is private, and there is no verified public environment or published clinic outcome today.

Technology in service of the workflow

  • React
  • TypeScript
  • Vite
  • TanStack Router
  • FastAPI
  • PostgreSQL
  • Alembic
  • Row-level security
  • AES-GCM
  • Mock Service Worker
  • pytest
  • Vitest

Private source. Synthetic evidence.

The repositories are private. Every interface capture on this page uses seed or MSW fixture data—never a real clinic or patient—and visible identifiers are invented showcase values. The case study describes what the implementation contains without turning synthetic data into customer, adoption, reliability, or business-impact claims.