Graphikpro
All projects

Operational Finance Platform

Live

PayTrackr

A production-grade operational finance platform for a boutique post-production studio. A full-stack SPA that reconciles chaotic client data, applies multi-tier pricing, generates invoices, and produces bank-ready BLKPAY payouts — end-to-end.

ReactFastAPIMongoDBJWT + RBACRazorpay IFSCResendReportLab
~0

Task records managed

0

Projects tracked

0

Verified bank accounts

₹0L+

Monthly payout volume

Overview

The operational truth for studios that bill by the task

PayTrackr replaces spreadsheet chaos with a single audit-logged workflow. It merges client task data without overwriting manual adjustments, cascades multi-tier pricing per resource, generates branded TDS-aware invoices, and exports bank-ready BLKPAY Excel files. Every mutation is reversible, every batch is locked, and every payout ties back to the line item it originated from.

Roles served

Admin — finance opsTranslator — freelancer self-serviceTracker — live project managersOwner — studio principal / P&L

Stack at a glance

Frontend
React 18, React Router, Tailwind CSS, shadcn/ui, Recharts, lucide-react
Backend
FastAPI (Python 3.11), Motor (async MongoDB), Pydantic v2, ReportLab, openpyxl, httpx
Data
MongoDB — indexed collections, JSON snapshots for env sync
Integrations
Razorpay IFSC API, Fawazahmed0 FX API, Resend (email), Twilio (WhatsApp, backlog)
Auth
JWT + bcrypt, role-based route guards (admin, translator, tracker, owner)
Deploy
Kubernetes preview + production, JSON-based data seed sync on startup
01

Authentication & Role-Based Access

A single entry point that routes users to the right console based on their role — Admin, Translator, Tracker, or Owner — with idempotent seed users so the platform is usable the moment the backend boots.

Problem solved

A studio has three very different personas who need different views of the same data. Without role-scoped auth, sensitive rates and P&L data leak or get edited by the wrong hand.

Business value

Zero-config first boot (preview parity with production), no leaked rates or P&L to translators, and a clean audit trail where every write is tagged with the actor.

JWT (bcrypt)AuthContextProtectedRoute guardsidempotent startup seeds
02

Command Center Dashboard

A single cockpit surfacing every operational KPI: active resources, monthly task throughput, invoice-ready totals, and exceptions requiring attention.

Problem solved

Finance ops previously toggled between five spreadsheets to answer basic questions like ‘how much do we owe this month?’.

Business value

Time-to-answer for ‘current month status?’ drops from ~10 minutes to ~2 seconds, with instant visibility of stalled or removed tasks.

GET /api/dashboard/summaryMongo aggregationRechartsclient-side memoisation
03

Financial Analytics Suite

Deep-dive analytics on cost, mix, and resource contribution — filterable by any combination of task type, resource, language, status, and time.

Problem solved

‘How much did we spend on subtitling in Tamil last quarter?’ used to take a data analyst. Now it's a three-click filter.

Business value

Turns finance operations into a self-service analytics function with trustworthy comparisons because locked batches are immutable.

$match / $group / $sum pipelineslocked-batch snapshotsPDF + Excel export
04

Incremental Merge Engine

The heart of the product. Sync the client's Atlas / PO sheet into the operational database without ever overwriting a manual adjustment.

Problem solved

The client resends the master sheet every week. A naive re-import wiped assigned resource, rate, and billing tweaks.

Business value

Manual adjustments survive weekly re-imports, removed items are recoverable and traceable, and auditors can revert an entire merge cycle in one click.

Composite key: PO + Atlas Job ID + Task Type + Languagepreview → commit → revertopenpyxlaudit snapshots
05

Task Grouping & Mini-Assignments

Cluster raw tasks into logical work units and split single tasks across multiple resources or sub-scopes — the day-to-day scheduling surface.

Problem solved

One client ‘task’ often maps to two people (translator + reviewer) or three sub-tasks. That split lived only in someone's head and never got billed correctly.

Business value

Split-billing works out of the box with no orphaned costs when tasks are shared between resources.

aggregation groups on adjustmentsassignments collection with back-pointeraudit-safe undo
06

Resource Management

The single source of truth for every freelance resource — profile, aliases, per-task rates, TDS %, and live operational activity.

Problem solved

Studios reuse the same freelancer under different name variants (‘Priya’, ‘Priya M.’). Without alias normalization, every rate lookup misfires.

Business value

Every cost line resolves to a canonical resource; onboarding a new resource is an Excel drop, not a code change.

resource_mappings + resource_ratesbulk import preview/committoken-Jaccard name matching
07

Multi-Tier Pricing Engine

Resolve the correct rate for any (resource, task, project, language) tuple by cascading through a transparent hierarchy of rules.

Problem solved

A studio negotiates rates at many levels — global, per-language, per-project, per-resource. Baking these into spreadsheets makes them un-auditable.

