[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-after-learning-to-say-no-en":3,"blog-adjacent-after-learning-to-say-no-en":30,"blog-related-after-learning-to-say-no-en":61},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":29},20,"after-learning-to-say-no","After We Learned to Say No","Declining the wrong work looks like a loss now and returns time to what matters later.","\u003Cp>In year one we accepted everything. In year two we hesitated. In year three we said no for the first time. It was nerve-racking, and the following six months were the calmest the company had ever been.\u003C\u002Fp>\n\u003Ch2>Three kinds of projects we decline\u003C\u002Fh2>\n\u003Cp>Budget below half the cost. Not because it is small, but because such projects rarely fund acceptance or promotion either.\u003C\u002Fp>\n\u003Cp>Build-first, sign-later. Verbal promises carry no weight the moment opinions diverge.\u003C\u002Fp>\n\u003Cp>Work beyond the team&#39;s current ability. Taking it simply transfers delivery risk to the client.\u003C\u002Fp>\n\u003Ch2>What happened next\u003C\u002Fh2>\n\u003Cp>We spent the freed time improving existing clients&#39; systems, and renewal went from sixty to ninety percent the following year.\u003C\u002Fp>\n\u003Cp>The team stopped switching context constantly, spent longer on each project, and rework dropped noticeably.\u003C\u002Fp>\n\u003Cp>Saying no is not rejecting clients. It is rejecting a way of working that would leave everyone unhappy.\u003C\u002Fp>","","teal","佳益方圆团队","2026-06-09T11:10:00+08:00",1,false,[16,17,18],"Startup","Decisions","Boundaries",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},6,0,"founder-notes","Founder Notes","Reflections from the founding team on business, management and product, documenting the growth of a software company.","pen-tool","blue","article",10,{},{"previous":31,"next":46},{"id":32,"slug":33,"title":34,"excerpt":35,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":36,"updatedAt":36,"readingMinutes":13,"featured":14,"tags":37,"category":41},118,"after-saas-retreat","Choosing Software After the SaaS Spring","Subscription enthusiasm cooled; procurement logic returned to pragmatism: total cost and data ownership.","2026-06-11T11:10:00+08:00",[38,39,40],"Industry Watch","SaaS","Procurement",{"id":42,"parentId":21,"slug":43,"name":38,"description":44,"icon":45,"cover":9,"tone":26,"kind":27,"sortOrder":4,"count":21},5,"industry-watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe",{"id":47,"slug":48,"title":49,"excerpt":50,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":51,"updatedAt":51,"readingMinutes":13,"featured":14,"tags":52,"category":56},41,"lightweight-code-review","Making Code Review Work in a Small Team","Review is not fault-finding. It is making sure a second person understands a change before it merges.","2026-06-07T12:23:00+08:00",[53,54,55],"Code Review","Team","Engineering",{"id":13,"parentId":21,"slug":57,"name":55,"description":58,"icon":59,"cover":9,"tone":26,"kind":27,"sortOrder":60,"count":21},"engineering","Hands-on engineering practices in architecture, performance optimization, AI integration and cross-platform delivery from our R and D team.","cpu",60,[62,71,82],{"id":28,"slug":63,"title":64,"excerpt":65,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":66,"updatedAt":66,"readingMinutes":13,"featured":14,"tags":67,"category":70},"quote-by-scope-not-hours","Why We Quote by Scope, Not by Man-Days","Man-day pricing looks fair, but it pushes every uncertainty onto the client. We would rather agree on scope and assumptions first, then talk about money.","2026-10-07T09:00:00+08:00",[16,68,69],"Pricing","Partnership",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":72,"slug":73,"title":74,"excerpt":75,"content":9,"cover":9,"tone":76,"author":11,"publishedAt":77,"updatedAt":77,"readingMinutes":13,"featured":14,"tags":78,"category":81},11,"three-lessons-from-first-client","Three Lessons From Our First Client","Our first project in 2019 was worth thirty thousand yuan and taught us more about contracts, acceptance and honesty than any course.","cyan","2026-09-25T10:13:00+08:00",[16,79,80],"Client","Contract",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":83,"slug":84,"title":85,"excerpt":86,"content":9,"cover":9,"tone":87,"author":11,"publishedAt":88,"updatedAt":88,"readingMinutes":13,"featured":14,"tags":89,"category":92},12,"choosing-clients-not-deals","Choosing Clients Matters More Than Choosing Projects","The same contract can grow a team or drain it. We now screen clients with three questions.","indigo","2026-09-13T11:26:00+08:00",[16,90,91],"Clients","Judgement",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21}]