Woven Talent · Internal

The hiring OS we will actually run.

Loom replaces TalentRecruit with one codebase: a shared RPO instance for many companies, and isolated single-company deploys. Recruiters add jobs. A job board is how candidates apply.

01

Central RPO

One instance, many client companies. Jobs are owned by a company. Talent pool is instance-wide, with consent when a person is reused.

02

Isolated clients

Same image. Own Postgres, branding, WhatsApp, hostname. Exactly one company. No data crosses instances.

03

Job board

Internal dashboard to publish. Public listings to apply. Not a no-code career-site CMS in v1.

Locked plan

What we already decided

Instance model

flowchart LR
  subgraph code [Same Docker image]
    App[Loom app]
  end
  subgraph rpo [Central RPO instance]
    RpoDb[(Postgres: many companies)]
    RpoBoard[Job board: all clients or per-client]
  end
  subgraph iso [Isolated client instance]
    IsoDb[(Postgres: one company)]
    IsoBoard[Job board: that company only]
  end
  App --> rpo
  App --> iso
      

INSTANCE_MODE=rpo or single. The data model always has organizations. In single mode the switcher is hidden.

Interview · Aug 2026

Decisions, frozen

Change these in the repo when the product changes — not only in chat.

Business

DecisionChoice
What we areRPO firm that also deploys isolated ATS instances for some clients
Central deployOne shared instance, many companies inside it
Isolated deploysOne company per instance, own DB / branding / secrets
CodeSame application image for every instance
MarketIndia-first, then a few other countries (UK/SEA)
Compliance nowDPDP now; GDPR-shaped fields so we do not rework later

How work enters the system

DecisionChoice
Who creates jobsInternal teams / recruiters, in the dashboard
Public intakeJob Board dashboard + public job board + apply pages
Not v1TalentRecruit-style no-code multi-page career site builder
Not v1One-click posting to Naukri / LinkedIn / Indeed (model so it can plug in)

Day-1 capabilities

Taken from what we actually depend on in TalentRecruit:

Explicitly not day-1: vendor portal, BGV, full career-site builder, job-board aggregator search.

AI stance. Copilot, not autopilot. Yes: parse, rank as a suggestion, draft messages, summarize interviews, generate JDs and scorecard questions. Not v1: conversational / voice bot interviews, autonomous stage movement.
Surfaces

Four products in one app

If a screen tries to be all four, it has failed. Recruiters run hiring from dashboards; candidates apply on a job board.

PersonWhere they workWhat they need
RecruiterRecruiter OSSpeed: add jobs, publish, parse CVs, move pipeline, message, schedule
TA lead / RPO managerDashboardsFunnel, time-to-hire, recruiter load, client-company health
Hiring managerHM portalReview shortlists, score, approve. No sourcing UI
EmployeeLight portalRefer someone, apply to IJP
CandidatePublic job boardFind a role, apply, see status
Instance adminSettingsUsers, branding, pipelines, templates, WhatsApp/email, DPDP

Jobs and the job board

This is the spine. Recruiters create jobs. Publishing is a separate dashboard. Candidates never edit requisitions.

flowchart TD
  Recruiter[Recruiter] --> JobsDash[Jobs dashboard]
  JobsDash --> Draft[Draft / pending approval]
  Draft --> Approved[Approved job]
  Approved --> BoardDash[Job Board dashboard]
  BoardDash --> Public[Public listing + apply]
  Public --> App[Application]
  Recruiter --> Upload[Bulk CV / email ingest]
  Upload --> Pool[Talent pool]
  Pool --> App
  App --> Pipeline[Job pipeline]
  Pipeline --> HM[Hiring manager review]
      

Jobs dashboard

Job Board dashboard

What this is not (v1)

Checklist

TalentRecruit, mapped

Every capability we researched. Recommendations match the August 2026 interview. Filter this list; accept or strike items in docs/FEATURES.md as the product evolves.

TalentRecruit sells an end-to-end suite (ERIKA + GAIA Autopilot). We do not clone that surface. We clone the jobs RPO recruiters and client HMs actually do, then add a job board.

1. Workforce planning and budgeting

FeatureRecommendationNotes
Manpower plan / headcount budget vs hiredLaterUseful for enterprise TA; RPO can live without it in v1
Budgeted vs non-budgeted reqsLaterCan be a flag on the job
Demand forecastingSkipSpreadsheet / BI until we have years of data

