Answers can arrive late or twice.
Attempts use a server deadline and stable submission state. Published versions freeze the questions used for scoring; short answers wait for staff review and release.
The engineering behind JachAI
That requirement shaped the product: the server owns time and scoring, published questions keep their version, and a payment or AI response never becomes official just because a browser says so.
See the assessment journeyOne product, clear boundaries
External AI, email, Google sign-in and payment sandboxes connect at the edges. The core rules stay on the server.
Small number of moving parts, each with a defined job.
Each response came from a failure mode we could point to.
Attempts use a server deadline and stable submission state. Published versions freeze the questions used for scoring; short answers wait for staff review and release.
Personal practice stays outside official workspace scores. Academy and Talent data stays tenant-scoped, and services check membership again on every request.
Email jobs, quota reservations and payment callbacks use durable identifiers and conditional updates. A checkout redirect never grants a plan; the server validates the sandbox payment independently.
A derived MongoDB sum over BigDecimal failed at startup. We replaced it with a deliberate aggregation and kept reconciliation auditable rather than guessing at missing usage.
Generated questions remain drafts for approval. The Tutor can explain a released result to a learner or candidate, but cannot grade an active exam or publish official content.
Local checks covered Java tests, frontend journeys and all six demo-role sign-ins. They are useful evidence, not a production stamp. Real inbox delivery, final-domain Google login, live AI responses, hosted MongoDB/Redis readiness and completed sandbox payments still need separate verification.