Every consultant knows the pattern. You finish a productive week, then spend Friday afternoon reconstructing where the hours went. You open Harvest or Toggl, click through a dozen dropdowns, and try to remember whether that Monday call was 45 minutes or an hour. Meridian exists because we got tired of that ritual. We built a time tracking and invoicing tool that matches the way consulting work actually happens: in weekly rhythms, on retainer schedules, with invoices that need to go out on time and get paid without drama.

Meridian Invoices

Overview

Meridian is a full-stack time tracking and invoicing application built for solo consultants and small firms who bill by the hour. It runs on FastAPI and React 19, backed by PostgreSQL, and follows the same fleet architecture as every other tool in the Renkara ecosystem. It tracks time, manages expenses with receipt attachments, generates PDF invoices, and handles the full invoice lifecycle from draft to payment. It also exposes 20 MCP tools, which means Claude Code or any AI agent can log time, create invoices, and pull reports without touching a browser.

Key Features

Week View Time Entry

The centerpiece of Meridian's time tracking is the week view. Tasks appear as rows, days as columns, and you fill in hours at the intersection. This mirrors how most consultants think about their time: in terms of what they worked on each day of the week, not as a list of individual start/stop timers. For retainer engagements where the hours are predictable, a single click fills an entire month of weekday entries at a set number of hours per day. We call it Bulk Month Fill, and it turns a 15-minute data entry chore into a two-second operation.

Client-Task Hierarchy

Everything in Meridian flows from clients. Each client has projects. Each project has tasks with individual billable rates. Time entries and expenses attach to a project and task. Invoices roll up from there automatically. This hierarchy means there is exactly one place to look for anything related to a given client, and the numbers always add up because they share a single source of truth. Projects can be duplicated for recurring engagements, and tasks can be archived to keep the time entry interface clean without losing historical data.

Invoice Creation Wizard

Generating an invoice follows a step-by-step wizard: select a client, choose which projects to include, pick a time period (all uninvoiced, current month, last month, or a custom date range), optionally include expenses, then enter invoice details like PO number and notes. The resulting invoice breaks billable time into weekly line items showing hours, rate, and line total. Expenses appear as separate line items. Once generated, invoices move through a lifecycle of draft, sent, paid, and written-off, with a full history log tracking every state change.

PDF Generation and Email Delivery

Meridian generates formatted PDF invoices that mirror the on-screen detail view. You can download the PDF or send it directly to client contacts via email. The invoice history tracks when each invoice was sent and to whom. No more exporting to Word, formatting by hand, and attaching to an email.

Expense Tracking with Receipts

Expenses record date, project, category, and amount. You can attach scanned receipts as PDF files directly to the expense record. Categories come preconfigured (Entertainment, Meals, Lodging, Mileage, Transportation, Other) with support for custom categories. When you create an invoice, expenses for the selected projects and date range automatically appear as line items.

Integration Points

20 MCP Tools

Meridian ships with a full MCP (Model Context Protocol) server exposing 20 tools over stdio. An AI agent can create clients, log time entries, generate invoices, mark invoices as paid, pull AR aging reports, and update company settings, all through structured tool calls. This means you can tell Claude Code "log 8 hours to the Nimbus project for Monday through Friday this week" and it just works. No browser, no clicking, no friction. The MCP server communicates with the backend API over HTTP, so it runs with the same authentication and validation as the web interface.

Fleet Architecture

Meridian follows the Renkara tools fleet conventions. It uses the same auth-service JWT tokens, the same CSS custom property system for theming, the same SQLAlchemy 2.0 async patterns, and the same React 19 + Vite frontend stack as Docket, Beacon, Herald, and every other tool in the fleet. If you know one, you know them all. Shared infrastructure means shared security, shared deployment pipelines, and zero per-tool operational overhead.

Advantages Over SaaS

Harvest charges $10.80 per seat per month. Toggl charges $9. FreshBooks starts at $19 per month. These tools are good, but they hold your data hostage and charge you monthly for the privilege of accessing it. Meridian runs on your own PostgreSQL instance. Your time data, your invoices, your client information, and your financial records stay on your infrastructure. There is no vendor lock-in, no surprise price increases, and no risk of a provider shutting down or changing their API. The total cost of running Meridian is whatever you already pay for a PostgreSQL instance, which in our case is an RDS instance shared across the entire tool fleet.

Beyond cost, the MCP integration changes what is possible. No SaaS time tracker lets an AI agent autonomously log time and generate invoices. With Meridian, you can automate the entire billing cycle: log time entries from project management data, generate invoices at the end of each month, send them to client contacts, and report on what is outstanding. The tool becomes a node in an automated workflow rather than a manual data entry form.

Specifications

ComponentDetail
BackendFastAPI, SQLAlchemy 2.0 async, PostgreSQL
FrontendReact 19, Vite, TypeScript
Ports3406 (frontend), 3416 (backend)
DatabasePostgreSQL (shared RDS), `meridian` database
Monetary PrecisionNumeric(10,2), never float
AuthBearer token via auth-service (RS256 JWT)
MCP Tools20 tools via stdio server
API Endpoints18 REST endpoints under `/api/v1/`
Key ModelsClient, Contact, Project, Task, TimeEntry, Expense, Invoice, InvoiceLineItem
ReportsAccounts Receivable aging, Invoice report with CSV export
ThemesLight and dark mode via CSS custom properties

Origin Story

Meridian started as a benchmark experiment. We wrote the same requirements document and gave it to two AI code generators: Claude (Anthropic) and Codex (OpenAI). Both produced working Harvest-style time trackers from the same spec. Claude's implementation scored 97% feature completeness with proper modular organization, correct monetary types, full routing, and a real test suite. Codex produced a monolithic 739-line React component with float-based monetary types and two backend tests. We picked Claude's version as the production codebase and rebuilt it on the modern fleet stack. The comparison was informative, but the real value was the tool itself. We needed it, so we built it.