AI Engineer for Saas
Budget: $25.0 - $47.0
HOURLY / FULL_TIME
⭐ 5.00 (9)
USA
artificial-intelligence, python, saas, react-js, data-science
Gewenste kwalificaties
- Ervaring: Expert
# 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 |
Openen op Upwork
AI proposal draft
Generate a short cover letter for this job. Edit before sending.
Sign in to generate an AI proposal draft.
Inloggen