Project Info

SpecSentry

Devpost

Inspiration

Small dev teams may write / know what their features acceptance criteria is, and may even write them down, but small teams don't always have time to run the comprehensive tests needed to validate those ac's Manual QA takes time and is often an after thought at the end of a sprint. Traditional browser automation kind of works today, but it needs engineering effort and can become brittle when interfaces change. General browser agents can navigate websites, but they do not always produce the evidence a developer needs to reproduce a problem. SpecSentry started with one question: Could AI turn the requirements teams already write into a useful first test pass?

What it does

SpecSentry turns a staging URL, user story and acceptance criteria into an evidence backed browser test. It: creates a structured test plan lets a human review and approve the plan runs the journey in an isolated Chromium browser records actions, screenshots and browser state returns pass, fail, blocked or inconclusive creates a draft finding with severity, confidence and reproduction steps lets a human edit, approve or reject the finding previews the exact GitHub issue before any external write The hosted demo is restricted to the bundled Sentry Shop example. Self-hosted deployments can test explicitly approved staging domains. How I built it ChatGPT 5.6 Sol in chat and Codex SpecSentry is a Next.js and TypeScript application deployed on Railway. The AI workflow has three separate phases: Planner GPT-5.6 Terra converts the specification into structured test steps, expected results, evidence checkpoints, retry limits and stop rules. Planner GPT-5.6 Terra converts the specification into structured test steps, expected results, evidence checkpoints, retry limits and stop rules. Executor OpenAI computer use and Playwright run the approved journey in an isolated Chromium session. The executor records what happened but cannot decide whether the test passed or failed. Executor OpenAI computer use and Playwright run the approved journey in an isolated Chromium session. The executor records what happened but cannot decide whether the test passed or failed. Evaluator A separate model call receives the original criterion, approved plan and persisted evidence. It returns a structured result and creates a finding only when the evidence supports a failure. Evaluator A separate model call receives the original criterion, approved plan and persisted evidence. It returns a structured result and creates a finding only when the evidence supports a failure. Zod validates model and API outputs. SQLite stores runs, findings and review state. Screenshots and action history provide the evidence trail. GitHub export remains behind human approval, preview and explicit confirmation. Codex was used throughout the build to design the architecture, implement features, write tests, debug the live browser loop, harden security controls and prepare the Railway deployment. Challenges I ran into Browser agents are probabilistic. They can click the wrong control, wait too long or misunderstand the visible state. I reduced this risk with: fixed browser dimensions approved test plans action and runtime limits retry ceilings exact hostname restrictions screenshots after checkpoints partial reports when execution fails Evidence integrity was another challenge. Every cited screenshot must map to a recorded browser action and a real persisted file. The interface therefore keeps captured evidence separate from AI assessment. The public deployment also needed strict controls. It blocks arbitrary external sites, private network targets, local files, downloads, pop-ups and unattended GitHub writes. Accomplishments that I'm proud of The full workflow works end to end: acceptance criterion to structured plan approved plan to live browser run browser evidence to structured finding human review to GitHub issue preview A controlled ten-case live evaluation produced: 5/5 expected passes 3/3 seeded failures 1/1 blocked result 1/1 inconclusive result 0 false failures 0 retries 0 missing screenshots 0 off-domain navigation All three failures produced findings backed by persisted screenshots and recorded actions. The final application has 71 passing unit and service tests, 16 passing Playwright tests and no production dependency vulnerabilities. I got the whole thing done while on holiday in Crete with my family (evenings while they slept and cheeky check ins via the mobile app were a lifesaver!) What I learned The model is only part of the product. The useful behaviour came from the controls around it: separate responsibilities for planning, execution and evaluation strict schemas persisted evidence clear stop conditions human approval safe domain restrictions honest handling of blocked and ambiguous criteria The strongest QA output is not a confident answer. It is a result that shows exactly what happened and gives a developer enough evidence to reproduce it.

What's next

The next steps are: support authenticated staging accounts generate reusable Playwright tests from approved findings run checks against pull requests compare results between application builds add durable hosted storage for team use support a wider range of staging-site patterns For Build Week, the scope stayed deliberately narrow: one reliable journey from acceptance criterion to evidence-backed finding.

Analysis

Compare with all teams

View

Metric

Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.

Technology

Found in codeClaimed only
  • CSSIn code
  • Next.jsIn code
  • OpenAIIn code
  • ReactIn code
  • Tailwind CSSIn code
  • TypeScriptIn code
  • DockerClaimed
  • Node.jsClaimed

6 of 8 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.

AI coding agents

  • CodexConfig

Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.

Codebase size

Source size

402 KB

Source files

86

Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.

0 stars