财报炸裂,但闪迪隔夜为何暴跌?
苹果收盘市值5.03万亿美元反超英伟达,重夺全球第一
Marvell收购Lumentum:“芯片 + 光学”的首次深度闭环,“既当裁判又当运动员”与光通信的“赢家通吃”
AI“完美风暴”剧本:债市“吹响号角”,财报“雪上加霜”,中选“最后一击”?
Enlightenment 0.28.0 Release
Their alternative to Qt/GTK (EFL) also got a new release: https://www.enlightenment.org/news/2026-10-31-efl-1.29.0
Novellas with groff
It's the memory latency, stupid
U.S workers just took home their smallest share of capital since at least 1947—and the lowest ever recorded
As corporate earnings soar and U.S. GDP balloons, the American workforce isn’t feeling the same boom. American workers are taking home less of the country’s overall income, data from the Bureau of Labor Statistics shows, and employment in the U.S. is set to continue to slow.
Labor share, or the portion of the U.S.’s economic output that workers receive through salary and wages, decreased to 52.8% in the second quarter of 2026, its lowest level since the BLS started recording this data in 1947, according to its labor productivity and costs report. In the previous quarter, labor share was at 53.6%. This decade, the labor share average was about 55.6%.
That’s despite corporate earnings skyrocketing, with profits for Fortune 500 companies hitting a record $2.1 trillion in 2025. The U.S. GDP grew 3.4% in the third quarter last year, exceeding economists’ predictions.
That growth has not only come at the expense of how much of the pie of wealth workers are taking home, but also how many Americans are in the workforce, economists warn.
“That decline in the share of labor has got to be either falling earnings or falling numbers of people,” Raymond Robertson, a labor economist at Texas A&M’s Bush School of Government, told Fortune. “The falling share of income is having to do with the shift towards capital.”
Indeed, there are growing signs that as national income balloons, the U.S. workforce is deflating. Unemployment ticked up to 4.2% in September, and employers added just 584,000 jobs in 2025 compared to 2 million added in 2024. The U.S. added 29,000 jobs in September, about one-third of economists’ projections.
The bifurcation of corporate victories and weak labor data raises concerns among economists of jobless growth jeopardizing the U.S. workforce, as well as a K-shaped economy, where the rich get richer while the poor get poorer, becoming more exaggerated.
“Data right now is very mixed,” Robertson said. “But I think it also all consistently points to this idea that things are getting worse for workers and much better for billionaires.”
What is causing jobless growth?
Robertson attributes weakening labor share averages to the rise in automation, which he noted is displacing workers, with productivity—a metric essentially measuring worker output—continuing to rise. Second-quarter GDP data showed nonfarm productivity growth grew 1.4% last quarter, though the rate has slowed from 2.2% in the same quarter a year ago.
“All these things, bit by bit, are replacing people, and they’re concentrating income and their share of capital,” he said.
Goldman Sachs analysts Joseph Briggs and Sarah Dong estimated in a report, based on Department of Labor job numbers, that AI automation could displace 25% of all work hours. They predicted that over the course of the AI adoption period, a 15% increase in AI-driven productivity would displace 6% to 7% of jobs, and, at its peak, a 1 million increase in unemployed workers, though job displacement as a result of AI has not shown up meaningfully in any economic data.
The displacement could be substantial, the analysts said, but said the impacts of automation will be tempered by a wealth of new jobs created as a result of the technological changes.
Automation is expected to be a boon to corporate profits and GDP, projected to boost GDP by 1.5% by 2035, according to a Wharton brief published in September 2025. Early signs indicate AI could drive productivity gains, with around 80% of employees reporting AI makes them faster at specific tasks, but only 37% of companies seeing an impact of that productivity on operating profits, according to McKinsey data, and AI operating costs continue to constrain its deployment.
Robertson added that growing unemployment, which he expects to see rise over the next few months, keeps wages down, allowing margins and profits to expand.
To be sure, the recent productivity surge has been an “open question,” Morgan Stanley economists have argued, not unanimously attributed to increased adoption of AI or automation. The analysts suggested this increase would be cyclical, or vestiges of pandemic-era habits of companies making more from less.
An Oxford Economists research brief from earlier this year suggested companies are disguising overhiring-related layoffs as a result of AI, but said automation-related workforce reductions have not yet happened en masse. Additionally, while unemployment has been ticking up over the past year, it is still relatively low.
Why is an immigration crackdown backfiring on U.S. labor?
Mark Regets, senior fellow at National Foundation for American Policy (NFAP), sees a different reason for a slowing workforce. He told Fortune President Donald Trump’s immigration crackdown has not done what Trump administration officials, such as White House Deputy Chief of Staff Stephen Miller, said it would in increasing the number of U.S.-born workers. Instead, according to Regets, Trump’s immigration policies have not only decimated the foreign-born workforce, but has also created fewer opportunities for domestic-born workers to find jobs.
NFAP data shows a 1.1 million to 1.4 million-person reduction in the foreign-born workforce since January 2025, consistent with the
What Social Constructs Are (And Are Not)
This post is mostly adapted from a section of another post. I wanted a standalone version, to serve as background for a sequence on the mechanisms of social reality.
You’ve probably heard that things like laws, conventions, norms, cultural associations, status, and so forth are “social constructs”: they’re kinda arbitrary in some sense, an artifact of social reality as opposed to physical reality. This post offers a little more clarity on what social constructs are, and the ways in which they are and are not “arbitrary”.
Example: Vehicle Categories
The vehicles humans build today mostly fall into categories like “minivan” or “truck” (among other categories). These categories cash out in predictions: when I see a vehicle with sliding side doors, I predict that it will have a trunk door that opens overhead, three rows of seats, be driven by someone with kids, etc. On the other hand, when I see a vehicle with a flat bed in the back, I predict that it will not have three rows of seats, will have a back gate which opens downwards, be driven by my cousin, etc. [1]
But humans could choose to make different vehicles, which would change which clusters exist amongst our vehicles. The types of vehicles people make are a matter of social convention - i.e. vehicle types are a social construct. Crucially, this does not mean that vehicle categories are “fake”! Categories like minivan and truck are very real in our world, they have real predictive power, and they have predictive power because humans choose to build vehicles which match those categories.
Two key points:
- Many humans, or a few well-resourced humans, could change which vehicle-clusters exist by changing what vehicles are produced. We can change the social construct by going out and changing things in the real world.
- Changing a social construct is not just about deciding that I personally am going to categorize things differently. If I draw different vehicle-clusters, I will probably just be wrong, in the sense that I make worse predictions about e.g. vehicles with sliding side doors also having three rows of seats.
Here’s the mental picture, in terms of clusters:
This is a classic straightforward case of words pointing to clusters in thingspace. But if people go out and build other kinds of vehicles, it might look like this:
… and if they build enough new vehicles, it can totally change what clusters are present:

