Case study

ExportOps: monotributo runway for USD freelancers

A Next.js cockpit for Argentine freelancers paid in USD/EUR: ledger entries convert via BNA rates into ARS, then roll into a 12-month runway against the monotributo category ceiling before Jan/Jul recategorization.

← Back to portfolio

1. Problem

Monotributistas who invoice abroad juggle currency conversion, yearly totals, and category ceilings. Spreadsheets and generic invoicers do not join those pieces into one view before the recategorization window.

The product brief: sign in, log income by client, see ARS totals from official BNA FX, and get warned before hitting 80% / 95% of the category tope.

2. Architecture

App Router on Vercel with Clerk auth and Neon/Prisma persistence:

  • Clerk syncs the signed-in user; /app is the authenticated shell.
  • Income rows store original currency plus amountArs from a BNA FX helper.
  • Clients CRUD links income to payers without duplicating contact data.
  • Server actions map FormData into typed create/update paths.

3. Runway and alerts

The dashboard is the decision surface, not just a table:

  • Rolling 12-month SUM(amountArs) vs category ceiling, zero-filled months for the chart.
  • Countdown to the next Jan/Jul recategorization window.
  • In-app alerts at 80% and 95% of the ceiling, plus a manual "still to invoice" flag.

4. Outcomes

  • Live deploy with auth, ledger, clients, and runway dashboard.
  • BNA-based ARS conversion wired into create/edit income flows.
  • Ceiling alerts and recategorization countdown in the /app shell.