2. Job requisition management

FeatureRecommendationNotes
Create job in recruiter dashboardKeep v1Primary intake for roles
JD templates / job libraryKeep v1You use this today
Clone / one-click duplicateKeep v1Campus + repeat RPO roles
Approval workflowKeep v1
AI-assisted JD from a promptKeep v1.5Copilot; recruiter edits
JD parse (paste a doc → fields)LaterNice, not blocking
Custom req forms per company / hiring typeKeep v1Permanent vs contract vs intern
Confidential job flagKeep v1Hidden from board, search, unauthorized reports
Assign recruiters, HMs, panelKeep v1
Configurable stages per job or companyKeep v1
Employment types (FTE, contract, intern, campus)Keep v1

3. Career site vs job board

TalentRecruit’s Career Site Builder is a no-code branded microsite. Loom ships a job board instead.

FeatureRecommendationNotes
Job Board dashboard (publish, pause, apply form, funnel)Keep v1Asked for explicitly
Public job list + job page + applyKeep v1Candidates enter here
Per-company branding (logo, color, domain)Keep v1Isolated instances especially
Combined RPO board + /{companySlug}Keep v1See Decisions
Knockout / screening questions on applyKeep v1
Scheduled go-live for a postingLater
No-code multi-page culture/CMS siteLaterTA should not be webmasters in v1
AI chatbot on the career siteSkipConflicts with copilot-not-autopilot
Multilingual career CMSLaterStart English; add a language later

4. Job distribution (external boards)

TalentRecruit: one-click post to Naukri, LinkedIn, Indeed, and PortalRecruit unified search.

FeatureRecommendationNotes
Shareable job link / WhatsApp / LinkedIn shareKeep v1Free, high value
One-click Naukri / LinkedIn / Indeed postLaterModel job_postings so this is an adapter
PortalRecruit-style unified board searchLaterExpensive; recruiters still use Naukri UI
Google for Jobs / IndexNow on our boardKeep v1Cheap SEO win

5. Sourcing, referrals, IJP

FeatureRecommendationNotes
Internal talent pool search (boolean + filters)Keep v1
Employee referral portalKeep v1.5Day-1 need; can follow core pipeline
Referral tracking / bonus status fieldKeep v1.5
IJP (employees apply to internal jobs)Keep v1.5
AI auto-source from pool when a job opensLaterCopilot suggested matches is enough
Internal mobility recommendationsLater

6. Candidate database (ATS core)

FeatureRecommendationNotes
Resume parse (PDF/DOC/DOCX)Keep v1
Duplicate detection + mergeKeep v1
Candidate 360Keep v1
Pipeline / kanban + tableKeep v1
Bulk actionsKeep v1
Notes, tags, @mentionsKeep v1
Custom fields per orgKeep v1
Email-in / bulk CV uploadKeep v1RPO + campus
Source tracking on every applicationKeep v1
Do-not-contact / GDPR-DPDP holdKeep v1

7. RPO / multi-client

TalentRecruit corporate is one-company; their agency SKU adds CRM. We are hybrid.

FeatureRecommendationNotes
Many companies in one instanceKeep v1RPO mode
Isolated one-company instanceKeep v1Same code
Job owned by a companyKeep v1
Recruiter membership per companyKeep v1
Submission to client hiring managersKeep v1Unit of RPO work
Instance-wide talent pool with auditKeep v1Consent when reusing across clients
Client-facing HM login per companyKeep v1
Vendor portal (external agencies submit CVs)LaterNot marked day-1
Client billing / invoice / marginSkipNot a staffing ERP

8. Engagement (email, WhatsApp, voice, chatbot)

FeatureRecommendationNotes
Email templates + log on the personKeep v1
WhatsApp templates + logKeep v1 / v1.5India-first; land in v1 if API access is ready
SMSLaterWhatsApp covers India
In-app chatbot / voice bot screeningSkipERIKA territory
Automated drip sequencesLaterStart with stage-change templates
Unsubscribe / WhatsApp opt-outKeep v1Compliance

9. Screening, matching, assessments, AI interviews

TalentRecruit: ERIKA matching, bot interviews, Teams/Meet summaries.