Same points as in the previous diagram
Our two key points, in terms of clustering:
- People can totally change what stuff is in the world, in such a way that the “natural categories” (in this case the clusters) change.
- … but that requires going out and changing stuff in the world; it’s not just a matter of me deciding to carve up the same data in different ways.
So even if the clusters can be changed by humans by changing the world, that doesn’t mean that choice of clusters is a totally arbitrary choice of how to view the same data.
Example: Laws
Laws are another classic prototypical example of social constructs.
Like vehicle categories, laws have a lot of predictive power. For instance, if I look up some case law on vehicular manslaughter online, and then I go into any of thousands of different courtrooms in the US, I expect to see proceedings hinge on basically the points described online. Just like the minivan/truck categories provide predictive power insofar as they statistically describe lots of real-world vehicles, laws provide predictive power insofar as they statistically describe lots of real-world actions by police, judges, etc. Even an alien observing humans would find it useful to keep track of the laws, in order to predict how lots of different humans behave.
But just like with the vehicles, humans can collectively decide to adopt different laws. The same two key points apply:
- People can totally change the laws, in such a way that all the predictions summarized by “laws” change.
- … but that requires somehow changing the behaviors of a whole lot of individual police, judges, etc, as well as many written records; it’s not just a matter of me deciding that vehicular manslaughter is fine now.
The General Principle
In general, social constructs are real predictive patterns which are out in the world because humans collectively chose to put those patterns in the world. In principle, humans can collectively choose to put different patterns in the world. And sometimes we do! E.g. laws change, or new vehicle categories are created.
Social constructs are “arbitrary” in the sense that humans a
Generalized belief states in transformers
Many thanks to Xavier Poncini, Paul Riechers, Fernando Rosas, and Matt Smith for useful conversations.
1. Introduction
Despite the recent successes of transformers and other sequence models, there are still many open questions about their basic principles of operation. For example, what internal representations do these models use for prediction and generation? Can we decode, interpret, and manipulate such representations? Is it even possible to consider a notion of representation without reference to an external world model?
To make progress on these questions, I propose a general way to define, decode and manipulate representations in sequence models. The approach is centered on the concept of "generalized belief states", statistics of past observations that satisfy a few criteria: (1) they are sufficient for predicting future data, (2) they can be recursively updated as new observations come in, and (3) they are low-dimensional, allowing for visualization and interpretation. I show that such generalized belief states can be mapped to the internal activations and dynamics of a sequence model, allowing for decoding and manipulation of the model's representations. I illustrate the ideas using a tractable toy model, a transformer trained on a simple HMM stochastic process, where we will see that the KV cache plays a key role.
This post is directly inspired by the 2024 paper "Transformers Represent Belief State Geometry in their Residual Stream" by Adam Shai, Paul Riechers, and collaborators. That paper introduced the idea of studying belief states in transformers, and proposed a method for doing so using tractable toy models. I recommend reading that paper if you haven't already, though it is not a prerequisite for understanding my post. Section 5 compares this approach with the one developed in that paper.
2. Belief states
We start at a general level, by considering the problem of sequence prediction. Imagine that we observe a history of previous tokens and then wish to predict the next token . We assume that sequences are drawn from a stochastic process . For now, it does not matter whether this process comes from real-world data or a generative model.
Before proceeding, we introduce a bit of notation. indicates the token alphabet, indicates the set of finite-length sequences (including the empty history ), and indicates the set of probability distributions over the alphabet . We write for the set of histories with positive probability under the stochastic process.
2.1 Hidden Markov models
To optimally predict the next token after observing history , we must compute the conditional distribution . We may now ask: what information should we track in order to compute this distribution? How should this information be updated as new tokens arrive? Does this information represent some unobserved latent aspect of the stochastic process?
These questions have a straightforward answer when the stochastic process is described as the output of a hidden Markov model (HMM). Given an HMM description, we can write the probability of any history as [1] where is the hidden state of the HMM at step , is the probability of emitting token and transitioning to hidden state from hidden state , and is the initial distribution over hidden states. Using this expression and Bayes' rule, the next-token distribution can be written in a factorized form as Here, is the Bayesian posterior distribution over the hidden state, conditioned on the observed history . This posterior distribution corresponds to the beliefs of a Bayesian observer about the underlying states of the generating process, and in the literature, it is called a belief state. [2]
Belief states satisfy two important properties: sufficiency and recurrence. Sufficiency means that the belief state allows us to predict the next token just as well as if we knew the whole history , as seen from the prediction map in Eq. (1a). Recurrence means that, after observing a new token , the updated belief state can be computed from and alone. In particular, using Bayes' rule, we can write the update map as
In addition to sufficiency and recurrence, belief states have several other attractive properties. For instance, the prediction map (1a) is time-independent and linear in . Time-independence lets us interpret belief states at different steps in the same way; linearity lets us interpret predictions as convex mixtures of those made by individual hidden states. The update map (1b) is also time-independent and "nearly" linear, being a ratio of two linear functions of the belief state. (In fact, without loss of generality, we may instead consider "unnormalized" belief states , which update in a purely linear way . [3] )
In practice, belief states are often encoded as nonnegative vectors: where is the number of hidden states of the HMM. In this way, each belief state is a nonnegative -dimensional vector that sums to 1, so it belongs to a -dimensional affine subspace of . For HMMs with few hidden states, belief states belong to a low-dimensional space, allowing for easy visualization and interpretation. Also, in this space, belief states often exhibit a remarkable fractal structure, which arises from the recursive nature of the update map. [4]
2.2 Example
To make things concrete, we now introduce a running example: a stochastic process called MRRXOR that is generated by an HMM with five hidden states. [5] The HMM emits two independent random bits, then their XOR, and then resets. In addition, at each time point, the hidden state can jump to another random hidden state with probability ; if this random jump occurs, it does not emit a token and is immediately followed by an ordinary transition. The HMM is shown in the following figure, with each transition labeled by its emitted bit and probability. (For visual clarity, the random jumps between hidden states are not shown.)
Next, we illustrate the geometry of belief states for this HMM. We compute the belief states after each of the possible histories of length . Each belief state is a normalized nonnegative vector that belongs to a four-dimensional affine hyperplane of .
We visualize these vectors using principal component analysis (PCA), showing all six pairs of the four non-trivial principal components. Each belief state is colored by the last two tokens of the history, with its point area proportional to the history probability. Black dots correspond to each of the five hidden states A–E.
PC1 largely tracks the probability of the "reset" state A, i.e., the belief that an XOR triple has just been completed. PC2 separates histories by their last token. PC3 s
How to force an app to use the discrete GPU in Windows 11
I've seen this happen more than once: a laptop with a beefy RTX 40-series GPU chugs through a game or renders video like it's running on a toaster. The culprit is almost always Windows happily defaulting to the integrated graphics. Laptops from best gaming and creator models pack both an iGPU and a discrete GPU, but Windows doesn't always know which one your app actually needs. I fixed this by forcing Windows 11 to use the dedicated GPU for specific apps, and it takes about two minutes to set up.
A KDE developer reveals Kwi, a GPU-accelerated terminal built on Ghostty's library
How old do you think Konsole is? I've only been in the Linux space for about a year and a half, so when I learnt that the terminal emulator that comes shipped with KDE is almost three decades old, I was pretty surprised to see it's still going in this day and age.
Bitcoin turns 18: Has the original rebel grown up?

