Inspiration
Job loss is one of the most paralyzing experiences in working life, not because people don't know what to do, but because they face five high-stakes tasks simultaneously while in emotional shock, with no clear starting point. Research on re-employment consistently shows the first 48 hours are the most critical window, yet every existing tool addresses only one task in isolation: LinkedIn optimization tools, job boards, state unemployment websites, and resume checkers. None of them activate at the moment of crisis. None of them work in parallel.
The insight behind Recover wasn't a missing feature. It was a missing moment. The question we asked was:
"When someone loses their job, who starts doing the work for them, right now?"
The answer was nobody. Recover is built to change that.
What it does
Recover is an autonomous multi-agent job loss recovery platform. You submit one sentence describing your situation, your title, your top skills, and an optional LinkedIn headline. The moment you click Start Recovery, five ASI:ONE agents activate simultaneously:
LinkedIn Agent: Rewrites your headline for active job search, with before/after comparison and an Edit & Regenerate loop for iterative refinement. Outreach Agent: Drafts three network emails differentiated by relationship type: former manager, peer, and recruiter. Each is under 150 words and references your specific role and company. Unemployment Agent: Generates a state-specific filing checklist with the official portal URL, weekly benefit range, and certification reminder. Job Alerts Agent: Surfaces five matched job listings and generates recommended search criteria: title variants, key skills, experience level, and pre-built Indeed and LinkedIn search URLs. Resume Agent: Identifies your three highest-impact resume improvements, making specific references to the actual bullet points you provided.
Once all five complete, a sixth ASI:ONE agent, the Plan Synthesizer, reads every output and produces a structured Day 1, Week 1, and Month 1 action plan. The headline on that plan reads: "Synthesized from all 5 agents."
The primary user flow takes under 90 seconds from landing on the site to having a complete recovery package in hand.
How we built it
Architecture: Next.js App Router with serverless API routes on Vercel. No separate backend. No database. Six ASI:ONE agent calls in total: five concurrent recovery agents plus one sequential plan synthesizer.
Multi-agent coordination: The five recovery agents fire concurrently on dashboard mount via independent fetch calls. We intentionally did not use Promise.all because cards need to resolve and update the UI independently. Each card transitions through Queued, Running, and Complete states without waiting for the others. This creates the signature visual: five spinners resolving at different times, each flipping to a green check as it completes.
The planAgent runs only after all five reach a terminal state, receiving each agent's primary output as explicit context. This coordination step elevates five parallel API calls into a genuine multi-agent pipeline.
Prompt engineering: Each agent receives a structured recoveryContext object extracted from the four input fields. All six agents are instructed to return JSON-only responses. The planAgent prompt explicitly references the outputs of all five preceding agents, ensuring the synthesized plan has real cross-agent awareness rather than generic advice.
State management: React useReducer with typed action types (AGENT_STARTED, AGENT_COMPLETE, AGENT_ERROR, PLAN_COMPLETE). Session-only state via sessionStorage. No persistence, no accounts, no unnecessary complexity.
ASI:ONE integration: All six calls are proxied through Next.js API routes. The API key never touches the client. The vercel.json file sets API route max duration to 30 seconds to accommodate agent response times.
Challenges we ran into
Independent card resolution vs. Promise.all: The most natural implementation, Promise.all, would make all five cards flip to Complete simultaneously, destroying the fan-out visual. We instead fired five independent asynchronous calls and bound each to its own reducer dispatch so cards resolve as their individual promises settle. The timing asymmetry is the product.
planAgent context construction: The synthesizer needs to read all five agent outputs with enough fidelity to write a genuinely cross-referenced plan. Getting the prompt right required iterating on how to serialize each agent's JSON output into the planAgent context window without exceeding token limits or losing structure.
JSON-only reliability from agent calls: ASI:ONE agents occasionally return prose explanations before JSON when given edge-case inputs. We added response parsing that strips preamble text and falls back to an error state rather than crashing the card. Every card has its own error boundary with a Retry path.
The "demo persona or nothing" problem: Early testing showed that vague inputs such as "I lost my job" produced generic outputs that weakened the demo. The Try a demo scenario button isn't just UX polish. It's the product's quality guarantee. We tuned all five agent prompts against the Google PM persona specifically to ensure that demo path always produces specific, impressive output.
State loss on navigation: Next.js App Router doesn't preserve React state across route transitions by default. A user navigating back from the dashboard would see an empty state with no way to recover. We redirect to / if recoveryContext is missing from sessionStorage rather than trying to reconstruct state. It's simpler and more reliable.
Accomplishments that we're proud of
Six ASI:ONE agent calls with genuine multi-agent coordination. The planAgent is a real synthesizer, not a wrapper. The fan-out visual works exactly as designed. Cards resolve at different times, spinners flip to green checks independently, and the Day 1 plan fades in only after all five reach a terminal state. Edit & Regenerate on the LinkedIn card transforms a fire-and-forget demo into a real product interaction loop. The entire recovery flow, from first load to downloadable recovery pack, runs in under 90 seconds using the demo persona. Zero external state management libraries, zero database, and zero separate backend. The entire system is built with Next.js API routes and useReducer.
What we learned
The biggest engineering lesson was that the timing of asynchronous resolution is a product decision, not just an implementation detail. Promise.all would have been simpler to write, but it would have broken the core experience. The fan-out visual only exists because we treated independent resolution as a first-class requirement.
On the AI side, prompt specificity is everything. An agent prompt that says "write a LinkedIn headline" produces mediocre output. A prompt that says, "You are a LinkedIn optimization specialist. Given this exact recoveryContext object, rewrite the headline for active job search, target Director or Senior PM roles, incorporate the user's fintech and 0-to-1 experience, and return JSON only," produces output the judge will screenshot.
Product lesson: the Try a demo scenario button is the most important line of code in the project. It guarantees the judge sees the best version of Recover regardless of their input creativity.
What's next for Recover
2 weeks: Inline editing on all five agent cards, not just regeneration. Let users edit the outreach emails directly and re-sync the action plan.
3 months: Real LinkedIn OAuth for one-click headline publishing. Indeed and LinkedIn Jobs API integration for live listings. Voice input so saying "I just got laid off" triggers the full flow.
Long-term: Build an employer-side product where HR teams license Recover to give laid-off employees an immediate head start as part of offboarding packages. The unit economics work. Companies spend thousands per employee on severance but provide nothing actionable in the first 48 hours. Recover fills that gap at a fraction of the cost.
Business model: B2B SaaS for HR and People teams. Per-seat licensing during layoff events. A freemium consumer tier drives awareness while enterprise contracts drive revenue.
Built With
- asi:one
- eslint
- javascript
- next.js
- npm
- react
- vercel
Log in or sign up for Devpost to join the conversation.