Performance

Built for the database you already have.

We grew the sample company from 205 thousand rows to 5.25 million rows read a night (0.6 GB, 58 tables) and timed what Othor AI does every day and every night.

  • 880 thousand

    rows in the test company’s biggest table, 0.6 GB in all

  • 10 of 10

    pages answer in under 300 ms at 5.25 million rows

  • 129.2 s

    to scan 4,000 tables, with no rows leaving the database

  • 103.4 s

    for an ordinary night at 5.25 million rows, with no model calls

Everyday pages

The same speed at both sizes.

Every page an owner opens, timed at 205 thousand rows and at 5.25 million rows. The slowest took 147 ms, against our budget of 300 ms.

205 thousand rows5.25 million rows

Every page, at both sizes

Median server time for each page at 205 thousand rows and 5.25 million rows, against a budget of 300 ms.0 ms100 ms200 ms300 ms300 ms budgetHome71 msMorning Brief37 msSweep46 msA finding, with its proof46 msOntology88 msA metric, with its history134 msData sources50 msA finding’s SQL52 msEdit a brief67 msMedian server time for each page at 205 thousand rows and 5.25 million rows, against a budget of 300 ms.0 ms100 ms200 ms300 ms300 ms budgetHome71 msMorning Brief37 msSweep46 msA finding, with its proof46 msOntology88 msA metric, with its history134 msData sources50 msA finding’s SQL52 msEdit a brief67 ms

Median server time of each page, loaded 15 times, in milliseconds. Your browser and network add their own. Lower is better. The scan page at 4,000 tables, timed at 5.25 million rows only: 147 ms.

An ordinary night, step by step

Seconds for each step of an ordinary night at 205 thousand rows and 5.25 million rows.0 s20 s40 s60 sRead what changed1.6 sStore it, by day71.8 sCheck the data6.3 sCompute every metric9.3 sForecast2.5 sRun every test10.7 sWrite the briefs0.2 sSeal the run0.5 sSeconds for each step of an ordinary night at 205 thousand rows and 5.25 million rows.0 s20 s40 s60 sRead what changed1.6 sStore it, by day71.8 sCheck the data6.3 sCompute every metric9.3 sForecast2.5 sRun every test10.7 sWrite the briefs0.2 sSeal the run0.5 s

The whole night took 28.2 s at 205 thousand rows and 103.4 s at 5.25 million rows, and replays to the same result, byte for byte.

Why it stays flat

Pages never touch your database.

Every page reads results the nightly run stored, so a page costs the same at any size. The work runs where your data is: your database computes the totals through a read-only role, and only totals come back. Each night reads what changed, plus the last 35 days again for late corrections.

  • Stored, not recomputed

    A page opens from the run’s stored results. It never queries your systems.

  • Totals, not tables

    The SQL runs on your database; only totals come back. Your tables are never copied, and personal columns are never read.

  • Only what changed

    Each night reads new and changed rows, not the whole history again.

What a night costs your database

A night of reading, at 5.25 million rows.

Read-only, with a 120 s limit on every query. A role that can write is refused.

One ordinary nightMySQLPostgreSQL
Read-only queries9259
Rows that came back3,10,3331,26,299
The longest query8,519 ms681 ms

How we measured

The sample company as seeded (205 thousand rows read a night) and copied 35 times (5.25 million rows), loaded into PostgreSQL and MySQL; the real nightly pipeline, then each page’s server time on a signed-in app. Measured 13 Nov 2026 on an AWS t3a.large in Mumbai, the type the live app runs on, by scripts/measure_site.py.

Othor AI is in a pilot: bigger databases, slower servers and many companies at once haven’t been tested yet.

See it on your own numbers. The first brief arrives the morning after.

Othor AI is invitation-only while we work closely with our first companies. Tell us about yours.