Systems & engineeringbeta

EIES — employer inactivity enforcement

The state machine that hides listings when employers stop responding.

Last updated 16 Aug 2026

Overview

EIES — the Employer Inactivity Enforcement System — is the tension member of the marketplace. It makes silence expensive. An employer who collects applications and never responds loses visibility automatically, without a human having to notice.

Status: Under Beta Testing Phase 1 Database + server-side only

Why this exists

The single most corrosive thing on an internship board is the ghost listing: live, attractive, and attached to an employer who stopped reading applications weeks ago. Students cannot detect it. They apply, wait, and conclude the platform is useless.

EIES converts responsiveness from a courtesy into a condition of visibility. Respond to your applicants and nothing happens. Ignore them and your listing quietly leaves the public surface.

The state machine

eies_state (per listing)
normal --overdue application--> warning --grace 3d expired--> paused --14d--> archived
   ^                                |                              |
   +---- all applications resolved -+------------------------------+
StatePublic visibilityMeaning
normalVisibleNo overdue applications
warningVisibleAt least one application is overdue; 3-day grace running
pausedHiddenGrace lapsed. Employer and admins still see it
archivedHidden14 days paused with no response. Retention marker set

Independent of is_active

eies_state is orthogonal to whether an employer has switched a listing on. Public visibility requiresis_active = true AND eies_state IN ('normal','warning'), so an enforcement pause cannot be undone by toggling a switch in the UI.

The clock

  1. A timer is created on application

    A BEFORE INSERT trigger sets eies_due_at = applied_at + 7 dayson every internal application.
  2. External applications are exempt

    Anything that is not an internal application getseies_due_at = NULL and never enters EIES. We do not police inboxes we cannot see.
  3. A qualifying response stops the clock

    Moving an application to under_review,shortlisted, interview,accepted or rejected writeseies_responded_at once. appliedand pending do not qualify.
  4. Responses are never un-recorded

    eies_responded_at is written once and never reset. A later status change cannot restart a timer, so employers cannot game the clock by cycling statuses.

What EIES deliberately does not observe

Logins, listing views, profile edits and page visits are invisible to EIES. The only thing that counts is an actual decision recorded against an actual applicant. Activity theatre earns nothing.

Reactivation

A paused or archived listing returns to normal only when every overdue application has a qualifying response. Applications whose 7-day deadline is still in the future keep their timers but do not block reactivation — they simply matter at the next evaluation.

server-side, service_role only
SELECT public.eies_evaluate_internship('<internship_id>');    -- run the state machine
SELECT public.eies_unresolved_application_ids('<id>');        -- what is blocking
SELECT public.eies_reactivate_internship('<id>', 'reason');   -- raises if still blocked
SELECT public.eies_run_enforcement(500);                      -- batch sweep

Blocking set, precisely

  • application is internal, and
  • eies_due_at <= now(), and
  • eies_responded_at IS NULL

Audit trail

Every transition writes to eies_events, an immutable table with no insert, update or delete policies — rows arrive only throughSECURITY DEFINER functions. Employers read their own history; admins read everything. An enforcement system that can be edited by the party it enforces against is decoration.

ColumnPurpose
eventWhat happened: warned, paused, archived, reactivated
previous_state / new_stateThe exact transition
reasonMachine or human justification
application_idThe application that triggered it, when applicable
metadataFree-form JSON context for later analysis

Employer's view

Nothing about EIES is a surprise. Each transition enqueues a CTNE notification —EIES_WARNING, EIES_PAUSED,EIES_REACTIVATED, EIES_ARCHIVED — with dedupe keys that prevent repeat sends. The warning email arrives three days before anything is hidden.

Tip

The fastest way to never meet EIES: triage applications weekly. Even a rejection is a qualifying response, and a fast rejection is far kinder than silence.