[{"data":1,"prerenderedAt":428},["ShallowReactive",2],{"blog-posts-page-1":3},{"posts":4,"total":427},[5],{"id":6,"title":7,"author":8,"body":9,"coverImg":414,"description":415,"extension":416,"head":417,"meta":418,"navigation":419,"path":420,"publishedAt":421,"schemaOrg":417,"seo":422,"sitemap":423,"stem":425,"updatedAt":424,"__hash__":426},"blog\u002Fblog\u002Fsmall-apps-that-do-one-job-well.md","From one ship tracker to a shelf of apps","Primo Technology",{"type":10,"value":11,"toc":398},"minimark",[12,16,19,24,33,41,180,184,187,259,267,271,279,284,287,296,300,303,310,314,317,324,328,331,338,342,358,365,368,372,375,378,381,385],[13,14,15],"p",{},"Primo Technology is an independent app studio. We build small apps for iPhone and Android,\nand each one does a single job: it answers one question, usually from a photo or a scan,\nand puts the answer on the first screen.",[13,17,18],{},"This first post is the introduction. It covers where the studio started, what is on the\nshelf today, and the workflow every new app now goes through, from the first keyword to\nthe store review.",[20,21,23],"h2",{"id":22},"where-it-started","Where it started",[13,25,26,27,32],{},"The first app was ",[28,29,31],"a",{"href":30},"\u002Fproducts\u002Fprimo-nautic","Primo Nautic",", released in February 2017. It\nshows any ship's live position, keeps a list of the vessels you follow, and sends an alert\nwhen one arrives or departs. It is still live today.",[13,34,35,36,40],{},"Primo Nautic set the pattern the later apps follow: one clear job, a result you can read\nat a glance, and a server that does the heavy work so the phone stays simple.\n",[28,37,39],{"href":38},"\u002Fproducts\u002Fprimo-notes","Primo Notes"," followed in January 2025. From 2026 the shelf grew\nquickly, because by then every new app started from the same base instead of from\nnothing.",[42,43,44,60],"table",{},[45,46,47],"thead",{},[48,49,50,54,57],"tr",{},[51,52,53],"th",{},"Released",[51,55,56],{},"App",[51,58,59],{},"The one job",[61,62,63,74,84,95,106,117,127,138,149,160,170],"tbody",{},[48,64,65,69,71],{},[66,67,68],"td",{},"February 2017",[66,70,31],{},[66,72,73],{},"Follow a ship and get told when it arrives or departs",[48,75,76,79,81],{},[66,77,78],{},"January 2025",[66,80,39],{},[66,82,83],{},"Turn a recording, a photo, a PDF or a link into an organized note",[48,85,86,89,92],{},[66,87,88],{},"March 2026",[66,90,91],{},"Primo Trade",[66,93,94],{},"Explain a stock or a photographed price chart",[48,96,97,100,103],{},[66,98,99],{},"April 2026",[66,101,102],{},"Primo Scale",[66,104,105],{},"Estimate weight, size, count or calories from a photo",[48,107,108,111,114],{},[66,109,110],{},"May 2026",[66,112,113],{},"Primo Worth",[66,115,116],{},"Identify an item and compare it with similar ones",[48,118,119,121,124],{},[66,120,110],{},[66,122,123],{},"Primo Jewelry",[66,125,126],{},"Name the metal, era and hallmark, or measure a ring size",[48,128,129,132,135],{},[66,130,131],{},"July 2026",[66,133,134],{},"Primo Rocks",[66,136,137],{},"Name a rock, mineral, crystal, gem or fossil",[48,139,140,143,146],{},[66,141,142],{},"September 2026",[66,144,145],{},"Primo Snake",[66,147,148],{},"Give a likely species and a venom verdict",[48,150,151,154,157],{},[66,152,153],{},"October 2026",[66,155,156],{},"Primo Halal",[66,158,159],{},"Check whether a product is halal",[48,161,162,164,167],{},[66,163,153],{},[66,165,166],{},"Primo Vegan",[66,168,169],{},"Find anything in a product that comes from an animal",[48,171,172,174,177],{},[66,173,153],{},[66,175,176],{},"Primo Gluten",[66,178,179],{},"See which ingredients contain gluten",[20,181,183],{"id":182},"the-shelf-today","The shelf today",[13,185,186],{},"Eleven apps are live on the App Store and Google Play, one product runs on the web, and two\napps are still being built. They group into families: apps that share a trick also share\nmost of their code.",[42,188,189,202],{},[45,190,191],{},[48,192,193,196,199],{},[51,194,195],{},"Family",[51,197,198],{},"Apps",[51,200,201],{},"What you do",[61,203,204,215,226,237,248],{},[48,205,206,209,212],{},[66,207,208],{},"Point the camera",[66,210,211],{},"Scale, Worth, Jewelry, Rocks, Snake",[66,213,214],{},"Photograph something and find out what it is, what it weighs or what kind it is",[48,216,217,220,223],{},[66,218,219],{},"Scan the label",[66,221,222],{},"Halal, Vegan, Gluten",[66,224,225],{},"Scan a barcode or an ingredients list and get a verdict for your diet",[48,227,228,231,234],{},[66,229,230],{},"Track and learn",[66,232,233],{},"Nautic, Notes, Trade",[66,235,236],{},"Follow a ship, keep notes, read a chart",[48,238,239,242,245],{},[66,240,241],{},"On the web",[66,243,244],{},"Viral Slide Post",[66,246,247],{},"Build TikTok slideshows from proven templates",[48,249,250,253,256],{},[66,251,252],{},"In development",[66,254,255],{},"Sober, BMI",[66,257,258],{},"Count sober days; track weight toward a goal",[13,260,261,262,266],{},"The ",[28,263,265],{"href":264},"\u002Fproducts","products page"," has every app with its screens and store links.",[20,268,270],{"id":269},"how-a-primo-app-gets-made","How a Primo app gets made",[13,272,273,274,278],{},"The apps look different, but they are made the same way. The path has eight steps in five\nchapters, and the ",[28,275,277],{"href":276},"\u002Fhow-we-work","how we work"," page shows it in full. Here is the short\nversion.",[280,281,283],"h3",{"id":282},"_1-research-before-a-line-of-code","1. Research, before a line of code",[13,285,286],{},"An app starts as a question people already search for, and we measure that first. We look\nat keyword demand and difficulty on both stores with Astro and Sonar, and at web search\nwith DataForSEO. We read the competition: who already earns in the niche, how fast the\nnewest apps grow, and what their one-star reviews keep asking for. And we pick the markets,\nbecause the same job is searched differently in every country, so keywords are researched\nper locale rather than translated.",[13,288,289],{},[290,291],"img",{"alt":292,"height":293,"src":294,"width":295},"Store keywords, competitors and markets narrow down to one job worth building",500,"\u002Fimages\u002Fhow-we-work\u002Fresearch.webp",720,[280,297,299],{"id":298},"_2-design-several-directions-then-one","2. Design, several directions then one",[13,301,302],{},"Two or three versions of the key screens are drafted side by side on a design canvas, and\nonly the strongest gets built. Most of the care goes to two places: the onboarding, a short\nquiz that sets the app up for the person, and the paywall, which shows the value, the trial\nand the price in three steps.",[13,304,305],{},[290,306],{"alt":307,"height":308,"src":309,"width":295},"Three directions, A, B and C, with B chosen, leading into onboarding and then the paywall: value, trial, price",223,"\u002Fimages\u002Fhow-we-work\u002Fdesign.webp",[280,311,313],{"id":312},"_3-build-with-a-team-of-agents-on-one-core","3. Build, with a team of agents on one core",[13,315,316],{},"The building is done by AI agents, each in a narrow role. Builders write screens,\ncomponents and Cloud Functions in parallel, reviewers read every change against our\nwritten guides, and testers drive the app at phone size. They all work on the same base:\nIonic Vue on Capacitor, with Firebase behind it and RevenueCat for subscriptions. Because\nthe base is shared, a fix found in one app is a known change in the others.",[13,318,319],{},[290,320],{"alt":321,"height":322,"src":323,"width":295},"Builders, reviewers and testers work on a shared core of Vue, Ionic, Capacitor and Firebase that ships an iPhone and Android app",250,"\u002Fimages\u002Fhow-we-work\u002Fbuild.webp",[280,325,327],{"id":326},"_4-store-assets-automated-then-checked-by-hand","4. Store assets, automated then checked by hand",[13,329,330],{},"Store screenshots are captured from the running app, not drawn. Our own Figma plugin\nplaces them into the store set and exports it for every device size and every locale, and\nicons are built from layered templates. Every few months a person goes through the whole\nset, because automation does not notice a screen that changed or a headline that no longer\nfits.",[13,332,333],{},[290,334],{"alt":335,"height":336,"src":337,"width":295},"An app screen goes through our Figma plugin to every device and every locale, with a manual review every few months",370,"\u002Fimages\u002Fhow-we-work\u002Fassets.webp",[280,339,341],{"id":340},"_5-ship-from-the-terminal","5. Ship, from the terminal",[13,343,344,345,351,352,357],{},"Builds, listings, uploads and review submission run from two command-line tools:\n",[28,346,350],{"href":347,"rel":348},"https:\u002F\u002Fasccli.sh",[349],"nofollow","asc"," for App Store Connect and\n",[28,353,356],{"href":354,"rel":355},"https:\u002F\u002Fgithub.com\u002Ftamtom\u002Fplay-console-cli",[349],"gplay"," for Google Play Console. Nothing is\nclicked through a console, so every release goes the same way.",[13,359,360],{},[290,361],{"alt":362,"height":363,"src":364,"width":295},"With asc, an iPhone build goes through archive, upload, processing, review and release. With gplay, an Android build goes through validate, publish to track and rollout",267,"\u002Fimages\u002Fhow-we-work\u002Fship.webp",[13,366,367],{},"After release, reviews, crashes and usage decide what the next release fixes, and the path\nstarts again.",[20,369,371],{"id":370},"what-every-app-shares","What every app shares",[13,373,374],{},"The answer comes first. The result is the first thing you see, and the reason sits right\nunder it: the ingredient that made a cheese doubtful, the portion data behind a weight, the\nsnake that should be left alone.",[13,376,377],{},"The apps in a family run the same pipeline. Rocks and Snake share one flow from photo to\nanswer, and Halal, Vegan and Gluten share another, differing only in their rules and their\nwords. A camera plugin we maintain handles the preview, the depth measurements on Scale and\nthe barcode reading for the label apps.",[13,379,380],{},"AI runs on the server, never in the app, and keys stay in Secret Manager. Scan history lives\non the phone, and the scan functions return an answer without saving your photo. The apps\nthat have accounts let you delete the account from inside the app.",[20,382,384],{"id":383},"what-comes-next","What comes next",[13,386,387,388,392,393,397],{},"Two apps are on the workbench: ",[28,389,391],{"href":390},"\u002Fproducts\u002Fprimo-sober","Primo Sober",", which counts the days\nsince you stopped drinking, and ",[28,394,396],{"href":395},"\u002Fproducts\u002Fprimo-bmi","Primo BMI",", which tracks weigh-ins\ntoward a goal. This blog will follow them, and go deeper into the parts above: how the\nlabel apps decide a verdict, how Primo Snake keeps the model away from the venom call, and\nwhat each step of the workflow looks like in practice.",{"title":399,"searchDepth":400,"depth":400,"links":401},"",2,[402,403,404,412,413],{"id":22,"depth":400,"text":23},{"id":182,"depth":400,"text":183},{"id":269,"depth":400,"text":270,"children":405},[406,408,409,410,411],{"id":282,"depth":407,"text":283},3,{"id":298,"depth":407,"text":299},{"id":312,"depth":407,"text":313},{"id":326,"depth":407,"text":327},{"id":340,"depth":407,"text":341},{"id":370,"depth":400,"text":371},{"id":383,"depth":400,"text":384},"\u002Fimages\u002Fblog\u002Fintro-cover.jpg","How Primo Technology started with Primo Nautic in 2017, what the eleven live apps do today, and the workflow every new app now goes through, from research to release.","md",null,{},true,"\u002Fblog\u002Fsmall-apps-that-do-one-job-well","2026-10-21",{"title":7,"description":415},{"loc":420,"lastmod":424},"2026-10-25","blog\u002Fsmall-apps-that-do-one-job-well","GV835VjQRQidZ9xmrf6bePGgDROGSbCAScKQMEOCbWU",1,1793088261990]