Skip to content

Tips & Advice

Create your GitHub/GitLab repo at <time?> and make your first commit before you write a single line of application code. Commit your initial project structure, .gitignore, .env.example, and docker-compose.yml skeleton.

The AI scan checks your commit history. One commit at <time?> is a red flag.

Agree on your stack in the first 15 minutes

Section titled “Agree on your stack in the first 15 minutes”

Don’t spend an hour debating frameworks. Pick what your team knows best. A well-implemented app in familiar technology will beat a half-finished one in a shiny stack every time.

Suggested split for a 4-person team:

  • 1 person — auth, user system, database schema
  • 1 person — core business logic + tests
  • 1 person — frontend (main views, data visualisation)
  • 1 person — DevOps (Docker, CI, deployment) + documentation

Put your strongest backend developer on the core business logic. That’s what gets scrutinised most.


Everything else depends on it. Get the core business logic working and tested before you build the frontend. A polished UI on broken logic scores poorly.

Every feature, every fix, every meaningful change. Small commits are better than large ones. Use conventional commit messages (feat:, fix:, test:, docs:).

Wrap multi-step operations in database transactions

Section titled “Wrap multi-step operations in database transactions”

The single most common critical issue in the AI scan: operations that touch multiple database rows are not wrapped in a database transaction. If the server crashes between steps, you get inconsistency. Use a transaction.

BEGIN;
UPDATE accounts SET value = value - :amount WHERE id = :accountId AND value >= :amount;
INSERT INTO records (account_id, value, ...) VALUES (...);
COMMIT;

Every API endpoint that accepts user input should validate it before it touches the database or business logic. Check types, ranges, and state preconditions (e.g. “is this operation currently allowed?”).

Don’t leave tests for the end. Write them alongside the core logic. You’ll catch bugs earlier and have better coverage by <time?>.


Stop adding features at <time?>. Use the last hour for:

  1. Fixing any remaining bugs in core functionality
  2. Running your full test suite
  3. Verifying docker compose up works from a clean clone
  4. Finalising documentation (README, decision log, known issues)
  5. Final push and deployment check

Write it. It takes 10 minutes and judges notice when it’s missing. Include:

  • What technical approach you chose for the core requirement and why
  • What you descoped and why
  • What you’d do differently with more time
  • Known issues and limitations

Before your final push, grep your codebase for anything that looks like a password, API key, or secret. Move it to .env and add it to .env.example.

Terminal window
grep -r "password" --include="*.js" .
grep -r "secret" --include="*.js" .
grep -r "api_key" --include="*.py" .

Your 5-minute demo should walk through the complete user journey — from registration through the core business logic to the final output. Make it live, not a slides deck.

If you have time, let the audience actually use your app during the demo. This is the highest-scoring thing you can do in the Product & Demo category.

Be ready to answer:

  • “Why did you choose this approach for the core feature?”
  • “What happens if two users perform conflicting operations simultaneously?”
  • “How do you prevent invalid state in your data model?”
  • “What would you do differently with more time?”

  1. Spending too long on the frontend before the backend works
  2. Picking a complex implementation when your team doesn’t fully understand it
  3. No database transactions on multi-step operations
  4. One giant commit at <time?>
  5. Hardcoded credentials in docker-compose.yml
  6. No tests — even 5 good tests are better than none
  7. Skipping the decision log — it’s 10 minutes of writing worth real points
  8. Not testing docker compose up from a clean clone before freeze