Business value

Every invoice line item is defensible — ‘here's the exact rule that fired’. Change a global rate and only unlocked batches recompute.

resolution: resource → project → language → task-type → globalrule trace outputlock-time rate capture
08

Invoice Batching & Locked Analytics

Group completed tasks into named batches (e.g. GP-Jul-2026) and lock them so rates, assignments, and adjustments freeze forever.

Problem solved

Auditors ask months later, ‘why is this month's number different now?’ Without immutability, live data mutates and analytics drift.

Business value

Immutable operational history, trustworthy financial roll-ups, and a solid basis for payouts and BLKPAY export.

invoice_batches.locked_statusrate + resource snapshot on lockaudit-logged unlock
09

Invoice Generator

Generate professional, TDS-aware PDF invoices — per resource or in bulk — for a locked batch, and dispatch them via Resend.

Problem solved

Manual invoice creation in Word/Excel took a day per month, with error-prone TDS math and inconsistent branding.

Business value

Invoice preparation goes from a day to a few clicks, producing TDS-compliant PDFs with a delivery audit trail per resource.

ReportLab (Poppins fonts)FX snapshot (Fawazahmed0)Resend delivery + email_logsjsPDF fallback
10

Monthly Payments & BLKPAY Bank Export

Convert a month of locked invoices into a bank-ready BLKPAY Excel file — the exact file the studio uploads to its bank portal to pay everyone.

Problem solved

Each bank has its own strict Excel template (row layout, formulas, hidden sheets). Regenerating it from scratch breaks it.

Business value

Injects payment rows into the studio's own template, preserving formulas, formatting, merged cells, and metadata — straight to the bank portal.

live IFSC lookup (Razorpay)token-Jaccard name matchingopenpyxl in-place injectionenv seed sync
11

Audit Log & Undo/Redo

A tamper-evident record of every mutation — with a floating Undo and Redo button visible on every admin page.

Problem solved

When five people share one operational database, mistakes are inevitable. Most apps only offer a deleted_at field.

Business value

Captures before/after snapshots for every write, enabling true reversal — including batch-reverting an entire merge cycle.

audit_log collectionutils/audit.log_actionper-actor undo stackUndoFab component
12

Translator Portal & Portal Control

A self-service portal where translators see their tasks, earnings, and invoices — governed by an admin panel that toggles visibility in real time, without code changes.

Problem solved

Freelancers used to email the studio for every status update, creating constant support load.

Business value

Cuts support load while keeping the admin in full control of what each translator sees.

portal_settings per-section gatinglive iframe previewproject_claim_requestsalias self-identify
13

Project Tracker & Public Snapshot

A lightweight live tracker for project managers to log task progress independently of billing, plus a public snapshot URL so clients can watch progress without a login.

Problem solved

Clients demand live status but shouldn't touch the billing surface.

Business value

Isolates operational status and gives clients read-only transparency via expiring tokens — without auth risk.

tracker_tasks + tracker_snapshotsseparate TrackerAuthContexttoken-resolved public view30s live polling
14

Email Center & Exceptions

Two operational nerve centres — one for outbound mail (invoices, advice, notifications) and one for inbound exceptions that must be resolved before invoicing.

Problem solved

Manual email sending scaled poorly and delivery status was lost; bad merge data leaked into invoices and caused rework.

Business value

No lost invoice emails, and data anomalies get caught and fixed before they reach a client invoice.

Resend + email_logslive exception aggregationone-click ‘Fix it’ deep-links
15

Export Center

The universal ‘give me the data’ surface — Excel and PDF exports of any filtered slice, plus a history log of every invoice generated.

Problem solved

Accountants, auditors, and clients ask for the same data in different shapes, creating endless ad-hoc requests.

Business value

Self-serve data hand-off with no engineer required, and consistent column order across every export.

GET /api/export/tasks (openpyxl streaming)grouped worksheetsinvoice history filters
16

Owner Dashboard & Claim Requests

Two governance surfaces: a private Owner Dashboard (P&L, batch-lock hygiene) and a Claim Requests workflow for translators asking to be added to a project.

Problem solved

The owner needs numbers admins shouldn't touch, and freelancers need a way to raise their hand when the portal filter is wrong.

Business value

Keeps principal-only P&L separate from admin ops, and resolves visibility gaps through a governed approval flow.

separate owner bcrypt accountclaims state machinepending-count pollingportal_settings on approve

Have a system like this in mind?

We design and build operational software end to end — from discovery to deployment and optimization.

Full-stack build (React · FastAPI · MongoDB)
Audit-logged, production-grade systems
End-to-end delivery & long-term partnership
Book a Free Consultation

Let's build better systems

Ready to operate faster, smarter, and more profitably?

Graphikpro

Business systems, AI solutions, and workflow automation that drive measurable results.

Company

Projects

© 2026 Graphikpro. All rights reserved.

Technology should serve business outcomes.