November 5, 2026

Are Models Night Owls?

Do models respond with the same quality and speed at every hour? DeepSeek offers time-of-use pricing; most model providers keep prices fixed through the day. Their service may still shift under demand. If speed and quality trade off, we would rather wait: a weaker answer can persist in the conversation and shape what follows.

We first noticed the question over the last Christmas break, when our agents performed better even though no new model had been released. If quality can shift while the model version stays the same, changing service conditions may help explain why. Time-of-use pricing, like DeepSeek’s, is one way to manage demand; quality of service is another.

We are a 24×7 company, but most of our benchmarking happens on weekends while feature development happens on working days. We wanted to know whether weekend runs gave us a skewed picture of the performance customers experience during the workweek. We measured in Pacific Time, whose business hours overlap with peak hours in Eastern Time, so the time windows may reflect demand across both coasts. To compare like with like, we used the same aidnn test suite as in our earlier post, “Upgrading the Brain Behind aidnn.”

Across eight runs on six dates, we recorded 12,609 LLM API calls: 11,438 for generation and workflow steps, and 1,171 for judging.

We expected higher demand to put pressure on API capacity and quality of service. Our workload is not big enough to produce a scaling issue for these providers, but they have strategies to deal with the worldwide workload as it ebbs and flows like a tide. Trying to observe that through our evals is a little like measuring the tide from inside a swimming pool. Comparing time windows equally shows whether performance shifts across the day, regardless of how many requests arrive in each window. Weighting results by actual request volume answers a different question: how often customers encounter those conditions. We need both views to tell whether a time-of-day difference exists and how much it matters in practice.

Slower in the morning, faster in the evening

Every morning coding run had a higher mean time than every evening run. Morning means ranged from 12.15 to 14.50 seconds; evening means ranged from 10.67 to 11.98 seconds. We had four morning runs, three evening runs and one late-night run. That 23:20 Pacific Time run fell in late morning in India, so it may have overlapped with demand there; we do not have regional provider-load data to test that possibility.

The run means show a clear morning-evening difference, but they do not establish that latency varied more within morning runs. Quality also shifted: evening runs passed more tests, though the change was much smaller than the change in latency.

All eight runs used the same application commit. All 100 cases kept their model, reasoning and requested service-tier settings, and their saved system and user prompts matched wherever artifacts were available.

Next we checked whether extra agent work explained the time. The coding timer stops before code execution and judging, and the same morning-evening gap appears inside the API request timings themselves. Across 799 timed requests, work outside the request averaged less than 12 milliseconds per case in every run. Tool execution, judging and our local rate limiter do not explain the pattern.

Each dot is one individual coding API request duration measured on the client, grouped only by time window. Larger dots show individual requests. Three concentric target rings mark one, two and three standard deviations from each window’s pooled mean; these rings summarize spread and do not assume a normal distribution. The three groups contain 399 morning, 300 evening and 100 late-night requests. Individual request durations overlap across windows; the 16.9% difference refers to the two October 20 run means. This is not a server-only latency or causal provider-load measurement. Methods
See the numbers
Date / launch Window Timed calls Mean API request seconds Mean generation seconds Protocol
2026-10-20 08:57 morning 100 12.83818 12.84216 paired
2026-10-20 17:53 evening 100 10.67151 10.67308 paired
2026-10-21 09:02 morning 99 12.56748 12.57865 candidate-only
2026-10-21 17:00 evening 100 11.97594 11.98366 candidate-only
2026-10-22 17:31 evening 100 11.42734 11.43375 candidate-only
2026-10-29 23:20 late night 100 11.46573 11.47167 candidate-only
2026-10-30 09:08 morning 100 14.49393 14.50123 candidate-only
2026-11-02 10:59 morning 100 12.14722 12.15314 candidate-only

On both dates with a morning and an evening run, the evening mean API request time was lower: by 16.9% on October 20 and by 4.7% on October 21. The gap also holds when we drop the earlier paired runs and the run with one missing timing. That leaves two morning and two evening runs, and the direction survives.

Our prompts, settings and code stayed the same, so the extra morning time was spent inside the request: on the network, in response handling and in the provider's own work. This timer cannot isolate the server, and output and reasoning length can vary even with identical prompts. The broader workflow tests and the quality scores did not show the same clean split.

The measurement notes records each check and its limits. The same-day comparisons and the checks excluding earlier protocols give us a reason to keep tracking this pattern, without treating it as a universal rule about mornings.

Latency was unrelated to token volume

In every run with complete cost data, generating the same 100 code cases cost between $2.34 and $2.42, a 3.7% spread. Mean code-generation time spread much wider: 10.67 to 14.50 seconds, or 35.9%.

The latency difference was unrelated to input tokens, output tokens, or context size. Cache-hit rates did change between morning and night, however, so cache behavior was not held constant. These runs cannot tell us whether that shift contributed to the differences in latency or quality.

Customer business-rule answers behaved the same way. The same 50 questions cost $2.48 to $2.51, while mean latency ranged from 13.08 to 15.59 seconds. A budget built on the bill would have held. A response-time promise built on the fastest run would not.

Individual task costs and durations by time window

