[{"data":1,"prerenderedAt":1588},["ShallowReactive",2],{"news:\u002Fnews\u002Fwhy-our-ai-engineer-writes-tests-first":3,"news:all":101},{"id":4,"title":5,"author":6,"body":7,"category":83,"cover":84,"date":85,"description":86,"draft":87,"extension":88,"featured":87,"hero":89,"meta":90,"navigation":91,"path":92,"seo":93,"stem":94,"tags":95,"updated":99,"__hash__":100},"blog\u002Fnews\u002Fwhy-our-ai-engineer-writes-tests-first.md","Why our AI engineer writes the tests first","The CNEX team",{"type":8,"value":9,"toc":76},"minimark",[10,19,26,31,38,43,47,58,62,65,68],[11,12,13,14,18],"p",{},"Ask most AI coding tools to \"build X\" and they'll write X, then maybe some tests that conveniently pass. That's backwards — and it's why so much AI output is ",[15,16,17],"em",{},"almost"," right.",[11,20,21,22],{},"Connekz does it the other way round: ",[23,24,25],"strong",{},"the tests come first.",[27,28,30],"h2",{"id":29},"done-should-mean-proven","\"Done\" should mean \"proven\"",[11,32,33,34,37],{},"When the acceptance criteria become tests ",[15,35,36],{},"before"," a line of implementation, \"done\" stops being a vibe and starts being a fact. The code has to satisfy the behaviour you actually asked for — not just look plausible in a diff.",[39,40],"portal-figure",{"caption":41,"shot":42},"Acceptance criteria → tests → implementation → green suite → PR. In that order.","run",[27,44,46],{"id":45},"it-kills-the-almost-right","It kills the \"almost right\"",[11,48,49,50,53,54,57],{},"Most of the frustration with AI code is the gap between ",[15,51,52],{},"looks done"," and ",[15,55,56],{},"is done",". Tests-first closes that gap: an edge case that isn't handled is a red test, caught before the PR ever reaches you — not a bug you discover in production on a Friday.",[27,59,61],{"id":60},"you-still-review","You still review",[11,63,64],{},"Tests-first doesn't replace your judgement; it earns your review. What lands in your PR queue already has green tests against clear criteria, so the time you spend reviewing is spent on the things that actually need a human — design, trade-offs, taste — not hunting for obvious breakage.",[11,66,67],{},"That's the whole reason we trust Connekz with real work: not because it's clever, but because it proves itself first, every time.",[69,70,73],"cta",{"href":71,"title":72},"\u002Fproduct\u002Fai-engineer","See the tests-first loop",[11,74,75],{},"Assign a real task and watch the tests go green before the PR opens.",{"title":77,"searchDepth":78,"depth":78,"links":79},"",2,[80,81,82],{"id":29,"depth":78,"text":30},{"id":45,"depth":78,"text":46},{"id":60,"depth":78,"text":61},"engineering","\u002Fimages\u002Fnews\u002Fog-tests-first.png","2026-05-10","The single most important thing Connekz does isn't writing code — it's writing the tests before the code. Here's why that ordering is what makes AI-written work trustworthy.",false,"md","tests-first",{},true,"\u002Fnews\u002Fwhy-our-ai-engineer-writes-tests-first",{"title":5,"description":86},"news\u002Fwhy-our-ai-engineer-writes-tests-first",[96,97,98],"ai-engineer","testing","connekz",null,"QQJ2gUOIfXBVhstXJQeEdLC0foHjG0lvRDHHIM-X5do",[102,203,278,354,399,519,610,758,864,956,1198,1446],{"id":103,"title":104,"author":6,"body":105,"category":83,"cover":191,"date":192,"description":193,"draft":87,"extension":88,"featured":87,"hero":194,"meta":195,"navigation":91,"path":196,"seo":197,"stem":198,"tags":199,"updated":99,"__hash__":202},"blog\u002Fnews\u002Fa-week-running-our-company-on-cnex-flow.md","A week of running our company on CNEX-Flow",{"type":8,"value":106,"toc":184},[107,110,114,117,121,125,135,139,143,150,154,161,165,168,177],[11,108,109],{},"The best way to trust a tool is to watch the people who made it actually use it. So here's an honest, unglamorous week of running our own company on CNEX-Flow — no highlight reel, just the loop.",[27,111,113],{"id":112},"monday-the-inbox-sorts-itself","Monday — the inbox sorts itself",[11,115,116],{},"A prospect emails. By the time we open the portal, it's already a contact on the CRM with the email filed against it. No re-typing, no \"I'll log that later.\" The day starts from a clean source of truth.",[39,118],{"caption":119,"shot":120},"Monday's inbox, already filed: the client, the email, the next step — one timeline.","clients",[27,122,124],{"id":123},"tuesday-talking-to-the-portal-mid-call","Tuesday — talking to the portal mid-call",[11,126,127,128,53,131,134],{},"On a call with a customer, we ask Connekz ",[15,129,130],{},"\"what did we promise Acme last time?\"",[15,132,133],{},"\"create a follow-up for Friday\""," — without touching the mouse. The notes write themselves into the right record while we stay in the conversation.",[39,136],{"caption":137,"shot":138},"Tuesday's call: ask, and Connekz answers from the live record.","voice",[27,140,142],{"id":141},"wednesday-handing-work-to-connekz","Wednesday — handing work to Connekz",[11,144,145,146,149],{},"A well-defined ticket — a small feature with clear acceptance criteria — goes to Connekz. It writes the tests, implements, and opens a PR. We get on with the harder design work it ",[15,147,148],{},"can't"," do.",[27,151,153],{"id":152},"thursday-the-human-gate","Thursday — the human gate",[11,155,156,157,160],{},"We review the PR. One inline comment, a quick fix, and it's green again. This is the part we never skip: ",[23,158,159],{},"a human reads and merges every change."," That's the whole reason the loop is safe.",[27,162,164],{"id":163},"friday-what-shipped-and-what-didnt","Friday — what shipped, and what didn't",[11,166,167],{},"Some of the week shipped through Connekz; some needed a senior's judgement and stayed with us. That's the honest split — and it's the point. The predictable work got absorbed so the hard work got our full attention.",[11,169,170,171,176],{},"That's the loop, every week. If you want the origin story behind it, ",[172,173,175],"a",{"href":174},"\u002Fstory","read how we built CNEX-Flow with it",".",[69,178,181],{"href":179,"title":180},"\u002Fproduct\u002Fconnekz","Run your shop the way we run ours",[11,182,183],{},"One platform for the client work, the calls and the code — with an AI across all of it. Start a free month and try the loop.",{"title":77,"searchDepth":78,"depth":78,"links":185},[186,187,188,189,190],{"id":112,"depth":78,"text":113},{"id":123,"depth":78,"text":124},{"id":141,"depth":78,"text":142},{"id":152,"depth":78,"text":153},{"id":163,"depth":78,"text":164},"\u002Fimages\u002Fnews\u002Fog-the-week.png","2026-05-22","We don't just build CNEX-Flow — we run our own shop on it. Here's an honest, ordinary week: the client work, the calls, the code, and where a human stepped in.","the-week",{},"\u002Fnews\u002Fa-week-running-our-company-on-cnex-flow",{"title":104,"description":193},"news\u002Fa-week-running-our-company-on-cnex-flow",[200,98,201],"build-in-public","dogfooding","M2qyUaMCQLf6MjktH_DLctrwwhXiTpOIGjP4tJMDedY",{"id":204,"title":205,"author":6,"body":206,"category":265,"cover":266,"date":267,"description":268,"draft":87,"extension":88,"featured":91,"hero":269,"meta":270,"navigation":91,"path":271,"seo":272,"stem":273,"tags":274,"updated":99,"__hash__":277},"blog\u002Fnews\u002Fwhat-shipped-this-month.md","What shipped this month",{"type":8,"value":207,"toc":260},[208,211,215,218,221,225,228,238,242,245],[11,209,210],{},"We ship small and often. Here's what landed this month — nothing earth-shattering, just steady progress you can use today.",[27,212,214],{"id":213},"calls-and-messages-in-one-thread","Calls and messages in one thread",[11,216,217],{},"Your in-app chat, SMS, and phone calls with a client now live in a single thread. No more stitching the story together across three tools — open a company and read the whole conversation top to bottom.",[39,219],{"caption":220,"shot":120},"One client, one timeline — calls, messages and tasks together.",[27,222,224],{"id":223},"post-call-summaries-you-can-act-on","Post-call summaries you can act on",[11,226,227],{},"When a call ends, CNEX-Flow drafts a summary and a short list of suggested follow-ups. You review them, edit anything that's off, and save — nothing is filed without your say-so.",[229,230,231],"tip",{},[11,232,233,234,237],{},"Every AI suggestion on a call is a ",[23,235,236],{},"draft",". You stay in the loop: review, edit, then save. Nothing posts to a client or a record on its own.",[27,239,241],{"id":240},"a-quicker-sprint-board","A quicker sprint board",[11,243,244],{},"The board got faster to load and smoother to drag on. Small thing, but you live in it all day — so it matters.",[11,246,247,248,252,253,53,256,259],{},"That's the month. Want the running list as it happens? Grab the ",[172,249,251],{"href":250},"\u002Fnews\u002Frss.xml","RSS feed",", and see where we're headed on the ",[172,254,255],{"href":71},"AI engineer",[172,257,258],{"href":179},"Connekz"," pages.",{"title":77,"searchDepth":78,"depth":78,"links":261},[262,263,264],{"id":213,"depth":78,"text":214},{"id":223,"depth":78,"text":224},{"id":240,"depth":78,"text":241},"news","\u002Fimages\u002Fnews\u002Fog-comms-thread.png","2026-05-20","A short, honest roundup of what landed in CNEX-Flow this month — unified call threads, post-call AI summaries, and a faster sprint board.","comms-thread",{},"\u002Fnews\u002Fwhat-shipped-this-month",{"title":205,"description":268},"news\u002Fwhat-shipped-this-month",[275,276],"releases","product","8lcb0_WNa09jt-eeOzFEwW_yfo4xcYMl5Sbm-UyKT6E",{"id":279,"title":280,"author":6,"body":281,"category":342,"cover":343,"date":344,"description":345,"draft":87,"extension":88,"featured":87,"hero":346,"meta":347,"navigation":91,"path":348,"seo":349,"stem":350,"tags":351,"updated":99,"__hash__":353},"blog\u002Fnews\u002Ftake-on-more-clients-without-hiring.md","How to take on more clients without hiring (or dropping the ball)",{"type":8,"value":282,"toc":337},[283,286,293,297,300,304,307,310,317,321,324,327],[11,284,285],{},"Every growing IT shop hits the same wall. More clients want in, but your senior people are already maxed — so you either hire ahead of revenue (risky) or turn work away (painful). Quality is the thing that quietly suffers in between.",[11,287,288,289,292],{},"There's a third path: don't add people to do the predictable work — ",[15,290,291],{},"delegate"," it.",[27,294,296],{"id":295},"the-bottleneck-is-rarely-the-hard-stuff","The bottleneck is rarely the hard stuff",[11,298,299],{},"Look at where your seniors' hours actually go. A surprising chunk isn't the gnarly architecture — it's the well-defined work around it: CRUD pages, integrations, refactors, test coverage, the fixes. Necessary, valuable, and a poor use of your most expensive people.",[27,301,303],{"id":302},"delegate-the-predictable-keep-the-hard","Delegate the predictable, keep the hard",[11,305,306],{},"That predictable tier is exactly what an AI engineering teammate is good at. Write a clear ticket, hand it to Connekz, and get a tested PR back — while your seniors stay on the work only they can do.",[39,308],{"caption":309,"shot":42},"The predictable work, delegated: a clear ticket in, a tested PR out — your seniors never touched it.",[11,311,312,313,316],{},"You're not lowering the bar, because ",[23,314,315],{},"you still review every PR."," You're just spending your senior hours where they actually move the needle.",[27,318,320],{"id":319},"the-math","The math",[11,322,323],{},"A full dev teammate that ships overnight costs less than one contractor day a month. For a shop weighing \"hire a junior vs turn down a project,\" that's a different equation entirely — capacity you can switch on this week, without the payroll risk.",[11,325,326],{},"Take on the next client. Let Connekz absorb the predictable load. Keep your quality — and your weekends.",[69,328,330],{"href":71,"title":329},"Add capacity without adding headcount",[11,331,332,333,176],{},"See how the AI engineer ships the predictable work — then check what it costs on the ",[172,334,336],{"href":335},"\u002Fpricing","pricing page",{"title":77,"searchDepth":78,"depth":78,"links":338},[339,340,341],{"id":295,"depth":78,"text":296},{"id":302,"depth":78,"text":303},{"id":319,"depth":78,"text":320},"guides","\u002Fimages\u002Fnews\u002Fog-capacity.png","2026-05-16","Growth usually forces a choice: take on more work and let quality slip, or hold the line and turn clients away. Here's a third option — delegate the predictable work, keep your seniors on the hard problems.","capacity",{},"\u002Fnews\u002Ftake-on-more-clients-without-hiring",{"title":280,"description":345},"news\u002Ftake-on-more-clients-without-hiring",[346,96,352],"operations","jIl1cEPIS9CEP6oNawwZwfAri7MpTGbpLh_KJMF73Rs",{"id":4,"title":5,"author":6,"body":355,"category":83,"cover":84,"date":85,"description":86,"draft":87,"extension":88,"featured":87,"hero":89,"meta":396,"navigation":91,"path":92,"seo":397,"stem":94,"tags":398,"updated":99,"__hash__":100},{"type":8,"value":356,"toc":391},[357,361,365,367,371,373,375,381,383,385,387],[11,358,13,359,18],{},[15,360,17],{},[11,362,21,363],{},[23,364,25],{},[27,366,30],{"id":29},[11,368,33,369,37],{},[15,370,36],{},[39,372],{"caption":41,"shot":42},[27,374,46],{"id":45},[11,376,49,377,53,379,57],{},[15,378,52],{},[15,380,56],{},[27,382,61],{"id":60},[11,384,64],{},[11,386,67],{},[69,388,389],{"href":71,"title":72},[11,390,75],{},{"title":77,"searchDepth":78,"depth":78,"links":392},[393,394,395],{"id":29,"depth":78,"text":30},{"id":45,"depth":78,"text":46},{"id":60,"depth":78,"text":61},{},{"title":5,"description":86},[96,97,98],{"id":400,"title":401,"author":6,"body":402,"category":342,"cover":507,"date":508,"description":509,"draft":87,"extension":88,"featured":87,"hero":510,"meta":511,"navigation":91,"path":512,"seo":513,"stem":514,"tags":515,"updated":99,"__hash__":518},"blog\u002Fnews\u002Fwho-has-access-to-what.md","Can you say, right now, who has access to what?",{"type":8,"value":403,"toc":502},[404,407,414,418,425,429,432,466,469,473,484,488,495],[11,405,406],{},"A contractor finished a project three months ago. Quick question: do they still have access to that client's files? If you had to think about it, you're not alone — and that pause is exactly what your cyber-insurer is worried about.",[11,408,409,410,413],{},"For a growing IT shop, ",[15,411,412],{},"\"who can see what?\""," gets harder to answer with every hire, every tool, and every client.",[27,415,417],{"id":416},"why-access-gets-messy","Why access gets messy",[11,419,420,421,424],{},"The problem isn't carelessness — it's that access lives in too many places. Every tool has its own permissions, set per-tool, per-hire. So offboarding someone means remembering all seven places they had a login, and ",[15,422,423],{},"that"," depends on memory. Orphaned accounts are how breaches (and failed audits) happen.",[27,426,428],{"id":427},"a-5-minute-audit","A 5-minute audit",[11,430,431],{},"Try this right now: pick someone who left or rolled off in the last quarter, and check each system:",[433,434,435,442,448,454,460],"ul",{},[436,437,438,441],"li",{},[23,439,440],{},"Email \u002F shared drive"," — still a member of any client folders?",[436,443,444,447],{},[23,445,446],{},"CRM"," — still an active user?",[436,449,450,453],{},[23,451,452],{},"Repos \u002F hosting"," — keys or seats still active?",[436,455,456,459],{},[23,457,458],{},"Password manager"," — still in shared vaults?",[436,461,462,465],{},[23,463,464],{},"The client's own systems"," — still on their allow-list?",[11,467,468],{},"If you can't get to a confident \"all clear\" in five minutes, that's the gap an attacker (or an auditor) walks through.",[27,470,472],{"id":471},"one-access-model-not-seven","One access model, not seven",[11,474,475,476,479,480,483],{},"The fix is to stop managing access tool-by-tool. In CNEX-Flow, a person's access comes from their ",[23,477,478],{},"role and division"," — provision on hire, revoke on exit, in one place, with a full audit trail and a reverse lookup that answers ",[15,481,482],{},"\"who can see this client?\""," instantly.",[39,485],{"caption":486,"shot":487},"A member's real, effective permissions — what they can see, and exactly why.","access",[11,489,490,491,494],{},"And here's the part that matters for AI: ",[23,492,493],{},"if your login can't see it, neither can your AI."," Connekz inherits the exact same permissions, so asking it a question can never leak what your role couldn't already access.",[69,496,499],{"href":497,"title":498},"\u002Fsolutions\u002Fit","Know exactly who can see what",[11,500,501],{},"See how one access model — provision, revoke, audit, reverse-lookup — replaces the per-tool scramble.",{"title":77,"searchDepth":78,"depth":78,"links":503},[504,505,506],{"id":416,"depth":78,"text":417},{"id":427,"depth":78,"text":428},{"id":471,"depth":78,"text":472},"\u002Fimages\u002Fnews\u002Fog-access-panel.png","2026-05-06","For an MSP, the scariest question isn't from a client — it's from your cyber-insurer. Here's why access gets messy as you grow, a 5-minute orphaned-account audit, and how one access model fixes it.","access-panel",{},"\u002Fnews\u002Fwho-has-access-to-what",{"title":401,"description":509},"news\u002Fwho-has-access-to-what",[487,516,517],"msp","security","Q5nJoj4OCsVrk_lXIHcaMXu7LcPv-dVXiP1NRfBxAGg",{"id":520,"title":521,"author":6,"body":522,"category":265,"cover":600,"date":601,"description":602,"draft":87,"extension":88,"featured":87,"hero":603,"meta":604,"navigation":91,"path":605,"seo":606,"stem":607,"tags":608,"updated":99,"__hash__":609},"blog\u002Fnews\u002Foperate-your-portal-by-voice.md","Now live: operate your portal by voice",{"type":8,"value":523,"toc":594},[524,535,539,546,549,555,559,570,574,581,585,588],[11,525,526,527,530,531,534],{},"You shouldn't have to click through five screens to answer ",[15,528,529],{},"\"what's going on with Acme?\""," — so now you don't. ",[23,532,533],{},"Connekz operates your portal by voice"," (or chat, if you'd rather type).",[27,536,538],{"id":537},"ask-and-act","Ask, and act",[11,540,541,542,545],{},"It's not a chatbot bolted on the side. Connekz can read ",[15,543,544],{},"and"," do:",[39,547],{"caption":548,"shot":138},"Connekz knows the company you're looking at — ask, and it answers from your live data.",[11,550,551,554],{},[15,552,553],{},"\"What's the deal status with Acme? Create a follow-up for Friday. Move this card to ongoing.\""," It reads your CRM, creates the task, moves the card — real actions on your real data, in seconds.",[27,556,558],{"id":557},"it-knows-where-you-are","It knows where you are",[11,560,561,562,565,566,569],{},"Connekz is ",[23,563,564],{},"page-aware."," Open a client and ask ",[15,567,568],{},"\"what's new here?\""," — it knows which client you mean, so you never re-type context. During a customer call, that means you never touch your mouse.",[27,571,573],{"id":572},"scoped-to-your-role","Scoped to your role",[11,575,576,577,580],{},"The important part: Connekz only ever does what ",[23,578,579],{},"your"," role allows. If your login can't delete a project, neither can Connekz when you ask. Same permissions as a human teammate, enforced every time.",[27,582,584],{"id":583},"available-now","Available now",[11,586,587],{},"Voice + chat are included on every plan. Open the floating sphere, and start talking.",[69,589,591],{"href":179,"title":590},"Talk to your portal",[11,592,593],{},"See the voice interface in action — read your pipeline, create tasks, move work, all hands-free.",{"title":77,"searchDepth":78,"depth":78,"links":595},[596,597,598,599],{"id":537,"depth":78,"text":538},{"id":557,"depth":78,"text":558},{"id":572,"depth":78,"text":573},{"id":583,"depth":78,"text":584},"\u002Fimages\u002Fnews\u002Fog-voice-driven.png","2026-05-02","Stop clicking through your portal — talk to it. Connekz now reads and runs your CRM, projects and tasks by voice or chat, knows the page you're on, and only does what your role allows.","voice-driven",{},"\u002Fnews\u002Foperate-your-portal-by-voice",{"title":521,"description":602},"news\u002Foperate-your-portal-by-voice",[275,98,138],"me8TQJEtWE9MBpC7pf2Q6ToHBo25yjdwYU9tzMCWQ0U",{"id":611,"title":612,"author":6,"body":613,"category":342,"cover":746,"date":747,"description":748,"draft":87,"extension":88,"featured":87,"hero":749,"meta":750,"navigation":91,"path":751,"seo":752,"stem":753,"tags":754,"updated":99,"__hash__":757},"blog\u002Fnews\u002Fcost-of-seven-disconnected-tools.md","The real cost of running your shop on seven disconnected tools",{"type":8,"value":614,"toc":740},[615,618,621,625,628,642,659,663,666,686,689,692,696,703,710,716],[11,616,617],{},"It never starts as seven tools. It starts as a CRM. Then a project tool, because the CRM's tasks were clunky. Then a chat app, a phone system, a password manager, a shared drive, a form builder. Each one was \"just $12 a seat.\" None of them talk to each other.",[11,619,620],{},"That's the trap: the stack creeps, and the cost hides.",[27,622,624],{"id":623},"the-visible-cost-vs-the-real-one","The visible cost vs the real one",[11,626,627],{},"The invoices are the part you can see — and they're the cheap part. The real bill is paid in time:",[433,629,630,633,639],{},[436,631,632],{},"A contact re-typed from the inbox into the CRM.",[436,634,635,638],{},[15,636,637],{},"\"Did anyone reply to Acme?\""," asked in three different apps.",[436,640,641],{},"A follow-up that lived only in someone's head because no tool owned it.",[11,643,644,645,648,658],{},"People switch between apps over a thousand times a day, and context-switching can eat ",[23,646,647],{},"up to 40% of productive time.",[649,650,651],"sup",{},[172,652,657],{"href":653,"ariaDescribedBy":654,"dataFootnoteRef":77,"id":656},"#user-content-fn-1",[655],"footnote-label","user-content-fnref-1","1"," On a billable team, that's not a productivity stat — it's margin walking out the door.",[27,660,662],{"id":661},"a-60-second-tally","A 60-second tally",[11,664,665],{},"Want your real number? Don't count dollars — count seams. Multiply it out:",[433,667,668,674,680],{},[436,669,670,673],{},[23,671,672],{},"Tools × seats."," Six tools across eight people is 48 separate logins to provision, bill and offboard.",[436,675,676,679],{},[23,677,678],{},"Switches × minutes."," Every hand-off between two tools is a place work slips and time leaks.",[436,681,682,685],{},[23,683,684],{},"Re-typed records."," Every field entered twice is a field that can disagree with itself.",[11,687,688],{},"If the total makes you wince, that's the integration tax — and it grows every time you hire.",[39,690],{"caption":691,"shot":120},"One place: the client, the calls, the email and the tasks — entered once, visible to everyone.",[27,693,695],{"id":694},"one-platform-instead-of-seven","One platform instead of seven",[11,697,698,699,702],{},"The fix isn't another tool — it's ",[15,700,701],{},"fewer"," of them. When your CRM, projects, calls and inbox live in one system, the re-typing disappears and the seams close, because there's nothing to bridge.",[11,704,705,706],{},"We built a quick calculator so you can put a number on what your current stack costs versus one platform. ",[172,707,709],{"href":708},"\u002Fcompare\u002Fstack","Count what your stack is costing you →",[69,711,713],{"href":708,"title":712},"See what your stack really costs",[11,714,715],{},"Two sliders, your team size and your tool count — and an honest estimate of the time you're leaking.",[717,718,721,726],"section",{"className":719,"dataFootnotes":77},[720],"footnotes",[27,722,725],{"className":723,"id":655},[724],"sr-only","Footnotes",[727,728,729],"ol",{},[436,730,732,733],{"id":731},"user-content-fn-1","Sourced from published context-switching research; figures are indicative, not a measured CNEX-Flow benchmark. ",[172,734,739],{"href":735,"ariaLabel":736,"className":737,"dataFootnoteBackref":77},"#user-content-fnref-1","Back to reference 1",[738],"data-footnote-backref","↩",{"title":77,"searchDepth":78,"depth":78,"links":741},[742,743,744,745],{"id":623,"depth":78,"text":624},{"id":661,"depth":78,"text":662},{"id":694,"depth":78,"text":695},{"id":655,"depth":78,"text":725},"\u002Fimages\u002Fnews\u002Fog-cost-stack.png","2026-04-28","Your subscriptions are the cheap part. The real bill for a stack of disconnected tools is the time your team loses jumping between them — here's how to count it.","cost-stack",{},"\u002Fnews\u002Fcost-of-seven-disconnected-tools",{"title":612,"description":748},"news\u002Fcost-of-seven-disconnected-tools",[755,352,756],"tool-sprawl","it-agency","KehEINiOUUz7gFlhFZLMrkHB4gsyS4-LW-I2uojxKa4",{"id":759,"title":760,"author":6,"body":761,"category":83,"cover":853,"date":854,"description":855,"draft":87,"extension":88,"featured":87,"hero":856,"meta":857,"navigation":91,"path":858,"seo":859,"stem":860,"tags":861,"updated":99,"__hash__":863},"blog\u002Fnews\u002Fquality-checked-before-it-lands.md","“Quality-checked before it lands” — what that actually means",{"type":8,"value":762,"toc":846},[763,769,776,780,791,794,798,804,808,811,815,822,826,833,840],[11,764,765,766,768],{},"If you've tried an AI coding tool lately, you've probably felt the specific frustration of code that's ",[15,767,17],{}," right — close enough to look done, wrong enough to waste your afternoon. Most developers don't trust AI output anymore, and honestly, that scepticism is healthy.",[11,770,771,772,775],{},"So when we say Connekz's work is ",[23,773,774],{},"\"quality-checked before it lands,\""," we owe you specifics. Here's what that phrase actually means.",[27,777,779],{"id":778},"it-writes-the-tests-first","It writes the tests first",[11,781,782,783,786,787,790],{},"Before a line of implementation, Connekz pins the behaviour with tests written against your acceptance criteria. \"Done\" stops meaning ",[15,784,785],{},"\"it looks right\""," and starts meaning ",[15,788,789],{},"\"it's proven against what you asked for.\""," That single ordering change kills most of the \"almost right.\"",[39,792],{"caption":793,"shot":42},"Tests first, the suite runs green, then a PR — not the other way round.",[27,795,797],{"id":796},"its-checked-before-it-reaches-you","It's checked before it reaches you",[11,799,800,801,803],{},"Tests run green and the obvious mistakes get caught ",[15,802,36],{}," it ever lands in your pull-request queue. You're not the first line of defence against rough edges — you're the last word on a change that's already been put through its paces. What reaches you is worth your time.",[27,805,807],{"id":806},"it-pauses-and-asks-instead-of-guessing","It pauses and asks instead of guessing",[11,809,810],{},"When a task is ambiguous or something's missing, Connekz comments on the card and waits. It doesn't barrel ahead and hope. A paused task you can answer beats a confident wrong answer every time.",[27,812,814],{"id":813},"you-merge","You merge",[11,816,817,818,821],{},"And the gate that never moves: Connekz opens a pull request. ",[23,819,820],{},"A human reviews and merges."," Nothing reaches main on the AI's say-so.",[27,823,825],{"id":824},"what-this-is-not","What this is not",[11,827,828,829],{},"It's not \"fully autonomous,\" and we'd never claim it is. You're in the loop on every change — by design, not as a limitation. We keep an honest, public list of where Connekz still needs you. ",[172,830,832],{"href":831},"\u002Flimits","See what Connekz can't do →",[11,834,835,836,839],{},"That's the whole trade: not blind trust in AI, but AI whose output has ",[15,837,838],{},"earned"," a review.",[69,841,843],{"href":71,"title":842},"See it ship, then judge for yourself",[11,844,845],{},"Assign a real task, watch the tests and the PR, and merge only when you're happy.",{"title":77,"searchDepth":78,"depth":78,"links":847},[848,849,850,851,852],{"id":778,"depth":78,"text":779},{"id":796,"depth":78,"text":797},{"id":806,"depth":78,"text":807},{"id":813,"depth":78,"text":814},{"id":824,"depth":78,"text":825},"\u002Fimages\u002Fnews\u002Fog-review-gate.png","2026-04-24","In 2026, most developers don't trust AI output — and they're right to be wary. Here's exactly what we mean when we say Connekz's work is quality-checked before it reaches your PR queue.","review-gate",{},"\u002Fnews\u002Fquality-checked-before-it-lands",{"title":760,"description":855},"news\u002Fquality-checked-before-it-lands",[96,862,98],"quality","27tJ0yKVhT1OkVuoZXuXW2fkY0OO9BOrdixgFFEZ3ss",{"id":865,"title":866,"author":6,"body":867,"category":265,"cover":946,"date":947,"description":948,"draft":87,"extension":88,"featured":87,"hero":949,"meta":950,"navigation":91,"path":951,"seo":952,"stem":953,"tags":954,"updated":99,"__hash__":955},"blog\u002Fnews\u002Fdrag-a-task-to-connekz.md","New: drag a task to Connekz and get a pull request",{"type":8,"value":868,"toc":941},[869,876,882,886,889,892,899,903,906,926,928,935],[11,870,871,872,875],{},"Today Connekz graduates from \"the assistant in the corner\" to a ",[23,873,874],{},"teammate on your sprint board"," — with an avatar and an hourly rate, sitting in the same column as your humans.",[11,877,878,879],{},"The headline: ",[23,880,881],{},"you can drag a task to Connekz and get a pull request back.",[27,883,885],{"id":884},"how-it-works","How it works",[11,887,888],{},"You assign a card exactly the way you'd assign one to a person. From there, Connekz takes over the predictable part:",[39,890],{"caption":891,"shot":42},"Drag the card to Connekz → tests written → suite green → PR opened, ready for your review.",[11,893,894,895,898],{},"It reads the acceptance criteria, spins up a real workspace, finds the prerequisites in your codebase, ",[23,896,897],{},"writes the tests first",", then the implementation. It runs lint, types and the full suite, and opens a pull request with the diff.",[27,900,902],{"id":901},"what-you-stay-in-control-of","What you stay in control of",[11,904,905],{},"Nothing about the review changes — that's the point:",[433,907,908,914,920],{},[436,909,910,913],{},[23,911,912],{},"Tests first",", so \"done\" means proven.",[436,915,916,919],{},[23,917,918],{},"Quality-checked before it lands"," — what reaches your PR queue is worth reviewing.",[436,921,922,925],{},[23,923,924],{},"You merge."," Connekz opens the PR; a human always says the final yes.",[27,927,584],{"id":583},[11,929,930,931,934],{},"AI engineer roles are included from the ",[23,932,933],{},"Starter"," plan up. If you already write clear acceptance criteria, you'll feel the difference on day one.",[69,936,938],{"href":71,"title":937},"Put an AI engineer on your board",[11,939,940],{},"See exactly how it works — assign a card, get a tested PR, review every change.",{"title":77,"searchDepth":78,"depth":78,"links":942},[943,944,945],{"id":884,"depth":78,"text":885},{"id":901,"depth":78,"text":902},{"id":583,"depth":78,"text":584},"\u002Fimages\u002Fnews\u002Fog-board-assign.png","2026-04-22","Connekz is now a first-class teammate on your sprint board. Assign a card like you would to any developer — it writes the tests, opens a PR, and waits for your review.","board-assign",{},"\u002Fnews\u002Fdrag-a-task-to-connekz",{"title":866,"description":948},"news\u002Fdrag-a-task-to-connekz",[275,96,98],"qZMlrCFv3shJTQJwN44Crz16mCtfjUm0-sE-hxqRCJs",{"id":957,"title":958,"author":6,"body":959,"category":83,"cover":1188,"date":1189,"description":1190,"draft":87,"extension":88,"featured":87,"hero":1191,"meta":1192,"navigation":91,"path":1193,"seo":1194,"stem":1195,"tags":1196,"updated":99,"__hash__":1197},"blog\u002Fnews\u002Fbuilt-in-3-months-with-an-ai-engineer.md","How we built CNEX-Flow in three months with an AI engineer",{"type":8,"value":960,"toc":1181},[961,967,970,974,977,1003,1006,1010,1017,1020,1023,1098,1102,1105,1124,1130,1134,1137,1157,1162,1166,1169,1177],[11,962,963,964,966],{},"People ask how a team this small shipped a platform this big this fast. The honest answer: we built ",[23,965,258],{}," — our AI engineering teammate — first, then used it to build the rest of CNEX-Flow, with a human reviewing every pull request.",[11,968,969],{},"It's not magic, and it isn't \"fire your engineers.\" It's a working pattern you could run tomorrow. Here it is, warts and all.",[27,971,973],{"id":972},"the-working-pattern","The working pattern",[11,975,976],{},"It's the same loop you'd run with any developer — just faster on the predictable parts:",[727,978,979,985,991,997],{},[436,980,981,984],{},[23,982,983],{},"Plan."," A human writes a task with clear acceptance criteria.",[436,986,987,990],{},[23,988,989],{},"Execute."," Connekz reads the criteria and the codebase, writes the tests, then the implementation.",[436,992,993,996],{},[23,994,995],{},"Review."," It runs the suite and opens a PR. A human reviews and merges.",[436,998,999,1002],{},[23,1000,1001],{},"Repeat."," It remembers what went wrong last time and doesn't repeat it.",[11,1004,1005],{},"The whole thing hinges on step 3. Connekz opens a pull request — you review it and merge. You're the project manager; it's the developer.",[27,1007,1009],{"id":1008},"a-real-task-start-to-finish","A real task, start to finish",[11,1011,1012,1013,1016],{},"Take a routine one: ",[15,1014,1015],{},"\"Build a CSV contact-import page with column mapping and validation.\""," Clear, well-specified, the kind of work that quietly eats a senior's afternoon.",[39,1018],{"caption":1019,"shot":42},"Acceptance criteria in, tests-first, suite green, PR opened — you review and merge.",[11,1021,1022],{},"Connekz pinned the behaviour with tests, wrote the implementation, ran lint + types + the full suite, and opened a PR with the diff. We reviewed it like any other. That's most of CNEX-Flow: the CRM, the boards, the unified call threads, the post-call summaries — shipped this way, reviewed by a human.",[1024,1025,1029],"pre",{"className":1026,"code":1027,"language":1028,"meta":77,"style":77},"language-ts shiki shiki-themes github-light github-dark","\u002F\u002F The task, the way Connekz reads it: acceptance criteria first.\nexport interface Task {\n  title: string\n  acceptanceCriteria: string[]\n  \u002F\u002F Tests are written against these BEFORE the implementation.\n}\n","ts",[1030,1031,1032,1041,1058,1072,1086,1092],"code",{"__ignoreMap":77},[1033,1034,1037],"span",{"class":1035,"line":1036},"line",1,[1033,1038,1040],{"class":1039},"sJ8bj","\u002F\u002F The task, the way Connekz reads it: acceptance criteria first.\n",[1033,1042,1043,1047,1050,1054],{"class":1035,"line":78},[1033,1044,1046],{"class":1045},"szBVR","export",[1033,1048,1049],{"class":1045}," interface",[1033,1051,1053],{"class":1052},"sScJk"," Task",[1033,1055,1057],{"class":1056},"sVt8B"," {\n",[1033,1059,1061,1065,1068],{"class":1035,"line":1060},3,[1033,1062,1064],{"class":1063},"s4XuR","  title",[1033,1066,1067],{"class":1045},":",[1033,1069,1071],{"class":1070},"sj4cs"," string\n",[1033,1073,1075,1078,1080,1083],{"class":1035,"line":1074},4,[1033,1076,1077],{"class":1063},"  acceptanceCriteria",[1033,1079,1067],{"class":1045},[1033,1081,1082],{"class":1070}," string",[1033,1084,1085],{"class":1056},"[]\n",[1033,1087,1089],{"class":1035,"line":1088},5,[1033,1090,1091],{"class":1039},"  \u002F\u002F Tests are written against these BEFORE the implementation.\n",[1033,1093,1095],{"class":1035,"line":1094},6,[1033,1096,1097],{"class":1056},"}\n",[27,1099,1101],{"id":1100},"the-non-negotiable-you-review-every-pr","The non-negotiable: you review every PR",[11,1103,1104],{},"Speed without review is just faster mistakes. So the rules never bend:",[433,1106,1107,1113,1119],{},[436,1108,1109,1112],{},[23,1110,1111],{},"Tests first."," \"Done\" means proven, not hopeful.",[436,1114,1115,1118],{},[23,1116,1117],{},"Quality-checked before it lands."," Work passes a multi-stage review before it reaches your queue.",[436,1120,1121,1123],{},[23,1122,924],{}," Nothing reaches main without a human saying yes.",[11,1125,1126,1127],{},"That's why the output is worth reviewing instead of being a pile of \"almost right.\" ",[172,1128,1129],{"href":71},"See how the AI engineer works →",[27,1131,1133],{"id":1132},"what-it-doesnt-do","What it doesn't do",[11,1135,1136],{},"We're upfront about the edges — it's the honest part, and the useful one:",[433,1138,1139,1145,1151],{},[436,1140,1141,1144],{},[23,1142,1143],{},"Vague tasks get vague results."," It pauses and asks rather than guessing, but garbage in still slows things down.",[436,1146,1147,1150],{},[23,1148,1149],{},"It won't make product calls."," Architecture and trade-offs are human work.",[436,1152,1153,1156],{},[23,1154,1155],{},"Net-new, fuzzy R&D"," is where your seniors shine. Hand Connekz the well-defined work so they can stay on the hard problems.",[11,1158,1159,1160],{},"We keep a running, public list of the limits. ",[172,1161,832],{"href":831},[27,1163,1165],{"id":1164},"why-this-matters-for-your-shop","Why this matters for your shop",[11,1167,1168],{},"You don't need to build a platform to use this. The same loop — write a clear ticket, let Connekz ship the predictable work, review the PR — gives a 5-person shop the throughput of a much larger one, without the hiring. That's the whole pitch, and we're the proof: we run our own company on it.",[69,1170,1171],{"href":71,"title":937},[11,1172,1173,1174,176],{},"Assign a card, get a tested PR, and review every change before it lands — or read the longer ",[172,1175,1176],{"href":174},"build story",[1178,1179,1180],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":77,"searchDepth":78,"depth":78,"links":1182},[1183,1184,1185,1186,1187],{"id":972,"depth":78,"text":973},{"id":1008,"depth":78,"text":1009},{"id":1100,"depth":78,"text":1101},{"id":1132,"depth":78,"text":1133},{"id":1164,"depth":78,"text":1165},"\u002Fimages\u002Fnews\u002Fog-constellation.png","2026-04-18","CNEX-Flow was built by Connekz — our AI engineering teammate — with one human reviewing the PRs. Here's the exact working pattern, honestly, including what it doesn't do.","constellation",{},"\u002Fnews\u002Fbuilt-in-3-months-with-an-ai-engineer",{"title":958,"description":1190},"news\u002Fbuilt-in-3-months-with-an-ai-engineer",[96,200,98],"Ns8nvW_T7iWY9iUy2PSZxYbWAjoBHbG53Z9ZNyFxBdE",{"id":1199,"title":1200,"author":6,"body":1201,"category":342,"cover":1435,"date":1436,"description":1437,"draft":87,"extension":88,"featured":87,"hero":1438,"meta":1439,"navigation":91,"path":1440,"seo":1441,"stem":1442,"tags":1443,"updated":99,"__hash__":1445},"blog\u002Fnews\u002Fcracks-in-a-growing-it-shop.md","Why work slips through the cracks in a growing IT shop",{"type":8,"value":1202,"toc":1427},[1203,1214,1217,1221,1224,1261,1268,1272,1288,1306,1310,1313,1360,1366,1370,1377,1380,1384,1390,1394,1408,1414],[11,1204,1205,1206,1209,1210,1213],{},"Every IT shop owner knows the feeling: a client emails ",[15,1207,1208],{},"\"any update?\""," and your stomach drops, because you genuinely don't know. The task didn't get dropped because someone was careless. It got dropped because it fell into the gap ",[23,1211,1212],{},"between"," two tools.",[11,1215,1216],{},"The good news: dropped balls are a predictable, fixable problem — not a \"we need to try harder\" problem. Here's where they happen, a quick way to audit your own shop, and the one change that closes the gaps for good.",[27,1218,1220],{"id":1219},"where-work-actually-disappears","Where work actually disappears",[11,1222,1223],{},"A single client request crosses a lot of boundaries before it's done:",[433,1225,1226,1233,1240,1247,1254],{},[436,1227,1228,1229,1232],{},"It ",[23,1230,1231],{},"arrives"," in an inbox.",[436,1234,1235,1236,1239],{},"It gets ",[23,1237,1238],{},"logged"," (maybe) in a CRM.",[436,1241,1242,1243,1246],{},"It becomes ",[23,1244,1245],{},"work"," on a board.",[436,1248,1249,1250,1253],{},"It generates a ",[23,1251,1252],{},"call"," or two.",[436,1255,1256,1257,1260],{},"It needs a ",[23,1258,1259],{},"follow-up"," nobody clearly owns.",[11,1262,1263,1264,1267],{},"Every arrow between those steps is a ",[15,1265,1266],{},"seam"," — and seams are where things slip. The more you grow, the more seams you have, and the more of your day you spend being the human glue holding them together.",[27,1269,1271],{"id":1270},"the-integration-tax","The integration tax",[11,1273,1274,1275,1278,1279,176,1282,1287],{},"You don't notice the cost because it's paid in small change: a re-typed contact here, a ",[15,1276,1277],{},"\"did anyone reply to Acme?\""," there, a follow-up that lived only in someone's head. But it adds up. People switch between apps over a thousand times a day, and context-switching can quietly eat up to ",[23,1280,1281],{},"40% of productive time",[649,1283,1284],{},[172,1285,657],{"href":653,"ariaDescribedBy":1286,"dataFootnoteRef":77,"id":656},[655]," For a billable team, that's not a productivity stat — it's margin.",[1289,1290,1291],"callout",{},[11,1292,1293,1294,1297,1298,1301,1302,1305],{},"The fix isn't ",[15,1295,1296],{},"more"," discipline or ",[15,1299,1300],{},"another"," tool. It's ",[23,1303,1304],{},"fewer seams"," — putting the inbox, the CRM, the board and the calls in one place that shares context automatically.",[27,1307,1309],{"id":1308},"a-2-minute-audit-the-5-seams","A 2-minute audit: the 5 seams",[11,1311,1312],{},"Want to find your own leaks? Walk one real client request through your shop and ask the smell-test at each seam. If the honest answer is \"it depends who's around,\" that seam is leaking.",[727,1314,1315,1324,1333,1342,1351],{},[436,1316,1317,1320,1321],{},[23,1318,1319],{},"Inbox → CRM."," A client emails. ",[15,1322,1323],{},"Does it become a record automatically, or does it depend on someone remembering to log it?",[436,1325,1326,1329,1330],{},[23,1327,1328],{},"CRM → board."," A deal turns into work. ",[15,1331,1332],{},"Does a project actually get created, or is it a mental note until someone chases it?",[436,1334,1335,1338,1339],{},[23,1336,1337],{},"Board → call."," A task needs a conversation. ",[15,1340,1341],{},"Does the call get made and logged against the client — or does it vanish into someone's phone?",[436,1343,1344,1347,1348],{},[23,1345,1346],{},"Call → follow-up."," The call ends with a promise. ",[15,1349,1350],{},"Is the next step written down and owned, or is it \"I'll remember\"?",[436,1352,1353,1356,1357],{},[23,1354,1355],{},"Follow-up → owner."," The follow-up comes due. ",[15,1358,1359],{},"Does someone get nudged automatically, or does it rely on a human noticing?",[11,1361,1362,1363,1365],{},"Most shops leak at seams 1, 4 and 5 — the hand-offs that depend on memory. That's where the ",[15,1364,1208],{}," emails come from.",[27,1367,1369],{"id":1368},"the-one-change-that-closes-the-gaps","The one change that closes the gaps",[11,1371,1372,1373,1376],{},"When the email, the client record, the project and the calls all live in ",[23,1374,1375],{},"one system",", the follow-up can't fall between tools — because there's no \"between.\" The next step is attached to the client, visible to the whole team, and surfaced the moment it's due.",[39,1378],{"caption":1379,"shot":120},"Calls, email, tasks and deals on one client timeline — nothing re-typed between tools.",[27,1381,1383],{"id":1382},"what-it-looks-like-on-a-busy-tuesday","What it looks like on a busy Tuesday",[11,1385,1386,1387,1389],{},"You don't go hunting for the dropped ball. It comes to you — ",[15,1388,36],{}," the client notices.",[39,1391],{"caption":1392,"shot":1393},"The overdue follow-up surfaces itself, with the next action one click away.","followup",[11,1395,1396,1397,1400,1401,1404,1405,176],{},"That's the whole idea behind CNEX-Flow's front office: remove the seams, and the dropped ball has nowhere to fall. If ",[15,1398,1399],{},"\"nothing slips through the cracks\""," is the feeling you're after, ",[172,1402,1403],{"href":497},"see how it works for IT teams"," — or, if it's the sheer number of tools that's the real problem, ",[172,1406,1407],{"href":708},"count what your stack is costing you",[69,1409,1411],{"href":497,"title":1410},"Close the gaps in your shop",[11,1412,1413],{},"See how CNEX-Flow puts your clients, projects and calls on one timeline — so the follow-up can't slip.",[717,1415,1417,1420],{"className":1416,"dataFootnotes":77},[720],[27,1418,725],{"className":1419,"id":655},[724],[727,1421,1422],{},[436,1423,732,1424],{"id":731},[172,1425,739],{"href":735,"ariaLabel":736,"className":1426,"dataFootnoteBackref":77},[738],{"title":77,"searchDepth":78,"depth":78,"links":1428},[1429,1430,1431,1432,1433,1434],{"id":1219,"depth":78,"text":1220},{"id":1270,"depth":78,"text":1271},{"id":1308,"depth":78,"text":1309},{"id":1368,"depth":78,"text":1369},{"id":1382,"depth":78,"text":1383},{"id":655,"depth":78,"text":725},"\u002Fimages\u002Fnews\u002Fog-the-gap.png","2026-04-15","The dropped ball is rarely a people problem — it's a gap-between-tools problem. Here's a 2-minute audit of where work disappears in a growing IT shop, and the one change that closes the gaps.","the-gap",{},"\u002Fnews\u002Fcracks-in-a-growing-it-shop",{"title":1200,"description":1437},"news\u002Fcracks-in-a-growing-it-shop",[756,1444,352],"crm","wwCffPyuwprVDiM_-XAt7Fsg1nzi-jGAnYJnxqJwKTE",{"id":1447,"title":1448,"author":6,"body":1449,"category":265,"cover":1577,"date":1578,"description":1579,"draft":87,"extension":88,"featured":87,"hero":1580,"meta":1581,"navigation":91,"path":1582,"seo":1583,"stem":1584,"tags":1585,"updated":99,"__hash__":1587},"blog\u002Fnews\u002Fintroducing-cnex-flow.md","Introducing CNEX-Flow: run your whole IT shop from one place",{"type":8,"value":1450,"toc":1570},[1451,1457,1464,1468,1471,1491,1494,1498,1501,1504,1509,1513,1519,1522,1528,1531,1538,1541,1547,1551,1558,1564],[11,1452,1453,1454,1456],{},"We were running our own IT shop across seven browser tabs — a CRM here, a project tool there, a chat app, a phone line, a spreadsheet holding it all together with hope. The work didn't fall through the cracks because anyone was careless. It fell through the gaps ",[23,1455,1212],{}," the tools.",[11,1458,1459,1460,1463],{},"So we built the thing we wished existed. Today we're opening it up to the first teams: ",[23,1461,1462],{},"CNEX-Flow"," — one platform to run your whole IT shop.",[27,1465,1467],{"id":1466},"one-platform-three-jobs","One platform, three jobs",[11,1469,1470],{},"CNEX-Flow does three things that usually need three (or seven) separate products:",[433,1472,1473,1479,1485],{},[436,1474,1475,1478],{},[23,1476,1477],{},"Run your client work"," — CRM, projects, calls and email in one place.",[436,1480,1481,1484],{},[23,1482,1483],{},"Ship the work"," — assign tasks to Connekz, your AI engineering teammate.",[436,1486,1487,1490],{},[23,1488,1489],{},"Operate it by voice"," — talk to your portal instead of clicking around it.",[11,1492,1493],{},"Here's what each looks like.",[27,1495,1497],{"id":1496},"run-your-client-work-in-one-place","Run your client work in one place",[11,1499,1500],{},"Clients, deals, follow-ups, the email thread, the call you had on Tuesday — all on one timeline, on the client's record. Nothing gets re-typed between tools, and the follow-up can't slip between apps, because there's no \"between.\"",[39,1502],{"caption":1503,"shot":120},"Every client's history — calls, email, deals — on one timeline.",[11,1505,1506,1507,176],{},"That's the whole idea behind the front office. If \"nothing slips through the cracks\" is the feeling you're after, ",[172,1508,1403],{"href":497},[27,1510,1512],{"id":1511},"ship-the-work-with-an-ai-engineer","Ship the work with an AI engineer",[11,1514,1515,1516,1518],{},"This is the part people don't expect. ",[23,1517,258],{}," is a teammate on your sprint board — with an avatar and an hourly rate. You drag a task to it the way you would to a person. It reads the acceptance criteria, writes the tests, runs the suite, and opens a pull request — quality-checked before it lands. You review. You merge.",[39,1520],{"caption":1521,"shot":42},"Assign a card. Connekz writes the tests, opens a PR — you review and merge.",[11,1523,1524,1525],{},"It won't make your product calls or merge for you, and it pauses to ask when a task is ambiguous. But for the predictable work that eats a senior's afternoon, it's genuinely fast. ",[172,1526,1527],{"href":71},"Meet the AI engineer →",[27,1529,1489],{"id":1530},"operate-it-by-voice",[11,1532,1533,1534,1537],{},"You don't have to click through any of this. Talk to Connekz. ",[15,1535,1536],{},"\"What's the deal status with Acme? Create a follow-up for Friday. Move this to ongoing.\""," It knows the page you're on, and it only ever does what your role allows.",[39,1539],{"caption":1540,"shot":138},"Connekz knows the company you're looking at — no re-typing context.",[11,1542,1543,1544],{},"No mouse, mid-call. ",[172,1545,1546],{"href":179},"See Connekz →",[27,1548,1550],{"id":1549},"built-in-aotearoa-in-the-open","Built in Aotearoa, in the open",[11,1552,1553,1554,1557],{},"Here's the honest part: a small team at cnex.co.nz built CNEX-Flow in about three months — and we built most of it ",[23,1555,1556],{},"with Connekz",", one human reviewing the pull requests. We run our own shop on it every day. It's the receipt for everything above.",[11,1559,1560,1561],{},"We're letting the first teams in now and shipping improvements every week. If you run a 5–30 person IT or software shop, we'd love your eyes on it. ",[172,1562,1563],{"href":174},"Read the build story →",[69,1565,1567],{"href":335,"title":1566},"Run your shop from one place",[11,1568,1569],{},"Start a free month — cancel anytime — or see what each plan includes.",{"title":77,"searchDepth":78,"depth":78,"links":1571},[1572,1573,1574,1575,1576],{"id":1466,"depth":78,"text":1467},{"id":1496,"depth":78,"text":1497},{"id":1511,"depth":78,"text":1512},{"id":1530,"depth":78,"text":1489},{"id":1549,"depth":78,"text":1550},"\u002Fimages\u002Fnews\u002Fog-clients-shell.png","2026-04-10","Why we built CNEX-Flow — one platform to run your client work, ship the code with Connekz, and operate it all by voice. Built in Aotearoa, in the open.","clients-shell",{},"\u002Fnews\u002Fintroducing-cnex-flow",{"title":1448,"description":1579},"news\u002Fintroducing-cnex-flow",[1586,276,98],"announcement","jFZ2MBufxJbx9tWpV0XMStE3p_FyImMSyeL1pC2tBYY",1779844570877]