FeatureRecommendationNotes
Knockout questionsKeep v1
LLM rank / shortlist suggestionKeep v1.5Recruiter decides
Explainable match reasonsKeep v1.5Trust
Third-party assessment linksKeep v1.5HackerRank, Testlify, etc.
Homegrown question bank + proctoringSkip
Conversational AI interviewsLaterDo not clone ERIKA in v1
Voice bot callsSkip
Auto stage-move (GAIA Autopilot)SkipDangerous in RPO
Interview question generatorKeep v1.5Copilot
Transcript summary from a recording URLLaterMeet/Teams bots are their own product

10. Interviews

FeatureRecommendationNotes
Schedule interview, panel, typeKeep v1.5Day-1 need; stack after pipeline if time-boxed
ScorecardsKeep v1Needed with HM portal
Calendar OAuth (Google, Microsoft)Keep v1.5
Candidate self-select from slotsKeep v1.5
RemindersKeep v1.5
Video interview vendor embedLaterZoom/Meet links as fields first

11. Hiring manager portal

FeatureRecommendationNotes
HM home: waiting on youKeep v1
Review submitted candidatesKeep v1
Scorecard + commentKeep v1
Approve interview / offerKeep v1
No access to talent pool / job board adminKeep v1UX rule

12. Offers, e-sign, onboarding

FeatureRecommendationNotes
Offer letter from template, approvalsKeep v1.5After pipeline
Compensation fields (CTC)Keep v1.5
Candidate accept / declineKeep v1.5
Upload signed PDF / simple accept tokenKeep v1.5
Digio / Zoho SignLater
Joining document checklistKeep v1.5
Document library like TR onboardingLater
First-90-days onboarding / HRISSkipDifferent product
Offer benchmarking (market salary AI)Skip

13. Background verification

FeatureRecommendationNotes
Native BGV marketplaceLaterNot marked day-1
Status field + vendor linkLaterCheap adapter later
Reusable verified identityLaterTR differentiator; not ours yet

14. Campus / high volume

TR customers praise bulk CV handling for GET/campus drives.

FeatureRecommendationNotes
Bulk CV uploadKeep v1
Drive / event object, college tagKeep v1.5
Table-first pipeline (not only kanban)Keep v1
Virtual assessment scheduling at scaleLaterUse assessment vendor
Registration microsite per driveLaterJob board apply + source=campus may suffice

15. Analytics

TalentRecruit claims 200+ reports. We will not.

FeatureRecommendationNotes
Funnel by job / company / recruiterKeep v1
Time-to-hire, time-in-stageKeep v1
Source of hire / applyKeep v1
Recruiter load / SLA agingKeep v1
Offer-to-joinKeep v1.5
Campus drive healthKeep v1.5
CSV exportKeep v1
200 canned reportsSkip
Predictive joining riskLater

16. Compliance, admin, platform

FeatureRecommendationNotes
Roles and permissionsKeep v1
Audit logKeep v1
DPDP consent, retention, export/deleteKeep v1
Country privacy policy per orgLaterStart with instance + org text fields
SOC2/ISO programLaterProcess, not a feature flag
Custom fields, email templates, pipeline templatesKeep v1
API for partnersLatertRPC first; REST when a vendor needs it
Mobile PWA for recruitersLaterHM portal should already work on phones
Multi-currency / multi-country packagesLaterFields exist; workflows later

17. TalentRecruit items we skip as identity

FeatureRecommendationNotes
ERIKA as autonomous recruiterSkipCopilot only
GAIA AutopilotSkip
Staffing billing, invoicing, lead CRMSkipRPO ATS, not agency ERP
Employee handbook / HRIS-in-ATSSkip
Building our own assessment engineSkipIntegrate
If v1 is slipping. Keep jobs + job board + parse + pipeline + HM review + RPO companies/submissions. Park WhatsApp, calendar, offers, referrals, campus drives, LLM rank. Never park: DPDP consent, duplicate merge, org isolation.
Craft

Best UX for the people who live here

  1. Recruiters are primary. Density, keyboard, bulk actions, zero extra clicks to move a candidate.
  2. Hiring managers get less — not a dumbed-down recruiter UI. Their job is decide.
  3. Job board is a product, not a CSS theme on the ATS.
  4. RPO chrome is optional. Company switcher only in rpo mode.
  5. India-shaped forms. CTC and notice period are normal fields.

Recruiter OS

Home is work, not vanity KPIs: aging pipeline, interviews today, HM feedback waiting. Command palette everywhere (⌘K). Keyboard: c create, / search.

