Case study / Wera
Full-stack productVerified build

Wera

A web app for managing internship applications: find roles, track status, tailor LaTeX resumes, draft cover letters, and plan weekly outreach.

23Postgres tables
23test files
24/24quality tasks passed
3background jobs
Wera dashboard showing an empty internship season, posting import, weekly plan, and application counters
The empty state teaches the first loop: import a posting, normalize it, save it, then move it through the pipeline.

The problem

Internship work is split across job boards, spreadsheets, resume folders, calendars, and notes. That fragmentation makes it easy to lose a deadline or tailor the wrong document. Wera puts discovery, application state, documents, and weekly planning in one typed workflow.

My contribution

I designed and built the product across the Next.js interface, Postgres schema, source connectors, AI boundary, LaTeX compiler, test suite, and Trigger.dev jobs. I also wrote the operating specification used to keep product language, state transitions, and implementation aligned.

Difficult decisions

Model the workflow

Applications use explicit status transitions while “needs attention” signals are derived. That keeps the database from storing stale urgency flags and makes pipeline behavior explainable.

Keep dedup visible

Source connectors fingerprint postings and surface disagreements instead of silently merging them. A user can see when two sources conflict before saving a role.

Bound model output

AI responses cross a schema-validated boundary, get one corrective retry, and write to a spend ledger. Raw model text never becomes application state.

Compile defensively

Resume compilation runs with no application secrets, no network, blocked shell escape, a hard timeout, and a hermetic Tectonic cache.

Evidence

Wera discovery inbox empty state
Discovery inbox
Wera connector health view with three configured public sources
Connector health
Repository verification

The schema exports 23 tables and the repository contains 23 test files. The recorded full Turbo run completed all 24 lint, typecheck, test, and build tasks.

Result and next step

Wera now covers the full application loop without exposing a public demo account. The next useful test is a private pilot with real application seasons, measuring time from discovery to a ready-to-submit package and where users abandon the loop.

Project details

RoleSolo product and engineering
StackNext.js, TypeScript, Postgres, Clerk, Trigger.dev, Tectonic
StatusWorking application; private data by design
Next case studyFridgie