Companies post real engineering problems. You solve them. We evaluate your code, your commits, and your design decisions. Top profiles get found by hiring teams.
Start your first buildFree to start. No credit card.
You built real things. The problem is, nobody ever looked at the engineering behind them — so it all blends into the same pile.
A stack of certificates says you finished the course. It doesn't say much about the choices you'd make when the problem isn't laid out for you.
A resume gets about seven seconds of attention. That's not enough time for anyone to see what you're actually good at.
The problem isn't your skill. It's that nothing you're doing right now actually proves it.
Here's what actually works. Three steps. No resumes. No algorithm quizzes.
Step 01
Browse open builds posted by real companies. Each one is a real engineering problem — not a DSA puzzle or a tutorial project.
Step 02
Work in your own IDE. When you’re done, submit your GitHub repo. That’s the entire submission process.
Step 03
XVal reviews your code and the decisions behind it. You get written feedback on what worked, what to sharpen, and which dimensions came through strongest.
Every submission gets one. Real feedback on the decisions you made, the tradeoffs you weighed, and where to sharpen next.
Stealth Fintech Startup
Engineering Assessment
Effective AI user with genuine engineering ownership.
The git history shows someone thinking out loud: a first pass at the adapters, a refactor when the retry duplication became obvious, then a dedicated commit to carve out the error hierarchy. AI clearly helped draft code, but the shape of the solution — adapter boundaries, error types, batch handling — came from the candidate.
What stood out
Where to grow
You kept the reconciliation logic separate from each payment provider, which is the right call. If you ever need to swap out Stripe for a new provider, you only change one file. One thing to work on: you wrote the retry logic three times, once per provider. Pull that into a shared function so you only have to maintain it in one place.
6 of 8 tests passed. 2 failures in batch processing suite.
Review Summary
You kept the reconciliation logic separate from each payment provider, which is the right call. If you ever need to swap out Stripe for a new provider, you only change one file. One thing to work on: you wrote the retry logic three times, once per provider. Pull that into a shared function so you only have to maintain it in one place.
Strengths
Areas for Improvement
Key Issues
src/adapters/StripeAdapter.ts:61, PayPalAdapter.ts:44, SquareAdapter.ts:52
→ Create a shared withRetry() function with configurable backoff. All three adapters should use it.
In production payment systems, retry logic is shared infrastructure. When it is duplicated, the copies drift apart over time and bugs only get fixed in one place.
tests/adapters/
→ Write a test where one provider goes down mid-batch. Make sure the transactions that already went through are safe.
Partial batch failures are the most common failure mode in payment systems. Testing for them is not optional.
src/handlers/BatchProcessor.ts:12–14
→ Pass adapters into the constructor. This makes testing easier and lets you add new providers without changing BatchProcessor.
This is called dependency injection. It is how production systems stay flexible when new integrations are added.
src/services/ReconciliationEngine.ts, src/adapters/StripeAdapter.ts, PayPalAdapter.ts, SquareAdapter.ts
src/services/DiscrepancyDetector.ts — event-driven flagging within reconciliation loop
Typed errors in src/errors/ but bare catch blocks in src/handlers/BatchProcessor.ts:92
src/handlers/BatchProcessor.ts — batching works but retry strategy inconsistent across adapters
No OpenAPI spec found — README.md covers features only
Code Files
18
Avg Lines/File
94.0
Max File Lines
312
Concentration
14%
Folder Depth
4
Comment Ratio
6%
Used AI tools? Good. We evaluate your engineering decisions, not who typed the code.
Feedback that shows where you're strong, where you're developing, and what to work on next.
| Build | Focus | Readability | Error Handling | Architecture |
|---|---|---|---|---|
| Build 1 | First real backend | fair | poor | fair |
| Build 2 | Learned to catch failures | good | fair | fair |
| Build 3 | Started thinking in layers | good | good | good |
| Build 4 | Design decisions, not just code | excellent | good | excellent |
Every review shows exactly where you stand and what to work on next.
Real engineering problems from real companies. Pick one and start building.
Stealth Series A Fintech
Design a service that reconciles payment records across multiple gateway providers and flags discrepancies in real time.
Stealth B2B SaaS Startup
Build a notification system that supports email, SMS, and in-app channels with per-tenant rate limiting and delivery tracking.
Stealth D2C Platform
Create an API that calculates optimal delivery routes given a set of waypoints, time windows, and vehicle constraints.
Every build you complete adds to a profile that companies actually search. Not a resume. Not a certificate. Proof.
Based on 5 completed builds
Payment Reconciliation Service
Stealth Fintech Startup
Clean adapter pattern, typed error hierarchy
Multi-Tenant Notification Engine
Series A SaaS Company
Thoughtful tenant isolation, strong observability
Route Optimization API
B2B Logistics Platform
Solid core logic, lighter on edge-case handling
Real-Time Chat Backend
EdTech Scale-Up
Good concurrency model, clean backpressure handling
Inventory Sync Pipeline
D2C E-Commerce Startup
Pragmatic design, well-tested happy path
Companies post builds to find engineers to hire. When you rank in their challenge, you're on their shortlist. A company searching for “Node.js engineers with strong architecture” will see your profile. You don't apply. They find you.
Post a real engineering problem. Receive ranked candidates with full evaluation reports and GitHub proof.
Post a challenge →