AI Engineer for Saas

Posted 2 days ago

Worldwide

Summary

# 1. What we need from you ### Must have **Backend (primary)** - Strong TypeScript. Production Express (or equivalent Node backend) — middleware, auth, validation, error handling, background workers. - **Real database design skill.** Not "I've used an ORM." You should be able to argue normalized-vs-JSONB with reasons, write migrations that are reversible, index for the query you actually run, and reason about transactions and idempotency. We run Postgres with Drizzle + hand-written SQL, one schema per module, ~190 tables. If you can't defend a schema decision, this role will hurt. - Comfort with async job systems (BullMQ / ARQ / SQS-style), retries, idempotency keys, and callback contracts between services. - Python is not required on day one, but you must be willing to work in the FastAPI sidecar. If you're allergic to Python, this isn't the role. **Frontend** - Next.js App Router and React in production — server/client component boundaries, data fetching, caching pitfalls. - React Query (or equivalent) for server state; comfort with Tailwind + a Radix/shadcn-style component system. - Able to build a dense, data-heavy UI — virtualized tables, inline editing, PDF viewers — not just marketing pages. **Information extraction + LLM (the differentiator)** - You have shipped a document-extraction system to production, and you know that **OCR/layout comes before the LLM**. Experience with Textract, or an equivalent OCR/layout stack, and an opinion about what to feed the model: raw text, layout-preserved markdown, images, or all three. - **Structured output** as your default. Pydantic/Zod schemas as the contract, tool-use or JSON mode, and a considered answer to what happens when validation fails. - **Prompt caching** — not the marketing version. You should be able to explain the prefix rule, why cache-write costs more than a normal input token, why a 5-minute TTL changes how you order your fan-out, and how to read `cache_read_input_tokens` to prove the cache is working. - **Prompt engineering with the Anthropic API specifically** — system-vs-user placement, XML-tagged context, multimodal messages, `max_tokens` and streaming thresholds, and the difference between Bedrock and first-party Anthropic auth. - **Evaluation instincts.** You've built a golden set, measured a change, and rolled back a prompt because the numbers said so. - Token-cost awareness as a first-class engineering concern. ### Nice to have - AWS: Bedrock, Textract, S3, SQS, EC2, RDS. - Python/FastAPI, SQLAlchemy async, Alembic, ARQ. - PDF internals — PyMuPDF, pdfjs, pdf-lib, rasterization, coordinate spaces. - Docker Compose, pm2, nginx path-routing; you can deploy your own work to staging. - CASL / policy-based authorization; multi-tenant RBAC. - Construction domain knowledge (CSI MasterFormat, submittals, RFIs, SOV, pay applications) — genuinely valuable, but we can teach it. ### How we work — read this before applying - **Verify before you claim.** "It should work" is not a status. We check staging, read the logs, and quote the output. - **Docs are part of done.** A merged feature updates the relevant wiki standard and the sitemap. - **Separate authoring from review.** You don't approve your own work. - **Local-first.** Verify locally, then deploy deliberately. No surprise staging pushes. - **No placeholder completions.** A `TODO`, a skipped test, or an unimplemented branch is a blocker to be reported, not evidence of progress. --- ## 2. Stack summary | Layer | Tech | |---|---| | Frontend | Next.js (App Router), React, TypeScript, React Query, Tailwind, shadcn/Radix, Zustand, pdfjs/react-pdf, recharts, reactflow | | Backend | Node/TypeScript, Express, Drizzle ORM, Zod, Jest + Supertest; Python/FastAPI sidecar with SQLAlchemy (async), Alembic, Pydantic, ARQ | | Data | PostgreSQL (RDS), Redis, S3 | | AI | Claude via AWS Bedrock (Sonnet + Haiku), `instructor`, Anthropic prompt caching, AWS Textract, embeddings/Pinecone, LangSmith tracing; Gemini + OpenAI as alternate providers behind one client interface | | Infra | Docker Compose, pm2, nginx, EC2, SQS/NATS, GitHub |

  • More than 30 hrs/week
    Hourly
  • 6+ months
    Duration
  • Expert
    Experience Level
  • $25.00

    -

    $47.00

    Hourly
  • Remote Job
  • Ongoing project
    Project Type

Contract-to-hire opportunity

This lets talent know that this job could become full time.
Learn more
Skills and Expertise
Mandatory skills
Artificial Intelligence
Activity on this job
  • Proposals:50+
  • Interviewing:
    0
  • Invites sent:
    0
  • Unanswered invites:
    0
About the client
Member since Jan 4, 2026
  • USA
    Sheridan2:40 AM
  • $45K total spent
    15 hires, 1 active

Explore similar jobs on Upwork

Shopify Website Development for Arc GISHourly‐ Posted 1 month ago
HTML
Web Development
Shopify
Shopify Templates
PHP
MySQL
JavaScript
Web Development
Database Design

How it works

  • Post a job icon
    Create your free profile
    Highlight your skills and experience, show your portfolio, and set your ideal pay rate.
  • Talent comes to you icon
    Work the way you want
    Apply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
  • Payment simplified icon
    Get paid securely
    From contract to payment, we help you work safely and get paid securely.
Want to get started? Create a profile

About Upwork

  • Rating is 4.9 out of 5.
    4.9/5
    (Average rating of clients by professionals)
  • G2 2021
    #1 freelance platform
  • 49,000+
    Signed contract every week
  • $2.3B
    Freelancers earned on Upwork in 2020

Find the best freelance jobs

Growing your career is as easy as creating a free profile and finding work like this that fits your skills.

Trusted by

  • Microsoft Logo
  • Airbnb Logo
  • Bissell Logo
  • GoDaddy Logo