Hiring manager portal

Home is “Waiting on you.” Scorecard + one comment. Submit is the only primary button. Must work on a phone. Recruiters stay desktop-class in v1.

Manager dashboards

About twelve charts that answer real questions — time-to-hire, funnel, source, recruiter load, offer-to-join — with CSV on every table. Drill: chart → job → pipeline.

Sequence

v1, then close, then ecosystem

  1. v1 — hiring OS + job board Auth, orgs, jobs dashboard, publish/apply, parse, pipeline, HM review, RPO submissions, email, basic analytics, DPDP, Docker.
  2. v1.5 — communication and close WhatsApp, calendar, offers, referrals/IJP, campus drives, LLM copilot, assessment link-out.
  3. v2 — ecosystem Naukri/LinkedIn/Indeed publish, vendor portal, BGV, Digio/Zoho Sign, recruiter PWA, optional control plane.

First coding slice

Org + auth → jobs dashboard → job board publish/apply → parse + pipeline + HM review. That loop is already an ATS.

Tenancy

Same image, many instances

flowchart TB
  subgraph image [loom Docker image]
    Web[Next.js + tRPC]
    Worker[BullMQ workers]
  end
  subgraph rpoInst [RPO instance]
    RpoPg[(Postgres)]
    RpoRedis[(Redis)]
  end
  subgraph clientInst [Isolated client]
    IsoPg[(Postgres)]
    IsoRedis[(Redis)]
  end
  image --> rpoInst
  image --> clientInst
      

Each instance owns database, Redis, object storage, branding, email, WhatsApp, and OAuth apps. A control plane that provisions instances is not v1.

Tenancy rules

Core data model

EntityNotes
organizationsClient companies. One row in single mode.
usersAuth identity.
membershipsuser × org × role (recruiter, hm, employee, admin).
jobsRequisition. organization_id, status, confidential, pipeline_id.
job_approvalsChain of approve/reject.
job_postingsJob-board publication: slug, visibility, apply schema, published_at.
pipelines / stagesTemplate per org or per job.
peopleTalent-pool person (parsed CV, CTC, notice, locations).
applicationsperson × job, current stage, source.
submissionsRPO: application sent to client HMs.
filesResume versions, offer PDFs, joining docs.
messagesEmail/WhatsApp thread items.
interviewsTime, panel, scorecards.
offersComp, approvals, accept/decline, joining date.
audit_eventsWho did what, including cross-company reuse in RPO.
consentsDPDP purpose, captured at apply or parse.
Why this stack

One deploy for board and ATS

LayerChoiceWhy
AppNext.js App Router + TypeScriptPublic job board needs SEO; recruiter app is authenticated. One deploy.
APItRPCEnd-to-end types; matches meridien.
DBPostgres, one database per instanceIsolation you asked for.
ORMDrizzleMigrations we control.
AuthBetter AuthSelf-hosted, org-friendly.
UITailwind + Radix primitivesCustom visual language — not a generic purple dashboard.
TablesTanStack Table + virtualizerCampus dumps of thousands of CVs.
Recruiter speedCmdK command paletteHigh-volume RPO.
QueueRedis + BullMQParse, email, WhatsApp, ranking, PDFs.
FilesS3-compatible (R2 / AWS / MinIO)Resumes and offer letters.
EmailSES or Resend per instanceTransactional templates.
WhatsAppMeta Cloud API (Gupshup fallback)India-first messaging.
Parse / rankLLM → structured JSON + Postgres FTSAffinda later if parse quality lags.
CalendarGoogle + Microsoft OAuthSelf-serve slots in-app.
E-sign v1Accept link + uploaded signed PDFDigio / Zoho Sign later.
ObservabilitySentry + structured logsPer-instance DSN.
Package managerpnpmSame as other woven repos.

Explicit non-choices

AvoidReason
Mongo as source of truthHiring data is relational (job → application → interview → offer).
PrismaFine, but Drizzle is already in the Woven muscle memory.
Clerk / Auth0 as the only authPainful for many isolated instances and client SSO later.
Shared-schema multi-tenancy in one DBSeparate DBs per isolated client. RPO many-companies is inside one of those DBs.
Building a test-proctoring productIntegrate assessment vendors.
Kubernetes control plane on day oneCompose / one VM per instance until instance count hurts.

India-first data, not India-only code: CTC, notice period, serving notice, work mode are first-class columns.