{ "id": "1946489380571002822", "hourlyBudgetMin": null, "hourlyBudgetMax": null, "ciphertext": "~021946489380571002822", "title": "Ruby on Rails Backend Engineer", "description": "We’re a small tech team building a multi-tenant admin portal that pulls restaurant data from POS, normalises it, and serves a secure API for our mobile and web apps. We need an experienced Rails engineer to own the backend—from first MVP all the way to production hardening.\n\nWe need help with \nDesigning scalable APIs → Build JSON / GraphQL endpoints with Postgres row-level security so each restaurant group sees only its own data.\nModelling data & ETL → Sync employees, transactions and discounts from APIs and scheduled CSV exports, then keep everything consistent via background jobs.\nAutomating quality & deploys → Containerise with Docker, wire up GitHub Actions, and run blue-green (or canary) deploys on AWS (ALB + target groups).\nOptimising performance → Profile queries, introduce Redis caching, batch Sidekiq jobs, and keep p95 response times low as volume grows.\nHardening security & compliance → Enforce JWT/OTP auth, RBAC/ABAC (Pundit / Permit.io), audit logging and GDPR/CCPA safeguards.\n\nMust have experience in following:\nSupabase auth/RLS know-how\nExperience with ELT tools (Fivetran, Airbyte) or custom ETL pipelines\nPrior mentorship or team-lead chops in a startup setting\n\nHow to throw your hat in the ring\n1. Share a GitHub link or snippet that shows off multitenant schema design or a gnarly API integration you nailed.\n2. Your experience in Supabase auth/RLS", "createdDateTime": "2025-07-19T08:36:47+0000", "duration": "ONGOING", "durationLabel": "More than 6 months", "engagement": "Less than 30 hrs/week", "amount": { "rawValue": "0.0", "currency": "USD", "displayValue": "0.0" }, "recordNumber": "1020813476", "experienceLevel": "EXPERT", "category": "web_mobile_software_dev", "subcategory": "web_development", "freelancersToHire": 3, "relevance": { "id": "0", "effectiveCandidates": 0, "recommendedEffectiveCandidates": 0, "uniqueImpressions": 0, "publishTime": null, "hoursInactive": 0 }, "enterprise": false, "relevanceEncoded": "{\"position\":\"4496\"}", "totalApplicants": 1, "preferredFreelancerLocation": null, "preferredFreelancerLocationMandatory": false, "premium": false, "clientNotSureFields": null, "clientPrivateFields": null, "applied": false, "publishedDateTime": "2025-07-19T08:36:47+0000", "renewedDateTime": null, "occupations": { "category": { "id": "531770282580668418", "prefLabel": "Web, Mobile & Software Dev" }, "subCategories": null, "occupationService": null }, "job": { "id": "1946489380571002822", "workFlowState": { "closeResult": null, "status": "ACTIVE" }, "activityStat": { "applicationsBidStats": null, "jobActivity": { "lastClientActivity": "2025-07-20T12:45:37.664Z", "totalRecommended": 0, "invitesSent": 5, "totalInvitedToInterview": 0, "totalHired": 0, "totalUnansweredInvites": 4, "totalOffered": 0 } }, "classification": { "category": { "id": "531770282580668418", "ontologyId": "upworkOccupation:webmobileandsoftwaredev", "type": [ "OCCUPATION" ], "entityStatus": "ACTIVE", "preferredLabel": "Web, Mobile & Software Dev", "definition": null, "createdDateTime": "2018-08-20T19:39:33+0000", "modifiedDateTime": "2023-12-19T19:18:21+0000" }, "subCategory": { "id": "531770282584862733", "ontologyId": "upworkOccupation:webdevelopmentsubcategory", "type": [ "OCCUPATION" ], "entityStatus": "ACTIVE", "preferredLabel": "Web Development", "definition": null, "createdDateTime": "2018-09-24T11:14:40+0000", "modifiedDateTime": "2023-07-10T17:01:25+0000" } } }, "client": { "totalHires": 309, "totalPostedJobs": 366, "totalSpent": { "rawValue": "906245.98", "currency": "USD", "displayValue": "906245.98" }, "verificationStatus": "VERIFIED", "location": { "city": "Los Angeles", "country": "United States", "timezone": "America/Sao_Paulo", "state": "CA", "offsetToUTC": "Americas" }, "totalReviews": 140, "totalFeedback": 4.5, "companyRid": "0", "companyName": null, "edcUserId": "0", "lastContractPlatform": null, "lastContractRid": "0", "lastContractTitle": null, "hasFinancialPrivacy": false }, "activityStat": { "jobActivity": { "lastClientActivity": "2025-08-01T09:30:45.066Z", "invitesSent": 5, "totalInvitedToInterview": 0, "totalHired": 0, "totalUnansweredInvites": 4, "totalOffered": 0, "totalRecommended": 1 } } }