Designing the Morning: Fixing Distribution Intake from the Inside

Self-initiated concept · Figma, Claude Code, Cursor · All data fabricated

Ten of us on a retirement plan administration team process ~100 401(k) distribution requests a day, one carrier each, against a two-day timeline. I run this workflow every morning — so I mapped where it breaks and designed a better version.

100+

Requests

2 days

Processing Time

The Current Workflow

Each person runs a script that clicks through their carrier’s portal and exports requests to Excel. Everyone emails their file into a chain; one person consolidates all ten and keys each request into PensionPro, our system of record.

Where it Breaks

  • Script failures are invisible. They stall mid-clickthrough and fail silently — someone just notices a file never arrived.

  • Aggregation runs through one person. Ten streams, one email chain, one consolidator — a bottleneck and a single point of failure.

  • Errors surface too late. Duplicates aren’t caught until PensionPro rejects an entry.

The pattern: people are doing the work the system should do — aggregating, catching errors, noticing failures.

The Constraint I Can’t Design Away

The deepest fix is upstream — data feeds instead of scripts clicking through portals — but that’s a vendor-and-engineering problem, not a design one. So I scoped to the layer I can design: the surface between the scripts and PensionPro.

The Intake Dashboard

The deepest fix is upstream — data feeds instead of scripts clicking through portals — but that’s a vendor-and-engineering problem, not a design one. So I scoped to the layer I can design: the surface between the scripts and PensionPro.

AN ALL IN ONE DASHBOARD

What This Doesn’t Solve

It removes the email relay and surfaces failures — but it doesn’t eliminate manual PensionPro entry, and live aggregation assumes the scripts feed a shared store rather than emailing files. The open question: where’s the line between a useful intake layer and rebuilding a tool the team already pays for? Knowing that line is the job.

What It Reflects

The failures that hurt most in operational software aren’t UI problems — they’re visibility problems. The job isn’t prettier screens; it’s to stop making people be the system’s error-detection layer.

Designing the Morning: Fixing Distribution Intake from the Inside

Designing the Morning: Fixing Distribution Intake from the Inside

Self-initiated concept · Figma, Claude Code, Cursor · All data fabricated

Ten of us on a retirement plan administration team process ~100 401(k) distribution requests a day, one carrier each, against a two-day timeline. I run this workflow every morning — so I mapped where it breaks and designed a better version.

100+

Requests

2 days

Processing Time

100+

Requests

2 days

Processing Time

The Current Workflow

Each person runs a script that clicks through their carrier’s portal and exports requests to Excel. Everyone emails their file into a chain; one person consolidates all ten and keys each request into PensionPro, our system of record.

The Current Workflow

Each person runs a script that clicks through their carrier’s portal and exports requests to Excel. Everyone emails their file into a chain; one person consolidates all ten and keys each request into PensionPro, our system of record.

Where it Breaks

  • Script failures are invisible. They stall mid-clickthrough and fail silently — someone just notices a file never arrived.

  • Aggregation runs through one person. Ten streams, one email chain, one consolidator — a bottleneck and a single point of failure.

  • Errors surface too late. Duplicates aren’t caught until PensionPro rejects an entry.

The pattern: people are doing the work the system should do — aggregating, catching errors, noticing failures.

The Constraint I Can't Design Away

The deepest fix is upstream — data feeds instead of scripts clicking through portals — but that’s a vendor-and-engineering problem, not a design one. So I scoped to the layer I can design: the surface between the scripts and PensionPro.

The Intake Dashboard

The deepest fix is upstream — data feeds instead of scripts clicking through portals — but that’s a vendor-and-engineering problem, not a design one. So I scoped to the layer I can design: the surface between the scripts and PensionPro.

AN ALL IN ONE DASHBOARD

What This Doesn't Solve

It removes the email relay and surfaces failures — but it doesn’t eliminate manual PensionPro entry, and live aggregation assumes the scripts feed a shared store rather than emailing files. The open question: where’s the line between a useful intake layer and rebuilding a tool the team already pays for? Knowing that line is the job.

What It Reflects

The failures that hurt most in operational software aren’t UI problems — they’re visibility problems. The job isn’t prettier screens; it’s to stop making people be the system’s error-detection layer.

Where it Breaks

  • Script failures are invisible. They stall mid-clickthrough and fail silently — someone just notices a file never arrived.

  • Aggregation runs through one person. Ten streams, one email chain, one consolidator — a bottleneck and a single point of failure.

  • Errors surface too late. Duplicates aren’t caught until PensionPro rejects an entry.

The pattern: people are doing the work the system should do — aggregating, catching errors, noticing failures.

The Constraint I Can’t Design Away

The deepest fix is upstream — data feeds instead of scripts clicking through portals — but that’s a vendor-and-engineering problem, not a design one. So I scoped to the layer I can design: the surface between the scripts and PensionPro.

The Intake Dashboard

One shared queue replaces the relay — the whole team sees the same live picture instead of truth scattered across ten inboxes. A status rail shows every carrier’s script state; a failure shows red the moment it happens. Duplicates are flagged at intake, not at the end. Status is deliberately binary — in PensionPro or not — the only thing that ultimately matters. A “Ran by” column shows who pulled each carrier, since assignment itself happens downstream in PensionPro. And when data needs to leave the tool, export is logged — a trail instead of an untracked loose file.

AN ALL IN ONE DASHBOARD

What This Doesn’t Solve

It removes the email relay and surfaces failures — but it doesn’t eliminate manual PensionPro entry, and live aggregation assumes the scripts feed a shared store rather than emailing files. The open question: where’s the line between a useful intake layer and rebuilding a tool the team already pays for? Knowing that line is the job.

What it reflects

The failures that hurt most in operational software aren’t UI problems — they’re visibility problems. The job isn’t prettier screens; it’s to stop making people be the system’s error-detection layer.