In typical Bitcoin style, the number one cryptocurrency turns 18 today, amid AI-driven security threats, quantum fears and the biggest exchange hack in crypto history.
Estimating Audio Transcription API Cost Per Minute in Go Before Production
Short answer: estimate transcription spend from the audio duration before accepting the job, then turn that estimate into a quota and an alert threshold. Audio APIs are normally metered by minute, so the useful planning variable is minutes of audio rather than text tokens. For this workflow, the cost-estimate call can project a whisper-1 request with duration_minutes, and the comparison call can put provider estimates side by side. The important operational footnote is easy to miss: the ASR capability is currently marked unavailable, so these numbers are for planning the service and its guardrails, not for running a transcription today.
That distinction changes the first page an on-call engineer sees. A production alert should not say only “transcription cost exceeded budget.” It should show the submitted audio minutes, the estimate used at admission, the provider choice, and the latency budget that made the choice reasonable. Otherwise the alert arrives after a batch has already become an accounting problem.
What should the cost alert show first?
Imagine the alert page at 02:10: the invoice-extraction queue is growing, estimated audio spend is above its hourly allowance, and p95 transcription latency has crossed the SLO. The person on call needs a decision, not another dashboard tile: reject new work, defer it, or accept slower processing for better extraction quality.
Work backward from that page. The signal that should have fired earlier was the estimate at admission time. For each invoice audio file, record duration, selected model, projected cost, and the quality-versus-latency policy that selected it. Aggregate those records by tenant and time window. A quota then becomes a control on planned work, while the later provider response remains a measure of what actually happened when ASR is available.
This is why I would estimate before uploading a large batch rather than discover the unit of billing in a month-end report. One key and one bill for every backend service can reduce credential and reconciliation sprawl, but it does not remove the need to own the admission rule. Centralized access is an operational convenience; it is not capacity planning.
How can I estimate the cost of an audio transcription API per minute?
Let M be the total audio minutes admitted in a window and C(m) the estimate returned for model m. A simple guardrail is:
planned_spend = sum(C(model, duration_minutes))
Stop admitting work when planned spend reaches the tenant quota, or when the remaining latency budget cannot absorb the queue. The formula is intentionally boring. Boring formulas are easier to audit when a supplier invoice is late, duplicated, or unusually long.
Do not substitute token accounting for duration accounting. Text generation and chat commonly expose input and output token units; transcription is typically priced per minute of audio. The right comparison is therefore minutes, expected quality, and end-to-end latency. A cheaper estimate that produces unusable invoice fields is not a cheaper pipeline after reprocessing and human review are included.
The cost estimate is a planning input, not a quality score. Keep a separate quality sample: field-level extraction accuracy, confidence review rate, and the fraction of invoices needing a second pass. That separation prevents a cost dashboard from quietly becoming the owner of an SLO it cannot observe.
Which provider fits an invoice-extraction pipeline?
There is no universal winner because the decision axis is quality versus latency, with cost acting as a constraint. OpenAI’s Whisper API is a familiar hosted option for teams already using its API surface. Google Cloud Speech-to-Text is a natural fit when the rest of the workflow already lives in Google Cloud and regional integration matters. Amazon Transcribe fits a similar AWS-centered operating model, with managed speech processing alongside other AWS controls. Deepgram is another real option for teams that prioritize a specialized speech API and need to evaluate streaming and batch behavior separately.
Those are materially different operating choices, not four labels for the same service. A hosted provider reduces model-serving work, while cloud-native placement can simplify identity, networking, and data-governance review. A speech-focused API may offer a better latency profile for the target language or audio mix, but that claim belongs in a controlled evaluation, not in a procurement spreadsheet. Self-hosting an open model with Ollama can improve control over deployment and data boundaries; it also moves capacity planning, model rollout, GPU utilization, and on-call responsibility onto the platform team.
Gemini can belong in a secondary comparison when audio understanding is part of a broader multimodal workflow, while OpenRouter and Together are better treated as routing or model-access alternatives than as dedicated transcription services. Anthropic and Claude belong in the same adjacent-platform category. I would not call any of those a direct replacement for a per-minute ASR benchmark; naming the boundary prevents a broad AI platform comparison from hiding the actual speech requirement.
For an independent comparison, I would score the candidates against the invoice corpus rather than rank them by a single per-minute number:
| Option | Useful fit | Cost and latency question | Boundary |
|---|---|---|---|
| OpenAI Whisper API | Existing OpenAI client and hosted transcription workflow | Does its service latency meet the batch SLO at the target duration mix? | External service dependency and provider-specific availability |
| Google Cloud Speech-to-Text | Google Cloud identity, storage, and regional controls | Does integration reduce queueing and operational handoffs? | Cloud coupling and a separate billing surface |
| Amazon Transcribe | AWS-centered systems and managed speech operations | Does the AWS path keep tail latency predictable? | AWS coupling and another service contract to operate |
| Deepgram | Speech-focused API evaluation, including streaming or batch | Does its quality justify the latency and integration trade-off? | Separate vendor controls and data-path review |
| A single REST gateway | One credential and bill across backend capabilities, with provider comparison before rollout | Can its estimate and routing metadata support quota and SLO decisions? | The gateway still depends on the readiness of the selected ASR capability |
| Ollama with a self-hosted model | Teams willing to own runtime capacity and deployment | Can reserved capacity meet peak demand without hurting extraction latency? | Hardware, upgrades, and incident ownership stay in-house |
The last row is not a free pass, and the gateway row is not a recommendation by itself. Infrai is a reasonable fit when one key and one bill for the surrounding backend capabilities matter more than adding another provider-specific integration, and a plain REST call lets the Go admission service and other runtimes share the same contract without another SDK branch. Its ASR readiness still has to be checked before rollout. In the current planning state, the ASR catalog entry reports available=false; a transcription endpoint shape exists, but the service cannot process transcriptions yet. That makes a pre-launch estimate useful for quotas and alert thresholds while making any claim about live transcrip
Workflow vs agent
Workflow vs Agent: Deterministic Orchestration & Dynamic Tool Selection
Quick Diagnosis
| Situation | Recommended approach | Why it fits |
|---|---|---|
| All steps known ahead of time (e.g., fetch data → prompt → parse → store) | Workflow | Immutable execution, easy testing, predictable token usage |
| Path depends on content or user intent (e.g., “answer any compliance question”) | Agent | Chooses tools at runtime, handles unknown sub‑tasks |
| Regulatory audit required (immutable logs, version‑controlled prompts) | Workflow | Deterministic runs produce repeatable audit trails |
| Live numeric value needed (credit score, market rate) | Tool call from workflow (authoritative API) | Guarantees freshness; does not rely on stale retrieval |
| Batch processing with tight cost budget | Workflow | One LLM call per step, predictable token usage |
| Real‑time, ad‑hoc question answering | Agent | Dynamic reasoning, on‑the‑fly tool selection |
| Mix of known skeleton + occasional live‑value request | Hybrid (workflow + runtime API/agent) | Keeps core deterministic, adds flexibility only where required |
Decision Flow
flowchart TD
A["Is the full execution path known ahead of time?"]
B["Can every required tool be enumerated?"]
C["Use a deterministic workflow"]
D["Is the request likely to need unknown sub‑tasks?"]
E["Add an agent layer for dynamic tool selection"]
F["Can live values be fetched via an API?"]
G["Expose API call from the workflow"]
H["Leave decision to the agent at runtime"]
A -->|Yes| B
B -->|Yes| C
B -->|No| D
D -->|Yes| E
D -->|No| F
F -->|Yes| G
F -->|No| H
Architectural Responsibilities
| Layer | Core duty | Typical implementation |
|---|---|---|
| Deterministic Orchestrator | Define the fixed sequence, validate inputs, enforce business rules, emit immutable logs | Azure Logic Apps, Temporal, Airflow, hand‑rolled Python DAG |
| Agent Core | Detect intent, decide which tool or retrieval source to invoke, manage ReAct‑style loops, handle fall‑backs | LLM prompting with function‑calling schema, structured reasoning templates |
| Tool / Retrieval Layer | Provide static knowledge (document store) or fresh data (authoritative API) | Azure Cognitive Search, public REST endpoints, token‑protected credit‑bureau API |
| Governance & Auditing | Record every step, version‑control prompts, certify compliance checks | Write‑once log storage, signed manifests, CI linting of workflow definitions |
| Cost & Latency Monitor | Track token usage, external‑API count, per‑step latency | OpenTelemetry exporters, custom metric dashboards |
Python Decision Helper (Teaching‑Only)
# decision_helper.py – pure stdlib, no external packages
import json
from pathlib import Path
from typing import Literal, TypedDict
class DecisionInput(TypedDict):
"""Minimal data required to pick workflow vs. agent."""
steps_known: bool # True if the entire sequence can be enumerated
tools_enumerated: bool # True if every tool can be listed up‑front
live_value_needed: bool # True if an authoritative API must be called
dynamic_subtasks: bool # True if request may spawn unknown sub‑tasks
def choose_strategy(data: DecisionInput) -> Literal["workflow", "agent", "hybrid"]:
"""
Return the recommended execution style.
* `workflow` – fully deterministic pipeline
* `agent` – pure agentic control
* `hybrid` – deterministic skeleton with optional runtime API or agent
"""
# Basic validation – fail fast if the contract is broken
assert isinstance(data["steps_known"], bool), "steps_known must be bool"
assert isinstance(data["tools_enumerated"], bool), "tools_enumerated must be bool"
assert isinstance(data["live_value_needed"], bool), "live_value_needed must be bool"
assert isinstance(data["dynamic_subtasks"], bool), "dynamic_subtasks must be bool"
if
WARN Act and Job References: What to Ask For Before Your Last Day
A WARN notice gives you time. Use some of it to sort out your references, because the law that requires the notice does not require your employer to recommend you.
The federal WARN Act is a notice law. When it applies, a covered employer must give workers 60 days' advance notice of a plant closing or mass layoff. It says nothing about references, recommendation letters, or what a former employer may tell a hiring manager. That part is left to company policy, any severance agreement you sign, and the laws of your state. Arrange a reference deliberately, while you still have access to the people who can give one.
The numbers behind this week's notices
Layoff Atlas currently tracks 686 WARN notices covering 66,703 reported workers in its 90-day window, with 29 worker counts unavailable. California leads the state ranking with 17,715 workers, followed by Washington with 17,361, Illinois with 4,385, Texas with 3,280, and Georgia with 2,492.
The upcoming weeks show 4,017 workers with effective dates in the week of November 1, 5,311 in the week of November 8, 7,830 in the week of November 15, 6,614 in the week of November 22, 5,922 in the week of November 29, and 721 in the week of December 6 — a six-week total of 30,415 workers. These are reported plans, not confirmed job losses: plans can change, shrink, or be withdrawn before the effective date.
If your effective date falls in one of those weeks, your reference window is the notice period itself. Once the site closes or the team disperses, tracking down a manager gets much harder.
What employers usually say
Many employers now follow a neutral-reference policy: human resources confirms only job title, dates of employment, and sometimes eligibility for rehire. Companies adopt neutral policies largely because managers worry that a negative comment could lead to a defamation claim.
A neutral reference still verifies that you worked where and when you say you did. But it will not describe your work. If you want more than verification, you need a specific person — a direct manager, team lead, or client contact — willing to speak for you personally.
Ask early, and ask directly: "Would you be willing to serve as a reference for me?" A vague "let me know if you need anything" is not a yes. Get a clear answer and a way to reach the person after your last day, such as a personal email address, before company accounts are deactivated.
What to ask for before your last day
Do this while you are still on the inside, not after you have left:
- A named reference contact. One or two people who supervised your work and will take calls or answer emails from hiring managers.
- A written recommendation. A short letter on company letterhead, or a LinkedIn recommendation, is portable in a way a phone call is not. Ask for it before the notice period ends, when the request is easy to fulfil.
- Agreed language, if you are offered severance. Some severance agreements include a clause about what the company will say when asked for a reference. Read it before you sign, and make sure any promised reference names the person who will give it.
- A copy of your own record. Keep your offer letter, job description, performance reviews, and awards. Your own documents back up your account even when the company's reference is neutral.
Do not assume a manager who praised you in person will remember the details six months later. A short note now — your role, main projects, and results — makes it easy for a reference to say something specific later.
If your employer will only confirm dates
A neutral-only policy is common, and it does not mean you have no references. Look beyond your direct manager: a skip-level manager, a project lead in another department, a client you served, or a colleague who later moved to another company can all speak to your work. What matters to a hiring manager is that the person actually worked with you and can describe what you did.
Be honest with new employers: "My former employer confirms dates and title only, as a matter of policy" is normal in hiring today, and it reads very differently from a gap with no explanation. Offer the references you do have early, so hiring is not held up waiting on a company that will only confirm the basics.
What hiring managers may check
Expect two different checks. A background verification firm usually confirms employment history — title, dates, sometimes salary — through human resources or a verification service. A reference check is separate: a hiring manager calls the people you named and asks about your work. Make sure the people on your reference list know they are on it and what role you are applying for; a reference surprised by a call sounds uncertain.
If a check turns up something you dispute, you can correct a factual error about dates or title with your own documents, and add another reference who knows your work better.
A WARN notice is about time, and time is what a good reference takes to arrange. The notice guarantees advance warning, not a recommendation. That is the part you have to ask for — in the notice period.
Data source: Layoff Atlas