Senior Software Engineer

Posted 1 hour ago

Worldwide

Summary

## The role We are looking for a strong, versatile senior software engineer to help turn a substantial body of existing software, prototypes, integrations, and internal tools into reliable production systems. This is fundamentally a software-engineering role. We care most about whether you can understand an unfamiliar codebase, make sound architectural decisions, write maintainable code, debug difficult problems, ship complete systems, and keep those systems dependable after launch. The work spans backend and full-stack development, data systems, APIs and third-party integrations, workflow automation, communication platforms, cloud infrastructure, security, testing, observability, and AI-enabled applications. Some projects involve persistent agents, browser or desktop automation, media pipelines, and organizational knowledge systems. You do not need to be a specialist in every area, but you should be able to take broad technical ownership and become effective quickly in unfamiliar parts of the stack. We use AI coding agents extensively. You will be expected to use them well, just as you would be expected to use version control, tests, debuggers, documentation, and observability tools well. Agent fluency matters, but it is not a substitute for engineering ability. We are not hiring a prompt engineer whose code must be rescued by someone else. ## Current technical environment The current estate is polyglot. Python and TypeScript are the dominant application languages, while Rust appears in the lower-level agent, desktop, installer, terminal, and computer-control layers. The exact architecture will continue to evolve, but an engineer joining today should expect to work with: - **Python 3.10/3.11+:** FastAPI, Starlette, Pydantic, SQLAlchemy, Psycopg, LangGraph, OpenAI and other model APIs, Slack and Discord SDKs, JSON Schema, PyYAML, pytest, `uv`, Hatch, and setuptools. - **TypeScript and JavaScript on modern Node.js:** Next.js, React, Vite, Express, Electron, Tailwind CSS, Zod, Drizzle ORM, Supabase, Playwright, Vitest, `pnpm`, and `npm`. - **Rust:** Cargo workspaces and asynchronous systems built with Tokio, Serde, Reqwest, Tauri, tracing, and cross-platform process or terminal primitives. - **Data and protocols:** PostgreSQL, SQLite, structured JSON/YAML contracts, REST APIs, webhooks, append-only event and message records, idempotent workers, queues, authentication, permissions, and audit trails. - **Agent and automation interfaces:** tool calling, MCP and related agent protocols, persistent task state, retrieval, evaluations, coding-agent adapters, browser automation, desktop control, and human approval workflows. - **Infrastructure and delivery:** Docker and Compose, Linux services, cloud-hosted APIs, Vercel-style web deployment, CI/CD, secrets management, logging, metrics, traces, backups, and incident recovery. - **Native and cross-platform surfaces:** Electron and Tauri desktop applications, PTYs and terminal interfaces, browser automation, and a smaller Swift/AppKit/ScreenCaptureKit macOS helper. This is not a requirement to have used every named library. It is a requirement to be comfortable moving through a mixed Python, TypeScript, and Rust system and to understand the engineering concepts underneath the frameworks. ## What you will own ### Build and maintain production software - Design, implement, test, deploy, and operate software across backend services, internal tools, and full-stack applications. - Take features and systems from an approved requirement through implementation, integration, release, monitoring, and maintenance. - Read and improve existing code before proposing a rewrite. - Make pragmatic architectural and build-versus-integrate decisions based on reliability, security, cost, and maintainability. - Define clear interfaces, schemas, failure behavior, and migration paths. - Keep codebases understandable and leave systems in a condition that another engineer can safely continue. ### Build integrations and workflow infrastructure - Build and maintain integrations with communication platforms, repositories, email, cloud services, publishing systems, analytics tools, CRMs, and other approved external services. - Extend shared workflows across platforms such as Slack and Discord while preserving consistent identity, permissions, task state, and audit history. - Design reliable webhook handlers, background jobs, queues, scheduled work, retries, idempotency, and recovery behavior. - Build operator interfaces for reviewing work, resolving exceptions, approving actions, and understanding system state. - Use APIs where practical and controlled browser, desktop, or mobile automation when an adequate API is unavailable. - Design automations to tolerate interface changes, expired sessions, partial failures, duplicate events, and rate limits. ### Build data and organizational knowledge systems - Ingest authorized communications and records from approved sources such as Slack, Discord, email, documents, meetings, and repositories. - Build durable storage, retrieval, search, and briefing systems with appropriate provenance and access control. - Preserve who said what, when it was said, and where it came from; distinguish a direct statement from an automated inference or summary. - Support corrections, superseded information, retention rules, deletion, and audit requirements. - Build relationship and communication workflows that can track interaction history, open loops, drafts, approvals, and reminders. - Prevent private information from leaking between projects, users, agents, or public outputs. ### Build and integrate AI-enabled systems - Implement applications and workflows that use language models, coding agents, research agents, computer-use agents, retrieval, tool calling, and structured outputs. - Connect agents to real systems through explicit, testable interfaces rather than fragile prompt-only behavior. - Design durable task state, checkpoints, queues, retries, timeouts, escalation, and recovery for long-running agent work. - Build evaluations and regression tests for nondeterministic components. - Instrument agent runs so engineers can inspect inputs, tool use, costs, failures, outputs, and approval state. - Establish clear boundaries between observing, recommending, drafting, staging, and taking an authorized external action. - Prevent one model's confidence or self-assessment from being treated as proof that a result is correct. ### Build secure automation and account access - Implement least-privilege access, secret management, environment isolation, audit logging, revocation, and approval gates. - Protect systems that can read private data, execute code, operate browsers, or act through external accounts. - Account for prompt injection, malicious external content, confused-deputy behavior, credential exposure, and cross-project data leakage. - Separate development, staging, and production access and make consequential actions attributable. - Work with the relevant security owner on threat modeling, design review, incident response, and remediation. - Treat browser and desktop control as high-permission production infrastructure, not a demo shortcut. ### Own engineering quality and operations - Write meaningful unit, integration, end-to-end, security, and regression tests. - Build deployment automation and maintain appropriate environments, backups, recovery procedures, and operational runbooks. - Instrument services with useful logs, metrics, traces, alerts, cost visibility, and failure diagnostics. - Investigate production problems, identify root causes, and make the system more resilient afterward. - Review human- and agent-generated code for correctness, security, dependency risk, brittle assumptions, and unnecessary complexity. - Distinguish proposed, mocked, locally demonstrated, staging-qualified, and production behavior. - Require reproducible evidence before declaring technical work complete. ### Improve how engineering work gets done - Work with product managers to turn approved requirements and acceptance criteria into sound technical plans. - Surface unclear requirements, hidden dependencies, security concerns, and technically risky assumptions early. - Break larger implementations into work that engineers and agents can execute without losing architectural coherence. - Keep technical decisions, active work, blockers, and release evidence visible to the team. - Turn recurring implementation problems into reusable libraries, tests, automation, documentation, or engineering standards. - Help a small team operate multiple systems without accumulating an unmanageable collection of one-off frameworks. ## How we use AI agents We expect senior engineers here to use agents as a normal part of their engineering practice. Depending on the task, that may include coding agents, research agents, browser agents, custom automations, local models, orchestration tools, or parallel development workflows. Strong use of agents might involve: - giving an agent the relevant code, architecture, constraints, and definition of done; - delegating bounded implementation, investigation, test-writing, migration, or documentation work; - coordinating parallel work without conflicting changes or duplicated systems; - preserving task state and decisions outside a private chat transcript; - reviewing diffs, tests, traces, and running behavior rather than trusting an agent's summary; - detecting when an agent is confidently wrong, stuck, missing context, or exceeding its authority; and - improving the workflow after a failed or low-quality run. You do not need to use a particular agent product or framework. We do want to understand which tools you use, what you trust them to do, how you verify their work, and where you keep a human in the loop. The engineer remains accountable for the architecture, code, security, testing, and production result. “The agent wrote it” is never an explanation for poor engineering. ## Scope boundaries This role does **not** own: - product strategy, customer discovery, market selection, or roadmap prioritization; - deciding which products or features the company should pursue; - writing product requirements or serving as the product manager; - trading strategy, investment signals, market calls, portfolio management, or trade execution; - custody of funds or speculative financial activity; - token economics, reward design, financial promises, or other economic policy; or - final marketing, editorial, legal, or public-communications decisions. You may implement approved software used by product, operations, content, community, or other teams. That does not transfer those teams' decision rights to engineering. You are expected to challenge requirements that are technically incoherent, unsafe, or unverifiable and to propose better implementation options. The relevant product or functional owner remains responsible for the underlying business decision. ## Initial priorities The exact sequence will be set with the product managers and engineering lead, but early work is likely to include: - Audit relevant repositories, services, deployments, integrations, and unfinished implementations to determine what actually works. - Establish a current technical map that distinguishes production systems, prototypes, stale assumptions, and missing infrastructure. - Extend a shared organizational workflow across multiple communication platforms. - Build a recurring, permission-aware communication-ingestion and retrieval pipeline with clear provenance. - Improve the reliability and observability of long-running agent and automation workflows. - Establish security controls for agents, external accounts, credentials, browser or desktop sessions, and sensitive communications. - Build one approval-gated communication or content workflow from authorized source material through exact-artifact review and preview output. - Consolidate common identity, event, permission, audit, and integration primitives where they are currently duplicated. - Improve automated testing, deployment evidence, monitoring, and recovery for existing systems. ## What success looks like - Develop an evidence-based understanding of the relevant systems and their current production state. - Become productive in the existing stack without requiring a clean-room rewrite. - Take ownership of a bounded technical milestone and ship a working, tested result. - Repair or qualify at least one important existing workflow. - Identify the highest-priority reliability, security, and maintainability risks and propose a practical sequence for addressing them. - Establish an effective working pattern with the product managers, other engineers, QA, and the agents you use. - Ship and operate at least one substantial cross-system workflow. - Improve the visibility of system state, failures, approvals, costs, and outcomes. - Establish reusable patterns for integrations, security, testing, observability, deployment, and recovery. - Demonstrate that a second workflow can reuse those patterns with materially less engineering effort. - Reduce the founder and engineering lead intervention required to keep technical work moving. - Leave behind production evidence: deployed behavior, tests, traces, runbooks, and a clear maintenance path. ## What we are looking for You are likely a strong fit if: - You have substantial professional software-engineering experience and have personally shipped and operated production systems. - You have production-level proficiency in both **Python** and **TypeScript/JavaScript**, including typed interfaces, dependency management, testing, debugging, and deployment. - You have working proficiency in **Rust**: you can read an unfamiliar crate, trace ownership and async behavior, diagnose compiler or runtime failures, make a bounded production change, and verify it with tests. Deep Rust specialization is welcome but not required. - You have built backend services using FastAPI, Starlette, Express, or a comparable framework and understand API design, authentication, validation, background work, and failure handling. - You have built modern web applications using React and a framework such as Next.js or Vite, and can work productively across browser code, server code, and typed API boundaries. - You can design and operate systems using PostgreSQL or SQLite, including schemas, migrations, transactions, indexing, concurrency, retention, and recovery. - You understand APIs, webhooks, authentication, queues, background jobs, idempotency, distributed failure modes, cloud deployment, and observability. - You are comfortable with Docker, Linux development and operations, CI/CD, secrets management, and at least one production cloud or application-hosting environment. - You can write and maintain unit, integration, and end-to-end tests using tools such as pytest, Vitest, and Playwright or their equivalents. - You can work across backend, infrastructure, integrations, and enough frontend code to own a result end to end. - You write clear, maintainable code and exercise sound judgment about abstractions, dependencies, performance, and operational complexity. - You can diagnose difficult problems using code, logs, metrics, traces, tests, and production evidence. - You understand security fundamentals, especially around credentials, private data, access boundaries, and high-permission automation. - You can take an ambiguous technical problem, investigate it, propose a bounded plan, and close the loop without constant supervision. - You communicate clearly in writing and leave useful technical plans, decision records, documentation, runbooks, and postmortems. - You use AI coding or engineering agents productively and review their work with the same rigor you would apply to a human contributor's work. - You care more about dependable outcomes than impressive demos, framework novelty, or raw lines of generated code. Useful but not required experience includes: - FastAPI, Starlette, Pydantic, SQLAlchemy, Psycopg, LangGraph, and modern Python packaging with `uv`; - Next.js, React, Vite, Express, Electron, Tailwind, Zod, Drizzle, Supabase, and modern Node.js tooling; - Tokio, Serde, Reqwest, Tauri, terminal or PTY programming, and structured tracing in Rust; - LLM applications, multi-agent systems, MCP, durable workflows, or event-driven orchestration; - Slack Bolt/SDK, Discord.py, email, publishing, messaging, analytics, or CRM integrations; - browser automation, computer use, desktop applications, mobile testing, or virtualized devices; - event sourcing, knowledge graphs, provenance systems, search, or temporal data models; - security engineering for multi-tenant or high-permission systems; - developer tools, internal platforms, and shared-service infrastructure; - media generation, deterministic rendering, or content-operation pipelines; and - evaluating or observing nondeterministic software; - Swift, AppKit, ScreenCaptureKit, macOS permissions, signing, or notarization; or - Azure, AWS, Vercel, Railway, GitHub Actions, or comparable deployment systems. You do not need experience in all of these areas. Strong general engineering ability, production judgment, and the capacity to learn matter more than matching every keyword. ## This role is probably not for you if - Your experience is primarily prototypes, hackathons, or model demos that somebody else productionized. - You prefer narrowly assigned tickets and do not want responsibility for integration, deployment, diagnosis, or maintenance. - You want to rewrite unfamiliar systems before understanding why they exist. - You consider a merged pull request sufficient evidence that a feature works. - You treat testing, security, observability, or documentation as someone else's job. - You use AI-generated code that you cannot explain, debug, or maintain. - You optimize for the number of agents, models, or frameworks involved rather than the quality of the resulting system. - You want to own product strategy or trading activity rather than implement approved technical work. ## Scope and decision rights You will have broad authority to investigate technical systems, propose architecture, implement approved work, improve engineering workflows, delegate scoped tasks to agents, and make reversible technical decisions within agreed boundaries. Production releases, material infrastructure spending, access to sensitive communications, new third-party accounts, and consequential external actions require the applicable approval. Delegating an action to an agent does not expand your authority. The founder retains final authority over company direction, capital allocation, and material risk. Product, security, QA, legal, marketing, and operations owners retain their respective decision and approval gates. ## How to apply Please send: 1. A short explanation of why this senior engineering role fits you. 2. Two examples of production software or infrastructure you personally shipped and operated. Explain the system, your exact contribution, the hardest technical tradeoff, and what happened after launch. 3. A link to code or a technically detailed artifact you produced. Private work may be described or demonstrated in redacted form. 4. A description of a difficult production incident or engineering failure you helped resolve. How did you diagnose it, what was the root cause, and what changed afterward? 5. A short technical walkthrough of a system you designed or substantially improved: its architecture, data model, important failure modes, security boundaries, and how you knew it was operating correctly. 6. A concise account of your experience with Python, TypeScript/JavaScript, and Rust. Name the frameworks and production systems you used, identify your strongest and weakest of the three, and explain one meaningful contribution you made in each language. 7. A description of the AI agents you currently use for engineering. Name the products, coding agents, models, frameworks, custom tools, or automations where possible. Walk through one real task: what you delegated, what context and permissions the agent received, how you verified its work, where it failed or needed correction, and what you deliberately kept under human control. 8. Your location, working hours, availability, and preferred engagement model. We care more about evidence of strong engineering judgment, ownership, and dependable production work than pedigree, titles, or familiarity with any single AI framework.

  • More than 30 hrs/week
    Hourly
  • 3-6 months
    Duration
  • Expert
    Experience Level
  • 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
Rust
AI Agent Development
Activity on this job
  • Proposals:50+
  • Interviewing:
    0
  • Invites sent:
    0
  • Unanswered invites:
    0
About the client
Member since Aug 31, 2020
  • United States
    San Francisco9:08 AM
  • $76K total spent
    27 hires, 6 active
  • 1,598 hours
  • Large company (100-1,000 people)

Explore similar jobs on Upwork

Agent x and AI automation expertHourly‐ Posted 2 months ago
ServiceNow
DevOps
SMS specialistHourly‐ Posted 1 month ago
SMS
SMS Gateway
Android

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