{ "id": "1950104506242423670", "hourlyBudgetMin": null, "hourlyBudgetMax": null, "ciphertext": "~021950104506242423670", "title": "Shopify App Development - Automated Cart Recovery with Personalized Videos", "description": "š Project Overview\n\nLooking for an experienced Shopify app developer to build a cart abandonment recovery tool that automatically generates personalized videos and sends them via email.\n\nDetailed project specifications and business requirements will be shared with selected candidates.\n\nāļø Technical Requirements\n\nšÆ Core Functionality\n\n1. Shopify App: Rails backend + React frontend\n2. Webhook Integration: Respond to cart abandonment events\n3. Video Generation: Create 30-second videos with customer name overlay, include product images from cart, add pre-recorded audio track, use FFmpeg for video processing\n4. Email Delivery: Send videos via Shopify Marketing API\n\nš» Tech Stack\n\nRuby on Rails (backend), React.js (frontend), AWS S3 (video storage), FFmpeg (video processing), Shopify Admin API & Marketing API, Database for tracking cart/video data\n\nš§ Key Features\n\nCart value threshold filtering, Basic admin dashboard with metrics, Video generation queue/status tracking, Simple recovery rate reporting\n\nš¦ Deliverables\n\n1. Working Shopify app ready for testing\n2. Admin interface for configuration\n3. Basic documentation\n4. Tested on development store\n\nā Requirements\n\n1. Portfolio: Must show previous Shopify apps\n2. Experience: FFmpeg/video processing required\n3. Timeline: 3-4 weeks\n4. Budget: Max $1,500 USD\n\nš To Apply\n\nInclude:\n\n1. Links to Shopify apps you've built\n2. Your technical approach for video generation\n3. Realistic timeline breakdown\n4. Any questions about requirements\n\nLooking for quality MVP delivery within budget. Ongoing work possible for successful candidate.", "createdDateTime": "2025-07-29T08:02:00+0000", "duration": "MONTH", "durationLabel": "1 to 3 months", "engagement": null, "amount": { "rawValue": "1500.0", "currency": "USD", "displayValue": "1500.0" }, "recordNumber": "1020973717", "experienceLevel": "EXPERT", "category": "web_mobile_software_dev", "subcategory": "web_development", "freelancersToHire": 1, "relevance": { "id": "0", "effectiveCandidates": 0, "recommendedEffectiveCandidates": 0, "uniqueImpressions": 0, "publishTime": null, "hoursInactive": 0 }, "enterprise": false, "relevanceEncoded": "{\"position\":\"4622\"}", "totalApplicants": 18, "preferredFreelancerLocation": null, "preferredFreelancerLocationMandatory": false, "premium": false, "clientNotSureFields": null, "clientPrivateFields": null, "applied": false, "publishedDateTime": "2025-07-29T08:02:01+0000", "renewedDateTime": null, "occupations": { "category": { "id": "531770282580668418", "prefLabel": "Web, Mobile & Software Dev" }, "subCategories": null, "occupationService": null }, "job": { "id": "1950104506242423670", "workFlowState": { "closeResult": null, "status": "ACTIVE" }, "activityStat": { "applicationsBidStats": { "avgRateBid": { "rawValue": "1497.7272727272727", "currency": "USD", "displayValue": "1497.7272727272727" }, "minRateBid": { "rawValue": "1450.0", "currency": "USD", "displayValue": "1450.0" }, "maxRateBid": { "rawValue": "1500.0", "currency": "USD", "displayValue": "1500.0" }, "avgInterviewedRateBid": null }, "jobActivity": { "lastClientActivity": "2025-07-29T15:05:39.219Z", "totalRecommended": 4, "invitesSent": 0, "totalInvitedToInterview": 0, "totalHired": 0, "totalUnansweredInvites": 0, "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": 0, "totalPostedJobs": 2, "totalSpent": null, "verificationStatus": "VERIFIED", "location": { "city": null, "country": "Germany", "timezone": "Europe/Berlin", "state": null, "offsetToUTC": "Europe" }, "totalReviews": 0, "totalFeedback": 0.0, "companyRid": "0", "companyName": null, "edcUserId": "0", "lastContractPlatform": null, "lastContractRid": "0", "lastContractTitle": null, "hasFinancialPrivacy": false }, "activityStat": { "jobActivity": { "lastClientActivity": "2025-07-30T07:47:47.806Z", "invitesSent": 0, "totalInvitedToInterview": 0, "totalHired": 0, "totalUnansweredInvites": 0, "totalOffered": 0, "totalRecommended": 3 } } }