Skip to document
← HandoffCheckAbdul Moiz / Engineering studies Download PDF
Contents 12 chapters + figures

A technical study of product-to-engineering handoffs

From a feature idea to a shared agreement.

How structured requirements, source-linked AI assistance, revision-bound approvals, and durable automation connect a product idea to an implementation brief that both teams have reviewed.

  • AI assistance
  • Human approvals
  • TypeScript
  • PostgreSQL
  • Team workflows

Part I / Product intent

01

Make the agreement explicit.

A feature request can look complete while leaving engineering to guess who can use it, what happens on failure, or which behavior is actually in scope. Questions and decisions spread across chat, documents, and meetings. HandoffCheck brings requirements, clarification, reviewer decisions, and the final implementation brief into one workspace.

An author captures a request, selects a product lead and an engineering lead, and submits a revision for review. Deterministic checks and optional AI assistance identify missing details and ambiguous wording. Both assigned leads must approve the same reviewed revision before a brief can be generated.

ParticipantResponsibilityProduct outcome
AuthorState the problem, behavior, scope, criteria, and reviewer assignmentsAn inspectable requirements revision
Product leadReview the intended behavior and resolve product questionsAn explicit decision on the current revision
Engineering leadReview the handoff and its acceptance criteriaAn explicit engineering decision and reviewable QA drafts
AdministratorManage membership and workspace configurationThe right people and integrations are available
HandoffCheck request workspace showing saved requirements
The request workspace connects a feature, its revision, and the current handoff state.

Part II / System architecture

02

One application, several clear boundaries.

The interface uses React, Vite, and TypeScript, with React Router for screens, TanStack Query for remote state, React Hook Form and Zod for forms and validation, and Radix primitives for selected accessible controls. Vercel hosts the web application. Electron provides a Windows shell over the hosted workspace.

Supabase supplies Google authentication, PostgreSQL, private object storage, and Deno Edge Functions. Shared TypeScript contracts express requirements, findings, approvals, jobs, and command payloads. Edge handlers verify the current user and route commands into database transactions or bounded provider operations.

One workflow across web, desktop, and connected toolsHandoffCheck / System map
The workspaceApplication authorityConnected services
React + Viterequests · review · briefs · settings
Google sign-inSupabase Auth + active membership
ElectronWindows app · system-browser sign-in
Supabase Edge Functionsverified commands · AI adapter · workers
PostgreSQLrevisions · findings · approvals · briefs · jobs
Private Storagerequest-scoped screenshots and PDFs
Geministructured drafting · review · summaries · QA
Google Workspaceconfigured Forms → Sheets → approved Docs
Gmail & Linearauthorized reminders · confirmed handoffs
React and the Windows shell share the hosted workspace. Supabase enforces identity, request access, workflow transactions, and private file storage.
LayerOwnsBoundary
Web / desktop interfaceDrafting, review, source inspection, briefs, and settingsBrowser state does not grant approval or database authority
Edge APIVerified commands, provider requests, file checks, and integration coordinationSecrets stay in server configuration
PostgreSQLParticipant access, revisions, approvals, jobs, and immutable brief recordsTransactions resolve conflicting updates
External servicesGemini language tasks, configured Google workflows, Gmail, and LinearEach integration has its own consent, configuration, and failure behavior

Part II / System architecture

03

A request is a structured contract.

An incomplete idea can be saved privately as a draft. Submission requires the baseline engineering checklist, including the problem and evidence, target users, expected behavior, scope and exclusions, testable acceptance criteria, edge cases, dependencies, data and permissions impact, success measure, and priority rationale.

Field groupPurpose
Problem, audience, and evidenceExplain who needs the change and why
Behavior, scope, and exclusionsDescribe the flow and its agreed boundaries
Acceptance criteria and edge casesMake expected outcomes observable, including relevant failure cases
Dependencies and data impactExpose constraints and permission changes
Success, priority, and schedulingRecord the intended outcome, rationale, and an explicit date/timezone or unscheduled state
References, files, and assigned leadsRetain supporting material and identify the two reviewers

The declared contract limits acceptance criteria to twenty, links to ten, and reviewed text to 24 KB. Screenshots and PDFs are private supporting files, with a five-file and 5 MB-per-file limit. Reference URLs are validated but are not fetched for AI review; attachment contents are not sent to the language model.

Part III / Assisted requirements

04

Start with a conversation. Confirm the form.

The drafting assistant accepts the author's description, proposes structured fields with verbatim evidence from author messages, and asks at most one clarification question per turn. Optional choices explain their tradeoffs. A recommended choice remains a proposal until the author selects it or supplies another answer.

The author checks the preview, applies it to an editable form, selects both leads, and explicitly saves or submits. Conversation output cannot create a request, assign reviewers, or approve a revision. If creation succeeds but submission fails, the saved draft opens with the failure instead of encouraging a duplicate request.

