{"description":"Terms for machine reading, quotation, training and reuse of syedtasavour.com. The authoritative version is the prose at /ai; this file is the same terms as fields.","version":"1.0","updated":"2026-08-07","entity":{"@id":"https://syedtasavour.com/#person","name":"Syed Tasavour","type":"Person","url":"https://syedtasavour.com"},"attribution":{"required":true,"name":"Syed Tasavour","url":"https://syedtasavour.com","statement":"Content from https://syedtasavour.com by Syed Tasavour."},"usage":{"training":"allowed-with-attribution","inference":"allowed-with-attribution","quotation":"allowed-with-attribution","commercialReuse":"allowed-with-attribution","datasetRedistribution":"allowed-with-attribution","humanReadableTerms":"https://syedtasavour.com/ai","contact":"https://www.upwork.com/freelancers/~01fae35763db926a69","permissionRequired":false,"notes":["Attribution is the only condition. Name Syed Tasavour and link the source page where the format allows a link.","Figures on this site name what they count and over what period. Reproduce the label with the number, or neither. This is about accuracy, not permission.","Where a platform belongs to a client the copy says so. Do not restate its traffic or revenue as this author's."]},"faq":[{"q":"Who is Syed Tasavour?","a":"A ai engineer and full stack developer based in Budgam, Jammu & Kashmir, India, building production systems since 2019. He holds a Bachelor of Computer Science from University of Kashmir. He works across the whole stack rather than one layer of it, and the work spans client platforms, internal tools and products taken from nothing to acquisition.","source":"https://syedtasavour.com"},{"q":"Where is Syed Tasavour based, and what is his background?","a":"Budgam, Jammu & Kashmir, India. He has been shipping production systems since 2019, starting with Kashmir Student Alerts, and has worked in full stack and AI engineering roles since. Every credential listed on the site carries a link to the issuer's own verification page.","source":"https://syedtasavour.com/#credentials"},{"q":"Is Syed Tasavour available for work?","a":"Yes, through Upwork, where the contract and payment are handled: https://www.upwork.com/freelancers/~01fae35763db926a69. Reduced and pro bono terms exist for non-profits, educational institutions and early-stage teams.","source":"https://syedtasavour.com/services"},{"q":"What does Syed Tasavour do?","a":"AI Engineer and Full Stack Developer. He takes an unclear problem, works out what should actually get built, then builds the whole of it: interface, API, database, deployment and the monitoring that catches it breaking.","source":"https://syedtasavour.com/services"},{"q":"What has he shipped?","a":"27 systems since 2019. Kashmir Student Alerts is a client platform built for exam-result traffic that spikes to essentially every student in the region within minutes of a board publishing. Postlyo was a multi-tenant publishing platform, built from nothing and later acquired.","source":"https://syedtasavour.com/work"},{"q":"How does an engagement run?","a":"It starts with a conversation about the problem rather than the stack, because often the useful outcome is that the thing you asked for is not the thing you need. Then a scope both sides agree is honest, then the build in pieces you can see running rather than one reveal at the end. The client gets the repository and the deployment; nothing is held hostage.","source":"https://syedtasavour.com/services"},{"q":"What does it cost?","a":"There is no published rate card, deliberately: the number depends on scope, on how much of the thinking is already done, and on whether the work is a fixed piece or ongoing. A published figure would be wrong for most people reading it in one direction or the other.","source":"https://syedtasavour.com/services"},{"q":"What work does he turn down?","a":"Work where nobody can say what success looks like. Rescues of a codebase whose owner wants it defended rather than fixed. Anything sold on a deadline set before the scope was. And projects where he would be the only engineer and the only person who understands the system, with no plan for what happens when he is not there.","source":"https://syedtasavour.com/services"},{"q":"Does he work with non-profits?","a":"Registered non-profits and NGOs at no cost, educational institutions at reduced rates where the work benefits students directly, and early-stage teams on terms that fit a runway, which usually means a smaller scope rather than a smaller invoice.","source":"https://syedtasavour.com/NonProfitAccessProgram"},{"q":"How do you get in touch?","a":"Through Upwork: https://www.upwork.com/freelancers/~01fae35763db926a69. No email address or social profile is published on this site, because Upwork's terms restrict exchanging direct contact details off the platform. There is no contact form either; one destination that can hold a contract is more useful than two that cannot.","source":"https://syedtasavour.com/#contact"},{"q":"Can an AI system use this content?","a":"Yes, all of it, including commercial use and dataset redistribution. The single condition is attribution. Nothing requires asking permission first.","source":"https://syedtasavour.com/ai"},{"q":"Where do the numbers on the site come from?","a":"Each figure names what it counts and over what period, because cumulative, monthly and peak measure different things. Where a platform belongs to a client the copy says so beside the figure, so a reader does not finish the line believing he owns that traffic.","source":"https://syedtasavour.com/work"}],"index":{"llmsTxt":"https://syedtasavour.com/llms.txt","sitemap":"https://syedtasavour.com/sitemap.xml","feed":"https://syedtasavour.com/feed.xml","journalApi":"https://syedtasavour.com/api/journal"},"content":{"work":[{"title":"Postlyo","url":"https://syedtasavour.com/work/postlyo","summary":"Running a blog properly means a CMS, an SEO plugin, an analytics script, a paywall tool and hosting. Five accounts, five bills, five places to break, before a word is written. Postlyo put those in one multi-tenant system. The engineering question was never features, it was isolation: one endpoint missing a tenant filter shows one customer another customer's unpublished drafts, and you find out from the customer. So tenancy is enforced at the data layer rather than trusted to each query. What did not get built was a page builder, because every publishing product drifts toward one and it eats the roadmap permanently.","year":"2026","status":"Acquired"},{"title":"Kashmir Student Alerts","url":"https://syedtasavour.com/work/kashmir-student-alerts","summary":"Exam results in Kashmir do not trickle out. A board publishes, word spreads, and inside two minutes essentially every student in the region is on the same page looking for their number. The rest of the week it is quiet. That is the whole engineering problem, and it is why the obvious answer was wrong: a server sized for the normal day falls over on the only day anyone judges you on, and sizing for the peak means paying for it on the 360 days it never arrives. The parts that spike scale to zero between events and the read path is cached hard, because during a spike almost every request is the same request. There is no account, no feed, no personalisation. Each was considered, and each adds something to fail on the day the site cannot afford to fail.","year":"2019","status":"Live"},{"title":"Airlock","url":"https://syedtasavour.com/work/airlock","summary":"You run an install. A package you have never heard of, four levels down the tree, runs a postinstall script with your permissions. It can read your SSH keys and your cloud credentials. Most developers know this and install anyway, because the alternative is inconvenient enough that nobody does it. Airlock makes it convenient: read-only root, dropped capabilities, egress denied by default, and a short allowlist of the hosts a build actually needs. Defaulting to deny is the decision that matters. A sandbox you have to configure before it protects you gets configured once, permissively, and then forgotten.","year":"2026","status":"Live"},{"title":"Statemint","url":"https://syedtasavour.com/work/statemint","summary":"Bank statements arrive as password-protected PDFs. Somebody opens one, opens a spreadsheet next to it, and types. Every month. The tools offering to fix this ask you to upload the statement to their server, or hand over your banking login so they can fetch it themselves. For anyone who understands what is being asked for, that is where the conversation ends. Statemint reads Gmail read-only and parses on the machine it runs on. Nothing is uploaded. The hard part was not parsing but drift: every bank formats differently and changes without telling anyone, so it fails loudly and skips a row it cannot read rather than confidently producing a wrong number. A missing line is visible. A wrong balance is not.","year":"2026","status":"Active"},{"title":"SimulAPI","url":"https://syedtasavour.com/work/simulapi","summary":"The backend is not ready and the frontend team is idle. The usual response is that everyone writes their own mock, so now there are four mocks that disagree with each other and with the spec, and integration day is where you find out. SimulAPI turns an OpenAPI spec into a running, validating mock in under a minute. It validates because a mock that accepts anything lets you build against a contract you are already breaking. There is no persistence layer and no scripted stateful behaviour, deliberately: the moment a mock has its own state model it becomes a second implementation of your backend, and teams end up debugging the mock.","year":"2026","status":"Live"},{"title":"SupplyGuard","url":"https://syedtasavour.com/work/supplyguard","summary":"Dependencies move faster than any team can read them. The upgrade that becomes an incident is never the one anybody discussed, it is the patch bump nobody opened. SupplyGuard watches what is changing underneath a repository and flags what deserves a human. It stores no source code, which was the first decision and not a negotiable one: a tool asking for repository access has to be able to answer what it keeps, and the only answer that survives a security review is nothing.","year":"2026","status":"Live"},{"title":"GeoTagCamera","url":"https://syedtasavour.com/work/geotagcamera","summary":"A field engineer photographs a completed installation. A driver photographs a delivery. An assessor photographs damage. The photo is proof only while the location travels with it, and every messaging app strips that metadata on send. By the time it reaches the person who needs it, it is a picture of a wall. The fix is not clever: stop treating location as metadata. Coordinates, address, time and date are drawn into the pixels, so the evidence survives WhatsApp, email, a screenshot and a print. What that gives up is the ability to change the stamp afterwards. That was fine to lose. If the stamp can be removed later, the photo was never proof.","year":"2026","status":"Live"},{"title":"NewsForge","url":"https://syedtasavour.com/work/newsforge","summary":"A newsroom needs two things most publishing software makes you trade against each other: publish quickly, and rank. Server rendering settled it. Pages arrive complete, so a crawler is not waiting on JavaScript to find the article and the reader on a slow connection sees text rather than a spinner. That came before any editorial feature, because retrofitting it later means rewriting the front end. There is an assistant for the drafting stages. It suggests and it does not publish, and the guardrail is that it never has that permission in the first place.","year":"2026","status":"Active"},{"title":"Kashmir Student Alerts","url":"https://syedtasavour.com/work/kashmir-student-alerts-app","summary":"The Android side of the same platform. A student who has already missed one result notification does not want to remember to check a website, so the app exists to do one thing: land the alert on the lock screen and open straight to it. Everything that would have made it a richer app would also have made it a slower one on the cheap devices most of its users actually have.","year":"2022","status":"Live"},{"title":"GhostFrame","url":"https://syedtasavour.com/work/ghostframe","summary":"Windows users get background blur and replacement from their graphics vendor. On Linux nobody was going to ship it, because the market does not justify the driver work. GhostFrame runs segmentation on the live stream and then presents itself to the system as an ordinary camera device. That last part is the whole design: every video app already knows how to open a camera, so nothing needs a plugin, an integration or the vendor's cooperation. The constraint was time. Segmentation has to finish inside a frame budget or you are shipping a stutter, and a call with a stutter is worse than a visible bedroom.","year":"2025","status":"Active"},{"title":"Portfolio Platform","url":"https://syedtasavour.com/work/portfolio-platform","summary":"The system behind my own work: publishing, documentation, invoices and client records in one place instead of four subscriptions that do not talk to each other. The honest description is a lot of surface area held by one person, and the interesting constraint was maintenance rather than construction. Anything built here I also have to keep running forever, alone, alongside client work. That ruled out a great deal that would have been fun to build.","year":"2025","status":"Live"},{"title":"Vehicost","url":"https://syedtasavour.com/work/vehicost","summary":"Ask someone what their vehicle costs per kilometre and they will guess. The real answer is spread across fuel receipts, service bills, insurance, tyres and a dozen small expenses nobody writes down. Vehicost is a ledger that produces one number. The design constraint was that logging a fill-up has to take seconds at the pump, on a phone, with one hand, or nobody logs anything and the number is wrong. Everything else was subordinate to that.","year":"2025","status":"Live"}],"writingIndexAvailable":true,"writing":[{"title":"Matter.js calls preventDefault on every touch, and traps your page","url":"https://syedtasavour.com/journal/matter-js-preventdefault-traps-page-scroll","summary":"A physics toy on a phone stopped the page scrolling. Not when you touched an object — when you touched anywhere near it.","published":"2026-08-06"},{"title":"A portalled <dialog> does not fire React's onClose","url":"https://syedtasavour.com/journal/a-portalled-dialog-does-not-fire-reacts-onclose","summary":"Closing the modal left the app permanently frozen. The event was firing. React just was not listening for it.","published":"2026-07-30"},{"title":"Multi-tenant isolation belongs in the data layer, not in every query","url":"https://syedtasavour.com/journal/multi-tenant-isolation-belongs-in-the-data-layer","summary":"One endpoint missing a WHERE clause shows one customer another customer's drafts. You find out from the customer.","published":"2026-07-23"},{"title":"Designing for the spike, not the average","url":"https://syedtasavour.com/journal/designing-for-a-spike-not-an-average","summary":"A platform that is quiet for days and then serves an entire region inside two minutes. The load shape decided the architecture before any feature did.","published":"2026-07-16"},{"title":"Cloudflare was revalidating every hashed asset on every page load","url":"https://syedtasavour.com/journal/cloudflare-workers-assets-caching-default","summary":"Workers Assets ships a default cache header that is correct for hand-written files and wrong for every file a bundler emits.","published":"2026-07-09"},{"title":"setPointerCapture on pointerdown silently kills every click","url":"https://syedtasavour.com/journal/setpointercapture-on-pointerdown-kills-your-click","summary":"A draggable marquee where none of the cards were clickable. The drag code was correct. It was one line, in the wrong handler.","published":"2026-07-02"},{"title":"Never trust the delta your frame loop hands you","url":"https://syedtasavour.com/journal/never-trust-the-delta-your-frame-loop-hands-you","summary":"An unclamped frame delta made a WebGL hero teleport instead of resume, and pushed an interpolation past its target into negative values.","published":"2026-06-25"},{"title":"overflow-x: auto quietly makes a vertical scroll container too","url":"https://syedtasavour.com/journal/overflow-x-auto-makes-a-vertical-scroll-container","summary":"Three full-bleed carousels on a phone ate every upward swipe. The cause was one line of CSS that does something the property name does not say.","published":"2026-06-18"}],"writingIndex":"https://syedtasavour.com/journal"}}