Full Stack Software Engineer

About the job

About the Full Stack Software Engineer role

The Full Stack Software Engineer is responsible for designing, developing, and maintaining robust software solutions that connect web applications, desktop systems, hardware devices, and AI-powered services. Working closely with product and operations teams, this role builds scalable processing workflows, integrates document scanning and AI technologies, and ensures reliable application performance through strong engineering practices, automated testing, cloud infrastructure, and continuous delivery.

Key Responsibilities:

  • Build and maintain the web platform, including backend APIs, background job processing, database models, and the browser-based template editor used to configure OMR zones
  • Develop and maintain the desktop application that interfaces with document scanners and the cloud backend
  • Integrate scanner hardware using industry-standard drivers, SDKs, and vendor APIs to support reliable document capture, quality validation, and upload workflows
  • Integrate AI services, including LLMs for template generation, computer vision for layout detection, and OCR/ICR technologies for processing handwritten and printed responses
  • Design and optimize high-throughput processing pipelines, including job queues, concurrency management, rate-limited AI integrations, and cloud-based object storage
  • Collaborate closely with Product Managers and Operations teams to translate real-world document processing workflows into reliable software solutions
  • Maintain high engineering standards through test-driven development (TDD), strongly typed code, clean architecture, CI/CD pipelines, and comprehensive documentation

Requirements:

  • Strong software engineering fundamentals, with the ability to quickly adapt to new frameworks and technologies
  • Ability to design systems based on defined constraints and clearly articulate technical trade-offs without relying on specific frameworks
  • Strong understanding of concurrency, including threads, event loops, and async/await, with the ability to identify race conditions and performance bottlenecks
  • Strong testing discipline, with a proactive approach to writing tests to ensure code quality, reliability, and prevent regressions
  • Strong debugging skills across system boundaries, including network calls, OS drivers, and hardware devices, with a methodical approach to complex issues
  • Solid full-stack experience—web frontend, backend APIs, and relational databases. The specific framework matters less than the depth of understanding behind it
  • Comfort building desktop applications, whether native, Electron-based, or equivalent. You understand the operational differences between shipping a web app and shipping a binary that runs on someone else’s managed machine
  • Some experience (or genuine appetite for) hardware or device integration—SDKs, serial/USB interfaces, vendor APIs, and driver-level debugging. You don’t need to be an embedded engineer, but you shouldn’t be intimidated by it either
  • Experience integrating AI/ML APIs into production systems—not just calling an endpoint, but handling rate limits, retries, token budgets, prompt versioning, and evaluating output quality
  • Comfort with cloud infrastructure: containers, managed services, object storage, and job queues. You understand what runs where and why
  • Strong foundation in software hygiene: version control discipline, automated testing, code review, and CI/CD

Preferred Qualifications:

  • Experience with image processing pipelines (ingest, validate, transform, and store at scale)
  • Prior work in the Singapore Government Tech Stack
  • Familiarity with OMR, document scanning, or similar high-throughput document processing contexts
  • TypeScript, Next.js, and C#—our current stack. Mention it if you know it, but don’t let unfamiliarity stop you from applying

Search Popup

Help me find…

This will close in 0 seconds