Intake boundaryImplemented behavior
InputUp to forty messages, 3,000 characters each, 46 KB total
Source evidenceQuotes must occur in an author message at the stated index
Response recoveryA UUID idempotency key can recover the same response without another provider attempt
Draft memoryAuthor/workspace-scoped response receipts expire after twenty-four hours
Consent to requirementsThe author explicitly confirms proposed wording through the form

The input transcript is not stored in the receipt. The validated response can contain quoted author text, and the conversation remains in component memory while the user is drafting. Reusing a receipt requires matching actor, workspace, input prefix, policy version, and lifetime.

Part III / Assisted requirements

05

Build context for the task at hand.

Drafting, requirement review, edit proposals, reviewer summaries, and QA use one Gemini adapter with separate task contexts. The server supplies the model identifier through GEMINI_MODEL_ID; the code does not require a universal default model. Calls use structured JSON output and independent Zod/domain validation.

Give each assistant task the context it needsHandoffCheck / System map
TaskContextModelValidation
Choose a taskdraft · review · edit · summarize · QA
Assemble contextrole · constraints · guidance · source · schema
Gemini responsebounded JSON with source evidence
Validate & showcheck quotes, fields, and criterion indexes
The author checks proposed wording. Assigned reviewers make approval decisions. QA scenarios remain reviewable drafts tied to the agreed criteria.
Drafting, review, edits, summaries, and QA use separate contexts through the same Gemini adapter. The model identifier is supplied by server configuration.
OrderContext layerPurpose
1Role and goalDefine the selected specialist task
2ConstraintsRequire source evidence and keep permissions and approvals outside model output
3Guidance and authorized sourceSelect up to three versioned guidance chunks and the current task's source
4Illustrative exampleDemonstrate the required shape without introducing feature facts
5Active task and schemaSpecify the requested result, evidence rules, and JSON fields

Older assistant dialogue is compacted while author statements are preserved. Review and QA retain the full source revision and original criterion indexes. A serialized provider request exceeding 120 KB fails before network access rather than dropping source facts. This is task guidance retrieval, not a vector search over company documents.

Part III / Assisted requirements

06

Keep questions beside their source.

A review first applies required-field rules in code. Optional language review can identify missing details, ambiguous behavior, conflicts, and potential implementation risks. Findings carry the source field, preserved quote, severity, explanation, and clarification question.

The adapter bounds output size and finding counts, verifies field references, and checks source quotes. Missing-detail findings can have empty evidence where the contract permits it. Unresolved blocking findings prevent approval. Leads can dismiss an AI finding with a reason; missing mandatory fields require an updated revision.

Answers become part of the agreement only after the author incorporates them into requirements and submits the updated revision. The assistant's activity feed shows task status, actor, revision, source inspection, prior responses, and sanitized errors. Personal Clear chat affects only that member's browser view; reviews, approvals, and source records remain available.

Part IV / Decisions & persistence

07

Two people approve one exact revision.

Every successful content save appends an immutable revision containing requirements, attachment metadata, reviewer assignments, checklist version, and canonical input hash. Changing files or assigned leads also changes the revision. Comments and personal interface preferences do not.

Both leads approve the same revisionHandoffCheck / System map
AuthorReviewHuman decisionHandoff
Feature requestscope · behavior · criteria · selected leads
Review & clarifychecklist + optional AI findings
Two approvalsproduct + engineering · same revision/hash
Approved briefimmutable snapshot · Markdown export
Readiness, access, and approval are checked in application/database logic. Assistant suggestions become requirements only after the author confirms an edit.
A saved change creates a new revision. Prior review and approval records remain in history; the new revision needs its own review and decisions.

Approval requires two distinct active leads in the appropriate roles, neither of whom is the author. Save, review, approval, and brief generation are serialized through transactions on the same request. The database rechecks current assignment, membership, role, revision, and review before accepting a decision or generating a brief.

EventEffect on the agreement
Save revised contentCreate a new author-only draft that needs resubmission and review
Replace the current reviewInvalidate current approvals before a brief is generated
Lead requests changesRequire a new revision and successful review before approval resumes
Reviewer reassignment or revocationRemove prior participant access and recheck decision eligibility
Generate a briefPreserve one immutable artifact for that reviewed revision

Part IV / Decisions & persistence

08

Access follows participation.

Google sign-in establishes identity; active workspace membership establishes application access. Drafts are visible to their author. Submitted requests are available to the author and the two currently assigned active leads with the matching roles. Administrators manage settings and members without automatic access to request contents.

The canonical participant predicate is applied to database policies and command paths, including request reads, writes, attachments, comments, findings, approvals, briefs, AI artifacts, notifications, and integration previews. Reassignment, role changes, and membership revocation are checked against current state.