MorningEveningLate night
Each dot is one retained task record: a coding case, customer business-rule question, or turbo workflow. The left panel shows generation cost per task; the right shows task duration. Points are grouped by workload and time window, with vertical jitter used only to separate nearby values. Nested dotted rounded cartouches mark mean ±1σ, ±2σ and ±3σ for each group, from inner to outer. Solid dark lines mark the median. Each workload has its own labeled native-unit scale. Counts differ by window; no customer-rule run completed late at night. Methods
See the numbers
Workload Run start Generation cost Mean Median P95 Missing timings
coding 2026-10-20T08:57:47.198502-07:00 2.3915030999999995 12.84216 10.888000000000002 26.299 0
turbo 2026-10-20T08:57:47.198502-07:00 5.32515135 46.926 38.86 99.36 0
customer-sme 2026-10-20T08:57:47.198502-07:00 2.508477 14.90846 13.6525 25.535 0
coding 2026-10-20T17:53:41.611074-07:00 2.3372031 10.67308 9.389 22.286 0
turbo 2026-10-20T17:53:41.611074-07:00 5.450648360000001 41.6408 26.07 93.84 0
customer-sme 2026-10-20T17:53:41.611074-07:00 2.504757 13.08196 11.756 22.868 0
coding 2026-10-21T09:02:02.796709-07:00 unknown 12.578646464646464 10.528 27.886 1
coding 2026-10-21T17:00:30.189511-07:00 2.3720871000000012 11.98366 10.096 27.255 0
turbo 2026-10-21T17:00:30.189511-07:00 6.99393039 49.28 21.56 155.61 0
customer-sme 2026-10-21T17:00:30.189511-07:00 2.499753000000001 14.1827 12.738 24.416 0
coding 2026-10-22T17:31:34.354965-07:00 2.424503100000001 11.43375 9.5795 25.696 0
turbo 2026-10-22T17:31:34.354965-07:00 5.638156510000003 46.9804 35.42 129.92 0
customer-sme 2026-10-22T17:31:34.354965-07:00 2.5051529999999995 13.27712 12.405000000000001 22.814 0
coding 2026-10-29T23:20:27.489228-07:00 2.4224870999999997 11.47167 9.3505 25.991 0
turbo 2026-10-29T23:20:27.489228-07:00 7.05162042 49.3062 38.365 153.01 0
coding 2026-10-30T09:08:17.329934-07:00 2.3744991 14.50123 11.2025 37.602 0
turbo 2026-10-30T09:08:17.329934-07:00 5.680658659999999 46.8556 31.945 125.57 0
customer-sme 2026-10-30T09:08:17.329934-07:00 2.482916999999999 15.58818 15.3325 26.124 0
coding 2026-11-02T10:59:49.504849-08:00 2.3981631 12.15314 10.431000000000001 26.484 0
turbo 2026-11-02T10:59:49.504849-08:00 5.257489585 40.2102 28.474999999999998 106.64 0
customer-sme 2026-11-02T10:59:49.504849-08:00 2.4886410000000003 14.08686 12.802 25.465 0

These ranges describe the runs we observed; they do not bound the next one. In this sample, similar cost and token volumes coexisted with longer, more variable waits.

The multi-step analysis workflows moved on both fronts: generation cost varied by 34.1% and mean latency by 22.6%. Those workflows gave us a reason to check our own execution path before drawing a conclusion about model response times.

Was the extra time coming from our agents?

Before attributing the wait to the model request, we had to check what our agents were doing. The 50 analysis workflows include dataset exploration, calculations and chart creation. Their timings mix model requests with tool execution and orchestration, so we first broke them down by the kind of work.

Workflow latency and generation cost by time window

Each dot is one of the 50 analysis workflow tasks from a completed run. Points are grouped by morning, evening and late-night launch windows, and colored by day of week. The left panel shows generation cost per task; the right shows full task duration, including model calls, tool execution and orchestration. Dotted cartouches mark mean ±1σ, ±2σ and ±3σ; solid lines mark medians. Counts are 150 morning, 150 evening and 50 late-night tasks, from three, three and one runs respectively. Methods
See the numbers
Category Mean generation cost range Mean latency range Iterations
Dataset exploration · 18 $0.03525 to $0.04362 16.67 to 22.00s 7
Numerical analysis · 14 $0.08036 to $0.11183 35.35 to 49.48s 7
Context-informed analysis · 7 $0.17477 to $0.21969 71.53 to 90.47s 7
Chart creation & refinement · 7 $0.24035 to $0.48544 79.95 to 130.10s 7
Missing-data handling · 4 $0.05144 to $0.05708 24.18 to 30.52s 7

The seven chart workflows had mean latencies from 79.95 to 130.10 seconds across runs. The 18 dataset-exploration tasks ranged from 16.67 to 22.00 seconds. That made the overall workflow average a poor starting point for isolating a timing change.

Serving choices can affect output quality as well as speed. KV-cache quantization is one possible factor; Cloudflare describes techniques for making models smaller and faster. We did not measure quantization in these runs.

Coding gave us one: each completed case made a single generation request, with its saved prompts and settings held fixed. We could measure that request before executing or judging the generated code, then compare the runs by when they started.

One row per coding case and one column per run. Writer boundaries are marked with white lines. Values are relative to each case’s own median. Gray means unknown, and the color range is clipped. Methods

Test the model at the hours your customers use it

Every morning coding run was slower on average than every evening run we measured, while evening runs passed slightly more tests. Our feature development and much of our customers’ work happen on weekdays, so weekend benchmarks may not reflect the conditions they experience.

The extra time appeared inside the API request, before code execution or judging, with the application and saved prompts unchanged. Cache-hit rates varied between morning and night, and serving choices such as KV-cache quantization may affect quality. These runs do not isolate which service-side factors contributed. Providers could make this easier to investigate by reporting queue and processing times, resolved model versions, and cache behavior.

We should keep running the same representative suite at the hours customers use the product, including both weekends and working days. Compare time windows equally to spot shifts, then weight them by request volume to estimate how often customers encounter each condition. Track quality, latency, and cost together, with results visible for each window.

Appendix