RecordRetained responsibility
Requests and revisionsCurrent state plus immutable revision snapshots
Reviews and findingsEvidence, questions, outcomes, and the reviewed input
Approvals and briefsHuman decisions and their deterministic output artifact
Jobs and usageDurable attempts, leases, state, quotas, and filtered context metadata
Files and connectionsPrivate references and separately authorized integration state

Part V / From agreement to delivery

09

A brief preserves the approved wording.

Brief generation uses a deterministic template over the approved fields rather than asking the model to rewrite the agreement. The result includes requirements, scope and exclusions, criteria, dependencies, data impact, references, revision/hash, and the two approval records. Users can read it in the app, copy Markdown, or download it.

The QA assistant then drafts scenarios from that approved snapshot. Every scenario references a real criterion index and quote, with steps and expected results. Supported positive, negative, boundary, and permission cases are presented for inspection; the assigned engineering lead reviews the draft.

HandoffCheck approved brief QA assistant with numbered test scenarios
The QA assistant presents reviewable scenarios and their acceptance-criterion sources.

Part V / From agreement to delivery

10

Make background work observable.

Provider tasks are stored before dispatch with bounded leases and attempts. Each claim rechecks access, revision, policy, and budget. A stale result remains historical and cannot advance a newer source revision. The interface distinguishes queued, working, retry-pending, and failed states.

OperationBound or recovery behavior
AI usageInitial allowances of ten attempts per actor/hour, fifty per workspace/day, and two concurrent calls
Provider callTwenty-five-second timeout and bounded structured output
Transient review failureAt most three total attempts with scheduled thirty- and sixty-second eligibility delays
Invalid output or access/configuration failureVisible failure requiring deliberate retry
Approval remindersAuthor-set interval from fifteen minutes to seven days; only active pending leads are selected
Ambiguous Gmail sendDelivery unknown; no blind resend in the same cycle

Reminder timers follow the current revision and approval state. Clarification, a new draft, completed approval, archive, or pause suspends or stops the schedule. Optional email uses the author's separately connected Gmail identity. Private credentials and PKCE state remain server-side, and dispatch checks the current connection generation.

HandoffCheck repeat reminder interval and email options
The author controls the reminder interval and whether email is enabled.

Part V / From agreement to delivery

11

Connect the team's existing tools.

ConnectionWorkflowExplicit boundary
Google WorkspaceConfigured Forms intake through Sheets into requests, followed by approved Docs exportOwner-operated Apps Script, signed bridge requests, and Google file-sharing controls
GmailOptional author-authorized approval remindersSeparate consent, encrypted server credentials, and delivery uncertainty tracking
LinearPreview and explicitly confirm a handoff of approved workConfigured destination and backend credentials required
Windows appElectron loads the hosted workspace and signs in through the system browserRequires internet access; packaged delivery has separate release/signing configuration

App-created requests are excluded from automatic Google Sheet mirroring and Doc export; Form-origin requests use their configured Google pipeline. Bridge signatures, nonce replay checks, owner membership, artifact hashes, and export acknowledgements protect the integration path. External destinations retain their own access policies.

HandoffCheck workspace automation settings
Workspace settings expose member roles, checklist versions, assistant features, and integration configuration.

Part VI / Verification & tradeoffs

12

Test the workflow at its boundaries.

The project includes application/provider tests, database tests against PGlite with Supabase Auth/Storage substitutes, native authentication tests, and browser workflows. These exercise domain transitions, participant policies, stale revisions, source evidence, job recovery, quota behavior, and narrow-screen interaction.

BoundaryUseful verification
RequirementsIncomplete drafts remain editable; mandatory gaps block submission or approval
EvidenceInvalid quotes, fields, criterion indexes, and oversized outputs are rejected
DecisionsTwo different assigned leads approve the same revision; concurrent saves cannot reuse old approvals
AccessAuthors, current leads, unrelated members, and administrators receive the correct view
RecoveryLost responses, expired leases, provider failures, and new revisions preserve consistent state
IntegrationsConsent, signing, replay, disconnect, and ambiguous delivery are tested separately

Synthetic provider tests verify contracts and failure handling; they do not establish live model wording quality. PGlite tests do not replace checks against a running Supabase installation. Real Google consent, external delivery, account configuration, and independent security review require their own evidence.

  • Keep product facts, model suggestions, and human decisions distinguishable.
  • Preserve the source revision through reviews, approvals, and exported artifacts.
  • Use transactions for decisions that must agree under concurrent updates.
  • Make provider errors, retries, and ambiguous external outcomes visible.
  • Evaluate assistant usefulness with representative requirements and reviewer feedback before claiming productivity gains.